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