阻塞,非阻塞
在mmc子系统自带的测试中数据的读写有阻塞
和非阻塞
两种,这里主要将这两种IO的操作进一步做简单的总结,来加深自己的理解。同时,也将在学习过程中又接触到的同步
和异步
记录在此。
阻塞IO(block IO)
阻塞操作是指在执行设备操作时,若不能获取资源,则挂起进程直到满足可操作的条件后再进行操作。
在进行阻塞的IO操作时,如果没有可用的资源,当前进程将进入睡眠模式,它将CPU资源让给其他进程,但是由于会进入睡眠状态,因此在我们得到资源可以利用时(设备驱动中一般中断的方式得到该状态,因为在硬件资源发生变化是一般都会产生中断),必须将休眠的进程再次唤醒进行后续的操作。
非阻塞IO(unblock IO)
非阻塞操作进程在不能进行设备操作时,并不挂起,它要么放弃,要么不停的查询,直到可以进行操作为止
这种方式是不断的查询当前资源的状态,不断的尝试,将消耗大量的CPU资源。