0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

五种IO模型盘点

h1654155282.3538 来源:陈翠 2019-09-13 12:54 次阅读

阻塞IO

假如A在河边钓鱼的时候,非常的专心,生怕鱼儿溜掉,故此,A就一直盯着鱼竿,一直等着鱼儿上钩,专心的做这一件事情,直到鱼儿上钩,才结束这个动作,这就是阻塞IO。在内核把数据准备好之前,系统调用会一直处于阻塞状态。

非阻塞IO

假如B也在河边钓鱼,B不想像A一样把所有的时间都花在等鱼儿上钩这件事情上,所以他的做法就是在等待鱼儿上钩的同时,自己也可以看看书,刷刷小编的博客,聊天等等。但是B也不是就不管鱼儿了,他会每隔一段固定时间都来看一下,有没有鱼儿上钩,如果有鱼儿上钩,他就结束这个动作,这就是非阻塞IO。

非阻塞IO往往需要程序员循环的方式反复尝试读取文件描述符,这个过程称为轮询,这对于cpu来说的话是较大的浪费,一般只有特定的场景下才能使用。

信号驱动IO

假如C也在河边钓鱼,他认为A、B不够聪明,故此,他想了一种办法,就是在鱼竿上挂上了一个铃铛,当有鱼儿上钩的时候,铃铛就会被触发,发出响声,他就可以过去将鱼儿钓上来了。信号驱动IO模型,应用进程告诉内核:当数据报准备好的时候,给我发送一个信号,对SIGIO信号进行捕捉,并且调用我的信号处理函数来获取数据报。

IO多路转接

假如D也在河边钓鱼,但是D是一个土豪,他一个人就拿了好多鱼竿摆在哪里,这样很明显就增加了鱼儿上钩的机会。他只需要不断地查看每个鱼竿是否有鱼儿上钩就行了,提高了效率。实际上最核心在于IO多路转接能够同时等待多个文件描述符的就绪状态。

异步IO

假如E也想钓鱼,但是他又有点忙,所以他雇佣了一个人专门帮他看着鱼竿,一旦有鱼儿上钩,就让这个人通知他,他过来将鱼儿钓上来。由内核在数据拷贝完成时,通知应用程序(信号驱动是告诉应用程序何时可以开始拷贝数据)。

任何IO过程中,都包含两个步骤。第一是等待,第二是拷贝。而且在实际的应用场景中,等待消耗的时间往往都远远高于拷贝的时间。让IO更高效,最核心的办法就是让等待的时间尽量少。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1362

    浏览量

    40220
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57595
收藏 人收藏

    评论

    相关推荐

    Linux驱动开发之IO模型介绍

    在Linux驱动开发中,应用程序通过循环读取或者中断的方式都会使得CPU的占用率很高。本文介绍IO模型,可以用来优化文件读写方式,降低CPU的使用率。
    发表于 07-29 09:03 805次阅读

    Linux驱动学习笔记:异步IO

    前几篇介绍了几种IO模型,今天介绍另一IO模型——异步IO
    发表于 06-12 16:24 658次阅读

    浅析java的IO模型

    java IO初识与Linux网络IO模型简介
    发表于 08-05 06:28

    linux下的IO模型详解

      开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞IO模型
    发表于 10-09 16:12

    Linux铁三角之IO(一)—— IO模型

    PPT分享: Linux铁三角之IO(一)—— IO模型
    发表于 06-12 15:52

    Linux文件系统与IO流程和模型

    今晚9点: 《Linux文件系统与IO流程和模型》微课(415-418)
    发表于 06-13 16:51

    IO模型分别有哪几种?它们有什么异同?

    IO模型分别有哪几种?这几种IO模型的有什么相同点 ?这几种IO模型的有什么不同点?
    发表于 06-21 07:10

    【微科技CF3310开发板试用体验】之安全算法小盘点

    科技CF3310开发板有一个很大特点就是安全算法的无缝嵌入,这也是吸引我很大兴趣的一个地方,今天就一起来盘点,共同增益知识及使用方式。目前官方DEMO里整合了6算法:SM4,DES,AES
    发表于 07-02 15:39

    盘点6常规AMOLED技术

    盘点6常规AMOLED技术
    发表于 01-24 16:15 25次下载

    一文详细了解IO模型

    IO模型包括:阻塞IO、非阻塞IOIO多路复用
    的头像 发表于 02-14 14:38 5876次阅读
    一文详细了解<b class='flag-5'>五</b><b class='flag-5'>种</b><b class='flag-5'>IO</b><b class='flag-5'>模型</b>

    网络IO模型:阻塞与非阻塞

    阻塞 IO 模型 在Linux ,默认情况下所有的 socket 都是阻塞的,一个典型的读操作流程如图所示。 阻塞和非阻塞的概念描述的是用户线程调用内核 IO 操作的方式:阻塞是指 IO
    的头像 发表于 10-08 17:16 821次阅读
    网络<b class='flag-5'>IO</b><b class='flag-5'>模型</b>:阻塞与非阻塞

    多路IO复用模型和异步IO模型介绍

    多路 IO 复用模型 多路 IO 复用,有时也称为事件驱动 IO。它的基本原理就是有个函数会不断地轮询所负责的所有 socket ,当某个 socket有数据到达了,就通知用户进程。
    的头像 发表于 10-08 17:21 753次阅读
    多路<b class='flag-5'>IO</b>复用<b class='flag-5'>模型</b>和异步<b class='flag-5'>IO</b><b class='flag-5'>模型</b>介绍

    断路器跳闸常见的原因盘点

    断路器跳闸,无外乎以下原因:过载、短路、漏电、欠压和过压。下面我们来详细了解一下这五种原因以及如何判断和解决故障。
    的头像 发表于 10-17 16:05 9698次阅读

    什么是波特模型,如何应用

    波特模型(Porter's Five Forces Model)是迈克尔·波特(Michael E. Porter)于1979年提出的,用于分析行业竞争状况和企业竞争战略的一理论模型
    的头像 发表于 07-05 14:36 1476次阅读

    一文解读Linux 5IO模型

    Linux里有IO模型:阻塞IO、非阻塞IO、多路复用I
    的头像 发表于 11-09 11:12 221次阅读
    一文解读Linux 5<b class='flag-5'>种</b><b class='flag-5'>IO</b><b class='flag-5'>模型</b>