一、IO
一次read操作:
(1)等待数据准备好:从磁盘到内核内存
(2)从内核内存复制到进程内存
示意图如下:
I/O类型:
同步和异步:synchronous,asynchronous
关注的是消息通知机制
同步: 调用发出之后不会立即返回,但一旦返回,则返回的是最终结果
异步: 调用发出之后,被调用方立即返回消息,但返回的并非最终结果;被调用者通过状态、通知机制等来通知调用者,或通过回调函数来处理结果
阻塞和非阻塞: block, nonblock
关注的是调用者等待被调用者返回结果时的状态
阻塞: 调用结果返回之前,调用者会被挂起;调用者只有在得到返回结果之后才能继续
非阻塞: 调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者
I/O模型:
blocking IO: 阻塞式IO
nonblocking IO: 非阻塞式IO
IO multiplexing: 复用型IO
select(),poll()
signal driven IO: 事件驱动式IO
通知:
水平触发: 多次通知
边缘触发: 只通知一次
asynchronous IO: 异步IO