《5设备管理.ppt》由会员分享,可在线阅读,更多相关《5设备管理.ppt(51页珍藏版)》请在三一办公上搜索。
1、1,第五章 设备管理,操作系统,陆松年,仲湾山结拇掌崖拙讼绊午镊勒镇八刽阶临呻诵践芹法漳惦昆鹤傅稠绩咎失5-设备管理5-设备管理,2,5.1 引言,有关外设的驱动、控制、分配等技术问题都统一由设备管理程序负责。5.1.1 设备的概念和分类(1)按功能分类,可以分为输入设备、输出设备、存储设备、供电设备、网络设备等。(2)从设备的数据组织方式分类,可以分为块设备和字符设备。(3)从设备的管理模式分类,可以分为物理设备和逻辑设备。(4)从设备的资源属性分类,可以分为独占设备、共享设备和虚拟设备。,驻哺耘唆行庙鄂屠日偷北社径念泌雕盒僧搬骆匆圭城背滁蚂退膘谰俞玉莱5-设备管理5-设备管理,3,5.1.
2、2 I/O设备控制与驱动,I/O设备的控制和驱动技术包括了硬件控制驱动技术和驱动软件。前者是I/O设备厂商设计建立的与设备密切相关的技术。后者涉及系统所有I/O处理的软件。I/O驱动软件是操作系统的一部分。随着操作系统的发展,使I/O驱动软件成为一种带有标准接口的可选型的软件,操作系统内核中只保留与设备无关的那部分软件,而将与设备有关的驱动软件作为一种可装卸的程序,可以按照系统配置的需求进行配置。操作系统中的I/O驱动软件一般分为几个层次,如中断处理程序、设备驱动程序、操作系统I/O原语和用户级软件。,拒胚贺进楚葱阵竖房涡独淀嘛外嘘腋搐克夷瘴捎替接矣渗恼傣保腻溉役稻5-设备管理5-设备管理,4
3、,5.1.3 设备管理的设计要求和任务,为用户提供方便、统一的设备使用界面提高外部设备利用率,尽量提高并行程度实现程序与设备的无关性系统与设备间的协调主要是速度上的协调,通常要解决快速的处理器与慢速的I/O设备之间的操作匹配的问题,在操作系统中采用缓冲区的方式来缓解这个矛盾,设备管理要实现这些缓冲区的建立、分配、释放与回收。,玛驻矛潜扔习合担舷劫拂亨湃彦迢荣蝎锈并措硬蕊谎瘫轧墓镊赵木摩获骡5-设备管理5-设备管理,5,5.2 操作系统与中断处理,5.2.1 中断的基本概念,打旷玫踌抗役膳螟植搀痪荡桌债费龋榔韧蝶踩雁娥鄙垃购锣聘表滩原机审5-设备管理5-设备管理,6,5.2.2 中断的类型,中断
4、机构处理外部设备的I/O中断。陷入机构处理指令的陷入(自陷)和由于软、硬件故障或错误造成的陷入。系统调用是UNIX操作系统面向在用户的程序的界面。在汇编级上,系统调用使用trap指令。I/O中断时钟中断系统请求中断报警中断程序错误中断机器错误中断,娠付牺稀递弊到墩猪遇产炉眷嘻缠刁臣反副靖檬坯杆巳傲锻蹭嗅睛饮癸执5-设备管理5-设备管理,7,UNIX中的系统调用,与进程管理和控制有关的系统调用 fork、exit、wait、signal、kill。semget、semop、semctl。与文件系统有关的系统调用 creat、open、close、read、write。远程进程通信 socket、
5、connect其它系统调用 times,寞灭锄疥螺邻涝睁悼浙无新眯询寂拜美捆诛鸡酌叭淮伙爹痒臃埋疆矩闯娄5-设备管理5-设备管理,8,5.2.3 中断的响应和实现过程,每当执行完一条指令,检测有无中断请求。不同的中断类型规定了不同的优先级,中断嵌套。根据中断源找出相应的中断处理程序入口地址,以便转去执行。中断矢量存放中断处理程序的地址。保护现场,指令断点,运行参数和条件,现运行程序状态寄存器PS的内容以及累加器或通用寄存器的内容和标记 中断屏蔽。,申川刁旨绑搪善埠埂蹦譬胃釉填洛侦整闲吵烁籽寓农根博粳订挠彬肛董押5-设备管理5-设备管理,9,5.2.4 中断处理程序和驱动程序,UNIX把设备作为
6、一种虚拟的文件对待,每个设备有一个象文件名那样的名字,可以对它象一个文件那样存取在UNIX系统中,将设备分成两类:块设备和字符设备。核心与驱动程序的接口是由块设备开关表和字符设备开关表描述的,圆警怂珠空烃忌竣剔绣懒臭豆疯氓膜王元对猛辨愈跟辅障杰卞恢程灼撼豪5-设备管理5-设备管理,10,5.2.5 中断的返回与恢复,UNIX的中断处理都是在核心态下进行的。如果中断前处理机状态为核心态,则在执行完设备处理子程序后就恢复现场,然后用中断返回指令回到中断前状态,继续执行被中断的操作系统程序。如果中断前为用户态,则在执行完设备处理子程序后,先要检查标志runrun是否设置。,睁吝戎筏缄俊锋剃缄蚊绢娠赂
7、玫转绸誊弛收叫钥信绦净瞪好克荧回噶滁背5-设备管理5-设备管理,11,5.3 操作系统与时钟系统,在计算机系统中可分为三类时钟:系统时钟(system clock)、日历时钟(time of day clock)实时时钟(realtime clock)5.3.1 时钟的概念系统时钟主要用于控制系统处理器执行指令的速率。日历时钟产生一个精确的时间计数,程序对此进行转换,给出与日历相符的日期和时间。实时时钟每秒提供若干个时钟中断,提醒处理器有重要的事情要做。,擞辉诗撮粮楼胺碟硬舱彦潞忘涧浸砾悔贪疙趣枷原嘴长鹿迈游菌并锈膝浪5-设备管理5-设备管理,12,5.3.2 UNIX系统中的时钟管理,每隔2
8、0ms处理的工作如下:计算当前进程在用户态或核心态下的累计运行时间,将u.u_utime+或u.u_stime+。当前运行进程p_cpu加1。处理延时启动终端打印机的工作。clock若发现延迟时间到了,则重新启动对应的输出驱动程序。每秒一次处理的工作如下:日历时钟变量time加1。所有进程的内存或对换区的驻留时间p_time+,所有目前未运行进程的p_cpu除以2。,策喝幕寻独诉颅说豹选腆住壤般僻葛略釉遂妻杀落避代祥堪竞缺矢胁寒仟5-设备管理5-设备管理,13,5.4 操作系统对I/O的控制,5.4.1 I/O设备的资源分配I/O地址 进行正确的I/O地址设置 I/O中断请求 争用剩余的中断请
9、求号,也会产生冲突。DMA数据传输通道 对争用同一个DMA通道的I/O设备需要进行协调和重新配置。I/O缓冲区 这个系统资源也是I/O设备争用的。,岩吻劈通皮毫欣霍蛹醛判彪硅炒镑汗餐惶册奈琶今耿靛亡形晾岳谬堕已厕5-设备管理5-设备管理,14,5.4.2 I/O通道技术,I/O通道是一种硬件设施,带有专用处理器的、有很强I/O处理功能的智能部件。可以独立地完成系统处理器交付的I/O操作任务,通道具有自己专门的指令集,即通道指令。通道执行来自处理器的通道程序,完成后只需向系统处理器发出中断,请求结束。字节多路通道主要用于连接大量低、中速、以字节作为传输单位的I/O设备。选择通道主要用以支持高速设
10、备(如磁盘),每次只对一个设备进行数据传输。成组多路通道以分时方式同时执行几道通道程序,每条通道指令可以传送一组数据,,晓焕表谐檄票凡品让锚撮彦弃砖腻取秽捕挽索驰思湘都励缎秉拧队惟彦师5-设备管理5-设备管理,15,5.4.3 I/O缓冲技术,提高中央处理器与外设的并行程度可以采用硬件缓冲和软件缓冲两种方式软件缓冲是借助操作系统的管理,采用内存中的一个或者多个区域作为缓冲区。缓冲区的数量可根据不同的系统和操作来确定,常用的缓冲技术有三种:双缓冲、环形缓冲和缓冲池。,旁酉蠢渺苏巴秤诸厢素篇志郸渤辟趁舟味疫法亮淹吱咱曲划报蒙浦睛航唯5-设备管理5-设备管理,16,5.5 设备管理的数据结构,5.5
11、.1 设备控制表(DCT)提供若干高级I/O系统调用,用这些抽象的I/O操作把用户与复杂的I/O设备操作隔离,隐藏设备操作的细节,有利于编写与设备无关的程序。要完成抽象到实际的映射,通常采用称为设备控制表(DCT)的数据结构来完成。它记录每一个抽象设备描述、对应的实际设备地址、所使用的设备驱动程序等参数。,幂奶武汁馁抖合溅凳权贱俭道始棘鞋歧捉铺因庄仁院锭附皂酸我驾忌侧哑5-设备管理5-设备管理,17,设备读read抽象操作,read(dvcrp,buf,size)int dvcrp,size;/*设备标识符、数据块大小*/char*buf;/*缓冲区指针*/struct devtab*devp
12、tr;/*指向设备表的指针*/if(isbaddev(dvcrp)/确认设备标识符是否有效 return(SYSERR);/*无效,系统返回出错*/devptr=/*有效,找到对应设备表项*/return(*devptrdvread)(devptr,buf,size)/*将参数传向设备驱动程序并返回*/,悉裳模泥清串俭烛坟楚服留资蚌等薪蕉沈溶瞥懈耕擒甘怂雇秋冯辱扭柏疟5-设备管理5-设备管理,18,5.5.2 设备开关表,针对各类设备不同的物理特性,系统为它们各自设置了一套子程序,它们包括打开、关闭和启动子程序。系统为每类设备又设置了一数据结构,存放这些程序的入口地址,该数据结构称为设备开关。
13、,造些供涸棒氟翁涣赫贯独滔瘪厚秤兜胎标蝎缸糕落矢爱鲁咸攫白尘材哑挛5-设备管理5-设备管理,19,5.6 磁盘的调度,5.6.1 物理特性磁盘一般用于文件存储,盘上信息的地址是多重编址的,包括驱动器号、面号、道号、扇区号。存取盘块中信息的时间:寻道时间 100ms等待时间 10ms传送时间 1ms,橡枝绥钮交埔兰获滞弹辣婚招疑烦景运咖淬淘货银辊圣汰齐炸乌瞥幢营爷5-设备管理5-设备管理,20,5.6.2 磁盘调度算法,先来先服务调度(FCFS)最短寻道时间优先法(SSTF),厅逛裂女据锰育殃勋旷毋殷彼诵鳖挽裹搬敖铁受淬居酞没其霸威疵它校匆5-设备管理5-设备管理,21,5.6.2 磁盘调度算法
14、(续),扫描法(SCAN和C-SCAN),葬铬桩我渴宫犬男呜辫海镶骸戚如递抛羞检纯模贾假葵寻阜卓后友数乾赞5-设备管理5-设备管理,22,5.7 UNIX系统V的设备管理,1缓冲控制块buf在系统初启时,核心根据内存大小和系统性能要求分配若干缓冲区。一个缓冲区由两部分组成:存放数据的内存区(一般称为缓冲区)和一个缓冲控制块。缓冲区和缓冲控制块是一一对应的。系统通过缓冲控制块实现对缓冲区的管理。,5.7.1 UNIX块设备管理的主要数据结构,假牵金氟裸垢潭枯融兴鹏刹靳想懂团脆轰懊叁赘渭场哆怠军妓慈智似才峡5-设备管理5-设备管理,23,struct bufintb_flags;/*缓冲区标志*/
15、struct buf*b_forw;/*设备队列前向指针*/struct buf*b_back;/*设备队列后向指针*/struct buf*av_forw;/*自由队列前向指针*/struct buf*av_back;/*自由队列后向指针*/dev_tb_dev;/*逻辑设备号*/unsigned b_bcount;/*传送数据字节数*/union caddr_tb_addr;/*缓冲区内存首地址*/struct filsys*b_filsys;/*超级块*/b_un;daddr_t b_blkno;/*在磁盘上数据的块号*/bufNBUF;,竹丹粥煞阻煤绰晨潍十祥侧骑钨实肇滤挤噎烫粳紫逐假
16、济甥娃糯咸铆预畦5-设备管理5-设备管理,24,b_flags反映缓冲区的使用情况和I/O方式,如忙或闲、数据有效性、“延迟写”、正在读/写、等待缓冲区空闲等。从buf的组成可见,它不仅包含了与使用缓冲区有关的信息,也记录了I/O请求及其执行结果。所以一般而言,buf既是缓存控制块,同时又可以是针对该缓存进行的I/O请求块。为管理方便,系统还设置了自由缓存队列控制块bfreelist和进程图像传送控制块swbuf。这两个块结构与buf结构相同,但只用部分项,其余则弃之不用。,音羞别萝莱限显蹄暖唤屈翼垣虑手爬频狮避铺轧朴阴婪伍情秃鄂炳西骏纂5-设备管理5-设备管理,25,2块设备表,struct
17、 iobuf int b_flags;/*该设备队列的状况标志*/struct buf*b_forw;/*指向本设备的第一个缓冲区*/struct buf*b_back;/指向本设备的最后一个缓冲区struct buf*b_actf;/*指向本设备I/O请求队列 中第一个缓冲区*/struct buf*b_actl;/*指向本设备I/O请求队列 中最后一个缓冲区*/dev_t b_dev;/*设备名*/char b_active;/设备正在执行一个I/O请求的标志chat b_errcnt;/*出错计数*/;,仕痴于术穷控揽铡说鼠株腔辩拨逸柴般尤像疆粹扶幼勉辩贡揩因翼漠瀑谤5-设备管理5-设备
18、管理,26,3块设备开关表,存放各类块设备管理程序的入口地址struct bdevswint(*d_open)();/*打开函数入口*/int(*d_close)();/*关闭函数入口*/int(*d_strategy)();/*启动函数入口*/int(*d_print)();/*打印函数入口*/;设备表和设备开关表集中了与设备有关的特性及其管理、使用的信息,也体现了UNIX中把设备的物理特性和使用情况与设备管理的基本方式分隔开来的主要思想。,我倾烈割倚喂青捞毫艾吏迈选讫匠切烁读祖貉徘剪节槐昆拥酋膨册疑侄绵5-设备管理5-设备管理,27,5.7.2 UNIX系统V的缓冲区管理,1.多种缓冲区管
19、理队列 系统设置了多种队列对所有缓冲区进行管理,因为buf记录了与缓冲区有关的各种管理信息,所以缓冲区管理队列实际上是缓存控制块buf队列。(1)自由buf队列 系统把空闲缓冲区的buf组成空闲buf队列,即自由buf队列。这个队列是双向链结构,队首块为bfreelist,bfreelist和自由buf通过av_forw和av_back作为双向指针,见p123 图5-9。,崭橇钮孪承渠侵贫湍平济蚤碳痪燥啪哲知镑事桥旦加幌递速刹局巾煞委歉5-设备管理5-设备管理,28,图5-9 自由buf队列,耘塞哟喂钨已剂膜秧苔芍癸岁孽窃食便榜烩缎拷崩阜嫉狮溅快睦堕韩甜说5-设备管理5-设备管理,29,(2)
20、设备缓冲区队列,设备缓冲区队列连接所有各类设备使用过的缓冲区,这也是一个双向队列,buf中的b_forw和b_back分别为该队列的前指针和后指针,头部为hbuf,共64个队列。如p129 图5-10所示。一个缓冲区被分配用于读、写某个设备的字符块时,其相应的buf就进入该设备的设备buf队列,并一直保留在该设备buf队列中,除非被移作它用。系统V与第六版有所不同,不是每个块设备一个缓冲队列,同一个块设备的缓冲区可以分布在不同的散列队列,不同设备的缓冲分布均匀,加快缓冲区的搜索速度。,止产人疙痰跳诡虏瓣饭爹淑浩未蝗侨恤郸驴余留疑律叫舅庚挚矗强舜塔慕5-设备管理5-设备管理,30,图5-10 设
21、备buf队列,者沦竭委蚀丝捧人没剐纲蟹粪诵坤幸深勒吴印急啦闯泻俄扇缺捉叶擂指哇5-设备管理5-设备管理,31,(3)空设备队列(NODEV队列),NODEV队列是一个特殊的设备buf队列。当系统需要缓存,但它不与特定的设备字符块相关联时,将分配到的缓存控制块buf送入NODEV队列。其队列控制块也是bfreelist,用的指针是b_forw和b_back。在UNIX中有两种情况将buf送入NODEV队列。一种是在进程执行一个目标程序的开始阶段,它用缓存存放传向该目标程序的参数;另一种情况是用缓存存放文件系统的资源管理块。在系统初启时,所有空闲缓冲区的buf既在自由buf队列,又在NODEV的设
22、备buf队列中。,山盗似提有迅捕火补绎焚镣为庐舍浊局邪件喧陀刺抿置憋瞪滇矗肄秦兆背5-设备管理5-设备管理,32,(4)设备I/O请求队列,每个块设备有一个设备I/O请求队列,单向连接,头部为iobuf,b_actf和b_actl分别指向队首和队尾。四个队列所属缓冲区之间的关系总结(1)任何一个缓冲区在稳定的状态下,同时属于二个队列。(2)在自由buf队列中缓冲区可能同时属于NODEV队列(未分配给指定设备),也可能属于设备buf队列(已经分配给某设备用过,因I/O结束而释放)。(3)在设备buf队列中的缓冲区,可能挂在自由buf队列(已用过被释放),也可能挂在设备I/O请求队列(正在使用)。
23、(4)在NODEV队列中的缓冲区如已用过被释放,肯定在自由buf队列中。(5)在设备I/O请求队列中的缓冲区则肯定属于设备buf队列。,呐有连纽刘尺凝尊订挫耪秽玛嫁赖隘悯斋兹征哗锥撬朋枢榴梅墅炒草絮傻5-设备管理5-设备管理,33,2.缓冲区管理算法,1.一个缓存刚分配用于读写某一块设备,buf的b_flags含有B_BUSY标志。它一定位于相应设备buf队列,不在自由队列。2一旦读写完成,就释放缓存,清B_BUSY标志。送入自由队列尾,但仍留在原设备队列。3.特点和好处:一个缓存既在设备队列,又在自由队列,只要还要重复使用原设备队列中该缓存内容,就只要简单地将其从自由队列抽出即可,避免了重复
24、I/O。有必要可将缓存重新分配它用,将它从自由队列首和原设备队列同时抽出,送入新的设备队列。操作完成后仍留在新的设备队列并送入自由队列。,御焚彬糟挡乃匹场荷足席史过瓣考雌灵捷瑚鸯捂碳偷昆单磕怎伶葫睛噎捡5-设备管理5-设备管理,34,4.为使一个已释放地缓存尽可能长地保持原先内容,以增加重复使用可能,将其送入自由队列尾,分配作它用缓存从自由队列首取(FIFO)。5.当一个buf在自由队列中移动时,只要原设备队列又重新使用它,立即将其从自由队列中间抽取,使用完毕,再次送入自由队列尾(LRU算法)。6对于写,如一块未写满,在b_flags中设置B_DELWRI标志,推迟写,再清B_BUSY,释放至
25、自由队列尾。7.当设置B_DELWRI标志的缓存排到自由队列首时,不能立即淘汰,它作重新分配处理,而是提出I/O,将其内容复制到块设备后,再次释放到自由队列尾(也有释放到自由队列首),也清B_DELWRI标志。,超半淌屠前芝聊模屈事凿迷劫纠脐周榴岗岗结鸡乡耘霍懒皿铭章伤芦睬雾5-设备管理5-设备管理,35,自由队列,设备队列,藤贼受似赶脊改抛颁商纠患涡蹦徽枚啊小豌崎条桌帆叁酱神藤拿价蛋蔷催5-设备管理5-设备管理,36,3.缓冲区的分配和释放,getblk(dev,blkno)while(未找到相应buf)if(盘块在设备buf队列中)if(buf忙)/b_flags/*回到while循环*/
26、,咐蓉饿宣甥别斟生嘉缘姬锻责骤刀甚畸抛毋脱叛挂元厉行凶谜漠樊丝榨衅5-设备管理5-设备管理,37,从自由队列中移走该buf;if(buf标志为“延迟写”)/B_DELWRI异步写buf到相应设备上;continue;/*回到while循环*/从原来的设备buf队列中移走该buf;/*找到空闲的buf*/把它放在新的设备buf队列中;return(buf);,警瀑人者涝诅酉震愈咽鸵攀害胀会姬褂榨二贸育获鹊嗜往缩痰损痊秸奶句5-设备管理5-设备管理,38,brelse(bp)唤醒所有等待自由队列成为“非空”的进程;唤醒所有等待本buf成为空闲的进程;提升处理机执行级别,屏蔽中断;if(buf内容有
27、效且不是过时的)把本buf放入自由队列末尾;/*以备将来使用*/else/*如偶尔遇到出错*/把本buf放入自由队列的开头;/*以后很少使用它*/降低处理机执行级别,开放中断;解除封锁(buf);,疆泣伐坟闻穗熊祈隶蛰沥厘缕扣扒葡损疯攀烷即血渝颊企吁潮缀惋烹芍橇5-设备管理5-设备管理,39,5.7.3 块设备管理,bread(dev,blkno)为逻辑块找一个缓冲区(getblk);if(缓冲区数据有效)return(buf);启动磁盘读;sleep(盘块读完);/*等待盘I/O完成中断*/return(buf);,胁除领湖及嫉附义仇碑泥垦阴扁曾佃晌会衫磋弱区诣成阻天纳询现丛沃撑5-设备管理
28、5-设备管理,40,预读盘块程序breada,当一个进程顺序读取文件时,为加快它的前进速度,提高CPU和块设备工作的并行程度核心检查第一块是否在缓冲区中,如不在,则调用磁盘驱动程序读该块。如第二块不在缓冲区中,核心指示盘驱动程序异步读它。然后进程睡眠,等待第一块I/O完成。该进程被唤醒后就返回第一块的buf,而不管第二块是否读完。以后,当第二块读完后,产生盘I/O中断,由中断处理程序识别异步读完成,并释放相应的buf。,达拂弓亩疟驹篮贮功侦摔贸珍沂琢啃坡堑敛梯汞炔渊纹伙执胳括健紫酣贡5-设备管理5-设备管理,41,5.8 设备分配,1.设备分配方式静态分配 作业运行之前由系统一次分配满足需要的
29、全部设备动态分配 在进程运行的过程中进行分配的,当进程需要使用设备时,系统按一定的分配策略给进程分配所需设备,一旦使用完毕立即释放。,恍霄屏酝铬婪骸际苍荡杨否安诅盒裴刘张蜡沃掣助气辆齿袖泳继靳优经糕5-设备管理5-设备管理,42,2.设备分配的原则,先请求先服务和按请求I/O的进程的优先级决定。要使用设备时必须提供进行I/O操作的有关信息,指出执行I/O的逻辑设备名(如设备号)、操作类型、传送数据的数目、信息源或目的地址等。存放进行I/O操作的信息的结构称为I/O请求块。如在UNIX系统中,系统的I/O请求块的内容是包含在缓冲区控制块buf中。在请求I/O时,首先请求分配缓冲区,然后把与操作有
30、关的信息写到buf中,并把这个buf挂到请求设备的I/O请求队列中去如图5-13所示。,句厦谗镑现簇业花袜腾祟协俏餐耗耕惫丘胆喊弱站稿仟身舍蕾坝赃现以是5-设备管理5-设备管理,43,b_actfb_actl,av_forw,av_forw,av_forw,iobuf,buf,buf,swbuf,图5-13 设备I/O请求队列,闭清鞍虫突袍程湿汹太咐钩森应钢祝胁咏妨理厅卜哟怖寓贪饮枫寂初海陌5-设备管理5-设备管理,44,5.10 Solaris的I/O子系统,内核为应用程序提供了一组系统调用,其中某些系统调用将调用设备驱动程序执行I/O操作。在Solaris操作系统中,设备驱动程序(devi
31、ce driver)是可加载的内核模块,负责管理I/O设备,并且使操作系统的其余部分与设备硬件隔离开来。Solaris的设计也遵循了UNIX系统理念。把设备看成文件,可以将设备与文件统一管理,例如,采用统一的命名方式和统一的权限管理方式,这样可以简化设备管理过程。在块设备驱动程序和字符设备驱动程序之上都有一层文件系统,这体现了将设备与文件统一管理的设计思想。,蜡算氓岁康筏岗逮疑劫滥运穴擞环抱玛宵锚汐雕捌做捶慈嫌袁福狗忧井茂5-设备管理5-设备管理,45,对干不同的设备,其文件系统层的“厚度”是不同的。对于磁盘这类结构性很强、操作很复杂的设备,其文件系统很“厚”,这是因为系统中存在着两层抽象:一
32、层抽象是将柱面、磁道、扇区表示的磁盘物理空间抽象成由数据块组成的线性空间,另一层抽象是将数据块组织成文件。下一层抽象由磁盘设备驱动程序实现,上一层抽象由文件系统(如UFS)实现。对于串行端口这类简单的字符设备,其文件系统很“薄”,它只是提供了访问设备的一个接口而已。,5.10 Solaris的I/O子系统,5.10.1 I/O子系统 与内核的关系,帆侨询瞄识略拘买炙莉孪独畦透姑锡掘阁俱利浴余舌舒稀迈誊酸指舀粮呕5-设备管理5-设备管理,46,图5-17 Solaris的内核和I/O子系统,癌捍蒲呀扼瓮进齿鹰抱咱那乃爽婆放侠姜仪另玖孙绚逼畔河互推骑双唁完5-设备管理5-设备管理,47,5.10.
33、2 设备文件与设备文件系统,So1aris操作系统有两个目录用于保存设备文件。/dev目录是UNIX标准,而/devices目录是Solaris操作系统特有的。采用/dev目录存放设备文件存在一些不足。/dev目录确实存储在磁盘上,占据磁盘空间。过去/dev目录下的设备文件都是在需要用到时手工创建的,因此常常发生驱动程序已经安装,却由于设备文件未创建而导致设备不能正常工作的情况。Solaris操作系统引入了设备文件系统devfs。devfs只是一个虚拟的文件系统,并不存在于磁盘上,不占用磁盘空间。devfs可以自己维护设备文件,所有文件节点的创建、删除操作都可以在驱动程序安装或卸载时自动完成。
34、devfs在系统引导时被挂接在/devices目录下,其内容是动态的,反映了系统当前可访问的设备的状态。在Solaris操作系统中,为了维护传统UNIX应用程序的兼容性,仍然提供了/dev目录,但是/dev下的文件其实是到/devices的符号链接。,挛废蛔母碧账韧唆楚碌则哄兑垣铱培沦赴帽链某压朔参汽浊峡沮杆艰逝夸5-设备管理5-设备管理,48,5.10.3 设备树,在Solaris内核中,设备由设备信息结构dev_info来描述。所有设备的dev_info结构组织成一棵树状的结构,称为设备信息树(struct dev_info)。设备信息树展示了设备间的相互关系。在设备信息树中,内部节点称为
35、总线连接节点(busnexus node),它表示总线控制器或适配器,而叶子节点(1eaf node)表示设备,根节点(rootnode)表示的是机器平台。设备信息树是在系统引导时构建起来的。主要由create_devinfo_tree函数完成。,蘸注貉况乒啼啊兵率鹏姜迎官榨亦片协饺功弗屁右绒堑琅嫉蜒款掘线橇搀5-设备管理5-设备管理,49,图5-18设备信息树的例子,嗣塔渠衔榷讨蔗仆兰迁摧村蛆牛汤宗撒低饯嫌剃榨奖麦旱嗽崔胜蝴擂络虾5-设备管理5-设备管理,50,复习题,P135 3,8,9,10,11,13,14,之滇伯揩润扯追诀囊瘟无俗殃椽惺垒朋笛婿询预筐治揖分征姻辖猎鸭盎疾5-设备管理5-设备管理,51,谢谢大家,率双达促速厘厚擅侦苑男污筹彻苍递痛啃乡访吕购忙藏酝镜晶他失盎务沫5-设备管理5-设备管理,