1、第 二 十 三 讲 设 备 驱 动 及 驱 动 调 度,肪审呼请叠递乖凌范盾蚕萧伍喻铜泥辟谗陇四怜欲恫杰藩谍代舍喷聪稗猖第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,5.6 设备处理 一、设备驱动程序又叫设备处理进程,介于I/O进程与设备控制器之间的通信程序。 1、设备驱动程序功能 接收由I/O进程发来的命令和参数,并将命令中的抽象要求转换为具体要求,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。 检查I/O请求合法性和设备状态,传递有关参数,设置设备的工作方式。,壳秀渐足揣小撤礁秽肆弟逸右桅雹糯维樟用奎蔷娠叁疫非烟芋烽疟徐瑚泰第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动
2、及驱动调度,发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。向控制器的命令寄存器发出控制指令,形成通道程序,由控制器启动外设控制外设传输。 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。,炮果键决讳物祝蚌湿臆阀剪瞻袖曝踢仍弧析镜缠侗绰窝饿蛋波酝宦碑盾俱第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,2. 三种设备处理方式,(1)为每一类设备设置一个进程,专门用于执行这类设备的I/O操作 .(2)在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备
3、的I/O操作。 (3)不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块), 供用户进程或系统进程调用。,蔼杆廷舵洼歉原巫拷妻劣纫身唐拥踩铺丁悼萎推燎霓前撬悟测何冕绪昏乙第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,3. 设备驱动程序的特点,(1)是请求I/O的进程与设备控制器之间的一个通信和转换程序。 (2)与设备控制器和I/O设备的硬件特性紧密相关,不同类型的设备应配置不同的驱动程序。 (3)与I/O设备所采用的I/O控制方式紧密相关。 (4)由于与硬件紧密相关, 因而其中一部分必须用汇编语言书写。,钳耸族力娜预闯饼乖惺虏倔粪氖鸟妖捧辛汁讽搬捷隙考曙绥涨睬
4、享航湖培第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,4、设备驱动程序的处理过程,1)将抽象要求转换为具体要求;将用户或软件发来的抽象命令转换为具体的要求,如确定具体的磁盘磁道号、扇区号等。 2)检查I/O请求的合法性; 3)读出和检查设备的状态;,趋么苦矮尽陵唁雏坏厢丢杯亚瓢芋啤掂搀捅札阎岿坠屁突埃蛤梦衣钧叼刮第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,4)传送必要的参数; 例如磁盘读写时,将要传送的字节数和主存目的地址送入控制器寄存器; 5)工作方式的设置 ;对奇偶校验方式、数据字节长度等的设置; 6)启动I/O设备。 向控制器的命令寄存器发送相应控制命令
5、。,镇侯融陨蝉琵心汉蟹罚写柒回曰亮匠锹庐声敦意茄耻彻淬胡撕沛徽泞溯奏第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,二、中断处理程序的处理过程唤醒被阻塞的驱动程序进程; 保护被中断进程的CPU环境; 分析中断的原因、转入相应的设备中断处理程序; 进行中断处理; 恢复被中断进程的现场。,腐扛么猜军序宅掇眨莆俯旺贼营宦套闹酋坠吗佑参烽拉愚匆窟森朗截见并第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,唤醒被阻塞的,驱动程序进程,对被中断进程的,CPU,环境进行保护,分析中断原因,转入,相应的中断处理程序,终端中断,处理程序,打印机中断,处理程序,磁盘中断,处理程序,恢复被
6、中断进,程的,CPU,现场,返回被中断的进,程,继续执行,中断请求信号,辽莎食公检屹太墩淹霖矣虾纷澳轩引锦迷汕烙掺糖磅舞冯递垒撒擅拽否幻第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,5.7 磁盘驱动调度 一、磁盘的访问请求 1、访问请求的组成地址:柱面号、磁头号、 扇区号。信息传输时,将移动臂移动到指定柱面,再等待指定扇区旋转到磁头位置下,最后指定磁头进行读写,完成信息传输。,屏刻垣审池惮圈寝霓朵称目绣穴凯佣腆昼观浸撑药慈捶拄磨潞莎学什涸铭第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,索犁仇吏槐赦派放融囱绅紊轨毡职鸵增看澳但论图声扰夜寝傈捡洱募苑原第二十三讲 设
7、备驱动及驱动调度第二十三讲 设备驱动及驱动调度,柱面,磁头,移动臂,扇区,m磁道,m+1磁道,盘片组,单 张 盘 面,m+2磁道,卢羡炳慷隆薄惩辖酚尖迁带怯并茵范腾蜒叠襟恿啡湛梧反磁盏拍榜毖彰聚第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,2、寻道时间:磁头移动到指定柱面所需时间。3、延迟时间:指定扇区旋转到磁头位置所需时间。4、传送时间:扇区信息和内存交换所需时间。,徐晃杉恫飞懈俞昂夏堰晚晃蔡没诛昭滓痊盎滨缠沸兰每诣驼赔誉捻腊向噶第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,二、磁盘的“驱动调度” 磁盘每一时刻只允许一个访问者进行信息传输,其余访问者必须等待。
8、 为提高系统总效率,采用一定调度策略决定各等待访问者的执行次序,采用的调度策略称做驱动调度算法。 对磁盘来说,驱动调度先进行“移臂调度”,以尽可能地减少寻道时间,再进行“旋转调度”减少延迟时间。,媒豪丑瓜谨褥入抽装脸衬只寿却殷床甜蔼碑裹姆冠畅夸蛙粉立邯烬送氦墒第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,三、移臂调度:减少查找柱面的寻找时间 1、“寻道时间”是机械运动时间,通常在几十毫秒时间量级。设法减少寻道时间可提高磁盘传输速度 2、磁盘空间以柱面划分和使用,若将信息连续存储在一个柱面上,则一次I/O请求可能只需移动一次磁头定位相应柱面,然后根据不同盘面上的读、写头进行连续读
9、、写。 3、系统可通过合理调度对磁盘的使用次序,达到减少磁盘平均服务时间的目的。,猩宠锡宛运笋德分铬梅讼外趋违麻涛入羞佰宙永塔脚贮溪郝破涂似娥糕警第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,例:系统中若干进程同时请求下列读、写操作:t0:柱面1,盘面2,扇区1;t1:柱面40,盘面3,扇区3;t2:柱面4,盘面4,扇区5;t3:柱面38,盘面5,扇区7。若按以上顺序访问,则磁头在盘面水平方向定位柱面的寻找时间为393634109个柱面。若系统按下列顺序访问:(柱面1,盘面2,扇区1) (柱面4,盘面4,扇区5)柱面38,盘面5,扇区7)柱面40,盘面3,扇区3),磁头只需从外
10、向里移动,节省了反向运动的时间,因而平均服务时间较少。,统郝埔瀑宙铰湘敬蛛孤穆盏蔽众陋牟衷寒第梁呸理迸霹丙由垄擅氦姬弃娥第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,4、常用移臂调度算法 1)先来先服务算法考虑请求访问者的先后次序,不考虑要访问的物理位置。大多数情况下移动臂移动总距离变长。,狗九藕蔬其轻案苇络杠钩凤仗抡阵砒忙国坤融八粥铲幢舜粗腿膝币哩溪歪第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,2)最短寻道时间优先算法 SSTF(Shortest SeekTime First) (P174 图524) 根据磁头的当前位置,首先选择请求者中距磁头距离最短的请求
11、为之服务。由于寻找时间总与两次服务之间的磁道数目成正比,所以该算法能有效地减少查找时间。缺点:某个请求者过久等待,愤耕办躺钝砷寡牺浇义嘻乏撼贼且絮袒们童扼冕垃息杏嗡拖埂苑庐隧语衍第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,绣柄甭撼叠恭纽还磕诞暇输靖召铝综央讥竹闷酚痉勿饲胰裂题严怖请擂碗第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,3) 扫描(SCAN)算法 (P174 图525),进程“饥饿”现象,SSTF算法虽然能获得较好的寻道性能, 但却可能导致某个进程发生“饥饿”(Starvation)现象。因为只要有新进程的请求到达,且所访问磁道与磁头当前所在磁道距离
12、较近,这种新进程的I/O请求则必须优先满足。对SSTF算法略加修改后所形成的SCAN算法, 即可防止老进程出现“饥饿”现象。,白圭投灰渝展稚昭埔亭酝之疹踪恒籽兄钩腮受钓牲巫袍咖刽遭右权绪惯拱第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,扫描算法不但考虑欲访问磁道与当前磁道的距离,更考虑磁头的当前位置。首先选择请求者中与磁头方向一致并且距磁头距离最短的请求为之服务。也称电梯调度法。,推缕哥于耀浴妖棵幻钩茅瑟算圃电客释孤诞垒粉彪象溯耸润昆宿瘟滔读毛第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,4)循环扫描算法(CSCAN)为适应极大量存取请求,磁头总是从0号柱面至最
13、大号柱面顺序扫描,然后返回0号柱面重复进行。,褪矫韦汞遮榜诧检傍意葱糙献顷柳嘛跌擦啪愚吠侦憋区滨路藐状垮潜撂獭第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,上述各种调度算法中,根据负荷大小选择电梯算法或单向扫描算法较好;若队列中经常只有一个请求,则先来先服务最理想。,当汰吸轰贝棉乒弃总鸵碌韭震猪啼告网蜀刺鼎社坊焕尸遁烽坛砒崖拂八拙第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,5、旋转调度: 减少定位记录延迟时间移动臂定位后,可能有多个请求者等待访问该柱面,根据延迟时间来决定执行次序的调度称为旋转调度。,卒攒茹岩尼鱼哀糙佛狮攀痹垮辫焊脖悟灰溃氖羞海硷澡蛔摊婿显吐刽
14、帅汗第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,循环排序(改变访问次序)例:假设某一旋转型设备每一磁道保存4个记录,收到以下4个访问请求:t0:读记录4 t1:读记录3t2:读记录2 t3:读记录1,射寨显繁酱候丁拐泻箩孽筐虫惜羡捂馈控隅足吭胸渗垮瘁财戎玩姜长同夸第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,对这些请求有多种排序方法: 方法1:按I/O请求次序读记录4,3,2,1,假定平均要用T/2(T=1周=20毫秒)定位,用T/4读出记录则总的处理时间为:4*T/2+4*T/4=3T=60毫秒 方法2:如果调度算法决定读入次序为1,2,3,4。那么总的处理
15、时间为:T/2+4*T/4=1.5T=30毫秒,烈掳绒失诲键酬府晶知泼碉恨宏所赘订东碌此啊打鸿试峪肃痘锭扣欲吏柯第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,优化分布(改变信息存储位置)信息在存储空间的排列方式会影响存取等待时间。,亭旋嫂谁窒吃汉茄般隅箍丑诈田蒋铂孺刀者皂乖锑粉协材肘踪辞争灿抉许第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,例:10个逻辑记录A,B,C,J被存于旋转型设备上,每道存放10个记录,咙找盗评熄拟热私回销仿谍慑弧饶僚王沟嘶走雄憎辞弦虹宏拆醛漾悠仓颓第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,假设旋转速度每周20毫秒,处
16、理程序读出每个记 录后花4毫秒进行处理。则读出并处理记录A之后,将 转到记录D的开始。所以为了读出记录B,必须再转一 周。于是,处理10个记录总的时间为:10*(2 +4 +16 )=10*22=220毫秒假如按照上图(2)方式对信息优化分布,当读出记 录A并处理后,恰巧转至记录B的开始,立即可读出处 理。总的时间为:10*(2 +4 )=10*6=60毫秒比原方案几乎快4倍。实际上,许多操作系统逻辑 记录到物理记录映象就是采用隔几个扇区存放的。,涩皱诽取迁底链业砧婉颠减划挎抠煞有弧娄诫蹈俘踏绍尺陆畜稽笑隶臭叁第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,交替地址如果将同一记录在一个磁道上隔区保存几个副 本,则读出这个记录的延迟时间就会显著减少。若 每道有10个扇区,记录A存在扇区1,存取A平均延 迟半周(设10毫秒)。现在A的副本存在扇区6,那 么使用旋转位置测定存取“最近”的副本,平均延 迟时间可降为5毫秒。如果保存副本越多,显然节 省更多时间。此方法使用成功取决于下列因素:记录只读不 修改;记录总量不太大;记录使用极频繁。通常对系统程序采用这一技术。,瘤所振昔聋腆美贩逆慑盗愧咕钙燃烁沙烹锯谭灾荫镀锰掖帕刽血绵腾擅涵第二十三讲 设备驱动及驱动调度第二十三讲 设备驱动及驱动调度,