高并发IO的底层原理

b176e61bf22f391dd6f6a7711af77948.gif

作者 | 阿辉

来源 | Andy阿辉

思考:

作为程序员的我们,在编写软件进行文件读取,网络收发数据时,是不关心其具体的内部数据传输的。只关心把数据传输到缓冲区或及时从缓冲区读取数据。那么内部究竟是如何实现的呢,今天这篇文章就和大家一起学习了解下,希望对大家有帮助。

IO读写的基础

用户程序进行IO读写,依赖于底层的IO读写,都会调用底层的read/write两个系统调用。不同的操作系统其系统调用的名称不同。但是基本功能都是一样的。

首先在操作系统层面是有非常多的缓冲区的,比如进程缓冲区和内核缓冲区。

Read系统调用并不是直接从物理设备(硬盘)把数据读取到内存中的。Write系统调用也不是直接把内存中的数据写进物理设备。这两个调用方式都不直接和物理设备进行数据的传输。它们都在和内核缓冲区打交道。当进行Read系统调用时数据是从内核缓冲区被复制到线程缓冲区的,而当Write系统调用时,数据是从线程缓冲区被复制到内核缓冲区的。

那么朋友们读到这里是不是就有疑问,那么数据在内核缓冲区是如何实现数据的读写到物理设备上呢?这块就不是我们程序员朋友所关心的问题了,它是由操作系统内核来完成的。

可以这么理解:上层程序的IO操作,实际上不是物理设备级别的读写,而是缓存的复制。在我们平时的用户程序中,无论是Socket的IO、还是文件IO操作,都属于上层应用,它们的输入输出的处理,在编程流程上都是一致的。

内核缓冲区和进程缓冲区

缓冲区的目的:为了减少频繁地与设备之间的物理交换。

我们知道外部设备的读写在操作系统层面是需要不停的产生中断来实现的,而发生中断过程中,对于操作系统来说开销太大了。中断前,操作系统需要保存之前进程的数据和状态等信息,结束中断后,继而需要恢复之前的进程数据和状态等信息。之所以有了内核缓冲区就是为了减少这种底层系统的时间损耗,性能损耗。

操作系统内核对于内核缓冲区的使用是有一定的规则的。在操作系统层面,底层操作会对内核缓冲区进行监控,等待缓冲区到达一定数量的时候,在进行IO设备的中断处理,集中执行物理设备的实际IO操作。(这种机制在一定程度上提升了系统的性能)。

至于什么时候读写中断,是由操作系统内核决定的,用户程序不需要关心。

上层应用使用Read系统调用时,仅仅是把数据从内核缓冲区复制到上层应用的缓冲区(进程缓冲区),而当使用Write系统调用时,是把数据从进程缓冲区复制到内核缓冲区中。

baf7e66ba388af1179c7a40fa0a4675e.gif

往期推荐

如果让你来设计网络

Docker:从入门到实战过程全记录

浅述 Docker 的容器编排

如何在 Kubernetes Pod 内进行网络抓包

6363fd0758b1d55f37566fc7eeeb50b1.gif

点分享

cda8696789a66cce1568964558552349.gif

点收藏

f6568232b20add68f649497e3b0d4127.gif

点点赞

e7a0d582327cfdbc4c22285b2feb3dfb.gif

点在看

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

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

相关文章

新能源汽车太猛了,这些卡脖子技术你了解吗?

简介:从汽车行业的变化,我们即可初步看出芯片的重要性,那么,芯片对汽车行业的发展具体有哪些重要影响呢? 根据全球汽车咨询机构Auto Forecast Solutions统计的数据,截至10月10日,由于芯片短缺&…

android6 存储卡异常,手机SD卡无法读取时,如何在手机上修复损坏的SD卡?

吴川华南区技术负责人概要手机发生SD卡无法读取的情况时,无法读取的问题是由什么原因而引起的呢?我们又应该如何修复手机受损的SD卡呢?手机SD卡无法读取的常见原因及解决方法SD卡接触不良有时,SD卡无法读取识别,可能是…

龙蜥社区成立系统运维SIG,开源sysAK系统运维工具集

简介:系统运维SIG致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 OpenAnolis 龙蜥社区(以下简称“龙蜥社区”)正式成立系统运维(System Operation&Maintenance, sysOM&…

奔跑吧兄弟变成机器人是哪一期_奔跑吧预告,郑恺郭麒麟回归,而我却被女嘉宾的颜值吸引了...

哈喽小伙伴们,近期大家都看了《奔跑吧黄河篇》吗?现在已经播到第二期了,相信大家依旧是对跑男系列节目非常感兴趣的,播放量非常高,稳稳占据TX和AQY两大视频平台的综艺播放第一名的位置,可见网友们真的是非常…

院士专家热议如何拥抱“东数西算”,第二届中国IDC行业Discovery大会顺利召开

4月21日,一场别开生面的主题为“聚光奔赴”的数据中心行业大会圆满落下帷幕。由中国通信工业协会数据中心委员会指导,中国IDC圈与世纪互联共同主办的“2022年第二届中国IDC行业Discovery大会”在线上召开,会议聚焦国家“双碳”目标、“东数西…

刺客列传鸿蒙记,苒苒流年,春鸿秋燕,来往终何益。

【zhu shi 】:ran :[ran ran ]1.cao mao cheng de yang zi 。tang yan qian 《yi sha 》:“ran ran ji fang cao 。”2.qing rou de yang zi 。xie tiao 《za yong la mei 》:“xin xie chu ran ran 。”3.qing qing piao dong de yang zi 。he zhu 《zhe gu tian 》:“xiang r…

一文理解 K8s 容器网络虚拟化

简介:本文需要读者熟悉 Ethernet(以太网)的基本原理和 Linux 系统的基本网络命令,以及 TCP/IP 协议族并了解传统的网络模型和协议包的流转原理。文中涉及到 Linux 内核的具体实现时,均以内核 v4.19.215 版本为准。 作者…

video怎么重新加载 vue_vue 事件中更改video的src成功,视频不加载

也试过改soucre,也是这个样子麻烦解惑,试了好几个小时了HTML点击的地方click"show3d(../assets/video/2.mp4)">插入视频的地方事件show3d(url) {var sourceDom $();$(".video").html();$(".video").append(sourceDom)…

应对 Job 场景,Serverless 如何帮助企业便捷上云

简介:函数计算作为事件驱动的全托管计算服务,其执行模式天生就与这类 Job 场景非常契合,对上述痛点进行了全方面的支持,助力“任务”的无服务器上云。 作者:冯一博 任务(Jobs),是互…

Gartner发布新兴技术研究:深入洞悉元宇宙

供稿 | Gartner 出品 | CSDN云计算 根据Gartner预测,2026年全球30%的企业机构将拥有元宇宙产品和服务。 元宇宙是一个由独立但相互连接的网络所组成的持久、沉浸式数字环境,但目前尚未确定这些网络将使用的通信协议。元宇宙能够实现持久、去中心化、可…

android 离屏渲染 简单书,Android OpenGL ES 8.FrameBuffer离屏渲染

作用FrameBuffer Object,也称FBO,离屏渲染,可以摆脱屏幕的束缚,在后台做图像处理。理解FrameBuffer和Texture绑定,FrameBuffer犹如画板,而Texture犹如画纸,我们在上面画东西,画完后,…

双11实时物流订单实践

简介:随着双11的开启,物流业也迎来了年度大考。2021年双11期间,递四方作为物流仓储服务方,布局仓库和分拣点超40个,50w平米作业场地,单日订单峰值达千万级别,海量购物订单由递四方配送到家&…

阿里云徐立:面向容器和 Serverless Computing 的存储创新

简介:以上为大家分享了阿里云容器存储的技术创新,包括 DADI 镜像加速技术,为容器规模化启动奠定了很好的基础,ESSD 云盘提供极致性能,CNFS 容器网络文件系统提供极致的用户体验。 作者:徐立 云原生的创新…

云数引领下,桑达股份2021年营收427.04亿元,同比增长33.21%

4月21日,桑达股份发布2021年年度报告。据年报披露,2021年,桑达股份聚焦“数字与信息服务”和“产业服务”两大赛道,云计算与存储、数据创新、数字政府与行业数字化服务和高科技产业工程服务四大主责主业,全年实现营业收…

乐佰小迪智能机器人_云知声 AI 陪伴教育机器人方案亮相广州国际玩具展

近年来,儿童硬件市场呈现出持续爆发态势。数据显示,2018 年国内玩具市场零售规模约为 680亿元,消费需求旺盛。同时,在消费升级的大环境下,伴随新兴教育理念的崛起,以陪护教育机器人、儿童智能玩具为代表的新…

鸿蒙2.0beta报名,鸿蒙OS 2.0 Beta版系统在哪报名-报名方法介绍

鸿蒙OS系统一直以来深受大家的关注,最近全新推出了鸿蒙OS 2.0 Beta版,那么鸿蒙OS 2.0 Beta版在哪报名呢?小编为大家分享一下关于鸿蒙OS 2.0 Beta版的报名方法介绍,对鸿蒙OS 2.0 Beta版感兴趣的不要错过了。鸿蒙OS 2.0 Beta版系统报…

不改一行代码,轻松拥有企业级微服务治理|MSE微服务治理专业版发布

简介:随着业务的发展,微服务拆分越来越复杂,微服务的治理也成了一个比较令人头疼的问题。有没有更加简单且高效的方法来解决微服务治理的难题? 作者:十眠 随着业务的发展,微服务拆分越来越复杂&#xff0…

曦智科技沈亦晨入选2022达沃斯世界经济论坛“全球青年领袖”

日前,达沃斯世界经济论坛公布了2022年“全球青年领袖”名单,曦智科技创始人兼首席执行官沈亦晨博士获选,他将与来自全球42个国家的其他109位青年领袖一起,加入到为期三年的领导力培训项目中,从不同领域为全球发展发挥更…

python读取oracle数据到hvie parquet_创建Hive表来从parquet / avro模式读取parquet文件

We are looking for a solution in order to create an external hive table to read data from parquet files according to a parquet/avro schema.in other way, how to generate a hive table from a parquet/avro schema ?thanks :)解决方案Try below using avro schema:…

如何利用 “集群流控” 保障微服务的稳定性?

简介:应用高可用服务 AHAS (Application High Availability Service) 是经阿里巴巴内部多年高可用体系沉淀下来的云产品,以流量与容错为切入点,从流量控制、不稳定调用隔离、熔断降级、热点流量防护、系统自适应保护、集群流控等多个维度来帮…