1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,第一级,第二级,第三级,第四级,第五级,第,*,页,单击此处编辑母版标题样式,第一级,第二级,第三级,第四级,第五级,第,*,页,第七章 设备管理,操作系统课程组,第1页,一、引言,设备概念,一个计算机系统就是由大量设备组成,比如:CPU,磁盘,显卡、显示器、鼠标、键盘等。这些设备特点和功效各不相同。在这些设备中,有一类是作为计算机
2、系统与外界交互工具使用,它详细负责计算机与外部输入输出工作,我们称这类设备为外部设备简称为外设,本章重点研究就是操作系统中对这类设备管理策略。,设备管理目标,怎样提升设备利用率:就是提升CPU与I/O设备之间并行操作程度。,为用户提供方便统一界面:方便是指用户能独立于详细设备复杂物理特征之外而方便地使用设备;统一是指对不一样设备尽可能使用统一操作方式。,2,第2页,一、引言,设备管理任务,动态地掌握并统计设备状态,设备分配和释放,缓冲区管理,实现物理I/O设备操作,提供设备使用用户接口,设备访问和控制,I/O缓冲和调度,3,第3页,二、I/O系统概述,I/O系统结构,单总线结构,含有通道系统I
3、/O系统,bus,4,第4页,二、I/O系统概述,I/O系统控制方式,直接控制方式,CPU,优点:简单。,缺点:CPU大部分时间都用于对硬件进行测试,效率低下。,5,第5页,二、I/O系统概述,中止驱动I/O,CPU,开启外设,data,发出中止,优点:在外设进行数据处理时,CPU无须等候,能够继续执行该程序或其它程序。提升了CPU利用率。中止技术使得CPU和外设之间并行工作成为可能。,缺点:数据依然需要经过CPU进行传输,因为CPU每次处理数据量少,所以这种方式只适于数据传输率较低设备。,6,第6页,二、I/O系统概述,直接存放访问I/O(DMA,Direct Memory Access),
4、CPU,开启外设,data,发出中止,DMA,控制器,开启指令,中止,优点:CPU只需干预I/O操作开始和结束,而其中数据读写无需CPU控制,适于高速设备。,7,第7页,CPU,二、I/O系统概述,通道控制方式,I/O,I/O处理机,一个CPU能够连接若干个通道,一个通道能够连接若干个控制器,一个控制器能够连接若干个设备。,优点:处理了I/O操作独立性和各部件工作并行性。通道把中央处理机从繁琐输入输出操作中解放出来。采取通道技术后,不但能实现CPU和通道并行操作,而且通道与通道之间也能实现并行操作,各通道上外围设备也能实现并行操作,从而可到达提升整个系统效率根本目标。,8,第8页,二、I/O系
5、统概述,I/O设备分类,按数据组织分类,块设备(Block Device):指以数据块为单位来组织和传送数据信息设备。这类设备用于存放信息,有磁盘和磁带等。它属于有结构设备。磁盘设备基本特征是:传输速率较高,通常每秒钟为几兆位;它是可寻址,即可随机地读/写任意一块;磁盘设备I/O采取DMA方式。,字符设备(Character Device):指以单个字符为单位来传送数据信息设备。这类设备普通用于数据输入和输出,有交互式终端、打印机等。它属于无结构设备。字符设备基本特征是:传输速率较低;不可寻址,即不能指定输入时源地址或输出时目标地址;字符设备I/O常采取中止驱动方式。,9,第9页,二、I/O系
6、统概述,从资源分配角度分类,独占设备:指在一段时间内只允许一个用户(进程)访问设备,大多数低速I/O设备,如用户终端、打印机等属于这类设备。因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问。,共享设备:指在一段时间内允许多个进程同时访问设备。经典共享设备是磁盘。共享设备不但能够取得良好设备利用率,而且是实现文件系统和数据库系统物质基础。,虚拟设备:指经过虚拟技术将一台独占设备变换为若干台供多个用户(进程)共享逻辑设备。普通能够利用假脱机技术(SPOOLing技术)实现虚拟设备。,10,第10页,二、I/O系统概述,按数据传输率分类,低速设备:指传输速率为每秒钟几个字节到数百个字节设
7、备。经典设备有键盘、鼠标、语音输入等;,中速设备:指传输速率在每秒钟数千个字节至数十千个字节设备。经典设备有行式打印机、激光打印机等;,高速设备:指传输速率在数百千个字节至数兆字节设备。经典设备有磁带机、磁盘机、光盘机等。,11,第11页,三、I/O软件组成,设备管理软件组成部分,I/O交通管制程序:负责各I/O设备之间协调工作;,I/O调度程序:负责设备分配和调度;,I/O设备处理程序:负责每类设备详细操作。,I/O软件设计目标,设备独立性(device independence),经过某种技术使得软件和硬件彼此相对比较独立。这么,除了直接与设备打交道低层软件之外,其它部分软件并不依赖于硬件
8、优点:,降低操作系统和底层硬件之间耦合性,增强了操作系统适应能力。,方便了用户使用。,12,第12页,三、I/O软件组成,统一命名,系统中,每种设备都是有名称,怎样命名以方便系统管理和用户使用是一个主要问题。,这里统一命名是指在系统中采取预先设计、统一逻辑名称,对各类设备进行命名,而且应用在同设备相关全部软件模块中。,命名方式:通常做法是,用一个序列字符串或一个整数来表征一个输入输出设备名字。这个统一命名不依赖于设备,也就是说在同一个名称,其对应物理设备可能发生了改变,但它并不在该名称上表达。比如在UNIX中,设备采取统一命名和处理方式。,13,第13页,三、I/O软件组成,I/O软件结构
9、外部I/O设备,用户,设备驱动程序,与设备无关系统软件,用户级软件,分层设计思想,中止处理程序,14,第14页,三、I/O软件组成,中止处理程序,中止机制原理,设备管理程序与中止关系,设置中止目标:处理高速处理设备和低速输入输出设备之间矛盾,提升系统工作效率。,设备管理,程序,外设,开启指令,中止请求,data,15,第15页,三、I/O软件组成,设备驱动程序,设备驱动程序是直接同硬件打交道软件模块。普通而言,设备驱动程序任务为:接收来自与设备无关上层软件抽象请求;进行与设备相关处理。详细说来,其功效主要有:,控制和监督各I/O控制器正确执行,并进行必要错误处理。,处理和设备相关操作,如排队
10、挂起、唤醒等。,缓冲区管理。,进行一些较为底层和详细设备相关处理工作。,16,第16页,三、I/O软件组成,设备驱动程序特点,与I/O设备硬件结构亲密联络,是操作系统底层中唯一知道各种输入输出设备控制器细节及其用途部分。,比如,只有磁盘驱动程序详细了解磁盘区段、磁道、柱面、磁头、磁臂运动、交织访问系数、马达驱动器、磁头定位次数以及全部确保磁盘正常工作机制,其它软件根本不过问这些硬件操作细节。,17,第17页,三、I/O软件组成,设备驱动程序结构,因为驱动程序和硬件结构有着亲密联络,所以不一样硬件其开启程序结构以也不一样。,不过对于略有差异同一类设备,为了方面使用,系统往往会提供一个通用设备驱
11、动程序。当然为了追求更加好性能,用户能够使用厂家提供专门为该设备编写设备驱动程序。,18,第18页,三、I/O软件组成,与设备无关系统软件,是建立在设备驱动程序之上,与详细设备无关I/O功效集合(比如全部设备都需要I/O功效)。,功效:,统一命名:将设备符号名映射到对应设备驱动程序上,对外提供同一命名方式。,设备保护:对设备进行必要保护,预防无授权应用或用户非法使用。,提供与设备无关逻辑块:屏蔽底层各种I/O设备空间大小、处理速度和传输速率差异,只向上层提供大小统一逻辑块尺寸。,缓冲管理,19,第19页,三、I/O软件组成,存放设备块分配:查找一个存放设备空闲块并进行分配。,独占设备分配和释放
12、犯错处理:普通来说I/O错误有两种,操作故障:由驱动程序处理。,非操作故障:如磁盘受损而不能再读,由与设备无关系统软件处理,并向上层返回犯错信息。,用户空间I/O软件,常见主要有,I/O,系统调用,Spooling系统:组成虚拟设备。,20,第20页,三、I/O软件组成,I/O系统层次结构与每层主要功效,21,第21页,四、含有通道设备管理,通道,CPU,I/O处理机,22,第22页,四、含有通道设备管理,通道类型,字节多路通道(Byte Multiplexor Channel),数组选择通道(Block Selector Channel),主通道,子通道1,子通道2,子通道n,设备1,设备
13、2,设备n,低速设备,传输单位为字节,能够取得很好通道利用率,可分配,型通道,设备1,设备2,设备n,高速设备,一次传输一组数据,能够取得很好数据传输速率,23,第23页,四、含有通道设备管理,数组多路通道(Block Multiplexor Channel),“瓶颈”问题,主通道,子通道1,子通道2,子通道n,设备1,设备2,设备n,高速设备,一次传输一组数据,即含有很高数据传输速率,又能取得令人满意通道利用率。,CPU,24,第24页,四、含有通道设备管理,术语:,通道命令(Channel Command Word,CCW):通道又称为I/O处理机,含有自己指令系统,经常把I/O处理机指令
14、称通道命令。,通道程序:用通道命令编写程序称通道程序,通道经过执行通道程序控制I/O设备运行。,通道地址字(Channel Address Word,CAW):用来存放通道程序首地址内存单元称通道地址字。,通道状态字(Channel Status Word,CSW):是通道向操作系统汇报工作情况状态聚集。,25,第25页,四、含有通道设备管理,通道工作原理,26,第26页,五、与设备管理相关技术,DMA技术(Direct Memory Access,DMA),CPU,开启外设,data,发出中止,DMA,控制器,开启指令,中止,优点:CPU只需干预I/O操作开始和结束,而其中数据读写无需CPU
15、控制,适于高速设备。,内存,传送一个数据块,高速,设备,27,第27页,五、与设备管理相关技术,缓冲技术,缓冲区是一个交换数据区域。,缓冲技术分类,单缓冲技术(single buffer),只设置一个缓冲,CPU和外设轮番使用。,CPU,28,第28页,五、与设备管理相关技术,双缓冲(double buffer),适合于外设速度较高情况。,29,第29页,五、与设备管理相关技术,环形缓冲,用于低速I/O设备,结构,30,第30页,五、与设备管理相关技术,环形缓冲两种现象,系统受限计算:Nexti追上Nextg,系统受限I/O:Nextg追上Nexti,31,第31页,五、与设备管理相关技术,缓
16、冲池(buffer pool),可供多个进程共享双向缓冲技术。,缓冲池,空缓冲队列,输入队列,输出队列,32,第32页,五、与设备管理相关技术,总线技术,总线定义:计算机中连接各个部件一组线路。,优点:便于部件和设备扩充,使不一样设备间互连愈加轻易。,总线结构,单总线,bus,优点:简单,缺点:总线只能分时工作,使信息传送吞吐量受到限制。,33,第33页,五、与设备管理相关技术,双总线,bus,存放总线,在双总线结构中,因为CPU能够经过存放总线访问主存,故减轻了系统总线负担,同时加大了信息传送吞吐量。,34,第34页,五、与设备管理相关技术,三总线,三总线结构采取了通道(I/O处理机),它减
17、轻了CPU数据I/O控制,是整个系统效率得到了很大提升,所以,在中型、大型计算机系统中采取三总线结构。,35,第35页,五、与设备管理相关技术,总线类型,内部总线,计算机内部各外围芯片与处理器之间总线,用于芯片一级互连。,系统总线,系统总线是计算机中各插件板与系统板之间总线,用于插件板一级互连。,外部总线,计算机和外部设备之间总线,它用于设备一级互连。,36,第36页,六、UNIX设备管理,UNIX设备种类,块设备,字符设备,UNIX设备管理主要特点,块设备与字符设备含有相同层次结构。这是指对它们控制方法和所采取数据结构、层次结构几乎相同。,将设备作为一个特殊文件,并赋予一个文件名。这么,对设
18、备使用类似于对文件存取,含有统一接口。,采取完善缓冲区管理技术。引入“预先读”、“异步写”和“延迟写”方式,深入提升系统效率。,37,第37页,六、UNIX设备管理,UNIX设备管理用到主要数据结构,缓存与缓存控制块,缓冲池,容量:512/2048字节,struct buf,int b_flage;/*缓冲区标志*/,struct buf*b_forw;/*设备队列前向指针*/,struct buf*b_back;/*设备队列后向指针*/,struct buf*av_forw;/*自由队列前向指针*/,struct buf*av_back;/*自由队列后向指针*/,dev_tb_dev;/*逻
19、辑设备号*/,unsigned b_bcount;/*传送数据字节数*/,union,caddr_t b_addr;/*缓冲区内存首地址*/,int b_words;/*要刷新起始地址*/,struct filsys*b_filsys;/*超级块*/,struct dinode*b_dino;/*磁盘inode表*/,daddr_t *b_daddr;/*间接块*/,b_un;,daddr_t b_blkno;/*磁盘上数据块号*/,char b_error;/*返回给调用者犯错信息*/,unsigned int b_resid;/*因犯错而未被传送数据字节数*/,time_t b_start
20、/*I/O请求起始时间*/,struct proc*b_proc;/*执行物理或兑换I/O进程*/,bufNBUF;,38,第38页,六、UNIX设备管理,块设备表,UNIX中为每个块设备设置了一张管理表,称为块设备表。,结构:,块设备表,struct iobuf,int b_flags;/*设备队列情况标志*/,struct buf*b_forw;/*指向本设备第一个缓冲区*/,struct buf*b_back;/*指向本设备最终一个缓冲区*/,struct buf*b_actf;/*指向本设备I/O请求队列中第一个缓冲区*/,struct buf*b_actl;/*指向本设备I/O请求
21、队列中最终一个缓冲区*/,dev_t b_dev;/*设备名*/,char_b_active;/*设备正在执行一个I/O请求标志*/,char_b_errcnt;/*犯错计数*/,struct eblock*io_erec;/*指向块设备错误统计块*/,int io_nreg;/*设备存放器个数*/,physadr io_addr;/*设备控制状态存放器地址*/,physadr io_mba;/*MBA配置结构存放器地址*/,struct iostat*io_stp;/*指向部件I/O统计块*/,time_t io_start;/*输入输出开启时间*/,int io_s1;/*驱动程序留用位数
22、/,int io_s2;/*驱动程序留用位数*/,;,39,第39页,六、UNIX设备管理,块设备开关表,UNIX中每类设备都有驱动程序,每个驱动程序都包含了用于执行不一样操作多个函数,如打开、关闭、开启设备、读和写等函数。为了方便操作,系统为每类设备设置了一个设备开关表。,设备开关表:是每个设备驱动程序一系列接口函数入口地址表,文件系统可经过开关表中各函数入口地址转向适当驱动程序入口。,40,第40页,六、UNIX设备管理,41,第41页,六、UNIX设备管理,字符设备缓存管理,字符缓存用于处理CPU与字符设备间速度不匹配矛盾,因为字符缓存很短,所以UNIX在实现上没有设置专门缓存控制块,
23、其字符缓存结构以下:,struct cblock,struct cblock*c_next;/*字符缓存指针*/,char info6;/*字符缓存信息区*/,;,c_next,缓冲池,42,第42页,六、UNIX设备管理,自由字符缓存队列,由空闲字符缓存组成自由队列。,struct cblock*cfreelist,字符缓存分配和释放都是在队首进行。,43,第43页,六、UNIX设备管理,I/O字符缓存队列,字符设备经过字符缓存进行输入或输出。各个正被使用字符缓存按照它们不一样用途形成多个I/O队列,每个队列设置一个控制块,其结构以下:,struct list,int c_cc;/*字符计数器*/,int c_cf;/*缓存队列首指针*/,int c_cl;/*缓存队列尾指针*/,;,c_cc,c_cf,c_cl,44,第44页,六、UNIX设备管理,45,第45页,六、UNIX设备管理,字符缓存管理,取字符和释放字符缓存,46,第46页,六、UNIX设备管理,送字符和分配字符缓存,47,第47页,作业,P313 习题1,5,8,,48,第48页,






