读取文件时,程序经历了什么?

本文探讨了计算机执行I/O操作时的底层过程,从CPU与I/O速度差异引发的等待问题,到操作系统如何通过阻塞和就绪队列管理进程,再到零拷贝技术在高性能场景的应用,帮助读者理解I/O对计算机系统的重要性及其工作原理。

承接上文《一文彻底理解高性能高并发中的线程与线程池》,这是高性能、高并发系列的第二篇文章,在这里我们来到了I/O这一话题。

你有没有想过当我们执行I/O操作时计算机底层都发生了些什么?

在回答这个问题之前,我们先来看下为什么对于计算机来说I/O是极其重要的。

 

不能执行I/O的计算机是什么?

相信对于程序员来说I/O操作是最为熟悉不过的了:

当我们使用C语言中的printf、C++中的"<<",Python中的print,Java中的System.out.println等时,这是I/O;当我们使用各种语言读写文件时,这也是I/O;当我们通过TCP/IP进行网络通信时,这同样是I/O;当我们使用鼠标龙飞凤舞时,当我们扛起键盘在评论区里指点江山亦或是埋头苦干努力制造bug时、当我们能看到屏幕上的漂亮的图形界面时等等,这一切都是I/O。

想一想,如果没有I/O计算机该是一种多么枯燥的设备,不能看电影、不能玩游戏,也不能上网,这样的计算机最多就是一个大号的计算器。

既然I/O这么重要,那么到底什么才是I/O呢?

 

什么是I/O

I/O就是简单的数据Copy,仅此而已。

这一点很重要,为了加深大家的印象,来,Everybody,Follow me,那边树上的朋友,还有那边墙上的朋友们,举起你们的双手,跟我唱,苍茫的天涯是。。。Sorry,I/O仅仅就是数据copy、I/O仅仅就是数据copy。

让我们先把演唱会的事情放在一边,既然是copy数据,又是从哪里copy到哪里呢?

如果数据是从外部设备copy到内存中,这就是Input。

如果数据是从内存copy到外部设备,这就是Output。

内存与外部设备之间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值