第6章 设备管理
6.1 概述
6.1.1 外设
计算机系统中,通常把处理机和主存储器之外的部分统称为外围设备,简称外设。
6.1.2 设备管理的目标
使用方便、与设备无关、效率高、管理统一。
6.1.3 设备管理包括
(1)设备独立性
(2)设备驱动程序
(3)计算机和外部设备的数据传送控制方式
(4)设备的分配
(5)一些重要技术如中断技术、缓冲技术、Spooling技术
6.1.4 外设的分类
1.按设备的从属关系分类:
系统设备:它是指操作系统生成时,即安装操作系统时就纳入系统管理范围的各种标准设备。
用户设备:它是指系统设备之外的非标准设备,在安装操作系统时没有配置,而由用户自己安装配置的设备。
2.按分配方式分类:
独享设备:这类设备一旦分配给某个实体(用户、作业、任务或进程)使用,在没被释放前,其他实体不得使用。
共享设备:指允许多个进程或作业同时使用的设备。
虚拟设备:通过一定的辅助存储器和控制程序,可将一台独享设备模拟为共享设备,这个具有了新特性的设备就称为虚拟设备。
3.按使用特性分类:
存储设备:它是计算机用来存储永久性信息的设备。
输入/输出设备:输入设备,输出设备
4.按信息组织、传送单位分类:
字符设备:以字符为单位来组织、处理信息的设备。
块设备:以数据块为单位来组织、处理信息的设备。
6.1.5 操作系统对设备安装的支持程序
即插即用PnP设备
非即插即用设备
Linux将外部设备看作文件——设备文件,它以设备名作为文件名。
应用物理设备前——用mount命令挂装到目录树上(称为加载)。
使用完成后——用umount命令从目录树卸下(称为卸载),才可取走该设备。
要挂装到作为挂装点的目录,系统通常已准备了一些常用挂装点,如果挂装点不存在,必需要用mkdir命令建立,然后才可进行挂装。
6.1.5 设备管理的功能
6.1.5.1 设备管理应为每一类设备提供相应的设备驱动程序
选择打印机型号 ——确定打印机的驱动程序。
6.1.5.2 提供设备独立性
用户使用或编程时,打印机表现为一个普通的逻辑名称。
系统为了识别其管理的所有设备,给每个设备一个唯一的不可更改的识别号,称为设备的物理名。通过逻辑设备名和物理设备名,提供设备独立性,这是设备管理的一项重要任务。
6.1.5.3 对缓冲区进行管理
为了解决速度不匹配问题,大部分外设都采用设置缓冲区的方法。
缓冲区可设置在内存中,称为“软件缓冲”;
也可让外设自带专用的寄存器,作为硬件缓冲器。
例如利用打印机打印一篇文章,CPU在打印机就绪后,可把数据输出到缓冲区,打印机则从缓冲区取出数据打印,就这样一边送一边打,提高CPU的利用率。并且由于一次可以送一批数据到缓冲区,因而节省了CPU的数据传送时间。
6.1.5.4 对Spooling技术的支持。
Spooling(Simultaneous Peripheral Operations On-line)——也称为假脱机技术。
此技术在磁盘上专门开辟一个区域,CPU不需等到打印机处于就绪状态,就可直接将要打印的所有作业存放到磁盘中,排成打印队列。
合适的时候由专门的程序(在Windows中称为后台进程)把要打印的信息从磁盘送到打印机,并管理打印机的打印工作。
给人的感觉好像每个作业都有一台打印机。也就是说,该技术将一台独享设备模拟成了共享设备。支持Spooling技术意味着支持虚拟设备。
6.1.5.5 进行设备分配
按照设备的类型和系统中采用的分配算法,实施设备分配。这一功能由设备分配程序完成。
6.1.5.6 提供中断处理机制
如果打印过程中出现问题(如掉电、缺纸、脱机等),需要CPU进行紧急处理。
系统采用了中断技术——当某个事件发生时,系统中止现行程序的运行,转去执行相应的事件处理程序,处理完毕,返回被中断处继续执行。
当出现问题时,中断源立即向CPU发出一个中断信号,系统进入中断处理机制。
6.1.5.7 监视设备状态
记住所有设备、控制器和通道的状态,以便有效的调度和使用它们。
6.1.5.8 完成I/O操作
通常完成这一部分功能的程序叫做设备驱动程序。系统按照用户的要求调用具体的设备驱动程序,启动相应的设备,进行I/O操作;并且处理来自设备的中断。操作系统中每类设备都有自己的设备驱动程序。
6.1.5.9 缓冲管理与地址转换
由于外设与主机间的速度差异,大多数I/O操作都涉及到缓冲区。因此系统应对缓冲区进行管理。此外,用户程序应与实际使用的物理设备无关,这就需要将用户在程序中使用的逻辑设备转换成物理设备的地址。
6.2 设备标识与设备驱动程序
6.2.1 逻辑设备与物理设备
6.2.1.1 逻辑设备和物理设备的含义
逻辑设备:
逻辑设备是对实际物理设备属性的抽象,它并不限于某个具体设备。
用户在编程时,不用关心系统具体配置了哪些设备,也不需要了解各种设备的物理特性,而只要按照惯例为所用到的设备起个逻辑名字,称为逻辑设备名。
物理设备:
物理设备是一个具体的设备。
系统为了能识别全部外设,给每台外设分配一个唯一不变的名字,称为物理设备名。
通过引入逻辑设备和物理设备,可实现设备独立性。
6.2.1.2 设备独立性
设备独立性也称为设备无关性,指用户编程时所使用的设备与实际使用的设备无关,用户编程时使用逻辑设备名。
用户程序以逻辑设备名来请求使用某类设备时,系统将在该类设备中,根据设备的使用情况,将任一台合适的物理设备分配给该程序。
如果用户程序是以物理设备名来请求指定某台设备,假如该设备有故障或正在被其他进程使用,则用户程序只能一直等待。