五种IO模型

1.阻塞IO

阻塞 IO: 在内核将数据准备好之前 , 系统调用会一直等待 . 所有的套接字 , 默认都是阻塞方式 .

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

2.非阻塞IO

非阻塞 IO: 如果内核还未将数据准备好 , 系统调用仍然会直接返回 , 并且返回 EWOULDBLOCK 错误码 .
非阻塞 IO 往往需要程序员循环的方式反复尝试读写文件描述符 , 这个过程称为 轮询 . 这对 CPU 来说是较大的浪费 , 一般只有特定场景下才使用.

3.信号驱动IO

信号驱动 IO: 内核将数据准备好的时候 , 使用 SIGIO 信号通知应用程序进行 IO 操作.

4.IO多路转接

IO 多路转接 : 虽然从流程图上看起来和阻塞 IO 类似 . 实际上最核心在于 IO 多路转接能够同时等待多个文件描述符的就绪状态.

5.异步IO

异步 IO: 由内核在数据拷贝完成时 , 通知应用程序 ( 而信号驱动是告诉应用程序何时可以开始拷贝数据 ).

6.总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年 前端JavaScript Web APIs 第二天 笔记

Web APIs 第二天 2.1 -事件监听以及案例 2.2 -随机点名案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><t…

信号系统之复数

1 复数系统 为了说明复杂的数字&#xff0c;考虑一个孩子向空中扔球。假设球是直接向上扔的&#xff0c;初始值速度为每秒9.8米。一秒钟后&#xff0c;球已经达到了4.9米的高度&#xff0c;并且加速度为重力&#xff08;每秒9.8米2&#xff09;已将其速度降至零。球然后向地面…

(四)优化函数,学习速率与反向传播算法--九五小庞

多层感知器 梯度下降算法 梯度的输出向量表明了在每个位置损失函数增长最快的方向&#xff0c;可将它视为表示了在函数的每个位置向那个方向移动函数值可以增长。 曲线对应于损失函数。点表示权值的当前值&#xff0c;即现在所在的位置。梯度用箭头表示&#xff0c;表明为了增…

【Spring Boot 3】的安全防线:整合 【Spring Security 6】

简介 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Sp…

Vivado的DocNav打不开,报错:Premature end of document, found at line number 1

需确认软件版本是否支持电脑系统版本&#xff0c;目前 2023.2 DocNav版本是支持win11 22H2&#xff1b;下载了2023.2版本&#xff0c;安装过程中重新安装DocNav。再打开DocNav&#xff0c;然后更新DocNav左上角的Catalog到最新就好了&#xff08;此时要开全局代理&#xff09;。…

LeetCode 热题 100 | 图论(一)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…

小项目:2024/3/2

一、TCP机械臂测试 代码&#xff1a; #include <myhead.h> #define SER_IP "192.168.125.254" //服务器端IP #define SER_PORT 8888 //服务器端端口号#define CLI_IP "192.168.199.131" //客户端IP #define CLI_P…

LabVIEW石油钻机提升系统数字孪生技术

LabVIEW石油钻机提升系统数字孪生技术 随着数字化、信息化、智能化的发展&#xff0c;石油钻采过程中的石油钻机数字化技术提升成为了提高钻井效率、降低生产成本的重要途径。基于中石油云平台提供的数据&#xff0c;采用数字孪生技术&#xff0c;对石油钻机提升系统进行数字化…

babylonjs入门-自由相机 FreeCamera

基于babylonjs封装的一些功能和插件 &#xff0c;希望有更多的小伙伴一起玩babylonjs&#xff1b; 欢迎加群&#xff08;点击群号传送&#xff09;&#xff1a;464146715 官方文档 中文文档 案例传送门 懒得打字 粘贴复制 一气呵成 ​

应用层http协议包解析与https加密策略解析

文章目录 一.应用层协议--http协议基础认知二.https协议加密策略解析加密策略1--通信双方只使用对称加密加密策略2--通信双方使用单方非对称加密加密策略3--通信双方都使用非对称加密加密策略4--非对称加密与对称加密配合使用中间人攻击数据签名与CA证书HTTPS数据安全认证的本质…

【Spring Boot 源码学习】BootstrapRegistry 初始化器实现

《Spring Boot 源码学习系列》 BootstrapRegistry 初始化器实现 一、引言二、往期内容三、主要内容3.1 BootstrapRegistry3.2 BootstrapRegistryInitializer3.3 BootstrapRegistry 初始化器实现3.3.1 定义 DemoBootstrapper3.3.2 添加 DemoBootstrapper 四、总结 一、引言 前面…

代码随想录算法训练营第46天| 139.单词拆分、背包问题总结

139.单词拆分 完成 思路&#xff1a; 本题可以用背包问题的思路解决&#xff0c;单词是物品&#xff0c;字符串是背包&#xff0c;要求物品能否把背包装满。 dp[j] 字符串长度为j时&#xff0c;能否拆分为一个或多个在字典中出现的单词。 递推公式为&#xff1a;if([i, j] 这个…