- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章I/O操作模式 郑谦益、韩京宇 概述 I/O操作模式 文件I/O操作模式 内存的I/O映射 文件锁 终端I/O操作 I/O操作模式 I/O操作模式 阻塞方式 非阻塞方式 同步方式 异步方式 阻塞方式 概念 通常,在应用程序发出I/O请求后,如果I/O操作不能立刻完成,Linux内核将发出读写请求的进程暂时挂起,将CPU交给其他进程,等I/O完成后,重新切换回原来的进程继续运行,这种I/O处理方式称为阻塞方式。 非阻塞方式 概念 进程在发出读写请求后,不管I/O是否真正完成,可立即返回,继续执行。问题在于如何获知I/O操作已经完成,一种方法是不断地查询I/O状态,另一种方法是由操作系统通知I/O操作的完成,这种I/O处理方式称为非阻塞方式。 同步方式 概念 进程在发出文件读写请求后,如果需要进程等待或通过某种方式检查I/O操作是否完成,从而决定是否继续执行后续的工作,这种方式称为同步I/O方式。 异步方式 概念 进程在发出文件读写请求后,如果进程能继续执行其他工作,由内核以消息的方式通知进程请求的I/O操作已经完成,无需等待或检查I/O操作是否完成,这种方式称为异步I/O方式; 文件I/O操作模式 文件I/O操作模式 同步阻塞I/O模式 同步非阻塞I/O模式 I/O多路复用模式 信号驱动I/O模式 异步I/O模式 同步阻塞I/O模式 概念 通常,在进行I/O操作时,必须等到I/O操作完成才能进行下一步的操作,这种操作方式称为同步阻塞I/O模式, 同步阻塞I/O模式 实例分析 // exam10-1.c int fd_line,fd_kb,fd_display; char chr_from_kb[10]; char chr_from_line[10]; void test() { while (1) { read(fd_kb, chr_from_kb, 1); //非阻塞 write(fd_line, chr_from_kb, 1); read(fd_line, chr_from_line, 1);//非阻塞 write(fd_display, chr_from_line, 1); } } 同步非阻塞I/O模式 概念 在进程发出文件读写请求后,无论I/O操作是否完成,立刻返回。这样进程可继续执行后续代码。为了获知文件的I/O操作是否完成,需不断地对文件I/O状态进行测试。 同步非阻塞I/O模式 同步非阻塞I/O模式 方法一: 在打开文件时,设定打开的方式为非阻塞方式,例如: open(fifo1,O_RDONLY|O_NONBLOCK); 方法二: 如果文件已经打开,可通过fcntl函数改变文件的I/O模式. 方法三: 如果文件已经打开,也可通过ioctl函数来改变I/O操作的方式。 同步非阻塞I/O模式 多路复用I/O模式 概念 基于多路复用I/O模式的进程可同时对多个文件描述符的读写状态进行检测,直到发现这些描述符中某个的状态发生了变化时返回。这表明检测到某文件的I/O操作已经完成。此时,进程可根据返回的状态进行真正的读写操作。 多路复用I/O模式 多路复用I/O模式 信号驱动的I/O模式 概念 信号驱动I/O模式是利用文件描述符的I/O状态的变化,产生SIGIO信号,通过对SIGIO信号的处理,读写相应的数据。 信号驱动的I/O模式 信号驱动的I/O模式 实现步骤 1. 利用signal或sigaction函数定义信号SIGIO的处理函数。 2. 使用fcntl函数对文件描述符在状态发生变化产生SIGIO信号时,设置信号发送的对象。 3. 在运用open函数打开文件时,或运用fcntl函数对已打开的文件,设置为O_ASYNC方式。 异步I/O模式 概念 在进程发出I/O读写请求后,,无论I/O操作是否完成,立刻返回,继续执行后续的代码,当要求的I/O操作完成时,内核向发出请求的进程发送信号,通知I/O操作已完成,此时,操作的数据已就需,无需在内核与用户空间之间进行拷贝,这种I/O操作方式称为异步I/O模式。 异步I/O模式 在POSIX 1003.1标准中,定义了异步I/O模式的函数接口。Linux内核从版本2.5开始支持异步I/O模式,在文件操作集中增加了异步I/O的操作接口。 API函数 aio_read() aio_write() aio_error() aio_return() 内存的I/O映射 内存的I/O映
您可能关注的文档
- 新Flash动画制作与实训 教学课件 邓文达 第1章 Flash动画快速入门.ppt
- 新Flash动画制作与实训 教学课件 邓文达 第5章 物体运动规律.ppt
- 新Flash动画制作与实训 教学课件 邓文达 第10章 Flash经典动画实战.ppt
- 新Flash动画制作与应用 教学课件 周德云 17.ppt
- 新Flash中文版实用教程 教学课件 倪洋 第1章 Flash MX 2004概述.ppt
- 新Flash动画设计基础与应用 教学课件 李艳萍 宁跃飞 王辉 第10讲.ppt
- 新Flash动画设计与制作实例教程 教学课件 王德永 樊继 第10章课件制作.ppt
- 新Flash动画制作案例教程 教学课件 马震 本科Flash教材 02.ppt
- 新Flash动画制作案例教程 教学课件 马震 本科Flash教材 03.ppt
- 新Flash动画制作案例教程 教学课件 马震 本科Flash教材 10.ppt
最近下载
- 四川省医疗服务价格项目汇编(2022版).pdf
- NFT58000公差标准(中文版).pdf
- 国家卫生健康信息网络直报系统操作.pptx
- 英国A-level物理简明教材100 英国A-Leve课本-Edexcel AS Physics in 100 Pages.pdf VIP
- 2025-2026年中国慢直播行业市场现状调查及发展前景研判报告 .pdf VIP
- 9.BMI测算:学习程序分支语句 课件 粤高教B版(2019)八年级上信息科技.pdf VIP
- (小学组)全国版图知识竞赛考试题含答案.doc VIP
- 03.TDSQL(MySQL版)应用开发指南.pdf
- GB50471-2018 煤矿瓦斯抽采工程设计标准.docx
- 汽车加油加气加氢站技术标准.pdf
文档评论(0)