IO 阻塞

本文探讨了CPU在磁盘IO操作时如何利用时间,解析了Linux系统下CPU与磁盘交互的过程,强调了在IO阻塞期间CPU会执行其他任务。同时,文章介绍了线程的几种状态,包括可运行、运行、阻塞和结束,并讨论了线程池大小设置的考虑因素,尤其是为何对于CPU密集型和IO密集型任务会有不同的推荐设置。
摘要由CSDN通过智能技术生成

昨天在整理自己的博客的时候,想到的一个问题:进程在从磁盘中读取内容的时候,CPU 在干什么???

之所以会这样问,是因为,CPU的速度比磁盘要快很多,具体有多块,看这篇文章。

磁盘寻址时间为 10ms,换算成人类时间是 10个月,刚好够人类创造一个新的生命了。如果 CPU 需要让磁盘泡杯咖啡,在它眼里,磁盘去生了个孩子,回来告诉它你让我泡的咖啡好了。

这是从文中截取的一段,可以体会一下。

那么我的问题的本质是,在这段等带的时间中,CPU 是去搞别的是事情了(执行别的线程),还是空等呢???IO 阻塞与线程遇到锁产生的阻塞是一样的吗?

经过查询资料,Linux系统下,CPU与磁盘交互时大致发生了如下事情:

  • 进程调用库函数向内核发起读文件请求(切换到内核态);

  • 在 Page Cache(它位于内存和文件之间缓冲区,文件IO操作实际上只和page cache交互,不直接和内存交互。) 中查询数据是否存在。

  • 如果页缓存命中,那么直接返回文件内容;如果页缓存缺失,那么产生一个页缺失异常,需要从磁盘读取数据。

  • CPU向磁盘发送数据读取指令。

  • 然后,发送完指令后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值