一、设备分配
1.设备分配中的数据结构
支持设备分配的数据结构需要记录设备的状态(忙或空闲)、设备类型等基本信息。
1)设备控制表DCT(Device Control Table)
系统为每个设备建立一张设备控制表,多台设备控制表构成设备控制表集合。 每张设备控制表包含设备类型、设备标识符、设备状态(忙/闲)等信息。
2)控制器控制表COCT(Controller Control Table)
系统为每个控制器设置一张用于记录该控制器信息的控制器控制表,通常包含控制器标识符、控制器状态等信息。
3)通道控制表CHCT(Channel Control Table)
系统为每个通道设备设一张通道控制表,通常包含通道标识符、通道状态等信息。
4)系统设备表SDT(System Device Table)
记录了系统中全部设备的情况,每个设备占一个表目,其中包括设备类型、设备标识符、设备控制表及设备驱动程序的入口地址。
2.设备分配
2.1 设备分配应考虑以下3个因素:
1)设备的固有属性:独占性、共享性、可虚拟性
独占设备:独享分配策略
共享设备:可同时分配给多个进程使用
可虚拟设备 :可同时分配给多个进程使用
2)设备分配算法
先来先服务:根据进程对某设备提出请求的先后顺序分配
基于优先权的分配算法:对高优先权进程所提出的I/O请求也赋予高优先权
3)设备分配方式
安全分配方式 :发出I/O请求后进入阻塞状态,摒弃“请求和保持”条件,这种设备分配是安全的
不安全分配方式 :当且仅当请求的设备被占用,进程才进入阻塞状态可能具备“请求和保持”条件,可能造成死锁
3.设备独立性(也称设备无关性)
3.1 设备独立性的基本含义
应用程序独立于具体使用的物理设备;应用程序中,使用逻辑设备名称来请求使用某类设备。系统在实际执行时,必须使用物理设备名称
3.2 实现设备独立性带来的好处:
1)实现设备独立性带来的好处:系统增减或变更外围设备时不需要修改应用程序
2)实现设备独立性带来的好处:替换设备不需要修改应用程序
3)提高了系统的可靠性,增加了设备分配的灵活性
3.3 设备独立软件的功能
1)执行所有设备的公有操作:包括独占设备的分配与回收、将逻辑设备名转换为物理设备名、对设备进行保护等T
2) 向用户层软件提供统一的接口:向应用软件和最终用户提供简单、统一的访问接口
3.4 独占设备的分配程序
1)分配设备 2)分配控制器 3)分配通道
4.SPOOLing技术
4.1 概念
在多道程序环境下,利用一道程序来模拟脱机输入时的外围控制机的功能, 把低速I/O设备上的数据传送到高速输出磁盘上,再利用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这种在联机情况下实现的同时外围操作称为SPOOLing (Simultaneous Peripheral Operations On-Line) 。在SPOOLing系统中,输入井和输出井是位于磁盘上的存储区域。输入缓冲区用来暂存由输入设备送来的输入数据。
4.2 SPOOLing的组成
4.3 利用SPOOLing技术实现共享打印机
1)由输出进程在输出井中申请空闲盘块区,并将要打印的数据送入其中。
2)输出进程再为用户申请并填写一张用户请求打印表,将该表放到请求打印队列上
4.4 SPOOLing的特点
1)提高了I/O速度 (使用了磁盘作为低速设备的大容量缓存)
2)将独占设备改造为共享设备
3)实现了虚拟设备功能:SPOOLing系统把一台物理上只能互斥使用的设备变为了从用户眼里看到的共享设备
二、I/O软件原理
输入输出软件的总体目标是将软件组织成一种层次结构;低层软件用来屏蔽硬件的具体细节;高层软件则主要是为用户提供一个简洁、规范的界面
1. 设备管理的四个层次
用户层软件:向系统发出I/O请求,显示I/O操作的结果,提供用户与设备的接口
与设备无关的软件层:完成设备命名、设备分配、设备独立性和缓冲管理等功能
设备驱动程序:与硬件关系最密切,包括设备服务程序和中断处理程序
中断处理程序(底层):
2.设备管理软件的功能
3.中断处理程序
中断处理程序的作用:I/O中断处理程序的作用是将发出了I/O请求但被阻塞的进程唤醒
4.设备驱动程序
设备驱动程序是I/O进程与设备控制器之间的通信程序,其主要任务是接受上层软件发来的抽象的I/O请求,如read和write命令,把它们转换为具体要求后,发送给设备控制器启动设备去执行。
5.与硬件无关的I/O软件
三、磁盘管理
磁盘存储器不仅容量大,存取速度快,而且可以实现随机存取,是存放大量程序和数据的理想设备。
磁盘管理的重要目标是提高磁盘空间利用率和磁盘访问速度。
1.磁盘结构
1.1. 磁盘类型
1)固定头磁盘:在每条磁道上都有读/写磁头
2)活动头磁盘 (移动头) :每一个盘面仅配有一个磁头
1.2 磁盘访问时间
2.磁盘调度
磁盘调度的一个重要目标是使磁盘的平均寻道时间最少。
2.1 磁盘调度算法
(1)先来先服务 (First Come First Served, FCFS) :按顺序
最简单的磁盘调度算法,根据进程请求访问磁盘的先后顺序进行调度。
优点:公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况
缺点:平均寻道时间较长
(2)最短寻道时间优先 (Shortest Seek Time First, SSTF) :离谁近
该算法选择的进程:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。
优点:每次的寻道时间最短,较之FCFS有更好的寻道性能
缺点:可能导致某个进程发生“饥饿”现象
(3)扫描算法 (SCAN) :顺着方向走,挨个访问,然后调头
不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑磁头当前的移动方向。
优点:有较好的寻道性能,防止“饥饿”现象
缺点:有时候进程请求被大大推迟
(4)循环扫描算法 (CSCAN) :顺着方向走,挨个访问,然后从1开始再顺着方向走
在扫描算法的基础上,规定磁头是单向移动的。将最小磁道 紧接着最大 磁道 构成循环,进行循环扫描。
(5)NStepSCAN和FSCAN调度算法
3.提高磁盘I/O速度的方法
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!