第八章设备与I/O管理设备及其分类设备的物理特性IO传输方式(查询、中断、通道、DMA)设备分配与去配设备驱动设备调度缓冲技术输入输出进程RAID技术虚拟设备8.1设备及其分类用途存储型设备磁盘,磁带,光盘IO型设备扫描仪,打印机,mouse,keyboard,monitor,网络设备网卡,交换机,etc.8.1设备及其分类管理共享型设备(块型)多个进程的IO操作以块为单位可以交叉独占型设备(块型)多个进程的IO操作以块为单位不宜交叉独占型设备(字符型)多个进程的IO操作以字符为单位不能交叉IO设备的物理特性传输一字节发生一次中断存储设备的物理特性磁带的物理特性头标信息块信息块信息块…………….尾标间隙操作:反绕,正向查找,反向查找,读,写,…地址:一维文件:顺序结构(一个文件占若干连续块)8.2设备的物理特性...磁盘组的物理特性......……盘面0盘面1盘面2盘面m-1扇区1扇区0扇区n-1柱面0柱面l-1…...引臂柱面号i盘面号j扇区号k块号b(一维地址)(三维地址)编址方法:使相邻块物理上最近例子:l=2;m=3;n=3柱面号:000000000111111111盘面号:000111222000111222扇区号:012012012012012012块号:01234567891011121314151617三维地址一维地址:b=imn+jn+k一维地址三维地址:i=b(mn)j=bmod(mn)nk=bmod(mn)modn未考虑读写延迟的扇区编号:扇区0扇区7扇区6扇区5扇区4扇区3扇区2扇区1扇区0扇区7扇区3扇区6扇区2扇区5扇区1扇区4考虑读写延迟的扇区编号(单交错):扇区0扇区5扇区2扇区7扇区4扇区1扇区6扇区3考虑读写延迟的扇区编号(双交错):光盘的物理特性:读取原理:pit/land螺旋线,22188圈(展开5.6km),内侧转速:530转/分;外侧转速:200转/分(密度均匀,读取速度均匀)………DataECCP14个bit构成一个symble42个symble构成一个frame98个frame构成一个sectorSector2352bytes588bits的frame各包含24字节Preamble:16bytes,前12bytes为:00FFFFFFFFFFFFFFFFFFFF00后随3bytes扇区编号,最后字节为mode2048字节288字节8.3I/O传输方式IO操作演变历史程序查询方式(programmedIO)(polling)CPUandDevicecannotworkinparallel中断方式(interrupt)CPUanddevicecanworkinparallel,toomanyinterruptsforCPU通道方式(channel)specialprocessorfordealingwithiooperations直接内存方式(DMA)DMAcontrollerinchargeofblockio8.3.1程序控制查询方式CPU启动设备完成FT缺点:处理机与设备串行工作;消耗大量处理机时间.8.3.2中断驱动方式CPU计算启动设备计算…计算中断处理计算设备:工作特点:CPU与设备并行工作设备多时对CPU打扰多8.3.3DMA方式③数据传输CPUDMA控制器内存地址计数控制缓冲磁盘⑤中断②DMA请求总线磁盘控制器④回答①DMA编程8.3.3DMA方式.①CPU通过设置DMA控制器实现DMA编程,同时启动磁盘控制器由磁盘读入数据至内部缓冲区并进行和校验;②DMA控制器向磁盘控制器发出读请求,并将内存地址放在地址总线上;③磁盘控制器将字节传到内存指定单元;④磁盘控制器向DMA控制器发送回答;⑤DMA控制器将内部地址寄存器加1同时将记数减1,重复上述过程直至计数值为0,此时DMA控制器向CPU发出中断信号.8.3.4通道方式通道负责IO操作的处理机指令系统基本操作:读、写、控制、转移、结束指令格式:(操作码,传输量,特征位,地址)运控部件CAW,CCW,CSW,CDW存储区域(与CPU共用内存,通道内有缓冲区)通道程序,IO数据(channeldoeshaveitsbuffers)通道程序执行过程:按CAW取通道命令CCW(CAW)+1CAW是通道结束命令执行此命令F向CPU发中断一个通道程序可以控制若干设备进行多次IO传输。T通道类型字节多路通道(bytemultiplexerchannel)多个非分配型子通道,连接低速外围设备数组选择通道(blockselectorchannel)一个分配型子通道,连接多台高速设备数组多路通道(blockmultiplexerchannel)多个非分配型子通道,连接多台高速设备设备、通道、内存连接选择通道磁盘字节多路通道打印机输入机内存储器处理机磁带数组多路通道8.4设备的分配与去配独占型设备的分配与去配块型独占字符型独占共享型设备的分配与去配块型共享数据结构设备控制块(UCB)通道控制块(CCB)设备标识设备状态占有设备进程通道标识通道状态通道类型占有通道进程系统设备表(SDT)设备类总数设备等待队列UCB表指针…………lpmSmUCBUCB…UCB…………独占型设备的分配与去配用户使用独占型设备活动:申请,使用,使用,…,使用,释放申请:(1)根据设备类查SDT表(2)P(Sm)(3)查UCB表找一空闲设备并分配使用:(1)IO传输释放:(1)找SDT表对应入口(2)查UCB表,去配(3)V(Sm)8.4设备的分配与去配共享型设备的分配与去配–用户使用共享型设备活动–使用,使用,…,使用–特征–来自文件系统;–每次读(写)一块;–通常经过缓冲;–排队优化。–使用–IO操作8.5设备驱动通道程序CCW指令序列静态编制或动态生成设备启动通道启动中断处理通道向CPU发的中断8.5设备驱动设备CAWCCWCDWCSWCCW1CCW2…CCWi...CCWn数据区...形成通道程序...地址CAW...启动通道...中断处理...启动中断内存CPU通道8.6设备调度优化服务顺序考虑因素公平性防止饿死高效性减少磁盘引臂移动量磁盘引臂调度(diskheadscheduling)先到先服务(FCFS)请求序列:130,42,180,15,108,68,9701542536897108130180199移动量:(130-53)+(130-42)+(180-42)+(180-15)+(108-15)+(108-68)+(97-68)=630磁盘引臂调度(diskheadscheduling)最短寻找时间优先(SSTF)请求序列:130,42,180,15,108,68,9701542536897108130180199移动量:(53-42)+(180-42)+(180-15)=314磁盘引臂调度(diskheadscheduling)SCAN(LOOK)–请求序列:130,42,180,15,108,68,97SCAN移动量:(53-0)+(180-0)=233LOOK移动量:(53-15)+(180-15)=20301542536897108130180199LookScan磁盘引臂调度(diskheadscheduling)C-SCAN(C-LOOK)–请求序列:130,42,180,15,108,68,97特点:所有磁道地位最长等待时间相同01542536897108130180199C-LookC-Scan8.7缓冲技术设备处理数据到达与离开速度不一致所采用的技术。Bufferingvs.Cachingbuffering:onedatacopycaching:multipledatacopy(slow多,fast少)硬缓冲与软缓冲硬缓冲区通常设在设备中软缓冲区通常设在内存系统空间中私用缓冲与公共缓冲一个缓冲区与一个固定设备相联系,不同设备使用不同的缓冲区利用率低缓冲区由系统统一管理,按需要动态分派给正在进行I/O传输的设备空缓冲空缓冲空缓冲...head共n个Varbuf_num:semaphore;(initn)mutex:semaphore;(init1)1.申请2.释放(1)P(buf_num)P(mutex)(2)P(mutex)空缓冲入链尾(3)取链头空缓冲V(mutex)(4)V(mutex)V(buf_num)缓冲池管理tail8.7.5缓冲技术实现:输入设备进程空间缓冲输入设备缓冲缓冲...io链进程方面:中断方面:IO链空设备忙申请空缓冲启动设备等待由io链取一缓冲信息进程空间释放空缓冲缓冲入io链有等待进程唤醒传输完毕申请空缓冲启动设备FTFTFTTF8.7.5缓冲技术实现:输出设备进程空间缓冲输出设备缓冲缓冲...io链进程方面:中断方面:申请一空缓冲信息缓冲设备忙启动设备缓冲入io链传输完TFFT释放空缓冲io链空取一缓冲启动设备TF8.7.5输入输出设备:(磁带、磁盘)缓冲区头缓冲区体设备块号IO标识等待进程块型缓冲区:进程空间缓冲IO设备缓冲缓冲...io链进程方面(输入):进程方面(输出):中断方面:申请空缓冲填写头部设备工作入io链尾启动设备信息进程释放缓冲申请空缓冲填写头部信息缓冲设备工作启动设备入io链输入唤醒等待者释放空缓冲io链空取一缓冲启动设备FTFTTFFT等待UNIX缓冲字符型缓冲100个缓冲区,长度8字节(6字符+2指针)组成公共缓冲池,所有字符型设备公用缓冲区或属于cfreelist,或属于某字符设备(eg.tty,lp)块型缓冲50个缓冲区,长度514字节组成公共缓冲池,所有块型设备公用缓冲区可属于bfreelistand/ordevtab预先读入的块(breada)延迟写出的块(bdwrite)字符型设备缓冲structcblock{structcblock*c_next;charinfo[6];}structcblock*cfreelist;//freecblocksstructclist//associatedwithacharacterdevice{intc_cc;//charactercountintc_cf;//pointertofirstblockintc_cl;//pointertolastblock}structbuf//actuallyabufferheader,sharedbyallmounteddisks{intb_flags;//BUSY,ASYNC,DELWRI,DONE...structbuf*b_forw;//headedbydevtabstructbuf*b_back;structbuf*av_forw;//positiononfreeliststructbuf*av_back;intb_dev;intb_wcount;//transfercountchar*b_addr;//lowordercore(buffer)addresschar*b_xmem;//highordercore(buffer)addresschar*b_blkno//block#ondevicecharb_error;char*b_resid;//wordnottransferredaftererror}buf[NBUF]块型设备缓冲(头部)1514131211109876543210B_READ/B_WRITEB_DONEB_ERRORB_BUSYB_WANTEDB_RELOCB_ASYNCB_DELWRIb_flag:structdevtab//设备IO队列{chard_active;//busyflagchard_errcnt;//errorcountstructbuf*b_forw;//firstbufferforthis