首页 > 异步非阻塞I/O的运行时间

异步非阻塞I/O的运行时间

最近看书有点儿迷惑,还请各位大侠不吝赐教

当某个线程需要很耗时的I/O操作时,就会阻塞然后OS调度其它线程工作,从而提高CPU的利用率。

这个过程我的理解是,I/O操作是独立的DMA芯片在进行磁盘和内存间数据的传输,此时CPU会等着I/O操作的结果,这个过程很费时,如果CPU一直等待I/O的结果就浪费了时间。此时如果让OS调度CPU执行其它线程任务可以节约CPU指令周期,从而提高利用率。我觉得这么解释还是可以理解的。
但是比如说一个以I/O为主的静态文件Web Server,我们假设一次I/O操作的耗时固定为t,每次请求的CPU的逻辑运算时间相对I/O可以忽略,那么对于并发的1000个请求,按上面的理解,需要的总耗时为T = 1000*t,因为毕竟DMA需要一个请求一个请求(串行?)地去完成工作。
不知道这个结论正确吗?但是根据平时来看,处理高并发的静态资源服务器速度很快,似乎并不是在串行地进行I/O,这应该怎么解释呢?
谢谢


难道服务器不会把文件加载到内存吗,非得每次都去磁盘读吗。


瓶颈哪会在磁盘呀,你应该动手去申请个阿里云的服务器。学生配置也就9.9/月。
装个nginx,你会发现瓶颈完全在网卡。
敲个top看下到底是怎么回事。

【热门文章】
【热门文章】