- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级程序设计大作业
目录一、什么是同步和异步I/O?2二、为什么有两种I/O模型?2三、如何进行可伸缩的I/O操作。2四、Windows的I/O模型。3五、Windows的几种异步I/O模型。35.1I/O的处理速度35.2Windows的四种异步I/O35.3重叠属性35.4完成例成的使用35.5事件的介绍与用法.35.6 异步过程调用的介绍。35.7使用多线程的异步I/O。3《高级系统程序设计》课程考核大作业Windows操作系统中对I/O操作进行了非常好的设计,把文件和所有其他的输入输出设备的操作都统一由CreateFile等系列函数完成,论述I/O操作的同步方式和异步方式各自的特点。异步方式主要由4种实现形式,从理论描述和实践编写程序2个方面分别论述这4种形式的异同,并掌握它们的运用方法,必须要给出程序的设计思考过程和关键程序代码。一、什么是同步和异步I/O?同步(Sync)和异步(Async)的概念来自电信领域。它们主要用来处理时钟——同步通讯需要一个外部时钟信号来调整发送/接收方的节拍,而在异步模型中,任何需要的时钟信息从编码过的通讯信号中恢复(解码)而得到。同步/异步引入到计算机中是一个不同的概念:“对于异步操作,I/O请求独立于I/O处理流程,而在同步模型中,I/O请求必须等到操作确认完成。特殊的,“异步I/O在I/O处理过程中允许其他例程继续执行;在同步I/O中,操作的发起者必须等到硬件处理完I/O,返回操作的结果”。二、为什么有两种I/O模型?同步I/O模型很容易理解使用起来也简单,但是需要等待I/O操作执行,这样一来,性能将受到极大限制。例如:?客户在输入数据,到数据到达客户的这段时间,可以说服务器进程是一直在等待着的,甚至说如果客户不发(或者说没东西可以发),它也那对方没办法,进程一直卡着。于是我们就拿他没辙了。。。如果有多个套接字描述符,比如多个服务器进程,跟不同的客户进行交互,这种情况简直是不可想象的。? ? ? ? 于是我们需要一种方法,来知道哪个套接字准备好了,我们就立即动手。select就是这个作用,这也就是所谓的I/O复用技术,更一般的方法,叫做轮询,也就是我们不停的去检测询问套接字准备好了没有,这样也可以,但是效率太低,极度耗费CPU资源。?以上两个都是阻塞模型,也就是说,该等的还是得等,虽然以上两种方法并不能让我们不等。异步I/O的基本动机是获得高性能。实际上,它基于两点前提假设:I/O操作是耗时的,在I/O进行中,有大量时间可以让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模型中,对API的调用只在请求操作完成时才返回。但是并不意味着这个调用会阻塞。例如,假设要从socket读取数据,在发起读请求之前socket缓冲区中已有数据,这时read()将会成功返回且不会阻塞。为了避免在I/O操作阻塞时CPU空转,可以继续执行和这个Pending I/O无关的其他任务,或者是在恰当的时间发起I/O请求来避免I/O阻塞(bruce注:这是I/O多路复用的关键)。也就是说:多任务处理(Multitasking)——在I/O请求发起后,其他逻辑代码得到执行,同时,在I/O结束后,I/O操作后面的代码可以得到执行。I/O多路复用(I/O Multiplexing)——使用一个线程处理多个同步I/O设备句柄(device handles)。这个模型的关键是:仅在确定执行调用的线程不会被阻塞时才去调用I/O函数(因为即使没有发起任何类似connect(),read()的I/O操作,此时数据已经是就绪状态)。可以调用像select,poll,epoll这些同步类型的函数来检测多个设备句柄的状态,确认对它们进行I/O操作不会被阻塞。实际上,I/O多路复用提供了一种方式:使用一个同步调用来检测多个设备句柄的状态。它只会在一些句柄上有事件产生时才返回。这样就可以用一个线程处理多个同步I/O操作。可伸缩异步I/O模型,在异步I/O模型中,发出请求后I/O调用会立即返回,后面的代码将继续执行。下面这些模型中区别只在于:怎么获取I/O完成通知。轮询(Po
您可能关注的文档
最近下载
- 20年一造交通案例讲义杨建虎(正式版).pdf
- 五年级上册小学高年级学生读本第3讲《把人民放在心中最高位置》教案.doc VIP
- SY∕T 6671-2017 石油设施电气设备场所ⅰ级0区、1区和2区的分类(2-1).pdf
- 江苏省住宅装饰质量标准.doc
- 小学四年级数学上册亿以内数的读写专项练习题 .docx
- 2023年成人高考数学(文科)真题试卷及答案.docx VIP
- 大家的日语2-课件23-50课第27课.ppt
- ME4057 系列_C10.0微盟原厂规格书.pdf VIP
- 电机学刘慧娟习题答案.pdf
- 《EN50124_1-2016铁路应用_绝缘配合_第1部分:电工电子设备的电气间隙和爬电距离(中文).》.pdf
文档评论(0)