什么叫真正的异步IO?为什么对于高并发有决定性意义

Vek_lip 发布于 2014/10/09 18:25
阅读 2K+
收藏 2
貌似很复杂
加载中
1
esx
esx

1. 异步和IO没啥关系,只是一种处理形式,用在IO处理上,就叫异步IO。

2. 由计算机的体系结构决定,输入输出设备通常要远慢于CPU的计算速度,这个量级差距大概是1万-100万左右。而IO的调度又归CPU和控制器。

3. 因此如果让CPU在调度IO的时候,傻傻的在那里等着(同步IO、阻塞式IO),相当于浪费了99.99...%的cpu时间。

4. 于是就有了这样的结构,即“CPU告诉设备去做IO,然后CPU抽出身来去做其他事情,等IO做完了,再告诉CPU”。在软件和硬件上都有类似的结构。软件上多是用事件触发、多线程等技术;硬件上则是用专门处理IO的控制器来完成对IO数据的输入、输出。

5. 这就类似于你去饭馆吃饭,你点了一盘菜,只需要告诉他你要吃什么菜;然后你这会儿可以聊聊天、看看手机、打打游戏;厨师做完了会把菜端上来给你,这会儿你就知道菜做好了,可以吃了。如果是同步的,则是你告诉厨师你要什么菜,然后盯着他把菜做完、把菜端上来、吃完了;再聊天、看手机、打游戏。

6. 这种异步的方式,大大提高了CPU的利用率,可以让CPU在等待IO的时间里做其他事情,这本身也是并发的。同时,软件层面上的并发也是处理IO的一种有效方式,即可以一部分并发等待IO,一部分并发去做其他事情。这涉及到具体的程序架构。

mingshun
mingshun
第一句是重点!
自由之信
自由之信
回复 @Vek_lip : 这个解释很好
Vek_lip
Vek_lip
谢谢你这么耐心的回答
0
kslr
kslr
可以看看操作系统概念这本书,对这方面很有用
Vek_lip
Vek_lip
嗯,好
返回顶部
顶部