设备管理常见知识点

  设备管理的基本任务是完成用户提出的I/O请求、提高I/O速率以及提高I/O设备的利用率。主要功能是:缓冲区管理、设备分配、设备处理、虚拟设备及实现设备的独立性。

I/O控制方式

I/O控制方式的发展始终贯串一个宗旨:尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来,以便更多地去完成数据处理的任务。

1 程序I/O方式 忙-等待方式
当时还没有中断机构,I/O设备无法向CPU报考它已经完成一个字符的输入操作,导致CPU必须不断地测试I/O设备的状态,不能处理其他事务。
2 中断I/O方式
I/O设备输入每个数据过程中,由于无需CPU干预,因而可以是CPU与I/O设备并行工作。仅当输入完一个(一个字节)数据时,才需CPU花费极短的时间去做些中断处理。


3 直接存储器访问(DMA)I/O控制方式 DMA(direct memory access)。
中断驱动I/O方式的CPU是以字节为单位进行干预的。
DMA的特点:
1> 数据传输的基本单位是 数据块
2> 所传输的数据是从设备直接送入内存的,或者相反;
3> 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预,整块数据的传送是在控制器的控制下完成的。 



命令/状态寄存器(CR):接受cpu发来的I/O命令;或者有关控制信息;或者设备状态
内存地址寄存器(MAR): 输入时,存放从设备到内存的起始目的地址;输出时,有内存到设备的内存源地址
数据寄存器(DR):用于占存数据
数据计数器(DC): 本次CPU要读或写的字节数。
4 I/O通道控制方式
把对一个数据块的读写为单位的干预减少为对一组数据块的读写及有关的控制和管理为单位的干预。同时,又实现CPU、通道和I/O设备的并行操作,从而更有效提高整个系统的资源利用率。
通道程序的每条命令中包含的内容:
1>操作码:如write
2>内存地址
3>计数 读写字节数
4> 通道结束位 p
5> 记录结束位 R

缓冲管理

I/O设备和CPU设置缓冲,缓和CPU和I/O设备速度不匹配的矛盾,提高CPU和I/设备的并行性。
缓冲管理的主要职责是组织好这些缓冲区,并提供获得和释放缓冲区的手段。
1 单缓冲 在主存中分配一缓冲区
系统对每一块数据的处理时间是: MAX(C,T)+M

2 双缓冲
系统处理一块数据的时间可以粗略的认为是MAX(C,T)
双机通信如果设置单缓冲只能单向通信
设置双缓冲区后可以进行双向通信

3 循环缓冲
当输入与输出或生存者与消费者的速度基本相匹配时,采用双缓冲能获得较好的效果。但如果不匹配,则不是很理想。于是引入了循环缓冲。

作为输入的多缓冲区分为三类:R 装输入数据的空缓冲 G 已装满数据的缓冲去 C 现行工作缓冲区
作为输入的缓冲区设置了三类指针: nexti 输入进程下次可用的空缓冲区 R nextg 计算进程下一个可用缓冲区G current 进程正在使用的缓冲区C
使用

4 缓冲池
上述缓冲区仅适用于某些特定的I/O进程或计算进程,因而专用缓冲。于是设置了公用缓冲池,
缓冲区池的组成:
既可以输入又可以输出的缓冲池,至少包含三类型缓冲:
1>空闲缓冲区 2> 装满输入数据的缓冲区 3>装满输出数据的缓冲区
为了便于管理,可以将相同的缓冲区链成一个队列于是有三个队列
1>空缓冲区队列 emq F(emq)队首指针 L(emq)队尾指针
2>输入队列inq F(inq) L(inq)
3>输出队列outq F(outq) L(outq)
出上述结构,还设置了四个工作缓冲区:
1>用于收容输入数据的工作缓冲区
2>用于提取输入数据的工作缓冲区
3>用于收容输出数据的工作缓冲区
4>用于提取输出数据的工作缓冲区
缓冲区的工作方式:

设备独立性

为了提高 OS 的可适应性和可扩展性,在现代 OS 中都毫无例外地实现了设备独立性(Device Independence),也称为设备无关性。其基本含义是: 应用程序独立于具体使用的物理设备
为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能,这非常类似于存储器管理中所介绍的逻辑地址和物理地址的概念。在应用程序中所使用的是逻辑地址,而系统在分配和使用内存时,必须使用物理地址。

设备的分配

SPOOLing技术
通过 SPOOLing 技术可将一台物理 I/O 设备虚拟为多台逻辑 I/O 设备,同样允许多个用户共享一台物理 I/O 设备
当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能, 把低速 I/O 设备上的数据传送到高速磁盘上; 再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样,便可在主机的直接控制下,实现脱机输入、输出功能。此时的外围操作与 CPU 对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为 SPOOLing(Simultaneaus Periphernal Operating On Line),或称为假脱机操作
SPOOLing 技术是(通过几道程序)对脱机输入、输出系统的模拟。相应地,SPOOLing系统
1> 必须建立在具有多道程序功能的操作系统上
2> 而且还应有高速随机外存的支持,这通常是采用磁盘存储技术。
1 spooling系统的组成

(1) 输入井和输出井这是在磁盘上开辟的两个大存储空间。 输入井是模拟脱机输入时的磁盘设备, 用于暂存 I/O 设备输入的数据; 输出井是模拟脱机输出时的磁盘, 用于暂存用户程序的输出数据。
(2) 输入缓冲区和输出缓冲区。为了缓和 CPU 和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
(3) 输入进程 SPi 和输出进程 SPo这里利用两个进程来模拟脱机 I/O 时的外围控制机。其中,进程 SPi 模拟脱机输入时的外围控制机, 将用户要求的数据从输入机通过输入缓冲区再送到输入井,当 CPU 需要输入数据时,直接从输入井读入内存;进程 SPo 模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。
2 应用 共享打印机
打印机是经常要用到的输出设备,属于独占设备。利用 SPOOLing 技术,可将之改造为一台可供用户共享的设备,从而提高设备的利用率。当用户进程请求打印输出时, SPOOLing 系统同意为它打印输出, 但并不真正立即把打印机分配给该用户进程,而只为它做两件事:
① 由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;
② 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上
如果还有进程要求打印输出,系统仍可接受该请求,也同样为该进程做上述两件事。
3 spooling系统的特点
SPOOLing 系统具有如下主要特点:
(1) 提高了 I/O 的速度。缓和了 CPU 与低速 I/O 设备之间速度不匹配的矛盾。
(2) 将独占设备改造为共享设备。因为在 SPOOLing 系统中,实际上并没为任何进程分配设备,而只是在输入井或输出井中为进程分配一个存储区和建立一张 I/O 请求表。这样,便把独占设备改造为共享设备。
(3) 实现了虚拟设备功能。宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,他们都会认为自己是独占了一个设备。当然,该设备只是逻辑上的设备。SPOOLing 系统实现了将独占设备变换为若干台对应的逻辑设备的功能。

磁盘存储器的管理

1 磁盘的数据组织 物理盘片 片面(存储面) 磁道(同心圆) 扇区(盘块、数据块)
一个物理记录存储在一个扇区上,磁盘上存储的物理记录块数目是由扇区数磁道数以及磁盘面数所决定的。
2 磁盘访问时间
1) 寻道时间 Ts 这是指把磁臂(磁头)移动到指定磁道上所经历的时间。 该时间是启动磁臂的时间 s 与磁头移动 n 条磁道所花费的时间之和,其中,m 是一常数,即:
Ts= m × n + s
2) 旋转延迟时间 Tr 这是指定扇区移动到磁头下面所经历的时间
3) 传输时间 Tt 这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。Tt 的大小与每次所读/写的字节数 b 和旋转速度有关:

磁盘调度算法

磁盘是可供多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。由于在访问磁盘的时间中,主要是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。目前常用的磁盘调度算法有先来先服务、最短寻道时间优先及扫描等算法。
1.先来先服务(FCFS,First Come First Served)
这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。FCFS 算法仅适用于请求磁盘 I/O 的进程数目较少的场合。
2.最短寻道时间优先(SSTF,Shortest Seek T ime First)
该算法选择这样的进程:其要求访问的磁道与当前磁头所在的磁道距离最近以使每次的寻道时间最短。但这种算法不能证平均寻道时间最短。SSTF算法虽然能获得较好的寻道性能,但却可能导致某个进程发生“饥饿”现象。
3 SCAN 算法
该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。由于在这种算法中磁头移动的规律颇似电梯的运行, 因而又常称之为电梯调度算法
SCAN 算法既能获得较好的寻道性能,又能防止“饥饿”现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。但 SCAN 也存在这样的问题:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。为了减少这种延迟,引入了CSCAN 算法,它规定磁头单向移动。
4.循环扫描(CSCAN)算法
为了减少这种延迟,引入了CSCAN 算法,它规定磁头单向移动。例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问的磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。
5.NStepSCAN 和 FSCAN 调度算法
1) NStepSCAN 算法
在 SSTF、 SCAN 及 CSCAN 几种调度算法中, 都可能会出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的 I/O 操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Armstickiness)。在高密度磁盘上容易出现此情况。
N 步 SCAN 算法是将磁盘请求队列成若干个长度为 N 的子队列,磁盘调度将按 FCFS 算法依次处理这些子队列。而每处理一个队列时又是按 SCAN 算法,对一个队列处理完后,再处理其他队列。当正在处理某子队列时, 如果又出现新的磁盘 I/O 请求, 便将新请求进程放入其他队列, 这样就可避免出现粘着现象。当 N 值取得很大时,会使 N 步扫描法的性能接近于 SCAN 算法的性能;当 N=1 时,N 步 SCAN 算法便蜕化为 FCFS 算法。
2) FSCAN 算法
FSCAN 算法实质上是 N 步 SCAN 算法的简化, 即 FSCAN 只将磁盘请求队列分成两个子队列。一个是由当前所有请求磁盘 I/O 的进程形成的队列,由磁盘调度按 SCAN 算法进行处理。在扫描期间, 将新出现的所有请求磁盘 I/O 的进程, 放入另一个等待处理的请求队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值