- 1
- 0
- 约3.44万字
- 约 31页
- 2018-12-22 发布于天津
- 举报
异步IOAPCIO完成端口线程池与高性能服务器之一异步IO-Read
异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断????早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。???? 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为普遍采用的技术。这种技术使得IO设备在需要得到 服务时,能够产生一个硬件中断,迫使CPU放弃目前的处理任务,进入特定的中断服务过程,中断服务完成后,再继续原先的处理。这样一来,IO设备和CPU 可以同时进行处理,从而避免了CPU等待IO完成。????早期数据的传输方式主要是PIO(程控IO)方式。通过对IO地址编程方式的方式来传 输数据。比如串行口,软件每次往串行口上写一个字节数据,串口设备完成传输任务后,将会产生一个中断,然后软件再次重复直到全部数据发送完成。性能更好的 硬件设备提供一个FIFO(先进先出缓冲部件),可以让软件一次传输更多的字节。????显然,使用PIO方式对于高速IO设备来说,还是占用了 太多的CPU时间(因为需要通过CPU编程控制传输)。而DMA(直接内存访问)方式能够极大地减少CPU处理时间。CPU仅需告诉DMA控制器数据块的 起始地址和大小,以后DMA控制器就可以自行在内存和设备之间传输数据,其间CPU可以处理其他任务。数据传输完毕后将会产生一个中断。同步文件IO和异步文件IO下面摘抄于MSDN《synchronous file I/O and asynchronous file I/O》。有两种类型的文件IO同步:同步文件IO和异步文件IO。异步文件IO也就是重叠IO。在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。???? 如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,CPU将会调度其他线程进行执行,如果没有其他线程 需要执行的话,这段时间将会浪费掉(可能会调度操作系统的零页线程)。如果IO请求操作很快,用异步IO方式反而还低效,还不如用同步IO方式。????同步IO在同一时刻只允许一个IO操作,也就是说对于同一个文件句柄的IO操作是序列化的,即使使用两个线程也不能同时对同一个文件句柄同时发出读写操作。重叠IO允许一个或多个线程同时发出IO请求。????异步IO在请求完成时,通过将文件句柄设为有信号状态来通知应用程序,或者应用程序通过GetOverlappedResult察看IO请求是否完成,也可以通过一个事件对象来通知应用程序。
异步IO、APC、IO完成端口、线程池与高性能服务器之二 APC????Alertable IO(告警IO)提供了更有效的异步通知形式。ReadFileEx / WriteFileEx在发出IO请求的同时,提供一个回调函数(APC过程),当IO请求完成后,一旦线程进入可告警状态,回调函数将会执行。????以下五个函数能够使线程进入告警状态:????SleepEx????WaitForSingleObjectEx????WaitForMultipleObjectsEx????SignalObjectAndWait????MsgWaitForMultipleObjectsEx???? 线程进入告警状态时,内核将会检查线程的APC队列,如果队列中有APC,将会按FIFO方式依次执行。如果队列为空,线程将会挂起等待事件对象。以后的 某个时刻,一旦APC进入队列,线程将会被唤醒执行APC,同时等待函数返回WAIT_IO_COMPLETION。????QueueUserAPC可以用来人为投递APC,只要目标线程处于告警状态时,APC就能够得到执行。????使用告警IO的主要缺点是发出IO请求的线程也必须是处理结果的线程,如果一个线程退出时还有未完成的IO请求,那么应用程序将永远丢失IO完成通知。然而以后我们将会看到IO完成端口没有这个限制。????下面的代码演示了QueueUserAPC的用法。/************************************************************************//* APC Test.????????????????????????????????????????????????????????????*//*******************
您可能关注的文档
- 夏明生苏景胜陆涛陈炜昊李嘉辉.PPT
- 外销食品添加物英文卫生证明加工卫生证明检验报告自由销售.DOC
- 外源钒胁迫下甜玉米植物可溶性蛋白含量的动态变化-环境化学.PDF
- 多因子试验对培养基中两个或两个以上因素进行-咸宁职业技术学院.PPT
- 多租户高可用并行任务调度框架①-计算机系统应用.PDF
- 大学物理安全教育-山东大学课程中心.PPT
- 大学生儿童期心理虐待忽视与社会性体格焦虑的关系及负面身体自我.PDF
- 大雪节气是表示这一时期.PPT
- 天台中学物理学科建设汇报.PPT
- 天津公路水运工程施工企业主要负责人和安全生产管理人员考核.DOC
- 《GB/T 46962-2026印刷技术 安全印刷过程管理》.pdf
- 中国国家标准 GB/T 46962-2026印刷技术 安全印刷过程管理.pdf
- GB/T 46962-2026印刷技术 安全印刷过程管理.pdf
- 中国国家标准 GB/T 32580.5-2026轨道交通 地面装置 高压交流开关设备及互感器 第5部分:27.5 kV和2×27.5 kV金属封闭开关设备和控制设备.pdf
- 《GB/T 32580.5-2026轨道交通 地面装置 高压交流开关设备及互感器 第5部分:27.5 kV和2×27.5 kV金属封闭开关设备和控制设备》.pdf
- GB/T 33248-2026印刷技术 胶印橡皮布.pdf
- GB/T 18282.6-2026医疗产品灭菌 化学指示物 第6部分:用于小型蒸汽灭菌器性能测试的二类指示物和过程挑战装置.pdf
- 中国国家标准 GB/T 18282.6-2026医疗产品灭菌 化学指示物 第6部分:用于小型蒸汽灭菌器性能测试的二类指示物和过程挑战装置.pdf
- 中国国家标准 GB/T 31308.1-2026行政、商业和行业中的数据元、过程和文档 长效签名 第1部分:CMS高级电子签名(CAdES)规范.pdf
- GB/T 31308.1-2026行政、商业和行业中的数据元、过程和文档 长效签名 第1部分:CMS高级电子签名(CAdES)规范.pdf
最近下载
- (人教版2026新教材)数学一年级下册全册教材分析 课件.pptx
- 注射用硫酸艾沙康唑(康新博)中文说明书.pdf
- 初中数学八上-第十一章 实数和二次根式(压轴专练)(六大题型50道)(原卷版).pdf VIP
- 2021年NICE指南医患共同决策.pdf VIP
- 深度解析(2026)《GBT 10592-2023高低温试验箱技术条件》.pptx VIP
- 23.《“蛟龙”探海》课件 (共24张ppt)统编版语文七年级下册.pptx VIP
- 爱登堡电梯EDVF60/70调试、使用、维护说明(V1.0).pdf
- 舒适状况量表(GCQ).pdf VIP
- (正式版)D-L∕T 872-2016 小电流接地系统单相接地故障选线装置技术条件.docx VIP
- ECMO在ICU临床应用现状及展望护理课件.pptx VIP
原创力文档

文档评论(0)