# IO模型

news/2024/7/3 1:47:06

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://lihuaxi.xjx100.cn/news/1162718.html

相关文章

C语言小游戏--三子棋

目录 问题描述 逻辑分析 具体实现 1.进入菜单界面 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋 6.判断输赢 运行结果 完整代码 game.h game.c test.c 问题描述 结合C语言所学知识,简单实现一个三子棋小游戏。 逻辑分析 进入菜单界面初始化棋盘…

连接器信号完整性仿真教程 三

本文将讲解CST边界(Boundary)、背景(Background)的概念及背景材料与边件设置。边界与背景是CST仿真电磁的基础,有必要了解它,并掌握其设置方法与步骤。并以两个实例演示了具体设置的操作。 一 背景、边界与…

Go语言基础——内置函数

Go语言基础 目录 Go语言基础内置类型值类型:引用类型:(指针类型) 内置函数内置接口error 内置类型 值类型: boolint(32 or 64), int8, int16, int32, int64uint(32 or 64), uint8(byte), uint16, uint32, uint64float32, float64stringcompl…

Scala学习(六)---apply方法和单例对象

文章目录 1.Apply方法2.单例模式 1.Apply方法 Scala中实例化一个类,可以不用new , 其原因 其实就是 apply 方法 apply方法的调用约定: 用括号传递给类实例或者单例对象名一个或者多个对象的时候 scala会在对应的类或者对象中查找apply方法 且…

数值计算 - 常用函数值计算方法

秦九韶算法 什么是秦九韶算法? 可以把多项式改写为便于递推的形式: 泰勒展开式 什么是泰勒展开式? 泰勒公式,也称泰勒展开式。是用一个函数在某点的信息,描述其附近取值的公式。如果函数足够平滑,在已知函…

如何避免孩子独自在家偷偷使用电脑?

电脑为我们的生活带来了极大的便利,但是对于孩子来说,过早的接触网络很容易影响其健康的成长。家长在家的话,还可以监督孩子,但如果家长出门了,该如何避免孩子偷偷使用电脑呢?其实方法很简单,只…

Halcon中从两组点的对应关系生成仿射矩阵,及思考原理和代码实现

有几个算子有点类似,看了下区别 1.vector_to_rigid( : : Px, Py, Qx, Qy : HomMat2D) 2.vector_to_similarity( : : Px, Py, Qx, Qy : HomMat2D) 3.vector_to_aniso( : : Px, Py, Qx, Qy : HomMat2D) vector_to_rigid 这个是刚性变换, 只有旋转和平移…

你知道黑客是什么样?

1 前言 现代人的生活离不开互联网,提到互联网人们总会想到一个词,那就是黑客。对于黑客大家对他们的了解却只局限于电影、电视中他们“无处不在”的可怕和他们“翻手为云覆手为雨”的技术中。但真正的黑客到底是什么? 2 什么是黑客 笔挺的…