Linux IO模型

IO操作步骤

(1)发起IO请求:IO请求一般需要请求特殊资源(如磁盘、RAM、文件、网络),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。

(2)实际IO操作:真正进行数据接收(数据复制)

IO分类

步骤1(发起IO请求):分为阻塞IO非阻塞IO,区别主要是看发起IO请求是否阻塞进程。

1、应用程序调用后,不能立即返回的称为阻塞IO,即资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。

2、能立即返回的称为非阻塞IO,资源不可用时,IO请求离开返回,返回数据标识资源不可用

 

步骤2(实际IO操作):分为同步IO异步IO,区别主要看实际IO操作是否阻塞进程。

1、在将数据从内核拷贝到用户空间时,将数据拷贝到应用缓冲区期间是否阻塞,也就是说,如果实际IO读写阻塞请求进程(应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败),那么就是同步IO

2、如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你(应用发送或接收数据后立刻返回,数据写入OS缓存,由OS完成数据发送或接收,并返回成功或失败的信息给应用),那么就是异步IO

 

 

前4种属于同步IO,最后一种才是异步IO。虽然(2)(3)(4)种IO是非阻塞IO,但其实也只是同步非阻塞,不能算异步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值