常见的几种IO模型介绍

  • 概览

从底层到上层来看,IO主要分为两个阶段,第一个阶段为数据准备(等待)阶段,第二个阶段为数据拷贝阶段;第一阶段,从网卡上接收数据,第二个阶段将数据从kernel拷贝到用户态缓存;

  • IO模型
  1. 阻塞模型:应用程序调用系统调用,比如recvfrom,一直等到第一阶段和第二阶段都ok了才返回;
  2. 非阻塞模型:应用程序调用系统调用,比如recvfrom,非阻塞的,第一阶段没准备好,返回errorno=EWOULDBLOCK;
  3. 信号驱动模型:应用程序调用系统调用sigaction,注册SIGIO信号,当第一阶段准备好了,会通过信号通知到应用进程,应用进程调用recvfrom进行数据拷贝;
  4. 多路复用(阻塞模型):是一种阻塞模型,系统调用包括select,epoll等,只是可以阻塞在多个文件描述符上,有一个可用(第一阶段准备好了),系统调用返回,应用进程调用recvfrom拷贝数据;
  5. 异步IO:应用进程调用系统调用aio_read,然后就返回,等到第一阶段和第二阶段都准备好了,通过异步信号通知应用进程进行数据处理;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值