阻塞、非阻塞、同步与异步IO的区别

IO读取数据的过程

如图所示,进程读取数据的过程主要分为两个步骤

1.内核将数据准备好到内核缓冲区

2.内核将数据拷贝到用户态

在上述这两个过程里,进程首先和内核打交道,之后内核再和硬件(如网卡)打交道

阻塞IO

如图所示,阻塞IO是指,无论用户进程和内核打交道还是内核和硬件打交道,这两个过程都阻塞,也就是说,进程要等待内核将数据在内核缓冲区准备好(第一个阶段),并且还要等待内核缓冲区的数据拷贝到用户态(第二个阶段)时才返回

非阻塞IO

非阻塞IO是指在第一个过程里不阻塞等待内核的结果,而是采用轮询的方式不断询问内核缓冲区中是否有数据,直到内核中有数据后,就在第二个阶段进行阻塞,保证数据成功从内核拷贝到用户

同步IO

同步io是指当进程发起IO后,必须等待IO操作完成

无论是阻塞IO还是非阻塞IO都是同步IO,因为二者都需要在第二个阶段里阻塞,等待内核将数据拷贝到用户,由于进程必须在第二个阶段等待,那么也就是说,进程在io的整个过程里都必须要等待内核将数据拷贝到用户才算成功,而在这个过程里,进程是不能去做其他事情的,无论你是轮询内核也好,等待内核也好

异步IO

异步IO是指,进程在调用io操作后,我无需关注结果在什么时候返回,届时你准备好了数据给我就可以了(通过回调机制完成),这个过程里我可以去做别的事情

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

股民用脚投票 退退退!

倒计时2天,看来今年首只非ST类要退市的股票诞生了。 继上周五封S跌停后,今天正源(股份)再度被股民用脚投票一字跌停, 这已经连续第18个交易日股价低于1块钱了。 按照退市新规,连续20个交易日股价低于1元是…

Docker(三) 容器管理

1 容器管理概述 Docker 的容器管理可以通过 Docker CLI 命令行工具来完成。Docker 提供了丰富的命令,用于管理容器的创建、启动、停止、删除、暂停、恢复等操作。 以下是一些常用的 Docker 容器命令: 1、docker run:用于创建并启动一个容器。…

拖线无人机技术:像风筝一样飞行,无人能干扰

拖线无人机技术是一种独特且高效的无人机应用技术,其设计理念源于风筝。这种无人机不仅能够在空中稳定飞行,而且具备极强的抗干扰能力,使其在各种复杂环境下都能保持通信畅通和任务执行的高效。 拖线无人机技术的核心在于其拖线系统。与传统的…

springboot实现多开发环境匹配置

首先logbok-spring.xml里面的内容 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 开发、测试环境 --><springProfile name"dev,test"><include resource"org/springframework/boot/logging/log…

从 0 开始实现一个博客系统 (SSM 项目)

相关技术 Spring Spring Boot Spring MVC MyBatis Html Css JS pom 文件我就不放出来了, 之前用的 jdk8 做的, MySQL 用的 5.7, 都有点老了, 你们自己看着配版本就好 实现功能 用户注册 - 密码加盐加密 (md5 加密)前后端用户信息存储 - 令牌技术用户登录 - (使用 拦截…

打造高质感的电子画册,这篇文章告诉你

​在数字化时代&#xff0c;电子画册作为一种全新的视觉传达方式&#xff0c;正逐渐成为各行各业展示形象、传播信息的重要工具。相较于传统的纸质画册&#xff0c;电子画册具有更高的质感、更好的互动性以及更低的制作成本&#xff0c;使得它愈发受到众多企业的青睐。那样怎么…

多电压档hold扫尾

MMMC下STA收敛更为困难&#xff0c;setup通过DMSA可以很好的得到收敛&#xff1b;但是常规的时序修复工具很难通过工具得到最终clean的时序状态&#xff0c;本文介绍一种多模多角下hold的收敛方法。 该方法主要通过遍历hold路径上多电压setup的余量&#xff0c;支持从前往后和从…

uniapp 使用vuex 在app上能获取到state,小程序获取不到

1. 在根目录下新建store目录, 在store目录下创建index.js定义状态值import Vue from vue; import Vuex from Vuex; import Vuex from vuex; Vue.use(Vuex);const store new Vuex.Store({ state: { login: false, token: , avatarUrl: , userName: }, mutations: { lo…

HiWoo Box工业网关

在科技飞速发展的今天&#xff0c;工业领域正迎来智能化变革。在这场变革中&#xff0c;工业网关作为连接工业设备与远程控制中心的桥梁&#xff0c;发挥着至关重要的作用。HiWoo Box网关凭借其卓越的性能和广泛的应用场景&#xff0c;为工业领域带来了全新的智慧化解决方案。 …

IP地址SSL证书应用场景以及如何申请?

一&#xff1a;IP地址SSL证书主要应用于以下几种场景&#xff1a; 1.API接口保护&#xff1a;许多云服务和企业内部系统使用IP地址直接作为服务的访问点&#xff0c;特别是在API接口的调用中。IP地址SSL证书可以为这些API接口提供必要的安全加密&#xff0c;确保数据在传输过程…

44、Flink 的 Interval Join 详解

Interval Join Interval join 组合元素的条件为&#xff1a;两个流&#xff08;暂时称为 A 和 B&#xff09;中 key 相同且 B 中元素的 timestamp 处于 A 中元素 timestamp 的一定范围内&#xff0c;即 b.timestamp ∈ [a.timestamp lowerBound; a.timestamp upperBound] 或…

代码随想录算法训练营day21|530.二叉搜索树的最小绝对值差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

二叉搜索树的最小绝对值差 递归法 首先需考虑这是一个二叉搜索树&#xff0c;在中序遍历后的结果为从小到大的一个序列&#xff0c;寻找二叉搜索树的最小绝对值差&#xff0c;只需比较一个节点与之后的差值即可。在遍历的过程中&#xff0c;我们需要一个节点保存前节点…

[IMX6ULL驱动开发]-Linux对中断的处理(二)

上一篇文章中&#xff0c;引入了Linux对于中断的一些简略流程以及中断抽象为具体实际形象。此文章主要是继续加深对Linux对中断的处理流程以及一些相应的数据结构。 目录 Linux对中断的扩展&#xff1a;硬件中断、软件中断 多中断处理 中断上下部处理流程 发生中断A&#…

Liunx学习随笔

Linux学习随笔 Linux学习随笔一.前期准备1.安装Vmware Workstation软件2.下载linux镜像3.安装操作系统4.配置静态ip5.下载安装远程连接工具 二.语法2.1 linux哲学思想(原则)2.2 小命令 夕阳无限好&#xff0c;只是近黄昏&#xff0c;时隔一年&#xff0c;重新提笔 没有比脚更远…

vue3+arco design通过动态表单方式实现自定义筛选

目录 1.说明 2.示例 3.运行截图 ​编辑 4.总结 1.说明 (1) 本文主要实现通过动态表单的方式实现自定义筛选的功能&#xff0c;用户可以自己添加筛选的项目&#xff0c;筛选条件及筛选内容。 (2) 每个项目的筛选包含筛选项目&#xff0c;筛选条件&#xff0c;筛选方式及筛选…

【算法】位运算算法——只出现一次的数字Ⅱ

题解&#xff1a;只出现一次的数字Ⅱ(位运算算法) 目录 1.题目2.题解&#xff1a;3.代码示例4.总结 1.题目 题目链接&#xff1a;LINK 要求&#xff1a;时间复杂度&#xff1a;O(N)&#xff0c;空间复杂度&#xff1a;O(1) 2.题解&#xff1a; 3.代码示例 class Solution {…

20212313 2023-2024-2 《移动平台开发与实践》第6次作业

20212313 2023-2024-2 《移动平台开发与实践》第6次作业 1.实验内容 设计并开发一个语音识别应用系统。 通过使用RecognizerIntent实现语音识别功能&#xff0c;开发一个Android语音识别系统。 2.实验过程 2.1下载语音识别的SDK 这里我们选择的是科大讯飞的语音识别&#…

2024年4月—马克思主义基本原理概论真题及答案解析(上海自考)

目录 1.选择题 2.简答题 3.论述题 1.选择题 2.简答题

aws glue配置读取本地kafka数据源

创建连接时填写本地私有ip地址&#xff0c;选择网络配置 配置任务选择kafka作为数据源 但是执行任务时日志显示连接失败 文档提到只能用加密通信 如果您希望与 Kafka 数据源建立安全连接&#xff0c;请选择 Require SSL connection (需要 SSL 连接)&#xff0c;并在 Kafka priv…

text-embedding 嵌入模型

为什么使用embedding 计算机只能处理数字&#xff0c;但我们希望它能够理解文字、图片或其他形式的数据。这就是embedding的作用。它将这些复杂的数据转换成数字表示&#xff0c;就像给它们贴上了标签一样。这些数字表示不仅保留了原始数据的重要信息&#xff0c;还能在计算机…