# IO模型

news/2024/10/23 3:40:27/

IO模型

非阻塞IO

当程序读取硬件数据时,不管硬件数据是否准备好,read()函数不会阻塞,会继续向下执行

程序会不停监测IO事件是否产生,CPU消耗率高

防止进程阻塞在IO函数上,如果要获得有效数据,需要轮循

阻塞IO

当程序读取硬件数据时,如果硬件数据没有准备好,进程会阻塞在read()函数位置,等待硬件数据准备就绪,通过read()函数读取硬件数据后,程序才会向下执行

分为:不可中断休眠状态(D)和可中断休眠状态(S)

常用、简单、效率低,常用于read、write等函数

IO多路复用

需要在一个进程中同时监听多个硬件的数据,使用IO多路复用,IO多路复用实现机制:select、poll、epoll

使用:在用户空间中将监听的事件的文件描述符添加到事件集合中,调用函数进行判断集合中文件描述符对应的硬件数据是否准备就绪,如果没有,则将进程切换到休眠状态(可中断休眠状态);如果有一个或多个硬件数据准备就绪,则将休眠的进程唤醒,对准备就绪的硬件数据进行读写

情景:在使用单进程单线程的情况下,同时处理多个输入输出请求

优点:由于不需要创建新进程和线程,减少了系统的资源开销,减少上下文切换的次数

select:阻塞函数,内核检测指定文件描述符集合中,是否有文件描述符准备就绪

​ 当文件描述符准备就绪后,该函数解除阻塞

​ 当事件产生后,集合中会只剩下触发事件的文件描述符

poll:阻塞函数,内核检测指定文件描述符集合中,是否有文件描述符准备就绪

​ 当文件描述符准备就绪后,该函数解除阻塞

epoll:epoll树、内核链表、epoll_create、epoll_ctl、epoll_wait

区别:select:监听的文件描述符有上限,Linux中默认为1024个,每次都需要遍历整个文件描述符集合

​ poll:监听的文件描述符无上限,每次都需要遍历整个文件描述符集合

​ epoll:监听的文件描述符无上限,可以快速定位就绪的文件描述符,有效避免了遍历过程


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

相关文章

Mybatis 缓存

JPA 原理 事务 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。 本地事务 紧密依赖于底层资源管理器(例如数据库连接 ),…

【BBQ: A Hand-Built Bias Benchmark for Question Answering 论文精读】

BBQ: A Hand-Built Bias Benchmark for Question Answering 论文精读 InformationAbstract1 Introduction2 Related Work3 The Dataset3.1 Coverage3.2 Template Construction3.3 Vocabulary4 Validation5 Evaluation6 Results7 Discussion8 Conclusion9 Ethical Consideration…

shell sed命令

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 sed 命令sed 编辑器sed 的工作流程的三个过程命定格式常用选项常用操作 实验操作打印内容使用地址删除行替换插入 sed 命令 sed 编辑器 sed是一种流编辑器&#x…

【JavaScript】线程和进程,JavaScript线程,事件队列,事件循环 ,微任务、宏任务

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 进程和线程JavaScript线程事件队列、事件循环微任务、宏任务面试题1面试题2 进程和线程 进程&a…

Ceres简介及示例(8)On Derivatives(Analytic Derivatives)

考虑以下曲线(Rat43) 的拟合问题: y b 1 ( 1 e b 2 − b 3 x ) 1 / b 4 y \frac{b_1}{(1e^{b_2-b_3x})^{1/b_4}} y(1eb2​−b3​x)1/b4​b1​​ 也就是说,给定一些数据 { x i , y i } , ∀ i 1 , . . . , n \{x_i, y_i\},\ \forall i1,... ,n {xi​,yi​}, ∀…

小红书数据分析:如何用ChatGPT输出爆文笔记

ChatGPT的热度依旧不减,随着技术升级,越来越多更高级的玩法被发掘。今天我们就来聊聊,如何用ChatGPT写出小红书风格的文章。 首先,小红书笔记制作分为两个步骤: 1、找选题 2、写小红书风格的笔记 我们用例子说话&a…

SQL执行过程

1. select 语句执行过程 一条 select 语句的执行过程如上图所示 1、建立连接 连接器会校验你输入的用户名和密码是否正确,如果错误会返回提示,如果正确,连接器会查询当前用户对于的权限。连接器的作用就是校验用户权限 2、查询缓存 MySQL…

17.plantUML画类图的语法、组合关系和聚合关系之间的区别

文章目录 plantUML画类图的语法组合关系和聚合关系之间的区别依赖关系和关联关系的区别一个类图语法示例 plantUML画类图的语法 泛化关系就是继承关系 语法解释&#xff1a;<|-- 表示组合&#xff0c;<|-表示继承 表示 public&#xff0c; #表示protect - 表示 private…