高级I/O 基础概念

文章目录

  • 什么是高级I/O
  • 五种常见高级I/O
  • 同步IO和异步IO
  • 多路转接是异步IO吗

什么是高级I/O

高级I/O(Advanced I/O)是指在计算机系统中进行输入和输出操作时使用的一种更高级的接口和技术。它提供了比传统的基本I/O操作更丰富和灵活的功能,以满足更复杂的应用需求。
高级I/O通常具有以下特点:
异步操作:高级I/O支持异步操作,即可以在进行输入/输出操作时不阻塞程序的执行,提高了系统的并发性能。
缓冲机制:高级I/O通常会使用缓冲区来存储数据,以减少对底层设备的频繁访问,提高数据传输的效率。
多路复用:高级I/O支持多路复用技术,可以同时处理多个输入/输出操作,提高系统的响应能力。
支持更多的数据类型:高级I/O可以处理更多种类的数据,例如文件、网络数据、内存映射文件等。

五种常见高级I/O

(说的比较空泛概览一下就行)
在这里插入图片描述

阻塞式IO模型(Blocking IO):应用程序向操作系统发起IO请求后,会一直等待直到IO操作完成,期间无法执行其他任务。

非阻塞式IO模型(Non-blocking IO):应用程序向操作系统发起IO请求后,会立即返回,无需等待IO操作完成,但需要不断轮询IO操作是否完成,期间可以执行其他任务。

IO复用模型(IO Multiplexing):应用程序将多个IO请求注册到一个IO复用器(如select、poll、epoll等),当其中一个IO操作完成时,IO复用器会通知应用程序进行处理,期间可以执行其他任务。——也就是多路转接

IO模型中的多路转接(Multiplexing)是一种基于事件驱动的IO处理方式,通过使用IO复用器(如select、poll、epoll等)来同时监听多个IO事件,从而实现对多个IO操作的管理和处理。在多路转接模型中,应用程序将多个IO请求注册到IO复用器中,并通过IO复用器等待事件的发生。当其中一个IO事件就绪(如可读、可写等)时,IO复用器会通知应用程序,应用程序可以根据具体的事件类型进行相应的处理。多路转接模型的优势在于可以同时处理多个IO事件,避免了阻塞式IO模型中的等待时间,提高了IO的效率和吞吐量。同时,多路转接模型也适用于非阻塞式IO模型,可以实现对多个非阻塞IO操作的管理和处理。常见的多路转接模型有select、poll和epol

信号驱动式IO模型(Signal-driven IO):应用程序向操作系统发起IO请求后,继续执行其他任务,当IO操作完成时,操作系统向应用程序发送一个信号,应用程序收到信号后进行处理。

异步IO模型(Asynchronous IO):应用程序向操作系统发起IO请求后,无需等待IO操作完成,操作系统会在IO操作完成后通知应用程序进行处理,期间可以执行其他任务

同步IO和异步IO

(说的比较空泛概览一下就行)

(多线程同步和IO同步是两种截然不同的概念,是没有关系的)

同步和异步关注的是消息通信机制.
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回. 但是一旦调用返回,就得到返回值了; 换句话说,就是由调用者主动等待这个调用的结果;
异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果; 换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果; 而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用.

同步IO(Synchronous IO)和异步IO(Asynchronous IO)是两种不同的IO操作模型,它们的主要区别在于IO请求的发起和处理方式。

同步IO:在同步IO模型中,应用程序发起IO请求后会阻塞等待IO操作完成,直到数据就绪或超时才能继续执行后续操作。同步IO是一种阻塞式的IO模型,应用程序需要主动等待IO操作的完成,无法同时处理其他任务。同步IO适用于IO操作相对简单且数据量较小的场景。

异步IO:在异步IO模型中,应用程序发起IO请求后无需等待IO操作完成,可以继续执行其他任务。当IO操作完成后,操作系统会通知应用程序进行处理。异步IO是一种非阻塞式的IO模型,应用程序可以并发处理多个IO操作。异步IO适用于需要并发处理多个IO操作或IO操作耗时较长的场景。

多路转接是异步IO吗

多路转接(Multiplexing)是一种IO模型,它可以用于实现异步IO。虽然多路转接本身并不是异步IO的具体实现方式,但它是一种常用的用于实现异步IO的技术手段。
在多路转接模型中,应用程序可以同时监听多个IO事件,并通过IO复用器(如select、poll、epoll等)等待事件的发生。当其中一个IO事件就绪时,IO复用器会通知应用程序进行处理。这种方式可以实现对多个IO操作的并发处理,从而提高IO的效率和吞吐量。
在多路转接模型中,应用程序可以将IO操作设置为非阻塞模式,使得IO操作在就绪前不会阻塞应用程序的执行。这样,应用程序可以继续执行其他任务,而不需要等待IO操作完成。这种非阻塞的特性使得多路转接模型具备了异步IO的特点。

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

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

相关文章

flask web开发学习之初识flask(二)

文章目录 一、创建程序实例并注册路由1. 为视图绑定绑定多个URL2. 动态URL 二、启动开发服务器1. 自动发现程序实例2. 管理环境变量3. 使用pycharm运行服务器4. 更多的启动选项5. 设置运行环境6. 调试器7. 重载器 一、创建程序实例并注册路由 app.py # 从flask包中导入flask类…

【Python】手把手教你用tkinter设计图书管理登录界面(上)

tkinter tkinter是Python的标准GUI库之一,它是Python中用于创建图形用户界面(GUI)的一种工具。tkinter是一个开源的软件包,由Tcl(Tool Command Language)编写,可以用于创建各种GUI元素&#xf…

使用python发邮件

使用python发邮件,下面是代码,我使用的是88完美邮箱。 该代码是我程序完成,然后它会自动发一封邮件,并且通过sys.argv将程序相关设置写到邮箱里。 下面代码是88邮箱为例: import sys import smtplib from email.heade…

electron调用dll问题总汇

通过一天的调试安装,electron调用dll成功,先列出当前的环境:node版本: 18.12.0,32位的(因为dll为32位的) VS2019 python node-gyp 1、首先要查看报错原因,通常在某一行会有提示,常…

[跑代码]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

Installation(下载代码-装环境) conda create -n bk-sdm python3.8 conda activate bk-sdm git clone https://github.com/Nota-NetsPresso/BK-SDM.git cd BK-SDM pip install -r requirements.txt Note on the torch versions weve used torch 1.13.1 for MS-COCO evaluation…

行业风云突变,毫末发内部信:明年要打赢智驾生死之战

岁末智能车行业风云突变。 广州车展前夕,小米汽车首车曝光;车展现场,各路车企上演旗舰之战;而车展才刚落幕,华为突然宣布车BU业务拆分。 外资、自主、合资、跨界车企,各路势力提前决战2025。智能新能源车…

TCP解帧解码、并发送有效数据到FPGA

TCP解帧解码、并发送有效数据到FPGA 工程的功能:使用TCP协议接收到网络调试助手发来的指令,将指令进行解帧,提取出帧头、有限数据、帧尾;再将有效数据发送到FPGA端的BRAM上,实现信息传递。 参考:正点原子启…

LeetCode(40)同构字符串【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 同构字符串 1.题目 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0…

在idea中写sql语句,向数据库添加数据时,添加的字符串却显示???,解决方法

这是字符编码的问题 如何解决: 在idea的配置数据库的地方修改下边:mysql8版本和5版本差距不大。 在URL后加?useUnicodetrue&characterEncodingUTF8 例如 原来:String url “jdbc:mysql://localhost:3306/stu”; 改变后:St…

ssh连接docker容器处理备忘

1、查看容器ip,记下来之后要用 docker inspect elastic | grep IPAddress 2、使用root进入docker容器 docker exec -it -u root elastic /bin/bash 3、安装openssh #更新apt apt-get update#安装ssh client apt-get install openssh-client#安装ssh server apt-…

ubuntu配置ssh

本教程中的涉及路径的所有命令都是在root用户下的,读者可将路径中的/root更改为/home/用户名 1、重置密码 新安装的系统需要在服务器控制台点击“重置密码”,为root用户设置一个密码 ————————————————————————————————…

分享:大数据方向学生学徒参与条件

学生学徒制的实施旨在解决当前新技术企业招聘技能人才难和青年就业难的结构性矛盾,通过生态链链主企业携手院校共同解决毕业年度学生就业问题,按照学生个人意愿,建立以就业导向的学生学徒制关系,签订学徒培养协议确定学生就业岗位…