第一阶段:
P发出一个IO请求,这时候会有两种情况: 1:立刻返回: 非阻塞 2:一直等待,P调用sleep/wait休眠或是挂起,让出CPU给别的线程/进程 阻塞
第二阶段:
这时内核的数据终于准备好了, 那么现在用户进程想要读取内核空间的数据有两种方式: 1: P自己把数据从内核空间拷贝到用户空间 同步
2:P创建一个线程做数据copy的工作 异步 现在应该明白了吧。阻塞/非阻塞是针对IO的第一阶段的描述。异步/同步是针对IO的第二阶段的描述也就是IO的主体。
这里主要比较难理解的就是同步/异步。首先P在发起IO的请求的时候如果P本身还要负责IO请求后的数据copy(内核空间到用户空间)工作。那么我们就可以说是同步的。