通俗理解五种IO模型---五个钓鱼佬的故事

news/2024/11/17 21:49:59/

五种IO模型

        什么是IO,read/write的时候是在IO,究竟做了什么?

        ①等,等IO事件就绪②数据拷贝,写入发送等操作实际不是这些系统调用做的,而是先将数据拷贝到缓冲区中,由系统来接手发送写入。

        IO = 等 + 数据拷贝。

1.阻塞式IO       

        这里用五个钓鱼佬的故事来解释五种IO模型。

        老赵喜欢钓鱼,一坐就是一整天,他亲历亲为,自己等鱼上钩(等待事件),自己在将鱼钓上来(数据拷贝)。

        这是阻塞式IO,我们最常见的IO,阻塞式等待。

2.非阻塞式IO       

        老钱也喜欢钓鱼,他不像老赵干干等着,他看到没有鱼鳔没有上下浮动,就去做其他的事情,偶尔会来检查下是否有鱼上钩,当有鱼上钩了,他会将鱼钓上来。

        这是非阻塞式IO,程序调用函数,该函数检查是否有事件就绪,没有就继续进行下一项任务,偶尔再来检查下是否就绪。非阻塞式轮询检测等待。

3.信号驱动式IO

        老孙也喜欢钓鱼,他有个高科技,他的鱼鳔上有个报警器,他将鱼钩扔进河流就不再管了,去做自己的事情,直到报警器响起,他才来将鱼钓上来。

        信号驱动式IO,当事件就绪,系统会向进程发送SIGIO的信号,进程会调用回调函数来处理IO。

4.多路复用IO

        老李酷爱钓鱼并财大气粗精力十足,他一下子买了10个钓鱼用具,都将这些用具同时甩进了河流中,同时等待这10个鱼鳔的响应,哪个上下浮动就去处理将鱼钓上来。

        多个事件都没有就绪,进程会被阻塞,轮询式检测事件,哪一个就绪就去处理哪一个。

        前面4个都属于同步IO模型。

5.异步IO        

        老周也喜欢钓鱼,他是一个老板,自己事情很忙,他告诉手下,他想钓鱼,他的手下就去钓鱼,钓鱼的全过程老周都没有参与,但是收获了鱼。

        在异步IO模型中,进程只需要告诉OS它要读取数据就立即返回,当数据就绪之后,OS会自动的将数据从内核空间拷贝到进程空间。
        同步IO无论是多路复用还是信号驱动,最后都要亲力亲为的将数据从内核缓冲区拷贝到进程空间。而异步IO是直接获取结果,因为待数据就绪之后OS会自动拷贝数据。

        


http://www.ppmy.cn/news/850485.html

相关文章

php钓鱼怎么使用方法,初学钓鱼最详细的方法教程

钓鱼看起来很简单,谁都会钓,但是要想钓好鱼、钓多鱼是很复杂的,它受很多因素制约。我认为主要受四大因素制约。即时间、地点、气候和水情,它是由鱼的本性即趋食、趋温、趋氧决定的。 四大因素相会关联,缺一不可。同时具…

2022-2028年全球与中国运动钓鱼用具行业市场需求预测分析

本文研究全球与中国市场运动钓鱼用具的发展现状及未来发展趋势,分别从生产和消费的角度分析运动钓鱼用具的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要…

【ConfluxNews】2023.7.12 信息安全无小事

1.【网络状态】当前版本V2.2.4,全网算力≈7T,昨日交易次数24K,昨日新增账户11.27K,昨日新增合约5个; 2.【POS参数】总锁仓328M(1),节点总数281,年利率13.1%(理…

什么是容器(Container)?

在软件开发中,容器(Container)是一个提供运行环境和资源管理的软件平台。它负责管理和组织应用程序的组件、依赖关系和资源,并提供一系列的服务和功能,使得应用程序能够在容器中运行和交互。 容器可以是各种不同的类型…

windows上的mysql服务突然消失: 10061 Unkonwn error

问题描述 windows10 系统,今天早晨系统自己更新了下,也没啥问题,突然发现电脑上安装的mysql 服务没了… 原因分析: 我是安装的解压版的mysql 虽然服务没了,但是文件夹,包括数据啥的都在最重要的就是数据啦,还好都在 解决方案: 打开mysql 的bin所在目录…

Codeforces Round 884 (Div. 1 + Div. 2)A~D

A - Subtraction Game 题意&#xff1a;两个人轮流在n个石头中拿石头&#xff0c;只能拿a个或b个&#xff0c;不能拿则输&#xff0c;问让第二个人必胜的n 思路&#xff1a;直接输出ab&#xff0c;不管第一个人那什么&#xff0c;都可以吧剩下的拿掉 #include <bits/stdc…

Windows语言栏不见了,解决办法。任务栏的语言栏没了、不显示了。语言栏异常导致不能输入中文。默认中文输入法设置。

用着用着&#xff0c;发现输入不了中文了&#xff0c;然后看任务栏里的语言栏没有了。 这是正常状态。我设置了语言栏停靠任务栏的样子。 一般是缓存问题&#xff0c;我们重新设置一下就好了。 在控制面板里的区域和语言&#xff0c;找到键盘设置。 这样设置就好了。 注&…

如何解决电脑的任务栏处语言栏不见了

如果你用的还是Windows 98、Windows Me的系统&#xff0c;有时输入法图标不见了&#xff0c;一般可以在输入法设置中找回来。依次单击“开始”→“设置”→“控制面板”&#xff0c;打开控制面板&#xff0c;在控制面板中双击“输入法”图标&#xff0c;在弹出的对话框下部&…