参考视频:王道计算机考研 操作系统_哔哩哔哩_bilibili
参考书籍:左万利《计算机操作系统教程(第4版)》
第五章 设备与输入输出管理
五、设备的分配和去配(回收)
1.设备分配时应考虑的因素
1.1 设备的固有属性
- 独占型设备
- 共享型设备
- 虚拟设备:利用共享型设备实现的数量较多、速度较快的独占型设备。(即将独占设备改造成虚拟的共享设备)
1.2 设备分配算法
- 先来先服务
- 优先级高者优先
- 短任务优先
- ......
1.3 设备分配中的安全性
安全分配方式:为进程分配一个设备后就将进程阻塞,完成后才唤醒。
- 优点:一段时间内每个进程只能使用一个设备。不会死锁。
- 缺点:串行工作,系统效率低。
不安全分配方式:只有I/O请求得不到满足时才将进程阻塞。
- 优点:进程可使用多个设备,效率高。
- 缺点:可能死锁。
2.设备分配管理中的数据结构(书本)
在进行设备分配的时候,要先确定是否存在这样的设备、这个设备能不能用。因此需要数据结构来记录关于设备的信息。
数据结构:设备控制块(UCB)、通道控制块(CCB)、系统设备表(SDT)。
系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目。
设备类:请求的并不是具体的某一个设备,而是一类设备,体现了设备无关性(①能随时分配空闲的相同功能的另一个设备。②设备与程序无关,用设备类代替设备号,方便程序的移植)。
总数:每一类设备有几个设备。
UCB表指针:指向存有各个具体空闲设备的设备控制块(UCB)表。
设备等待队列:先查总数,如果总数为0,说明没有空闲设备,就放入等待队列。
2.独占型设备的分配和去配
申请:(1)根据设备类查SDT表
(2)P(Sm) 信号量
(3)查UCB表找一个空闲设备并分配
使用:(1)分配通道
(2)IO传输
(3)去配通道
释放:(1)找SDT表对应入口
(2)查UCB表,去配
(3)V(Sm) 信号量
3.共享型设备的分配和去配
设备在一段时间内可供多个进程使用。
- 以块为单位进行传输
- 一次输入输出可以是多个块
- 块与块之间可以交叉不同进程的块的传输
- 用户使用共享型设备没有明确的申请和释放动作(隐藏在使用之中,自动执行)
3.1 有通道情形
3.2 无通道情形
使用:
- 分配缓冲区,填写头部(读/写)。
- 若是写,就 ① 将内存内容复制到缓冲区;② 把缓冲区链入I/O链尾部(每个设备有一个I/O链);③ 若设备空闲就启动设备,设备自动从I/O链获取信息;④ 输入输出结束以后释放缓冲区。
- 若是读,就 ① 缓冲区链入I/O链尾部;② 若设备空闲就启动设备,把磁盘信息复制到缓冲区,等待读入数据;③ 设备读完就向CPU发送中断,信息复制到进程空间;④ 释放缓冲区;⑤ 唤醒进程,插入就绪队列。
4.设备驱动
设备在使用动作中包含一个驱动的过程。设备驱动需要完成以下动作:
- 形成通道程序
- 启动设备
- 中断处理
4.1 通道程序
- 通道程序可以提前设计好,也可以临时动态产生。
- 一个通道程序可以执行一次或多次输入输出操作。
- 通道程序的执行可以和处理机CPU的并行执行。
4.2 启动设备
- 通道程序形成以后,处理机把通道程序的起始地址放在固定的内存单元上。
- 把起始地址从内存中放到通道的地址字上,启动通道。
- 通道根据地址字的内容读取指令,完成通道程序。
4.3 中断处理
- 当通道程序执行完毕,或者执行到通道结束指令时,产生通道中断信号,发送给CPU。
- CPU根据中断源做相应的中断工作。
六、缓冲与缓存
缓冲(buffering):处理数据到达与离开速度不一致所采用的技术。
缓存(Caching):将慢速存储器上活动信息缓冲到快速存储设备上的技术。
【缓存可以通过缓冲技术实现】
1.缓冲技术的引入/作用
① 主要作用:缓解处理机与设备之间速度不匹配的矛盾,提高资源利用率、系统效率和并行性。
(CPU高速放入内存中的缓冲区,之后便可去处理其他任务,设备再从缓冲区中读取数据)
② 减少CPU中断频率
(在字符型设备中,每输出一个字符就要向CPU发送一次中断信号,降低系统性能)
③ 解决数据粒度不匹配
(缓冲区可以将字符型设备的字符积累起来一并发给CPU)
由实现方式可以分为硬缓冲区和软缓冲区:
缓冲区可能是由硬件实现的,硬缓冲区通常在设备中,如设在打印机中。也可以由软件实现,软件缓冲区通常设在内存系统空间中(由操作系统管理)。
2.私用缓冲与公共缓冲
私用缓冲:一个缓冲区与一个固定设备相联系,不同设备使用不同缓冲区。
- 缺点:缓冲区利用率低(执行数据传输的设备,其缓冲区可能不够,而未执行输入输出操作的设备其私用缓冲区闲置而浪费)
因而一般系统都采用公共缓冲管理模式。
公共缓冲:缓冲区由系统统一管理,按需要动态分配给正在进行I/O传输的设备。
系统中的缓冲区集合被称为缓冲池(buffer pool)。
3.单缓冲、双缓冲与循环缓冲
根据系统设置的缓冲区个数:
- 单缓冲
- 双缓冲
- 多缓冲
- 缓冲池
3.1 单缓冲
在设备与进程之间设置一个缓冲区。
设备与进程交换数据时,由设备将信息放入缓冲区,然后再由缓冲区传给进程。重复直至完成。设备与处理器对缓冲区的操作是串行的。
3.2 双缓冲
在设备与进程之间设置两个缓冲区。
一开始设备与进程交换数据时由设备将信息传入第一个缓冲区,满后再传入第二个缓冲区,同时将第一个缓冲区的内容复制到进程空间。
然后再次输入信息传入第一个缓冲区,同时处理器将第二个缓冲区的内容复制到进程空间,如此交替,可以提高CPU与设备之间的并行性。
3.3 循环缓冲
在设备与进程之间设置多个缓冲区,这些缓冲区链成环状,有两个指针 in 和 out ,in 指向当前输入的位置,out 指向当前取出的位置。
3.4 缓冲池及其管理
设置一个信号量,即缓冲区的数量。
七、虚拟设备
引用共享型设备实现的独占型设备,数量较多、速度较快。
1.引入虚拟设备
1.1 独占型设备的缺点
使用独占设备时有可能会使CPU等待;用户进程申请并得到了独占型设备,但是不一定连续使用。
1.2 虚拟设备的工作方式
为克服独占设备的缺点,基本思想是在独占型设备与内存进程之间加入一个共享型设备作为过渡,因为共享型设备速度很快,所以进程执行数据传输所需等待时间较短,提高进程推进速度;另外,由于信息在独占型设备与共享型设备之间的传输是连续进行的,即独占型设备被占用期间一直被使用,因而提高了设备资源的利用率。
2.虚拟设备的实现
2.1 输入型虚拟设备的实现
信息流向:独占型设备→共享型设备→进程空间
(假定用于输入的独占型设备为读卡机,用于实现虚拟设备的共享型设备是磁盘)
① 申请。
- 分配一台虚拟设备(盘区)
- 分配一台实设备(读卡机)
- 将信息由实设备(读卡机)连续地传输到虚拟设备(盘区)
- 释放实设备(读卡机)
② 使用。将信息由虚拟设备(盘区)传输到进程空间。
③ 释放。回收虚拟设备(盘区)。
2.2 输出型虚拟设备的实现
① 申请。分配一台虚拟设备(盘区)。
② 使用。将信息由进程空间传输到虚拟设备(盘区)。
③ 释放。分配一台实设备(打印机),信息全部由虚拟设备传输到实设备(打印机),收回实设备(打印机),收回虚拟设备(盘区)。
3.虚拟设备举例——假脱机技术
3.1 脱机技术
3.2 假脱机技术(SPOOLing 技术)
用软件的方式模拟脱机技术
输入井 / 输出井 用于模拟脱机技术的磁带;输入进程 / 输出进程 模拟脱机技术的外围控制机。
数据输入:输入进程接收输入设备的数据暂存内存输入缓冲区中,之后再转存到输入井中;
数据输出:输出进程从输出井中取得数据暂存内存输出缓冲区中,之后再传送给输出设备。