IO概念

1. 内核缓冲区

用户程序进行IO的读写,会用到read&write两大系统调用。read系统调用,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区

2. 同步IO与异步IO

同步IO 同步IO是指用户空间线程是主动发起IO请求的一方,内核空间是被动接受方。
异步IO: 是指内核kernel是主动发起IO请求的一方,用户线程是被动接受方。

3. IO模型
  1. 同步阻塞IO(Blocking IO): 最简单的IO模型,用户线程在读写时被阻塞数据。
  2. 同步非阻塞IO(Non-blockingIO): 用户线程不断发起IO请求. 数据未到达时系统返回一状态值; 数据到达后才真正读取数据。用户线程每次请求IO都可以立即返回,但是为了拿到数据,需不断轮询,无谓地消耗了大量的CPU。
  3. IO多路复用(IO Multiplexing): IO多路复用建立在内核提供的阻塞函数select上,用户先将需要进行IO操作的socket添加到select中,然后等待阻塞函数select返回。当数据到达后,socket被激活,select返回,用户线程就能接着发起read请求
  4. 异步IO(Asynchronous IO): IO多路复用模型中,数据到达内核后通知用户线程,用户线程负责从内核空间拷贝数据;
    而在异步IO模型中,当用户线程收到通知时,数据已经被操作系统从内核拷贝到用户指定的缓冲区内,用户线程直接使用即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值