五种常见的IO模型

1. 阻塞IO模型

应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓存区中才返回。

2. 非阻塞IO模型

进程发起IO系统调用后,内核返回一个状态码而不会被阻塞;应用程序可以继续执行,但是需要不断的执行系统调用来获知I/O是否完成。如果内核缓冲区有数据,内核就会把数据返回进程。

3. IO复用模型

使用(select/poll/epoll…)等待数据,可以等待多个套接字中的任何一个变为可读。这一过程会被阻塞,当某一个套接字可读时返回,之后把数据从内核复制到进程中。(在IO多路复用模型中,会有一个线程不断去轮询多个socket的状态,只有当socket真正有读写事件时,才真正调用实际的IO读写操作。因为在多路复用IO模型中,只需要使用一个线程就可以管理多个socket,并且只有在真正有socket读写事件进行时,才会使用IO资源,所以它大大减少了资源占用。)

4. 信号驱动IO模型

当进程发起一个IO操作,会向内核注册一个信号处理函数,然后进程返回不阻塞;当内核数据就绪时会发送一个信号给进程,进程便在信号处理函数中调用IO读取数据。

5. 异步IO模型

当进程发起一个IO操作,进程返回不阻塞,但也不能返回结果;内核把整个IO处理完后,会通知进程结果。如果IO操作成功则进程直接获取到数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值