- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅析 Linux IO技术体系
1 基本概念
IO操作是程序设计里的一个重头戏 ,尤其是 Linux中 ,管道、网络等设备都看成了文件描述符 ,因此IO对于Linux程序设计更加重
要。近年来 ,随着Nginx、lighttpd等新型高性能web服务器的广泛使用 ,其内部采用的epoll、异步IO等IO模型逐渐走入了人们的视野。
本文将探究Linux各个IO模型的来龙去脉、基于原理与相互之间的联系 ,并进行IO效率与性能的简要分析 ,解决人们对于Linux IO众多概
念、模型的理解混乱与误解 ,理顺出一个清晰的技术体系。
介绍Linux IO模型之前 ,需要先介绍两个对于论述IO模型非常重要的概念。
1.1 阻塞IO与非阻塞IO
所谓IO的阻塞与非阻塞 ,是指当进行IO操作时 ,需要的资源不可用 ,这时程序的表现。阻塞IO将让程序处于等待状态 ,指导需要的资源可
用 ;而非阻塞IO将直接返回 ,不等需要的资源可用。
比如通过read函数从一个网络socket中读取数据 ,对于阻塞IO来说 ,如果网络中没有数据 ,则read函数将一直阻塞直到有数据可
用 ,程序阻塞期间CPU将把时间片调度给其他进程 ;如果处于非阻塞IO模式 ,read函数将直接返回一个错误码 ,不会等待。
Linux支持将文件描述符设置为NOBOLCK支持IO的非阻塞模式。
1.2 同步IO与异步IO
IO的同步异步与IO的阻塞非阻塞这两种概念很容易混淆 ,实际上这两种概念的定义并不相似。同步IO是指发出IO操作后 ,后面的操
作不能进行 ,要么等待IO操作完成 ,要么放弃IO操作 ,总之后面的操作和当前的IO操作只能有一个 进行 ;异步IO是指发出IO操作后 ,马
上返回而继续执行后面的操作 ,而IO操作也 此时刻执行。
从以上的概念可以看出 ,同步与异步、阻塞与非阻塞这两种概念关注点不同 ,没有半毛钱关系。实现IO和其他任务的异步操作并难 ,
开启两个线程 ,一个进行IO操作 ,另一个线程继续进行后面的任务处理就行了 ,至于进行IO操作的线程既可以使用阻塞IO ,也可以使用非
阻塞IO。
而同步IO就更简单了 ,一般单个线程下的普通阻塞IO或者非阻塞IO都是同步的 ,因为IO操作和其他任务无法同时进行 ,要么想阻
塞IO那样 ,一直等待进行IO操作而不管后面的任务操作 ,要么想非阻塞IO那样 资源不可用时不管IO操作 ,直接 返回 ,进行后面的业务
操作。
需要指出的是 ,本文介绍的异步IO并不是采用多线程或者多进程那样简单的实现 ,而是 单线程内实现IO操作和其他任务的异步执
行 ,这需要Linux操作系统内核的支持 ,而且效率更高。
2 Linux IO模型分析
2.1 普通阻塞IO (普通青年 选择 )
普通阻塞IO是最基础最简单 ,也是使用最广泛的一种IO编程模型 ,菜鸟程序员 提高之前必须熟练掌握。
这种编程模型的详细流程如下图所示 ,各种IO操作 ,比如socket accept、read、write等 , 资源不可用时 , 此模型下都处于等待
状态 ,让出CPU资源给其他进程。
利用普通阻塞IO模型实现对多个文件描述符进行IO操作时 ,或者实现异步操作时 ,只能使用多线程方式 ,从而增加了线程切换方面
的开销 , 后面对各个IO模型性能的分析中将详细比较多线程阻塞IO和多路IO复用的性能差异。
2.2 普通非阻塞IO (2B青年 选择 )
普通非阻塞IO模型与阻塞模型的区别只是当IO操作遇到资源不可用时 ,非阻塞IO不会等待 ,而直接返回。普通非阻塞IO模型是实现
多路复用技术和异步IO技术的重要基础 ,但是单独使用非阻塞IO则是一种效率极低的行为。比如当进行read操作时没有可读数据 ,因为不
等待直接返回 ,所以不得不自己编写while循环 ,一遍遍的进行非阻塞的read操作 ,也就是轮询。这时程序一直处 运行状态 ,因此不会
让出CPU ,但是轮询实际上是一种无用功 ,最终的结果就是CPU都用 了无谓的轮询上了 ,造成CPU占用量高 ,但是IO吞吐量却不会超过
普通阻塞IO编程。
普通非阻塞IO模型的时序流程如下图所示 :
正如上图显示的轮询过程
您可能关注的文档
- 最快结构画图步骤教材.pdf
- 任务二、单处理机系统进程调度.doc
- 太阳能电池并联电阻资料.pdf
- 河道管理范围内建设项目防洪影响分析和技术审查要求探讨.pdf
- 第八章 V587 中文说明书 v01 141222.pdf
- 可变入射距离平焦场谱仪概念设计.pdf
- 第七篇 处理机调度.ppt
- 第十三章 ZL60301MJD中文资料(Zarlink Semiconductor)中文数据手册「EasyDatasheet - 矽搜」.pdf
- 硬件工程师培训教程资料.pdf
- 2007计算机组成及结构1.ppt
- 华源证券-阿里巴巴~W-9988.HK-重拾系列报告(一)-业务重知,价值重判.pdf
- 兴业证券-宏观策略-2025Q2业绩预告有哪些景气线索?.pdf
- 华安证券-城投月报25年06月:供需共振仍有支撑,每调买机策略延续.pdf
- 浙商证券-关注美国经济不着陆和二次通胀风险.pdf
- 申万宏源-7月宏观月报:关税效应进入“数据验证期”.pdf
- 国金证券-非银行金融行业稳定币系列报告一:扬帆起航,香港稳定币产业链生态深度解析.pdf
- 华龙期货-聚烯烃半年报:下半年宏观面仍是影响聚烯烃的重要因素.pdf
- 财通证券-信用|仍处有利区间.pdf
- 东吴证券-公用事业行业深度报告:新能源运营商行业深度,新能源全面入市,三大压制因素释放绿电迎反转.pdf
- 上海证券-2025年6月新基金发行报告-新基金受理与机构新设篇-:首批科创债ETF顺利获批,易方达销售子公司成立.pdf
最近下载
- 电能“发、输、变、配、用”五环节简介.pptx VIP
- 先进算力中心建设规划方案.docx VIP
- 安装钳工基础知识全集课件.ppt VIP
- 部编版六年级语文上册第三单元 习作_____让生活更美好 课件(共32张PPT).pptx VIP
- 医疗器械唯一标识管理制度(UDI).docx VIP
- 感术行动专项实施方案.docx VIP
- 企业案例广州超算中心 企业案例广州超算中心、项目建设规划、项目需求分析 1.3项目建设规划.docx VIP
- 音频处理软件:Adobe Audition二次开发_17.社区资源与支持.docx VIP
- 数控铣床第一章 数控铣床概述.ppt VIP
- 偏差报告单【范本模板】.doc VIP
文档评论(0)