Linux IO模式

1、一次IO过程
当一次读IO操作发生时,它会经历两个阶段
step1:内核等待数据准备,将数据保存在内存缓冲区
step2:内湖将数据从内核缓冲区拷贝到进程空间

2、IO模式
2.1 阻塞模式
阻塞模式的特定是两个阶段都阻塞。换句话说,
step1:如果内核缓冲区没有数据,进程阻塞
step2: 如果数据还没从内核缓冲区拷贝到进程空间,进程阻塞

2.2 非阻塞模式
非阻塞模式的特定是阶段1不会阻塞。换句话说,
step1:如果内湖还没有数据,进程返回错误
step2:数据从内核拷贝到进程的时候,进程阻塞
非阻塞模式,需要进程不断轮询去read,查验step1是否ok。

2.3 I/O多路复用
使用I/O多路复用技术,
进程阻塞在一个接口上,select、poll、epoll
只要有一个IO数据ready,接口不再阻塞

2.4 异步
异步模式的特点是,进程发起数据读操作后,内核不阻塞进程。
等内核完成
step1;内核等待数据准备,将数据保存在内存缓冲区
step2:内湖将数据从内核缓冲区拷贝到进程空间
通知进程读操作完成。

3、阻塞与非阻塞
阻塞与非阻塞的关键在于step1的处理方式。
如果内核缓冲区数据没准备好,进程陷入阻塞等待,则是阻塞模式
如果内核缓冲区数据没准备好,进程得到内核返回值,则是非阻塞模式

4、异步和同步
异步和同步的关键在于step1的处理方式。
如果内核在处理step2的时候,进程不阻塞(进程可以处理另外逻辑),则是异步
如果内核在处理step2的时候,进程阻塞(进程当前的逻辑就是拷贝数据),则是同步
所以,2.1、2.2、2.3都是同步模式。因为在内核拷贝数据到进程空间的时候,进程做不了其它逻辑




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值