前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统IO模型

系统IO模型

作者头像
石的三次方
发布2021-01-05 22:47:14
5460
发布2021-01-05 22:47:14
举报
文章被收录于专栏:石的三次方

五大IO模型

❝我们都知道Java中提供了三大IO模型,BIO,NIO,AIO,这三大IO模型都是基于操作系统的IO模型工作的,接下来我们仔细聊一下操作系统的IO模型 ❞

1. IO

怎么样的操作被称为一次IO呢?

「简单来讲:一次IO就是将数据从硬盘中加载到内存中」

2. 阻塞IO

「线程一直等待数据,数据没有完全加载到内存的期间,线程处于阻塞状态;直到数据完成拷贝以后,线程才结束阻塞状态」

「底层实现:」

3.

缺点:线程阻塞,浪费CPU资源

3. 非阻塞IO

线程不会一直等待,而是通过轮训的方式查看数据有没有准备好。「需要一直注意数据的状态」

「底层实现:」

缺点:需要一直关注数据的状态,线程不能做其他的事情

4. 信号驱动IO

线程不会注意数据状态,当数据复制完成以后,会发送一个信号量,告知数据已经准备就绪,可以进行处理

「底层实现」

5. 多路复用IO

通过建立多个通道,来实现可以IO复用。通过建立一个选择器,实现处理不同通道中的数据。即javaNIO的实现

「底层原理」:维护了一个选择器,调用Select选择器寻找数据已经就绪的通道,执行recvfrom进行复制;如果没有通道就绪,select线程阻塞

「以上四种IO都是同步IO,下面介绍一种异步IO即java中的AIO

6. 异步IO

当前进程发送一个请求,系统准备好所有的数据,并且将数据复制到用户空间中,然后去通知进程执行其他的事情。

「事件回调机制」

7. 五种模型的比较

参考文章:

漫话:如何给女朋友解释什么是Linux的五种IO模型? BIO,NIO,AIO 总结

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 石的三次方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 五大IO模型
    • 1. IO
      • 2. 阻塞IO
        • 3. 非阻塞IO
          • 4. 信号驱动IO
            • 5. 多路复用IO
              • 6. 异步IO
                • 7. 五种模型的比较
                  • 参考文章:
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档