《基本设备管理ppt课件.ppt》由会员分享,可在线阅读,更多相关《基本设备管理ppt课件.ppt(105页珍藏版)》请在三一办公上搜索。
1、操作系统设备管理,设备管理功能,设备管理:I/O管理,负责管理设备和控制I/O传输操作功能:1 设备分配与回收2 设备控制3 设备状态跟踪,设备分类,按传输速率分:低速设备(几个字节-数百个字节/秒) 键盘、鼠标等中速设备(数千个字节-数万个字节/秒) 打印机等高速设备 磁盘 光盘机等,按设备的使用特性存储设备输入/输出设备,按信息交换的单位分:块设备(数据的存取以数据块为单位) 磁盘块设备在输入输出时常采用DMA方式字符设备(数据的存取以字符为单位) 键盘 打印机等字符设备在输入输出时常采用中断方式,按设备的共享属性:独占设备 临界资源共享设备 磁盘虚拟设备 将一台设备变换为若干台逻辑设备
2、虚拟光驱、虚拟网卡,设备控制器,(1)设备并非直接与CPU通信,之间经过设备控制器(2)设备与设备控制器之间的连接:数据信号线:传送数据信号(中间缓冲区)状态信号线:传送设备当前状态控制信号线:规定了设备将要执的动作输出:先到缓冲,再到转换器(信号/数据)输入:先到转换器,再到缓冲控制信号:读操作,写操作,磁头移动等状态:正在读或写,读写完成等,设备控制器功能,控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。功能:接收和识别命令-cpu可向设备控制器发送多种指令,设备控制器能识别接收这些指令,如:磁盘读写等。数据交换-实现cpu与控制器之间、控制器与设备之间的数据交换。标识和
3、报告设备状态记下设备状态供cpu了解。例如:只有当设备处于发送就绪状态时,cpu才能启动控制器从设备中读取数据。地址识别每个设备都有一个地址,控制器能够识别它所控制的每个设备的地址。数据缓冲I/o设备的低速与cpu高速之间的缓冲。,设备控制器的组成,三部分组成:1、设备控制器与处理器的接口三类信号线:数据线、地址线、控制线两类寄存器:数据寄存器、控制状态寄存器2、设备控制器与设备的接口一个控制器可接多个设备,一个接口接一个设备3、IO逻辑实现对设备的控制,CPU启动设备过程:发送控制命令和地址给控制器,IO逻辑接收命令并译码,I/O控制方式,程序I/O方式-忙则等待方式 利用I/O测试指令测试
4、设备的忙闲,若设备忙则继续测试,不忙则进行输入输出,在程序I/O方式中,由于CPU的高速性和I/O设备的低速性, 致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中, 造成对CPU的极大浪费。在该方式中,CPU之所以要不断地测试I/O设备的状态,就是因为在CPU中无中断机构, 使I/O设备无法向CPU报告它已完成了一个字符的输入操作。,11,12,中断驱动I/O控制方式 当启动I/O设备时,CPU向设备控制器发出I/O指令,然后返回执行原来指令。由设备控制器控制设备,当设备完成I/O操作时,中断方式通知CPU处理。,在I/O设备输入每个数据的过程中,由于无须CPU干预,因而
5、可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。可见,这样可使CPU和I/O设备都处于忙碌状态,从而提高了整个系统的资源利用率及吞吐量。 例如,从终端输入一个字符的时间约为100 ms, 而将字符送入终端缓冲区的时间小于 0.1 ms。 若采用程序I/O方式,CPU约有 99.9 ms的时间处于忙等待中。 采用中断驱动方式后,CPU可利用这 99.9 ms的时间去做其它事情,而仅用 0.1 ms的时间来处理由控制器发来的中断请求。 可见,中断驱动方式可以成百倍地提高CPU的利用率。,13,14,直接存储器访问DMA I/O控制方式,1. DMA(Di
6、rect Memory Access)控制方式的引入 中断传输仍是以字为单位的,即传输完一个字后进行一次中断。不利于操作大量数据。为了进一步减少CPU的干预,引入了直接存储器访问方式。 数据传输的基本单位是数据块; 所传送的数据是从设备直接送入内存的,或者相反; 仅在传送一个或多个数据块的开始和结束时,才需CPU干预, 整块数据的传送是在控制器的控制下完成的。 可见,DMA方式成百倍地减少了CPU对I/O的干预。,15,2. DMA控制器的组成,DMA控制器的组成,16,为了实现在主机与控制器之间成块数据的直接交换, 必须在DMA控制器中设置如下四类寄存器: (1) 命令/状态寄存器CR。用于
7、接收从CPU发来的I/O命令或有关控制信息, 或设备的状态。 (2) 内存地址寄存器MAR。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。 (3) 数据寄存器DR。用于暂存从设备到内存,或从内存到设备的数据。 (4) 数据计数器DC。 存放本次CPU要读或写的字(节)数。,17,3. DMA工作过程,18,19,I/O通道控制方式,1. I/O通道控制方式的引入,I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预,即把对一个数据块的读(或写)为单位的干预,减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。 同时,又可实现C
8、PU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。 例如,当CPU要完成一组相关的读(或写)操作及有关控制时,只需向I/O通道发送一条I/O指令,以给出其所要执行的通道程序的首址和要访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务。,20,2. 通道程序,(1)操作码。 (2) 内存地址。 (3) 计数。 (4) 通道程序结束位P。 (5) 记录结束标志R。,21,22,I/O通道,1. I/O通道(I/O Channel)设备的引入实际上,I/O通道是一个用来控制外部设备的硬件机制,是一种特殊的处理机。它具有执行I/O指令的能力,并
9、通过执行通道(I/O)程序来控制I/O操作。IO通道的目的使原来由CPU执行的IO任务承担下来 但I/O通道又与一般的处理机不同,主要表现在以下两个方面: 一是其指令类型单一,这是由于通道硬件比较简单, 其所能执行的命令,主要局限于与I/O操作有关的指令; 再就是通道没有自己的内存,通道所执行的通道程序是放在主机的内存中的, 换言之,是通道与CPU共享内存。,2. 通道类型,1) 字节多路通道(Byte Multiplexer Channel) 字节多路通道不适于连接高速设备,24,2) 数组选择通道(Block Selector Channel),可以连接多台高速设备只含有一个分配型子通道,
10、在一段时间内只能控制一台设备进行数据传送,并独占该通道。这种通道的利用率很低。,25,3) 数组多路通道(Block Multiplexer Channel)数组多路通道是以上二种通道结合而形成的一种新通道数据传送是按数组方式进行有多个非分配型子通道,数据传输速率很高,通道利用率也高广泛地用于连接多台高、中速的外围设备,26,3. “瓶颈”问题,27,28,缓 冲 管 理,缓冲的引入,(1)缓和CPU与I/O设备间速度不匹配的矛盾。 (2) 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制。 (3) 提高CPU和I/O设备之间的并行性。,29,图 5-10 利用缓冲寄存器实现缓冲,30
11、,单缓冲和双缓冲,1. 单缓冲(Single Buffer),31,2. 双缓冲(Double Buffer),32,33,循环缓冲,1. 循环缓冲的组成,34,2. 循环缓冲区的使用,(1)Get过程。(2) Release过程。,35,3. 进程同步,(1)Next指针追赶上Next指针。输入进程速度大于输出进程(2) Next指针追赶上Nexti指针。输出进程速度大于输入进程,36,缓冲池(Buffer Pool),1. 缓冲池的组成,对于既可用于输入又可用于输出的公用缓冲池, 其中至少应含有以下三种类型的缓冲区: 空(闲)缓冲区; 装满输入数据的缓冲区; 装满输出数据的缓冲区。 为了管
12、理上的方便,可将相同类型的缓冲区链成一个队列,于是可形成以下三个队列: (1) 空缓冲队列em。 (2) 输入队列inq。 (3) 输出队列outq。,37,2. Getbuf过程和Putbuf过程,Procedure Getbuf(type) begin Wait(RS(type); Wait(MS(type); B(number)=Takebuf(type); Signal(MS(type); end Procedure Putbuf(type, number) begin Wait(MS(type); Addbuf(type, number); Signal(MS(type); Sign
13、al(RS(type); end,38,3. 缓冲区的工作方式,1、收容输入:输入进程需要输入数据时,调用Getbuf(emq)在emq中摘下一空区,作为收容输入缓冲区hin,并装满数据,再调用Putbuf(inq,hin),将缓冲区挂到inq中。2、提取输入:输入进程需要输入数据时,调用Getbuf(inq)从inq摘一区,作为提取输入缓冲区sin,计算进程从中提取数据。计算进程数据数据用完后,再调用Putbuf(emq,sin),将缓冲区挂到emq。,39,3、收容输出:当计算进程需要输出时,调用Getbuf(emq)从emq中摘一区,作为收容输出缓冲区hout.当装满输出数据,又调用Pu
14、tbuf(outq,hout),将缓冲区挂在outq。4、提取输出:由输出进程调用Getbuf(outq)从out中摘一满区,作为提取输出缓冲区sout提取数据。数据提取完后,调用Putbuf(emq,sout),并挂入emq。,40,设备分配,(1)先来先服务。 (2) 优先级高者优先。,41,设备独立性,设备独立性 引入逻辑设备和物理设备两个概念。 在应用程序中使用逻辑设备名来请求使用某类设备,而系统在实际执行时,还需物理设备名。 系统需要具有将逻辑设备名转换为物理设备名的功能。,例如:系统拥有A、B两台卡片输入机,现有作业J2申请一台卡片输入机,如果它指定使用A,那么作业J1已经占用A或
15、者设备A坏了,虽然系统还有同类设备B是好的且未被占用,但也不能接受作业J2,显然这样做很不合理。 为了解决这一问题,通常用户不指定特定的设备,而指定逻辑设备,使得用户作业和物理设备独立开来,再通过其它途径建立逻辑设备和物理设备之间的对应关系,我们称这种特性为“设备独立性”。设备管理的功能之一就是把逻辑设备名转换成物理设备名,优点:设备分配时的灵活性,逻辑设备名到物理设备名的映射逻辑设备表:逻辑设备名物理设备名设备驱动程序入口,SPOOLING技术,回顾:操作系统的4个特性之虚拟性。 将一个物理设备虚拟成多个逻辑设备,从而可实现多个用户的共享-解决方法:S Pooling技术,SPOOLING技
16、术,为了缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术。 目标:CPU与外围设备操作同时进行(并行)一道程序模拟脱机输入时的外围控制机功能,将低速I/O设备上的数据传送到高速磁盘上,或者一道程序模拟脱机输出时的外围控制机功能,把数据从高速磁盘传送到低速I/O设备上。,设备分配,虚拟设备分配策略SPOOLING技术:联机情况下实现的同时外围操作称为SPOOLING技术。可将一个独占设备虚拟成多台设备。,共享打印机为例说明:,把对独占设备的访问转为对共享设备的访问,实现独占设备的“同时共享”,输入井、输出井:用于暂存I/O设备输入的数据和用户输出的数据。输入缓冲区、输出
17、缓冲区:暂存由输入设备送来的数据,以后传送到输入井;暂存由输出井送来的数据,以后传送给输出设备。输入进程、输出进程:将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井中读入内存;输出进程当用户要求输出数据时,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。,SPooling技术如何使一台打印机虚拟成多台打印机? 打印机属于独享设备。 用SPOOLing技术转换为虚拟成多台打印机 当用户进程请求打印时,SPOOLing系统同意为它打印输出,但并不真正立即把打印机分配给该进程,而是作如下事情:(1)由输出进程在输出井中申请
18、一块空闲磁盘块,并将打印数据送入其中(2)输出进程再为用户进程申请一张空白的用户请求打印表,并将用户打印要求填入其中,将该表挂到请求打印队列 (3)若打印机空闲,输出进程将从请求打印队列的队首取出一张打印请求表,根据要求打印数据,从输出井传送到内存缓冲区,再由打印机进行打印。,磁盘存储器管理,磁盘存储器管理 几乎所有计算机都使用磁盘来存储信息。从存储角度,与内存比较起来,磁盘有三个主要的优点:(1)可用的存储容量非常大(2)每位的价格非常低(3)电源关掉后信息不会丢失,磁盘性能简述数据的组织和格式实际的硬盘都组织成多个盘片,每片分两面,每面分成若干条磁道,磁道间有间隙磁道又被分成许多扇区,每条
19、磁道上扇区数目典型为10至100,每个扇区包含相同的字节数,相当于一个盘块,主要组成,硬盘(温硬)基本基础知识主轴 (5400/7200/10000转每 盘片 移动臂/磁头臂 磁头,硬盘府视图,用磁道号、磁头号和扇区号来标识一个扇区,磁盘类型固定头磁盘:提高并行读写能力,主要用于大容量磁盘。每条磁道都有一个磁头。移动头磁盘:寻道功能,结构简单,速度慢,每个盘面仅有一个磁头,磁盘访问时间寻道时间Ts:是指把磁头移动到指定磁道上所经历底时间,是启动磁臂的时间S与磁头移动N条磁道所花费的时间之和旋转延迟时间T:是指指定扇区移动到磁头下面所经历的时间,平均T为50100ms传输时间Tt:是指向磁盘写入
20、数据所经历的时间,与每次读/写的字节数b和旋转速度有关,磁盘调度-当多个进程需要访问磁盘时磁盘调度的目标是使磁盘的平均寻道时间最少,以使进程对磁盘的平均访问时间最小,目前常使用的有先来先服务,最短寻道时间优先及扫描算法等,先来先服务寻道算法FCFS(First-come,First-served) 一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。,最短寻道时间优先算法SSTF该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道,距离最短,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短会可能导致某个进程发生“饥饿”的现象,因为只要有新进程的请求到达,其
21、所要访问的磁道与当前所在磁道的距离较近,其I/O请求必优先满足,3、扫描算法SCAN 为了避免“饥饿”现象,对SSTF算法略加修改形成扫描算法,该方法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。这种算法中磁头移动的规律颇似电梯的运行,又称电梯调度算法。磁臂由磁盘的一端开始,移动到磁盘的另一端,在移动过程中,为访问请求服务。然后调转方向,从此端移动到另一端。,循环扫描CSCAN(Circular SCAN)为了减少SCAN算法造成的某些进程的请求被严重推迟,CSCAN算法规定磁头单向移动。当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,即将最小磁道号紧
22、接着最大磁道号构成循环,进行循环扫描,假设磁盘访问序列:98 183 37 122 14 124 65 67读写头起始位置:53.求:磁头服务序列和磁头移动总距离。FCFSSSTFSCANCSCAN,先来先服务(640),最早寻道时间优先,设备驱动程序,设备和驱动程序的分类设备开关表设备驱动程序的框架,设备管理,Linux设备的分类 字符设备 块设备网络设备,设备管理,字符设备 以字符为单位输入输出数据的设备,并且以字符为单位对设备中的信息进行组织和处理。显示器、键盘等块设备 以一定大小的数据块为单位输入输出数据,并且设备中的数据也是以物理块为单位进行组织和管理的。硬盘、软盘、光盘等。,设备管
23、理,网络设备 通过网络与外部近程或远程计算机进行通信的设备。,设备管理,设备文件 Linux设备管理的特点 物理设备抽像化,把物理设备看成文件,采用文件系统的接口和系统调用来管理和控制设备。设备读:从设备向内存输入数据设备写:数据从内存输出到设备Linux设备就是一种特殊文件,称为设备文件,设备管理,Linux的设备文件一般置于/dev目录下设备文件名由两个部分组成,第一部分23个字符,表示设备的种类;第二部分通常是字母或数字,区分同种设备中的单个设备,IDE的设备是以hd命名,第一个ide设备是hda,第二个是hdb. SCSI接口设备是用sd命名 Ex:例如hda1代表hda这个硬盘设备上
24、的第一个分区。每个硬盘可以最多有四个主分区,因此1-4命名硬盘的主分区。逻辑分区是从5开始的,每多一个分区,数字加1就可以。,设备管理,设备管理,ls l /dev,设备文件inode,设备管理,设备文件与与普通文件的差异设备文件没有象普通文件那样的文件实体,不在外存占据数据块来存放数据进程访问普通文件是读写磁盘分区中的数据,访问设备文件是对硬件设备进行读写,完成设备与内存之间的数据传送,设备管理,Linux设备的识别Linux内核对设备的识别是通过 设备类型+设备号(主、次设备号)设备类型指字符设备还是块设备设备号是系统内部识别设备的标识使用同一个驱动程序的每种设备有一个唯一的主设备号除主设
25、备号外还使用次设备号来区分同种设备中的各个具体设备,设备管理,对于设备来说,只要它们使用得驱动程序一样,那么它们的主设备号就是一样的,次设备号来区分使用同一个驱动程序的个体设备。主次设备号值都是从0255,驱动是什么?驱动与系统和应用程序之间有何关系?,引 例,fd = open(/dev/v4l/video0,O_WRONLY)read(fd,buf,number);问题:/dev/v4l/video0 ?read 从哪读?,设备管理,设备驱动程序与设备注册,设备管理,设备驱动程序 控制设备的硬件完成指定的I/O操作,设备驱动程序直接和硬件设备打交道。 设备驱动程序包括对设备的各种操作,在操
26、作系统的控制下,cpu通过执行驱动程序来实现对设备底层硬件设备的处理和操作。Linux设备驱动程序的主要功能是:对设备进行初始化启动、停止设备的运行把设备上的数据传到内存,设备管理,把数据从内存传送到设备检测设备状态驱动程序由内核统一管理,处于内核态,设备管理,file_operations结构文件操作函数指针的集合,在设备管理中,该结构体各个成员项指向的操作函数就是设备驱动程序的各个操作例程。编制设备驱动程序的工作就是使用汇编或c语言编写控制设备完成各种操作的例程,然后把这些操作例程的入口地址赋予file_operations结构体的有关成员项即可。,struct file_operatio
27、ns test_fops=read:read_test,write:write_test,open:open_test,release:release_test,ioctl:ioctl_test;,设备管理,设备注册设备的驱动程序是系统在启动时装载到系统中的。对于“即装即用”设备,驱动程序作为程序模块可以随时加载到系统中,驱动程序加载到系统中是通过设备注册实现的。设备注册表字符设备注册表块设备注册表,设备管理,字符设备注册表定义:,static struct device_struct chrdevsMAX_CHRDEV;,struct device_struct const char * n
28、ame;struct file_operations * fops;,设备管理,设备管理,*: 设备注册表的下标是某种设备的主设备号。使用主设备号作为索引就可以从设备注册表得到这种设备的驱动程序。,设备管理,设备注册函数设备注册的过程实际上是构建结构体device_struct的过程:向设备注册表写入设备名,以及file_operations结构。设备注册是通过系统调用实现的,int register_chrdev(unsigned int major, const char * name, struct file_operations *fops),if (major = 0) write_
29、lock(,若major=0,由系统自动分配一个主设备号给驱动程序若major!=0,major即为主设备号,但主设备号不能与系统中其它主设备号冲突。使用注册函数可以变更设备名或驱动程序,chrdevsmajor.name = name;chrdevsmajor.fops = fops;return 0;,设备注销:当设备需要撤销时,可以使用注销函数从设备注册表中删除。,int unregister_chrdev(unsigned int major, const char * name),if (!chrdevsmajor.fops | strcmp(chrdevsmajor.name, n
30、ame) return -EINVAL;chrdevsmajor.name = NULL;chrdevsmajor.fops = NULL;,设备驱动入口与出口,module_init(function)module_exit(function),int module_init(void)int result;result=register_chrdev(253,test,void module_exit(void) unregister_chrdev(253,test);,由于内核空间与用户空间的内存不能直接互访,因此借助函数copy_to_user()完成用户空间到内核空间的复制,函数co
31、py_from_user()完成内核空间到用户空间的复制。 copy_to_user(void _user *to, const void *from, unsigned long n) copy_to_user(void _user *to, const void *from, unsigned long n),try_module_get 如果模块已经插入内核,则递增该模块引用计数module_put(struct module *module):减少模块使用计数。这样,当设备在使用时,管理此设备的模块就不能被卸载;只有设备不再使用时模块才能被卸载。,static ssize_t read_test(struct file *file,char *buf,size_t count,loff_t *f_pos) copy_to_user(buf,drv_buf,count); return count;,static ssize_t write_test(struct file *file,char *buf,size_t count,loff_t *f_pos) copy_from_user(drv_buf,buf,count); return count;,mknod /dev/test c 253 0insmod test.o例题 (见附件),
链接地址:https://www.31ppt.com/p-1407967.html