首先一个IO操作(read/write系统调用)其实分成了两个步骤:
1)发起IO请求和
2)实际的IO读写(内核态与用户态的数据拷贝)
阻塞和非阻塞
阻塞: 发起IO请求的进程是否会被阻塞,如果阻塞直到IO操作完成才返回那么就是传统的阻塞IO。
非阻塞:发完请求就返回 并反复轮询内核I/o操作是否完成
同步:I/O读写需要进程参与 也就是 I/O操作阻塞当前线程,
状态事件(进程可以开始忙起来了的信号)是读写就绪,数据仍在内核态中 但已准备就绪 ,可以进行读写操作(
异步: 实际的IO读写(内核态与用户态的数据拷贝)是否需要进程参与,不需要进程参与就是异步IO状态事件为读写完成。此时的数据已经存在于应用进程的地址空间(用户态)中。