阻塞,非阻塞

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

阻塞IO(block IO)

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

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

非阻塞IO(unblock IO)

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

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