操作系统 第6章 设备管理 (学习笔记)

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技术的支持。

SpoolingSimultaneous 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 设备独立性

设备独立性也称为设备无关性,指用户编程时所使用的设备与实际使用的设备无关,用户编程时使用逻辑设备名。

用户程序以逻辑设备名来请求使用某类设备时,系统将在该类设备中,根据设备的使用情况,将任一台合适的物理设备分配给该程序。

如果用户程序是以物理设备名来请求指定某台设备,假如该设备有故障或正在被其他进程使用,则用户程序只能一直等待。

采用逻辑设备名,可以使用户程序独立于分配给它的某类设备的具体设备。

使用逻辑设备名,还能使用户程序独立于所使用的某类设备。

 

6.2.1.3 设备独立性的优点

(1)方便用户编程。

(2)便于程序移植。

(3)提高了资源利用率。

(4)能适应多用户多进程的需要。 

 

6.2.2 实用系统中的逻辑设备和物理设备

Linux系统中外部设备等同文件——设备文件;

这些设备文件名就是系统规定的逻辑设备名;

系统的/dev目录下是各种设备:

(1)以fd开头的文件是软盘设备。

/dev/fd0——第一个软盘驱动器

/dev/fd1——第二个软盘驱动器

/dev/fd1h1440——第一软驱中的3.5英寸高密软盘。

(2)以hd开头的文件是IDE硬盘设备。

/dev/hda——第一硬盘

hda1——第一个硬盘/dev/hda的第一个分区

hda、hdb、hdc、……——系统中的多个IDE硬盘

(3)/dev/ttys——串行端口COM1,/dev/cua——调制解调器。

(4)以lp开头的文件是并行端口设备。/dev/lp0——LPT1。

以tty开头的文件是系统的虚拟终端

以pty开头的文件是伪终端,用telnet远程登录时用到

/dev/console——控制台,即直接与系统相连的显示器和键盘。

 

6.2.3 设备驱动程序

 

设备驱动程序是驱动物理设备直接进行各种操作的软件,它可看作I/O系统和物理设备的接口,所有进程对于设备的请求都要通过设备驱动程序来完成。 

 

6.2.3.1 设备控制器

设备只有在设备控制器的控制下才能运行,且一个控制器可以控制几台同类设备。

操作系统 第6章 设备管理 (学习笔记)_第1张图片

控制器存取: 接收和识别的CPU发来的命令 

状态寄存器: 实现控制器与CPU之间、控制器和外设之间的数据交换 

数据寄存器: 记录设备的状态(如设备就绪、设备忙、操作错误等)供CPU了解

地址译码器等: 用于识别每个设备的地址

 

6.2.3.2 设备驱动程序的引入

将用户命令中的逻辑设备名转换为物理设备名.

操作系统设计者把与物理设备直接有关的软件部分独立出来,构成设备驱动程序系列,一般由设备商和软硬件开发商提供的针对某一种具体设备的驱动程序组成。

系统和用户可根据需要,灵活配置物理设备,选择相应的驱动程序装载。 

 

6.2.3.3 设备驱动程序的处理过程

(1)将抽象要求转换为具体要求(控制器中寄存器内容)

(2)检查I/O请求的合法性。

(3)检查设备状态。读状态寄存器内容,看设备忙/闲状态。

(4)传送必要的参数。

(5)启动I/O设备。向设备控制器中的命令寄存器传送控制命令,将外设启动,然后可由设备控制器来控制外设进行基本I/O操作。不同类型的外设,驱动程序是不一样的。

6.2.3.4 实用系统中的设备驱动程序

控制面板→管理工具→计算机管理→设备管理器→指定设备→属性→驱动程序→驱动程序详细清单

 

Linux 支持三类的硬件设备:字符、块和网络。

字符设备直接读写,没有缓冲区,例如系统的串行端口 /dev/cua0 和 /dev/cua1 。

块设备只能按照一个块(一般是 512 字节或者 1024 字节)的倍数进行读写。块设备通过 buffer cache 访问,可以随机存取。

大多数的设备驱动程序可以在需要的时候作为核心模块加载,在不再需要的时候卸载。

每一类的设备驱动程序:字符、块和网络,都提供了通用的接口供核心在需要请求它们的服务的时候使用。

 

Linux 核心的设备驱动程序本质上是特权的、驻留内存的低级的硬件控制例程的共享库。

 

6.3 输入/输出控制方式

 

6.3.1 程序控制输入/输出方式

程序控制输入/输出方式又称为:状态驱动输入/输出方式应答输入/输出方式——它采用程序查询的方式直接参与数据的输入/输出。(注意:程序就是CPU

 

程序控制输入/输出方式——以键盘为例:

(1)CPU向键盘的控制器发一条输入命令,启动键盘进行输入操作,并将状态寄存器的”忙/闲位”置1,表示忙。

(2)然后CPU运行程序不断测试状态寄存器的完成位,看键盘是否完成了输入。直到键盘已将数据输入到了键盘控制器的数据寄存器中,状态寄存器的完成位变为1时,CPU才停止测试。

(3)CPU取走数据寄存器中的输入数据。

目前IDE接口硬盘仍在使用这种方式,称为PIO(Programming Input/Output)模式。

问题:CPU等待每一个操作完成的时候会花费大量时间“忙于什么也不做”( busy doing nothing )——CPU大部分时间都处于检查和等待状态,整个计算系统的效率十分低下。

 

6.3.2 中断输入/输出方式

CPU请求设备传输后不等待,转去做其他更有用的事情,当设备完成请求的时候向CPU发设备中断。(系统中同一时刻可能有许多设备的请求在同时发生。)

所谓中断,就是指当某个事件发生时,向系统发出一个中断信号,系统于是中止现行程序的运行,转去执行相应的中断处理程序,完毕后返回断点继续执行

需要在CPU和每一个设备控制器之间增加一条中断请求线,并在设备控制器的控制寄存器中增加一个中断允许位

优点:CPU不需等待数据传输完成,I/O设备与CPU并行工作,CPU的利用率因此提高。

缺点:CPU在响应中断后,还需要时间来执行中断服务程序。如果数据量大,需要多次执行中断程序,CPU的效率仍然不高。

 

6.3.3 直接存储器访问方式

DMADirect Memory Access)方式:

在外部设备和主存之间建立了直接数据通路,即外设和主存之间可直接读写数据,且数据传送的基本单位是数据块。

整块数据的传输在一个称为DMA控制器的控制下完成。

DMA数据传输期间不需CPU干预,仅在传送一个或多个数据块的开始或结束时,才需CPU处理。 

 

图DMA控制方式:

操作系统 第6章 设备管理 (学习笔记)_第2张图片

 

图DMA数据输入处理过程:

操作系统 第6章 设备管理 (学习笔记)_第3张图片

使用 DMA 的时候设备驱动程序必须小心。

(1)所有的 DMA 控制器都不了解虚拟内存,它只能访问系统中的物理内存。

(2)DMA 控制器无法访问全部的物理内存。 DMA的地址寄存器的位数决定了它能访问的内存地址。 

 

DMA方式缺点:

(1)外设数量众多,配置DMA控制器,硬件的成本过大。

(2)每一台外设的DMA都需要CPU的I/O指令初始化,浪费CPU时间。

(3)由于DMA控制器实际上是使用窃取CPU工作周期的方法进行工作的,它工作时,CPU将被挂起。如果众多外设都采用DMA方式工作,接连不断的窃取周期,则会使CPU长时间被挂起,从而降低了CPU的效率。

 

6.3.4 通道方式

 

6.3.4.1 通道的概念

通道是一个独立于CPU的专管输入/输出控制的处理机,它控制设备与内存直接进行数据交换。

通道有自己的一套简单的指令系统,称为通道指令。每条通道指令规定了设备的一种操作,通道指令序列便是通道程序,通道执行通道程序来完成规定动作。

操作系统 第6章 设备管理 (学习笔记)_第4张图片

通道靠执行通道程序软件完成数据传输,通道控制器的功能比DMA控制器更强大,它能够承担外设的大部分工作。 

 

6.3.4.2 通道的种类

操作系统 第6章 设备管理 (学习笔记)_第5张图片

字节多路通道: 以字节为传输单位,可以分时地执行多个通道程序。这是一种简单的共享通道,主要为多台低速或中速的字符设备服务。

选择多路通道: 它用开关来控制对高速外设的选择,在一段时间内单独为一台外围设备服务,直到该设备的数据传输工作全部结束。然后通道再选择另一台外设为其提供服务。

数组多路通道: 它分时地为多台外围设备服务,每个时间片传送一个数据块。可以同时连接多台高速存储设备,因此,它能够充分发挥高速通道的数据传输能力。

 

6.3.4.3 通道工作过程

CPU根据进程的I/O请求,形成有关通道程序,然后执行I/O指令启动通道。

通道处理机开始运行CPU存放在主存中的通道程序,独立负责外设和主存之间的数据传送。当整个I/O过程结束,才向CPU发出中断请求。

CPU响应中断,进行关闭通道、记录相关数据等工作。

 

6.3.4.4 通道和DMA控制器的区别

共同点:

都能实现IO设备和内存之间建立数据直传通路;

不同点:

DMA只能实现固定的数据传送控制,而通道有自己的指令和程序,具有更强的独立处理数据输入和输出的能力。

DMA只能控制一台或者少数几台同类设备,而一个通道可以控制多台同类或者不同的设备

DMA控制器是硬件工作,通道是软件工作

 

6.3.5 Windows中的数据传输控制方式

(1)端口 (2)中断向量 (3)DMA

 

6.4 设备分配

 

6.4.1设备分配中的数据结构

操作系统 第6章 设备管理 (学习笔记)_第6张图片

设备控制表: 就象进程控制块PCB、作业控制块JCB一样,系统为每个设备建立一个设备控制块DCB,主要用来记录本设备的各种情况。

通道控制块CHCB: 记录通道的情况。

控制器控制块COCB: 记录控制器的情况。

系统设备表: 整个系统有一张系统设备表SDT,存放了系统的所有设备,每个设备占一个表项,内容有设备标识、设备类型、设备DCB指针、还可包含设备驱动程序入口等内容。

 

6.4.2 设备分配思想

 

设备分配的原则:

充分提高设备的利用率;

在不导致死锁的情况下尽量满足用户的要求。

 

设备分配的功能:接受用户提出的逻辑设备分配的要求,把它转换为对物理设备的分配。 

 

6.4.2.1 设备分配方式

(1)静态分配: 在进程刚建立就把其需要的设备全部分配给它,直到整个进程运行后被撤销才释放这些设备。静态分配的优点是不会产生死锁。常用于单用户系统。

(2)动态分配: 当进程运行过程中提出对设备的请求,系统为这个进程分配所需的设备,一旦该进程使用完这个设备,立刻释放出来给别的进程。动态分配使设备的利用率得到很大提高,但这种方式如果采取的分配算法不当,则有可能会导致死锁。

如果将独享设备虚拟为共享设备,破坏产生死锁的互斥条件,那么死锁就不会产生了。 

 

6.4.2.2 独享设备调度算法

(1)先来先服务: 当有多个进程对同一台设备提出分配请求时,根据进程对某设备提出请求的时间顺序,将这些进程控制块排成一个设备请求队列,处于队首的进程最先获得使用权。

(2)优先级高者先服务: 请求设备的进程按优先级排入设备请求队列,在优先级相同的情况下,再按时间顺序排列,设备总是分配给队首具有最高优先级的进程使用。

 

6.4.2.3 共享设备调度算法

共享设备的典型代表为磁盘,完成磁盘某一个物理块的访问要经过三个时间段:

寻道时间Ts: 寻道时间Ts是磁头从当前磁道移动到目标磁道所需的时间

旋转延迟Tw: 旋转延迟Tw是当磁头停留在目标磁道后,目标物理块从当前位置旋转到磁头位置的时间

读写时间Trw: 读写时间Trw是目标物理块内容与内存中对应区交换的时间。

 

磁盘调度的原则是公平高吞吐量,衡量指标有:

访问时间T:

T= Ts+ Tw+ Trw

  = Ts+ Tw

平均访问时间Ta

Ta= Tsa+ Twa+ Trwa

    = Tsa+ Twa

 

(1)先来先服务(First Come First Serve): FCFS将申请磁盘服务的进程按先后顺序排队,每次调度选择位于队首的进程运行。公平,但吞吐量不高.

(2)最短寻道时间优先(Shortest Service Time First): SSTF算法选择离当前磁头位置最近的目标物理块优先访问,以保证最短的寻道时间。优点:降低了系统的平均寻道时间,提高了系统吞吐量;缺点:磁盘内外边缘的磁道访问频率降低,有失公平性。

(3)电梯算法: 磁头向一个方向移动的过程中,选择离磁头最近的目标物理块访问,直到没有要访问的物理块,然后磁头变换移动方向,以同样的方式选择访问磁盘的进程。电梯算法兼顾了公平性和高吞吐量,目前较多采用电梯调度算法。

 

6.4.2.4 设备分配程序

操作系统 第6章 设备管理 (学习笔记)_第7张图片

如何对应逻辑设备和物理设备?

进程是以物理设备名提出I/O请求的。而事实上进程应采用逻辑设备名来提出设备请求,以保证设备独立性。

系统建立逻辑设备表LUT(Logical Unit Table),来对应逻辑设备名和物理设备名的关系。

在多用户系统中,每个用户进程PCB中有一张LUT,当进程使用逻辑设备名请求I/O操作时,系统通过查找LUT,即可找到对应的物理设备。

 

6.4.3 Spooling技术

 

6.4.3.1 Spooling

Spooling又称假脱机技术,现代操作系统都支持该技术,它主要实现将独享设备虚拟为共享设备。Spooling技术在大容量外存的支持下,由预输入程序和预输出程序来进行数据传输。 

操作系统 第6章 设备管理 (学习笔记)_第8张图片

(1)在磁盘上开辟两个空间,分别称为“输入井”和“输出井”。 

(2)预输入进程将输入设备的数据写到磁盘输入井上。

(3)当用户进程需要输入数据时,直接从输入井读入内存。

(4)用户进程将要输出的数据送到磁盘输出井上。

(5)预输出进程从输出井中取出数据,送给输出设备进行输出。

 

当用户进程需要输入设备时,可直接到共享设备磁盘输入井中去取数据;当用户进程要输出数据时,将输出数据放入输出井即可。

由于输入井/输出井可以共享,于是独享的输入/输出设备被模拟成可共享的设备。这种被模拟成的共享设备称为虚拟设备。 

 

6.4.3.2 实用系统中的Spooling技术

在Windows中使用打印机,假脱机方式是系统的默认选项。

Linux为每台打印机都在磁盘上定义了一个输出缓冲区,即输出井,要打印的作业以文件的形式存放到输出缓冲区,若有多个文件,就排成队列的形式,即打印队列。

预输出程序(Linux中称为打印机守护程序)定期扫描打印缓冲区,将打印队列中的文件按先进先出依次送入打印机,完成实际的打印工作。

如果要用网络的共享打印机进行远程打印,则先将要打印的作业存放到本机的打印缓冲区,然后由打印机守护程序把打印作业通过网络传输到指定的打印机中。 

 

Linux文件系统中/usr/bin目录下有五个有关打印的程序,分别为:

Lpd: lpd守护程序可以说是打印机的灵魂,所有的打印作业都是由它来进行处理的。 

Lpr: Lpr为提交打印作业命令,将文件放到打印缓冲区。 

Lpq: lpq命令就是显示打印缓冲区中所有的作业及作业号清单。

Lpc: lpc命令的功能非常强大,它是打印系统的控制程序,使用该命令,能检查打印队列及守护进程的状态。如果是root用户,甚至能启动和停止打印机的假脱机状态,使打印机不能工作以及重新安排打印队列中作业的顺序。  

Lprm: lprm命令用于从打印缓冲区中删除由lpq命令指定的作业。

 

打印缓冲区到底哪里?

打印缓冲区就是在磁盘上建立的一个目录,打印队列信息就存放在该目录下。

Linux系统采用的方法是设多个打印缓冲区目录,一台打印机对应一个打印缓冲区目录。所有的打印缓冲区目录集中到一个主打印缓冲区目录下。

假如/usr/spool/lpd作为主打印缓冲区目录,则每个单独的打印机都在该目录下有与这台打印机同名的目录,如名为printer1的打印机,它的打印缓冲区目录就是/usr/spool/lpd/print1。

 

UNIX系统中打印机的主要安装步骤 

打印机的主要安装步骤:配置端口(串口或并口),连接打印机与主机,将打印机添加到系统中,进行必要的打印机配置等。 

 

6.5 设备管理涉及到的常用技术

 

设备管理是建立在各种针对性硬件机制基础上的,需要硬件技术的配合。两种硬件机制:中断技术、缓冲技术

 

6.5.1 中断技术

在人机联系、故障处理、实时处理、程序调试与监测、任务分配等方面都需用到中断技术;

在设备管理中,没有中断技术就不可能实现设备与主机、设备与设备、设备与用户、设备与程序的并行

 

6.5.1.1 中断及中断源的概念

中断:指某事件发生时,CPU终止现行程序的运行,转去执行相应的事件处理程序,处理完毕返回断点继续执行。

引起中断发生的事件就称为中断源

中断源向CPU发出的请求中断处理信号称为中断请求

CPU收到中断请求后,中断正在运行的程序并转向相应的事件处理程序称为中断响应

相应的事件处理程序称为中断服务程序

执行中断服务程序的过程称为中断处理

操作系统 第6章 设备管理 (学习笔记)_第9张图片

 

6.5.1.2 中断的分类

硬中断(外中断): 来自于处理机及内存外部的中断,都称为硬中断或外中断。

例如,输入/输出中断,操作员对机器进行干预的中断,各种定时器引起的时钟中断,调试程序中设置断点引起的调试中断等。

内中段: 在处理机和内存内部产生的中断称为内中段,也称为陷入或异常。

例如,非法指令、数据格式错误、主存保护错误、地址越界错误、各种运算溢出错误、除数为零错误、数据校验错、进程用户态向系统态转换等。

软中断:由程序中执行了中断指令引起的中断,称为软中断。

UNIX系统也提供了软中断的处理功能,该中断又叫信号处理机构,它是UNIX系统提供的一种进程通信机构,利用它,进程之间可相互通信。

 

6.5.1.3 中断优先级

当系统中同时存在若干个中断请求时,CPU按它们的优先级从高到低进行处理。

当CPU响应一个中断源的请求,在进行中断处理时,如果又有新的中断源发出中断请求,CPU是否响应该中断请求,则取决于中断源的优先级。

 

中断优先级的确定主要由下列因素来决定:

(1)中断源的紧迫性。

(2)设备的工作速度。

(3)数据恢复的难易程度。

 

6.5.1.4 中断处理过程

操作系统 第6章 设备管理 (学习笔记)_第10张图片

 

6.5.2 缓冲技术

 

6.5.2.1 缓冲的实现方法

(1)硬件缓冲: 硬件缓冲采用专用硬件缓冲器,一般由外设自带的专用寄存器构成。

硬件缓冲器的大小是衡量设备性能的一个指标。但硬件缓冲器价格较昂贵。

(2)软件缓冲:  在内存中专门开辟若干单元作为缓冲区。系统通常采用这种方法。 

 

6.5.2.2 缓冲的种类

 

6.5.2.2.1 引入缓冲区的目的  

1)缓和CPU与外设间速度不匹配的矛盾

2)提高CPU与外设之间的并行性 3)减少对CPU的中断次数

 

6.5.2.2.2 缓冲区的设置方式(种类)  

1)单缓冲:当数据到达率与离去率相差很大时,可采用单缓冲方式。假如发送者和接收者速度不匹配,将会浪费大量的等待时间,因此,通常不采用单缓冲.

  

 

2)双缓冲:当信息输入和输出率相同(或相差不大)时,可利用双缓冲区,实现两者的并行。当发送者和接收者的速度相差很大时,双缓冲还是不能解决两者并行工作问题。双缓冲在实际系统中采用得很少。

 

3)多缓冲:对于阵发性的输入、输出,为了解决速度不匹配问题,可以设立多个缓冲区。  

4)环形缓冲:

操作系统 第6章 设备管理 (学习笔记)_第11张图片

装入数据:

将输入数据送入EMPTY指向的缓冲区,填满后,让EMPTY指向下一个空缓冲区。

每次申请一个空缓冲区时,要判断EMPTY是否与FULL相等,若相等,表示系统中已没有空缓冲区,输入进程需要等待。

提取数据:

直接到FULL所指缓冲区中取,然后让FULL指向下一个满缓冲区。

同样需判断FULL是否和EMPTY相等,若相等,表示系统已无数据可取,输出进程等待。

环形缓冲一般作为设备的专用资源,有两个缺点:

①如果系统的设备较多,就要占用大量的缓冲区,增加内存开销。

②缓冲区利用率不高,可能会出现某个设备的缓冲区不够用,而其他设备有多个空缓冲区。

5)缓冲池:

为便于管理,系统将相同类型的缓冲区链成一个队列,缓冲池中共有三种队列。这三种队列各有指向其首缓冲区的队首指针和指向尾缓冲区的队尾指针。

对缓冲区进行读、写操作时。从队列中取下的缓冲区称为工作缓冲区,缓冲池中有四种工作缓冲区:收容输入工作缓冲区,提取输入工作缓冲区,收容输出工作缓冲区,提取输出工作缓冲区

 

缓冲池的工作过程(输入):

操作系统 第6章 设备管理 (学习笔记)_第12张图片

 

6.5.2.3 缓冲技术的应用

Linux系统缓冲池

块设备缓冲池: 由高速缓冲区组成,缓冲区以磁盘物理块大小为单位。

字符设备缓冲池: 字符缓冲区的大小以字节为单位。

 

CPU需要磁盘数据时,先到高速缓冲区中读数据,若数据不在高速缓冲区中,则启动磁盘I/O,并将从磁盘读取的数据存放到高速缓冲区中。要往磁盘上写数据时,CPU也是先往高速缓冲区中写,以防随后还要访问这些数据,等到将来不再需要时才真正将数据写回到磁盘上。

 

6.6 实际设备管理

 

6.6.1 Windows的设备管理

 

6.6.1.1 Windows设备管理的特点

(1)对即插即用功能的支持。系统将自动为新硬件分配不发生冲突的I/O、IRQ、DMA等资源,并为其安装合适的设备驱动程序。

(2)Windows具有动态设备驱动程序机制,支持动态加载设备驱动程序。支持使用USB接口等设备的热插拔技术。

(3)Windows采用了缓冲技术。Windows 还利用Spooling技术,使打印机能实现后台打印。

(4)在Windows中,用户可通过控制面板调整系统设置。

 

6.6.1 .2 Windows的注册表

无论对硬件还是软件的所有管理都可利用注册表来进行。注册表是Windows 中的核心数据库。

该注册表包含计算机中每个用户的配置文件、有关系统硬件的信息、安装的程序及属性设置。Windows 在其运行中不断引用这些信息。

 

注册表:

1.注册表由5个树状结构的子树组成 .每个子树又可包括二级项、二级子树下是三级项……,构成树状层次结构。 右边窗格中则是所选项下的值项,包含名称与数据。

2.HKEY_CURRENT_USER,包含当前登录用户的配置信息的根目录。用户文件夹、屏幕颜色和“控制面板”设置存储在此处。该信息被称为用户配置文件。

3.HKEY_USERS,包含计算机上所有用户的配置文件的根目录。HKEY_CURRENT_USER 是 HKEY_USERS 的子项。

4.HKEY_LOCAL_MACHINE,包含针对该计算机的配置信息。在系统监视器上所看到的系统资源使用情况,实际上就是存放在HKEY_LOCAL_MACHINE主键中。  

5.HKEY_CLASSES_ROOT,是 HKEY_LOCAL_MACHINE\Software 的子项。此处存储的信息可以确保当使用 Windows 资源管理器打开文件时,将打开正确的程序。

6.HKEY_LOCAL_MACHINE,包含针对该计算机的配置信息。在系统监视器上所看到的系统资源使用情况,实际上就是存放在HKEY_LOCAL_MACHINE主键中。  

7.HKEY_CURRENT_CONFIG,包含本地计算机在系统启动时所用的硬件配置文件信息。

8.注册表包含了上千个键,每个键对应着系统的不同信息,我们可通过直接修改键值来更改整个系统的设置。注册表将操作系统和软硬件紧密结合起来,它包含了操作系统的设备管理等多种功能。

操作系统 第6章 设备管理 (学习笔记)_第13张图片

 

6.6.2 Linux的设备管理

1.设备文件设备文件是Linux系统很重要的一个特色。任何设备都必需通过挂装点挂装到目录树上才能被访问。

2.Linux支持一定的即插即用功能,但没Windows 那么完善。

3.Linux的设备驱动程序是作为系统内核的一部分运行的,它的执行效率会从根本上影响系统的整体性能。Linux的设备驱动程序具有动态性、可装载性,在需要时可作为内核模块装入,不需要时卸载即可。

4.Linux采用了缓冲技术来改进块设备的数据传输速度和效率,读、写块设备主要和高速缓存打交道。Linux还采用Spooling技术提高了打印机的工作效率。

5.Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备。

另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

你可能感兴趣的:(操作系统)