95、IO模型有几种?BIO、NIO、AIO 有什么区别?

①同步阻塞IO、同步非阻塞IO、IO多路复用、信号驱动IO和异步IO。

②BIO属于同步阻塞IO模型,应用程序发起read调用后会一直阻塞在那里,直到内核把数据拷贝到用户空间中。

NIO属于同步非阻塞IO模型,在内核准备数据期间,应用程序会通过轮询操作一直发起read调用,此时线程是非阻塞的。但是将数据从内核空间拷贝到用户空间的这段时间内,线程依然是阻塞的,直到拷贝完成。同步非阻塞IO模型的最大缺点就是应用程序会不断地进行IO调用去询问内核是否把数据准备好了,这个过程是十分消耗CPU资源的。不过NIO可以通过Selector组件实现基于事件驱动的IO多路复用模型,从而解决这个问题,用户线程首先会发起select调用去询问内核是否把数据准备好了,内核把数据准备好了后会通知用户线程,用户线程此时再发起read调用。IO多路复用模型通过减少无效的IO调用,降低了对CPU的消耗。

AIO属于异步IO模型,它是基于事件和回调机制实现的,应用程序发起read调用后不会阻塞在那里,当内核处理完成后,操作系统会通知相应的线程进行后续的操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值