IO 通信模型

IO操做并不是是一个原子过程,而是按照必定的步骤执行,咱们以IO读操做为例,大概分为两个步骤:异步

(1)数据准备阶段:数据发送到接收端的操做系统内核中操作系统

(2)数据接收阶段:数据从操做系统内核拷贝到用户存储空间中线程

如今的一些IO模型概念基本都与这两个操做有关,下面我一一介绍:同步

1,同步阻塞IOselect

用户在发起一个读数据的请求,而后调用这个请求的线程进入阻塞状态,直到(1),(2)步骤所有作完线程才返回继续执行下面的操做请求

2,同步非阻塞IO技术

用户发起一个读IO操做的请求,而后返回处理其余事情,而后不断地检查,直到(1)步骤处理完毕,线程进入阻塞状态处理(2)步骤,处理完毕以后线程返回处理其余事情数据

3,IO 多路复用技术(同步阻塞IO的一种)阻塞

用户发起一个读IO请求,随即将请求注册到selector上面去,随后进入阻塞状态,当完成步骤(1)以后,由多路复用器通识请求调用者,而后以阻塞的方式开始执行步骤(2),直到执行完毕返回,线程继续执行下面的操做回调

4,信号驱动IO

用户发起读IO请求以后就去作别的事情了,当操做系统执行完(1)以后以消息或者回调的方式通知调用线程,以阻塞的方式执行步骤(2),直到完成返回继续往下执行。

5,异步非阻塞IO

用户发起读IO请求以后,就去作别的事情了,操做系统作完(1),(2)以后再以消息或者回调的方式通知IO调用者。

比较图:

相关文章
相关标签/搜索