Follow Excellent, Success will Chase you

0%

阻塞,非阻塞

在mmc子系统自带的测试中数据的读写有阻塞非阻塞两种,这里主要将这两种IO的操作进一步做简单的总结,来加深自己的理解。同时,也将在学习过程中又接触到的同步异步记录在此。

阻塞IO(block IO)

阻塞操作是指在执行设备操作时,若不能获取资源,则挂起进程直到满足可操作的条件后再进行操作。

在进行阻塞的IO操作时,如果没有可用的资源,当前进程将进入睡眠模式,它将CPU资源让给其他进程,但是由于会进入睡眠状态,因此在我们得到资源可以利用时(设备驱动中一般中断的方式得到该状态,因为在硬件资源发生变化是一般都会产生中断),必须将休眠的进程再次唤醒进行后续的操作。

非阻塞IO(unblock IO)

非阻塞操作进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停的查询,直到可以进行操作为止

这种方式是不断的查询当前资源的状态,不断的尝试,将消耗大量的CPU资源。

-------------本文结束感谢您的阅读-------------
  • 本文作者: Winddoing
  • 本文链接: https://winddoing.github.io/post/63673.html
  • 作者声明: 本博文为个人笔记, 由于个人能力有限,难免出现错误,欢迎大家批评指正。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!