I/O设备 是计算机系统的重要资源,用户无权直接使用。
设备管理的一个重要任务,便是按照一定的算法在各进程间调度和分配设备。
另外,设备管理还要按照用户要求启动具体设备,完成数据传输操作,并且处理设备的中断。
还有 如何利用虚拟技术使独享设备,变为,共享设备,使一台物理设备,变为,多台逻辑设备。
4.1 设备管理概述一,设备管理的分类
1,按从属关系分类
( 1) 系统设备,指在操作系统生成时已经登记在系统中的标准设备 。 如键盘,显示器,打印机等 。
( 2) 用户设备,指操作系统生成时未登记入系统的非标准设备 。 如鼠标,绘图仪,扫描仪等 。
2,按传输速率分类
( 1) 低速设备:
指传输速率为每秒钟几个字符至数百个字节设备,
如键盘,鼠标,语音输入等 。
( 2) 中速设备,
指传输速率为每秒钟数千个字节至数万个字节的设备,如针式打印机,激光打印机等 。
( 3)高速设备:
指传输速率为数兆字节的设备,如磁带机、磁盘机、光盘机等。
3,按使用特性分类
( 1) 存储设备:
是计算机用来保存各种信息的设备,如磁盘,
磁带等 。
( 2) I/O设备:
是向 CPU传输信息或输出 CPU加工处理信息的设备。 例如:键盘,CRT
( 1) 独占设备:
指在一段时间内只允许一个用户 ( 进程 ) 访问的设备,大多数低速的 I/O设备 。
如用户终端,打印机等属于这类设备 。
因为独占设备属于临界资源,所以多个并发进程必须互斥地访问独占设备 。
4,按设备共享属性分类
( 2)共享设备:
指在一段时间内允许多个进程同时访问的设备 。
显然,共享设备必须是可寻址的和可随机访问的设备,典型的共享设备是磁盘 。
( 3)虚拟设备:
指通过虚拟技术将一台独占设备变换为若干台供多个用户
(进程)共享的逻辑设备。一般可以利用假脱机
( SPOOLing)技术实现虚拟设备。
( 1) 字符设备:
是指处理信息的基本单位是字符的设备,如键盘,打印机,显示器是字符设备 。
( 2) 块设备,
是指处理信息的基本单位是字符块的设备,一般块的大小为 512B~4KB,如磁盘,
磁带等都是块设备 。
5,按信息交换单位分类二、设备管理的目标
( 1) 提高设备的利用率 。
应尽量提高 CPU与 I/O设备之间的并行操作程度,主要利用的技术有:中断技术,DMA技术,通道技术和缓冲技术 。
( 2)为用户提供方便、统一的界面。
所谓方便,是指用户能独立于具体设备的复杂物理特性之外而方便使用设备。所谓统一,是指对不同的设备尽量使用统一的操作方式,例如各种字符设备用一种 I/O操作方式。这就要求用户操作的是简便的逻辑设备,而具体的 I/O物理设备有操作系统去实现,这种性能常常被称为设备的独立性。
三,设备管理的功能
( 1)设备分配。 按照设备类型和相应的分配算法决定将
I/O设备分配给哪一要求使用该设备的进程。凡未分配到所需设备的进程被放入一个等待队列。
( 2) 设备处理 。 设备处理程序实现 CPU和设备控制器之间的通信 。 即当 CPU向设备控制器发出 I/O指令时,设备处理程序应启动设备进行 I/O操作,并能对设备发来的中断请求作出及时的响应和处理 。
( 3)实现其他功能。
包括对缓冲区的管理功能及实现设备独立性。
四、设备管理结构,
1,逻辑 I/O,抽象命令、网络协议栈、文件逻辑结构控制
2,设备 I/O,用户命令到设备操作序列转换,I/O缓冲
3,调度和控制:
并发 I/O访问调度
设备驱动
设备中断处理用户进程硬 件
4.2 I/O控制方式
程序轮询 I/O控制方式
中断 I/O控制方式
DMA I/O控制方式
通道 I/O控制方式
4.3 中断技术
1,中断 的基本概念:
中断是指计算机在执行期间,系统内发生了 某一急需处理的事件,暂时中止 CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完毕后又返回到刚才暂停程序的被中断处继续执行的过程 。
中断是操作系统实现并发性的基础之一 。
以下是需要打断处理器正常工作的 典型事件,
请求系统服务
实现并行工作
处理突发事件
满足实时要求
2,中断 的分类与优先级中断的分类角度很多,比如,IBM中大型机操作系统,便按照中断事件的性质和激活的手段,将中断 分成以下两类:
强迫性中断事件这 不是正在运行的程序所期待的,而是由于某种事故或外部请求信息所引起的,具体分为:机器故障中断事件,程序性中断事件,外部中断事件,输入输出中断事件。
自愿性中断事件这是正在运行的程序所期待的事件。比如,其对操作系统有某种需求,一旦机器执行到一条访管指令时,便自愿停止现行程序的执行而转入访管中断处理程序处理。
而 Windows2000/XP则按照中断信号的来源,
把中断分为外中断和内中断两类:
外中断 (又称中断 )指来自处理器和主存之外的中断。 包括:电源故障中断、时钟中断、控制台中断、它机中断和 I/O中断等。
不同的中断具有不同的中断优先级,处理高一级中断时,往往会屏蔽部分或全部低级中断。
内中断 (又称异常 )指来自处理器和主存内部的中断 。包括:通路校验 错,主存奇偶错、非法操作码、地址越界、页面失效、调试指令,访管中断,算术操作溢出等各种程序性中断。 内中断是不能被屏蔽的,一旦出现应立即响应并加以处理 。
3,中断 处理过程 (由中断装置和中断服务程序共同完成):
保护被中断进程的运行现场。即未被硬件保护的一些必需的处理状态,如 PSW、
PC(或 IP)等。
识别各个中断源,分析产生中断的原因。
处理发生的中断事件。
恢复被中断进程的现场,即恢复正常操作。
4.4 缓冲技术
1,缓冲技术的基本实现思想:
在 CPU和外设之间设立缓冲区,用以暂存
CPU与外设之间交换的数据,从而缓和 CPU与外设速度不匹配所产生的矛盾。
其实,凡是数据到达和离去速度不匹配的地方均可采用缓冲技术。 例如,CPU与内存之间也需要设置缓冲,只不过设在 cache里。
2,引入 缓冲的目的
(1)改善 CPU与 I/O设备之间速度不匹配的矛盾
(2)减少对 CPU的中断频率,放宽对中断响应时间的限制
(3)提高 CPU与 I/O设备之间的并行性
3,缓冲的分类及使用
缓冲有 硬件缓冲 (设备寄存器)和 软件缓冲
(内存区)之分。后者容量大,使用灵活,又可从不同角度划分成多类。 比如,有专用和通用之分,还可根据系统设置的缓冲区个数,将缓冲技术分为:
单缓冲、双缓冲、环形缓冲和 缓冲池。
缓冲操作 主要由 getbuffer()和 putbuffer()过程实现,它们之间有同步约束。
4.5 设备分配及设备处理程序
设备独立性
设备分配
设备处理
1,设备独立性
设备独立性 是指用户程序所用设备与物理设备无关的特性,也称 设备无关性 。
为此要求用户程序对 I/O设备的请求不指定特定的设备,而采用逻辑设备名,
程序执行时由系统完成逻辑设备到物理设备的映射,这很象程序对逻辑地址的使用 。
设备独立性带来的好处
1)便于用户使用物理外围设备
2)便于系统增减或变更外围设备
3)便于实现 I/O重定向;易于对付外设故障
4)提高了设备分配的灵活性和利用率
设备独立性的实现系统为每个进程设置一张,逻辑设备表
LUT”,记录该进程所用逻辑设备对应的物理设备名和驱动程序入口地址。这是设备分配的一种结果记录,另外,设备分配还要修改全局性的,系统设备表,和,设备控制表,
等数据结构。
2,设备分配
设备按共享属性可以分成独占设备、共享设备和虚拟设备三类
相应的管理和分配外围设备的技术可分成:
独占方式、共享方式和虚拟方式 。
设备分配思想当某进程向系统提出 I/O请求时,设备分配程序按一定策略分配设备、控制器和通道,形成一条数据传输通路,以供主机和设备间信息交换。 主要用于多通路系统,有静态分配 和 动态分配两种策略,而独占设备的分配还要考虑是否采用安全策略,共享设备分配要考虑调度性能。
常用的 I/O设备分配算法
◆ 先来先服务
◆ 优先级高者优先
设备请求队列当多进程对同一设备提出 I/O请求时,系统响应后,为它们分别建立 I/O请求包,按先来先服务或者优先级高者优先的原则组织成设备请求队列 。设备分配程序总是把设备首先分配给队首进程。具体分配是从设备类表或者系统设备表开始顺序查找相应的数据结构进行的,在单通路系统中多采用最先适应法,而在多通路系统中,则采用回溯策略。
设备分配采用的数据结构:
设备类表 和 设备表
系统中拥有一张设备类表,每类设备对应于表中一栏,包括内容有:设备类,总台数,
空闲台数,设备驱动程序入口和设备表起始地址等 。
每一类设备都有各自的设备表,用来登记这类设备中每一台设备的状态,包含的内容有:
物理设备名,逻辑设备名,占有设备的进程号,已分配 /未分配,好 /坏等 。
采用通道结构的系统中设备分配采用的数据结构,
系统设备表、通道控制表、控制器控制表和设备控制表
系统建立一张系统设备表,记录配置在系统中的所有物理设备的情况 。
每个通道,控制器,设备各设置一张表,记录各自的地址 (标识符 ),状态 (忙 /闲 ),等待获得此部件的进程队列指针,及一次分配后相互勾链的指针,以备分配和执行 I/O时使用 。
具体内容如下:
设备控制块 DCB(设备控制表 DCT)。每个设备一张表,记录本设备的使用情况,表目内容:设备类型、设备标识符、设备状态、与此设备相连的
COCT、重复执行的次数或时间、等待队列的队首和队尾指针
控制器控制块 COCB(控制器控制表 COCT)
通道控制块 CHCB(通道控制表 CHCT)
系统设备表 SDT。 整个系统一张表,记录系统中所有 I/O设备的信息,表目包括:设备类型、设备标识符、设备驱动程序入口,DCT表指针等,是分配程序首先查找的数据结构。
3,设备处理 —— 即设备驱动
(i) 设备驱动程序
系统为每类设备编制设备驱动程序以控制 I/O传输
任务:主要负责接收和分析从设备分配转来的信息,把用户
I/O请求转换为具体要求后,发送给设备控制器,启动设备执行。
设备驱动程序的处理过程:
(1) 将抽象 I/O请求转为具体要求 (2) 检查 I/O请求的合法性
(3) 读出和检查设备的状态
(4)传送必要的参数,预置设备的初始状态
(5) 设置设备的工作方式(在有通道系统中,构造通道程序)
(6) 启动 设备进行 I/O操作 (7) 响应 来自设备的 中断
(ii) I/O中断处理程序
处理来自设备或通道的正常或异常完成中断准备工作
4.6 SPOOLing系统
定义,spooling系统是 OS中采用的一项可以把独享设备转变成具有共享特征的虚拟设备的技术,也叫 假 脱机 I/O技术,或 虚拟设备技术 。
SPOOLing全称是 Simultaneous Peripheral
Operation On Line,即外围设备同时联机操作。
这种早期批处理系统的产物一直沿用至今。
读卡机 外围机 1401 磁带磁带磁带外围机主机 7094
磁带 打印机上世纪 50年代末 批处理 系统中,程序和数据的 I/O是在外围机的控制下完成的,即在脱离主机的情况下进行,故称为 脱机 I/O方式。特点是:手工干预多,时间长。上世纪 60年代中期,当进程取代外围机(即不再需要 IBM 1401,不必再搬动磁带,而且磁盘取代了磁带)后即有了 假脱机 I/O方式。
脱机 I/O示意图
SPOOLing系统的组成示意图预输入程序作业 1信息
…
作业 n信息输入井作业 1结果
…
作业 n结果输出井缓输出程序井管理程序运行作业输入设备输出设备作业调度程序磁盘
SPOOLing系统的组成说明
( 1) 输入井和输出井,
这是在磁盘上开辟出来的两个专用的存储区域 。
输入井和输出井分别用于收容 从输入 设备输入的数据和用户程序的输出数据 。
,井,是用作缓冲的存储区域,采用井的技术能调节供求之间的矛盾,消除人工干预带来的损失 。 这时的 输入井和 输出井可分别看作是对读卡机 和 打印机的 虚拟 或者模拟 。
( 2) 输入缓冲区和输出缓冲区,
这是供信息在 I/O设备和磁盘 I/O井之间传送时用的内存缓冲区 。
( 3)预输入进程和缓输出进程:
预输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井。当 CPU需要输入数据时,直接从输入井读入内存。
缓输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
假若进程 打开了 打印机特殊文件后几小时内无所事事,
则其他进程什么都打印不了!解决方案:
创建 值班进程( daemon),SPOOLing打印目录
进程首先生成要打印的文件,放入 SPOOLing目录
值班进程:唯一获准使用打印机特殊文件的进程,
负责在打印机空闲时打印 SPOOLing目录里的文件。
通过禁止用户对特殊文件的直接使用,解决了上述打印机空占问题,提高了其使用效率。
SPOOLing应用举例 (1)—— 打印机的
SPOOLing值班(即守护或精灵)进程( daemon)
SPOOLing应用举例 (2)——
网络的 SPOOLing值班进程
SPOOLing技术今天仍被广泛使用
网络文件传送先把文件送到网络 spooling目录,然后网络值班进程把它取出并传递到目标地址
Internet电子邮件系统在因特网上发 Email时,电子邮件发送程序 send先将待发信件存入 spooling电子邮件目录下,供以后传输。
注意,SPOOLing只提高设备利用率,缩短用户程序执行时间,并不提高 CPU利用率。
采用 SPOOLing技术的好处
提高了 I/O的速度,加快了作业的运行 。
将独占设备改造为共享设备,提高了 I/O设备的利用率 。 系统不给进程分配独占设备,只分配输入 /输出井和建立 I/O请求表。
实现了虚拟设备功能。 SPOOLing系统实现了将一台独占设备变换为若干台逻辑设备的功能 。
4.7 磁盘驱动调度
一、磁盘结构硬盘一般分为固定头磁盘和移动头磁盘两大类:
固定头磁盘,指盘面上每条磁道都有一个读 /写头的磁盘。固定头磁盘各磁头可并行读写,但成本较高,主要用在大型机中。
移动头磁盘,指每个盘面只有一个读 /写磁头的磁盘。每次读写须先移动磁头到目标磁道上,这称为寻找( seek)操作。
目前,个人计算机中的硬盘( Winchester盘)和软盘都是移动头磁盘。软盘由单盘片组成,硬盘则是个盘片组(因为单一盘片的容量越来越大,故硬盘所含的盘片数有逐渐减少的趋势)。盘片安装在一个高速旋转的枢轴上。读写头安装在移动臂上,移动臂可沿磁盘半径方向移动。
枢 轴盘 片磁臂磁头磁臂移动方向移动头硬盘结构示意图移动头硬盘驱动器结构及盘片编址示意图柱面扇区磁头 磁臂磁道盘面初期 IBM PC软盘和当今 Western Digital
的 WD 18300硬盘的磁盘参数磁盘块的物理地址描述 —— 采用三个参数
要在磁盘上访问一个扇区,必须给出其 柱面号,
磁头号 和 扇区号,这称为扇区的物理地址,即物理扇区号。由物理扇区号表示的扇区称为绝对扇区。为了方便,操作系统通常将其转变为连续的逻辑扇区号加以管理。
编址方式为,对整个磁盘从柱面 0到最后一个柱面增加,在柱面上按磁道号增加,在磁道上按扇区号增加。
设一块为一扇,则磁盘块号及其物理三地址之间可按以下式子转换,
(1)已知块号,则磁盘驱动用的三地址:
柱面号= [块号 /(磁头数 × 扇区数) ]
磁头号= [(块号 mod(磁头数 × 扇区数 ))/扇区数 ]
扇区号= (块号 mod(磁头数 × 扇区数 ))mod 扇区数
(2)已知磁盘块物理地址,则磁盘块号:
块号= 柱面号 × (磁头数 × 扇区数 )+磁头号 × 扇区数+扇区号结合文件读写的例子,上述情况 (1)下,磁盘块号是哪里来的?
例 4.1 设磁盘组共有 n个柱面,编号顺序为 0、
1,2,…,n-1;共有 m个磁头,编号顺序为
0,1,2,…,m-1;每个磁道内的 k个信息块从 1开始编号,依次为 1,2,…,k。 现用
x表示逻辑磁盘块号,用 a,b,c分别表示任一逻辑磁盘块的柱面号,磁头号,磁道内块号,则 x与 a,b,c可通过如下公式进行转换:
x=k*m*a+k*b+c
a=(x-1) DIV (k*m)
b=((x-1) MOD (k*m)) DIV k
c=((x-1) MOD (k*m)) MOD k +1
磁盘访问时间 ( =T寻道 +T旋转 +T传输 [平均值
=Ts+1/(2r)+b/(rN)],其中 T寻道 约占 70%)
寻道时间 Tseek
把磁臂(磁头)径向移动到指定磁道或柱面上所经历的时间,包含启动磁臂和磁头移动 n条磁道或柱面所花费的时间。
旋转延迟时间 Tlatency
指定扇区旋转移动到磁头下面所经历的时间。与盘面的旋转速度有关。
5400rpm平均旋转延迟 5.55ms; 7200转,4.16ms
传输时间 Ttransfer
把数据从磁盘读出或向磁盘写入数据所经历的时间。与旋转速度和一次读写的数据量有关。
二、磁盘访问时间
FCFS(First Come First Served)
简单、低效
SSTF(Shortest Seek Time First)
有效,但有,饥饿现象,
Scan或 Look(即 Lift或 Elevator)
有效,没有,饥饿现象,,但有,磁臂粘着现象,
CScan或 C-Look(Circular Scan)
对 Scan的变形,磁头,固定周期,单向移动
N-Step-Scan 和 Fscan
可消除,磁臂粘着现象,
三、磁盘调度算法
Shortest Seek First (SSF) disk
scheduling algorithm
The elevator algorithm for
scheduling disk requests