五种网络 I/O 模型

news2024/11/19 1:46:29

文章目录

    • 1. 阻塞式 I/O 模型
    • 2. 非阻塞式 I/O 模型
    • 3. I/O 多路复用
    • 4. 信号驱动式 I/O
    • 5. 异步 I/O
    • 6. I/O 模型的分类

 Unix 下有五种可用的 I/O 模型:

  • 阻塞式 I/O

  • 非阻塞式 I/O

  • I/O 多路复用(select/poll/epoll

  • 信号驱动式 I/O(SIGIO

  • 异步 I/O(POSIX的aio_系列函数)


1. 阻塞式 I/O 模型


2. 非阻塞式 I/O 模型


3. I/O 多路复用

 调用并阻塞在`select()`/`poll()`上,而非阻塞在真正的 I/O 调用上,以一个系统调用监听多个套接字。

4. 信号驱动式 I/O

 即让内核在描述符就绪时发送`SIGIO`信号给进程进行通知,我们可以在信号处理器函数中执行`read()`调用读取数据报,并通知主循环数据已准备好,或在信号处理器中通知主循环,令其读取数据。

5. 异步 I/O

 即调用异步函数完成 I/O,这些函数告知内核完成某个操作(如将数据从内核缓冲区拷贝到用户空间),并让内核在操作完成后通知我们。

 异步 I/O 与信号驱动式 I/O 的区别在于:信号驱动式 I/O 是由内核通知我们何时可以开始 I/O;而异步 I/O 是由内核完成 I/O 并通知我们。


6. I/O 模型的分类

 一个输入操作通常包含两个不同的阶段:

  1. 等待数据达到网卡并传递给内核;

  2. 将数据从内核拷贝到用户空间

 前四种模型的主要区别在于第一阶段,即当数据没有准备好时用户进程的处理方式,而它们的第二阶段是一样的:将数据从内核复制到调用者的缓冲区,该读取操作是阻塞的。

 而相反,异步 I/O 模型会自动处理这两个阶段。

 根据这两个阶段中,是否有任意阶段引起阻塞,可以将 I/O 分为两种类型:

  • 同步 I/O 操作:读请求将导致进程阻塞,直到 I/O 操作完成;

  • 异步 I/O 操作:不导致请求进程阻塞。

 其中前四种模型都属于同步 I/O,而异步 I/O 模型属于异步 I/O。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring MVC】Spring MVC程序开发教程:常见的注解及使用方式详情

前言 Spring MVC是一种常用的Web框架,它可以帮助开发人员快速构建可扩展的Web应用程序。为了提供更好的开发体验和更高的代码效率,Spring MVC提供了各种注解。这些注解可以用于控制器、请求参数、响应类型、表单数据验证、异常处理等方面。在本文中&…

卡尔曼滤波(附C++代码)

是什么 任何时候对于动态系统存在不确定信息,都可使用卡尔曼滤波(Kalman Filter,下面简称为KF)对系统下一步要做什么做出有根据的猜测。 KF对于连续变化的系统是理想的,优点是占用内存小而且速度快,非常适…

在Linux中安装RabbitMQ

RabbitMQ下载网址 Socat下载网址 erlang下载网址 RabbitMQ安装包依赖于Erlang语言包的支持,所以需要先安装Erlang语言包,再安装RabbitMQ安装包 通过Xftp软件将这三个压缩包上传到linux中的opt目录下 ,双击即可 在安装之前先查询…

Android oss policy上传

OSS Policy方式上传 一、 流程对比1.1 普通上传1.2 服务端签名后直传 二、获取上传的policy签名配置三、请求OSS上传文件四、调用应用服务器接口同步文件五、关于上传OSS报错注意事项六、附送链接 一、 流程对比 1.1 普通上传 缺点: 上传慢:用户数据需…

数学建模常用模型(五):多元回归模型

数学建模常用模型(五):多元回归模型 由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候,…

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ,有时需要启用一些插件,这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤: 首先,确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…

raid5两块磁盘掉线导致阵列崩溃的服务器数据恢复案例

服务器数据恢复环境: DELL PowerVault系列某型号存储,15块硬盘搭建了一组RAID5磁盘阵列。 服务器故障&检测: 存储设备raid5阵列中一块磁盘由于未知原因离线,管理员对该磁盘阵列进行了同步操作。在同步的过程中又有一块磁盘指示…

使用 hbuilderx 配置 MuMu模拟器进行调试

第一步 先安装MuMu模拟器,调成手机模式。 第二步 查看MuMu模拟器监听的端口。 在安装目录下 /vms/MuMuPlayer-12.0-0/MuMuPlayer-12.0-0 旧端口7555,新端口号16384 切换到安装目录下的 /shell,然后shift右击,打开 powershell&a…

【服务器数据恢复】raid5崩溃的redhat linux系统数据恢复案例

服务器数据恢复环境: 一台ibm某型号服务器,5块硬盘组建一组raid5磁盘阵列,redhat linux操作系统,上层部署有oracle数据库。 服务器故障: raid5阵列中两块硬盘离线,服务器崩溃。经过初检发现故障服务器中的…

基于SpringBoot的医护人员排班系统【附开题(bao告)和万字文档(Lun文)和搭建文档】

主要功能 前台登录: ①首页:医院信息展示、医护信息展示、排班信息展示、投诉信息展示 ②医院信息:名称查询、医院查看、医院简介、可以点赞、可以评论、点我收藏 ③医护信息:根据工号、姓名查询、点击查看医护信息、可以收藏 ④…

Simulink仿真模块 - Band-Limited White Noise

Band-Limited White Noise模块的功能是在连续系统中引入白噪声。它所在的库为: Simulink / Sources 如图所示: Band-Limited White Noise 模块生成适合在连续系统或混合系统中使用的正态分布随机数。 白噪声仿真 从理论上讲,连续白噪声的相关时间为 0,功率谱密度 …

飞利浦的护眼台灯好用吗?南卡/飞利浦/雷士对比测评,看看哪款更好用!

日常生活中,灯光对于我们重要性不用多说。不管是学习还是办公等环境都需要合适的光线,而台灯作为补充光线小型家电,基本每个家庭里都会备着一台,特别是对于长期使用电脑的上班族或者需要长时间学习的学生这类人员。但是台灯的种类…

【大数据技术】hive 窗口函数sum range between的详细介绍

【大数据技术】hive 窗口函数sum range between的详细介绍 数据准备 建表 create table range_test( name string, month int , sales int ) row format delimited fields terminated by "," ;插入数据 load data local inpath "/home/xx/test/1.t…

双击就能运行的Win95,流畅稳定还内置大型游戏

像咱这样的新时代互联网民工,上班面对 Win10/11 下班也还是一样,难免有时候觉得腻。 回味起当初的 Win7、Win8、Win XP ,不管当初受过什么伤,现在只有美好的回忆。 大家可能还想象过,用现在配置去运行老系统。 不知高…

uniapp 小程序 vue TypeError: Cannot read property ‘toString‘ of undefined

是因为对字符串使用toString的时候页面中的数据还没有加载 。错误代码: 可以使用 v-if 修改为:

AR是现实的商业创新,还是虚幻的电子梦境?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 在本期节目中,我们将深入探讨AVAR的创始人胡雅婷的创业故事。 我们从年轻人偏爱虚拟偶像和热衷元宇宙创业的社会话题出发&…

递归的深层次理解+初始搜索算法

1)什么是递归:就是函数自己调用自己的过程 2)为什么会使用到递归:主问题->相同的子问题,相同的子问题->一样相同的子问题 3)递归结束的条件:也就是细节和出口最小的不能在继续进行分割的子问题 4)宏观看待递归的过程: 1)不要在意递归展开的细节图 2)那递归的函…

全面分析MySQL?ERROR?1045出现的原因及解决

目录 通常从网上都能找到解决方案 1.停止服务2.跳过验证3.修改密码4.重启服务原因分析 SO 解决办法 在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,相信该错误信息很多人在使用MySQL…

使用Kali Linux 暴力破解wifi密码详细步骤

使用Kali Linux 暴力破解wifi密码详细步骤所谓暴力破解就是穷举法,将密码字典中每一个密码依次去与握手包中的密码进行匹配,直到匹配成功。所以能否成功破解wifi密码取决于密码字典本身是否包含了这个密码。破解的时间取决于CPU的运算速度以及密码本身的…

信息安全-数据安全-数据安全平台建设实践

背景 在大数据时代,数据已经成为公司的核心竞争力。此前,我们介绍了美团酒旅起源数据治理平台的建设与实践,主要是通过各种数据分析挖掘手段,为公司发展决策和业务开展提供数据支持。 近期,业内数据安全事件频发&…