世界快资讯丨一顿饭的事儿,搞懂Linux5种IO模型
时间:2023-05-05 12:03:11来源:三分恶

大家好,我是老三,人生有三大难题,事业、爱情,和


【资料图】

——这顿吃什么!

人在家中躺,肚子饿得响,又到了不得不吃的时候,这顿饭该怎么吃?吃什么呢?

Linux里有五种IO模型:阻塞IO、非阻塞IO、多路复用IO、信号驱动式IO和异步IO,我发现这五种IO模型,其实能和吃饭这件事关联起来。

阻塞IO(Blocking I/O)

阻塞IO是最常见的IO模型。

当发起一个IO操作时,比如读取数据,系统会调用read()函数。如果请求的数据没有准备好,此时进程会被挂起(blocked),进入等待状态。直到数据准备好,而且复制到应用进程的缓冲区,这时候才会返回。

从调用到返回,整个时间段都是阻塞的,所以被称为阻塞IO。

阻塞IO

就像是手机没电的时候,去饭馆吃饭,我点完菜,只能等着厨师做好,服务员端上来,我才能愉快干饭。这段时间,我就只能坐在座位上干等。

非阻塞IO(Non-Blocking I/O)

阻塞IO,还是比较浪费资源的,那么非阻塞IO就来了。

所谓非阻塞IO,是在调用IO操作时,如果缓冲区没有数据的话,直接返回一个错误码。应用进程需要不断轮询,来检查数据是否准备好。数据准备好了,就返回数据。

非阻塞IO

就像是我奢侈一把,想吃个西餐,于是就去了肯德基,点完餐,我就可以坐着刷刷手机。当然,我还需要时不时地看看我的餐是不是已经备好,餐备好了,就去取一下。

多路复用IO(I/O Multiplexing)

虽然非阻塞IO相比阻塞IO,性能提升了很多,但是轮询过程中,还是有大量的系统调用,上下文切换的开销比较大。

那么,多路复用IO就来了。

多路指的是多个数据通道,复用指的是一个进程可以同时监控多个文件描述符(比如socket),当某个文件描述符状态发生变化(比如变得可读或可写),多路复用的函数将返回变化的文件描述符。

这样,在数据传输过程中,同一个进程中不同的任务都能被处理。特点是在数据传输过程中,进程能够同时处理多个任务,提高了程序的效率。

select、poll、epoll 等都是 I/O 多路复用的具体实现。

以select/poll为例,进程通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll可以侦测多个fd是否处于就绪状态。当有fd就绪时,立即回调函数rollback,接下来就可以进行读取。

多路复用IO

就像是我想吃顿好的,于是选择去吃自助餐,自助餐有很多餐区,我先看看哪个餐区有我想吃的菜,然后端着盘子去取就行了,一个人就可以取多个菜,肉、蔬菜、水果,什么都能吃一点,而且不用怎么等。

信号驱动式IO(Signal-Driven I/O)

信号驱动式IO利用信号机制来进行数据传输。

进程首先告诉内核,当数据准备好时,请发送一个SIGIO信号。进程继续执行其他任务,等到收到信号后,再开始进行数据传输。

信号驱动IO

就像是我去吃饭,外带,跟服务员打声招呼,餐好了通知我,这时候我就可以去干其它事情,餐备好之后,服务员通知我,我取餐就行了。

异步IO(Asynchronous I/O)

异步IO是指当发起一个IO操作后,系统会立即返回。异步IO操作在后台进行数据传输,数据传输完成后,系统将通知进程。这样,在整个数据传输的过程中,进程都可以执行其他任务,不需要等待。

异步IO

就像是准备吃饭了,我自己懒得动,直接在某团上点个餐,点完之后爱干啥干啥,等着快递小哥给我送到就行了。

可以看到,阻塞和非阻塞主要指的是等待数据这个过程应用进程需不需要挂起,同步和异步指的是等待数据和数据拷贝这两个过程应用进程需不需要挂起,只有异步IO做到了完全异步。

那么最后一个问题,我到底吃了啥?——

参考:

[1].《Netty权威指南》

[2]. 《Netty核心原理与RPC实践》

标签:

生活指南
  • 场内基金有哪些?场内基金和场外基金有什么区别?

    场内基金有哪些?场内基金和场外基金有什么区别?场内基金有哪些?场内基金和场外基金有什么区别?场内基金

  • 清远市是什么样的城市?清远市有什么特产?

    清远市是什么样的城市?清远市,广东省辖地级市,位于广东省的中北部、北江中下游、南岭山脉南侧与珠江

  • 2023AWE回顾:海信激光显示技术创新 引领全场景显示应用

    近日,2023年AWE展会在上海落幕,在展会上,海信举办了主题为科技定义家庭观影的新品发布会,重磅推出10

  • 摩托车射灯哪个品牌好?摩托车LED灯什么品牌好?摩托车led灯买哪个?

    摩托车射灯哪个品牌好?摩托车LED灯什么品牌好?摩托车led灯买哪个?摩托车LED大灯,质量好的国外的一般

  • 提示该文件没有与之关联的程序怎么解决?默认应用设置怎么创建关联?

    提示该文件没有与之关联的程序怎么解决?1、在键盘上【win】+【R】打开对话框。复制并在对话框中并输入【

  • 在海南买房需要什么条件?在上海买房需要什么条件?

    在海南买房需要什么条件?1、海南本地户口限购2套,首付最低30%。2、在海南省连续缴纳2-5年社保(视具体区

  • 河南省公布十大地质成就 河南发现并命名自然界的两种新矿物等入选

    10月14日,省政府新闻办召开新闻发布会,公布了党的十八大以来我省十大地质成就,河南发现并命名自然界的两种新矿物、河南发现世界最大的恐

  • ​河南组建新一轮援外医疗队

    10月9日下午,河南省新一轮援外医疗队组建工作正式启动。河南省卫生健康委将组建中国援埃塞俄比亚第24批医疗队、中国援赞比亚第24批医疗队

  • G310洛阳境(偃师段)剩余工程伊、洛河桥箱梁架设全部完成

    近日,G310洛阳境(偃师段)伊、洛河大桥箱梁架设全部完成,标志着项目施工迈入了体系转换及桥面系作业阶段。伊河特大桥左幅全长1147 5米,

  • 河南开展社区防控专岗设置工作

    近日,省民政厅、省教育厅、省财政厅、省人力资源社会保障厅、省卫生健康委等5部门联合印发《关于做好社区防控专岗设置工作的通知》(以下

  • 河南省民政厅召开全省民政系统疫情防控工作视频调度会

    10月12日,省民政厅召开全省民政系统疫情防控工作视频调度会,省民政厅党组成员、副厅长党培红传达了省委主要领导关于疫情防控工作最新的批

  • ITF华欣W25网球巡回赛女单折桂 河南姑娘白卓璇世界排名首进TOP500创新高

    在北京时间10月9日于泰国华欣结束的2022ITF(国际网球联合会)华欣W25网球巡回赛女单决赛中,19岁河南姑娘白卓璇直落两盘击败另一位中国选

  • 河南俩选手入围全国体育行业职业技能大赛总决赛

    经过历时1个月的第五届全国体育行业职业技能大赛决赛阶段复赛各省分赛区在线比拼,最终,我省有崔楠楠、李高华2名选手从6名参加河南赛区角

  • 漯河市全员核酸最新安排!

    郾城区关于开展全员核酸检测的通告根据市常态化疫情防控指挥部统一安排,经区新冠肺炎疫情防控指挥部研究,决定于10月15日开展一次全员核酸

  • 河南公布43批次抽检不合格食品

    10月13日,记者从河南省市场监督管理局获悉,该局公布关于43批次食品不合格情况的通告(2022年第29期),涉及多家商超、餐厅。河南省市场监

  • 郑州供水关于暂停线上业务的公告

    尊敬的用户:为向您提供优质高效的服务,我公司定于2022年10月14日17时起进行网络服务系统升级。届时,郑州供水微信公众号、郑州供水官方网

  • 民生
    • 洪涛股份董秘回复:受行业政策等因素影响,对于职业教育业务,公司将在保持现有业务和品牌的基础上|热推荐

    • 申购新股资金冻结时间是多久?打新股冻结资金多久?

    • 液晶电视有哪些选购技巧?液晶屏幕要如何保养?

    • 花呗分期付款是怎么分期?花呗分期影响征信吗?