IO模型的5种类型

1 同步阻塞IO

用户空间(或者线程)主动发起,等待内核IO才做彻底完成后,才返回用户空间的IO操作,在IO操作过程中国,发起IO请求的用户进程出于阻塞状态。

2 同步非阻塞IO

用户空间的程序不需要等待内核的IO操作彻底完成,可以立即返回用户空间去执行后续的指令,即发起IO请求的用户进程(或线程)出于非阻塞状态,于此同时,内核会立即返回给用户一个IO的状态值。

3 IO多路复用

通过调用select/epoll,一个用户进程(或者现场)可以见识多个文件描述符,一旦某描述符就绪(通常是内核缓冲区可读/可写,内核能够将文件描述符的就绪状态返回给用户进程(或者线程), 用户空间可以根据问津描述符的就绪状态进行响应的IO系统调用。

4 信号驱动IO模型

用户线程通过向核心注册IO事件的回调函数来表面IO时间查询的阻塞。信号驱动IO仅在IO通知阶段是异步的,第二阶段也就是将数据从内核缓冲区复制到用户缓冲区的工程,用户进程是阻塞的。

5 异步IO

用户空间的线程编程被动接受者,内核空间称为主动调用者。在异步IO模型中,当用户线程接收到通知是,数据已经被内核读取完毕,并放在了用户缓冲区内,内核IO完成后通知用户线程直接使用即可。

发表回复

您的电子邮箱地址不会被公开。