本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对
操作系统
知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对 “输入输出管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研操作系统 “输入输出管理” 章节知识点的正确性与全面性;但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考 。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。
《操作系统》第5章 输入输出管理
【考纲内容】
王道 297
(一) I/O管理基础
网课耗时:
1.5 h
- 设备 :设备的基础概念,设备的分类,I/O接口;
- I/O控制方式:轮询方式,中断方式,DMA方式;
- I/O软件层次结构:中断处理程序,驱动程序,设备独立性软件,用户层I/O软件;
- 输入/输出应用程序接口:字符设备接口,块设备接口,网设备接口,阻塞/非阻塞IO;
(二) 设备独立软件
网课耗时:
1 h
- 缓冲区管理
- 设备分配与回收
- 假脱机技术(SPOOLing)
- 设备驱动程序接口
(三) 外存管理
网课耗时:
1 h
- ==磁盘:==磁盘结构,格式化,分区,磁盘调度方法;
- ==固态硬盘:==读写性能特性,磨损均衡;
【复习提示】
本章的内容较为分散,重点掌握:
I/O接口、IO软件、三种IO控制方式、高速缓存与缓冲区、SPOOLing 技术,磁盘特性和调度算法
本章很多知识点与硬件高度相关,建议与计算机组成原理的对应章节结合复习;
本章内容在历年统考真题中所占的比重不大,若统考中出现本章的题目,则基本上可以断定一定非常简单;
5.1 I/O管理概述
5.1.1 I/O设备
本节介绍 I/O 设备管理 的对象 -
I/O 设备
;
1. 什么是IO设备 ?
将数据输入到计算机中,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件;
2. 按使用特性分类
3. 按传输速率分类
4. 按信息交换的单位分类
小结
5.1.2 I/O控制器
1. 机械部件
2. 电子部件
I/O接口 是指辅助 CPU 控制 I/O 设备机械部件的电子部件,也称 设备控制器 或 I/O控制器;
I/O端口 是指设备控制器中可被CPU直接访问的 寄存器;
I/O控制器的功能(下图中对各功能的解释了解即可):
- ① 接受和识别CPU发出命令;
- ② 向CPU报告设备的状态;
- ③ 数据交换;
- ④ 地址识别;
- ⑤ 数据缓冲;
- ⑥ 差错控制;
I/O控制器的组成 (三个主要部分)
- 设备控制器与CPU的接口;
- 设备控制器与设备的接口;
- I/O逻辑单元;
I/O端口 是指设备控制器中可被CPU直接访问的 ==寄存器,==包括:
- 数据寄存器:实现CPU与外设之间的数据缓冲;
- 状态寄存器:获取执行结构和设备的状态信息,以让CPU知道是否准备好;
- 控制寄存器:由CPU写入,以便启动命令或更改设备模式;
为了实现 CPU 与 I/O端口 进行通信,有两种方法:
① 独立编制
为每个端口分配一个 ==I/O端口号,==所有I/O端口形成I/O端口空间;
普通用户程序不能对其访问,只有操作系统使用特殊的I/O指令才能访问端口;
② 统一编制(内存映射I/O)
每个端口被分配唯一的 ==内存地址,==且不会有内存被分配这一地址,通常分配给端口的地址靠近地址空间的开端;
小结
5.1.3 I/O控制方式
本节内容对标 《计算机组成原理》7.3 I/O方式,两个之间配合学习;
设备管理的主要任务之一是 控制设备和 内存或CPU 之间的数据传输;
外围设备 和 内存 之间的输入/输出控制方式有以下四种:
1. 程序直接控制方式
程序直接控制方式的小结 ⭐
2. 中断驱动方式
3. DMA方式
4. 通道控制方式 *
小结
5.1.4 I/O软件层次结构
为了更好地设计 I/O 软件,采用 层次式结构 的 I/O 软件;
1. 用户层软件
2. 设备独立性软件
3. 设备驱动程序
4. 中断处理程序
硬件
5.1.4 I/O应用程序接口 与 设备驱动程序接口
1. I/O应用程序接口
在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为若干个接口:
- 字符设备接口
- 块设备接口
- 网络设备接口
【补充】OS的I/O接口还涉及两种模式:阻塞 / 非阻塞
2. 设备驱动程序接口
5.2 设备独立性软件
5.2.1 IO核心子系统
I/O 系统 = 设备独立性软件层 + 设备驱动程序层 + 中断处理程序;
考研重点关注的技术:
- I/O调度;
- 设备保护;
- 假脱机技术;
- 设备分配与回收;
- 缓冲区管理;
和 硬件无关 层次实现的功能:
- 用户层软件 - 假脱机技术;
- 设备独立性软件 - I/O调度、设备保护、设备分配与回收、缓冲区管理;
和 硬件相关 的事情,由设备驱动程序、中断处理程序负责;
小结
5.2.2 假脱机技术(SPOOLing技术)
1. 什么是脱机技术 ?
2. 假脱机技术的实现原理
① 输入井 和 输出井
② 输入进程 和 输出进程
③ 输入/输出缓冲区
共享打印机原理分析
共享打印过程
小结
5.2.3 设备分配与回收
1. 设备分配时应考虑的因素
2. 静态分配 和 动态分配
3. 设备分配管理中的数据结构
① 设备控制表 DCT
② 控制器控制表 COCT
③ 通道控制表 CHCT
④ 系统设备表 SDT
4. 设备分配的步骤
5. 设备分配步骤的改进方法
小结
5.2.4 缓冲区管理
1. 缓冲区
2. 单缓冲
3. 双缓冲
4. 循环缓冲
5. 缓冲池
小结
5.3 磁盘和固态硬盘
5.3.1 磁盘的结构
1. 磁盘、磁道、扇区
2. 如何在磁盘中读/写数据
3. 盘面、柱面的概念
4. 磁盘的物理地址
5. 磁盘的分类
小结
5.3.2 磁盘调度算法
1. 一次磁盘读/写操作需要的时间
寻道时间 TS
Ts =
s + m × n
延迟时间 TR
TR =
(1/2) × (1/r)
; 1/r 就是转一圈需要的时间,而找到目标扇区平均需要转半圈;
传输时间 Tt
Tt =
(1/r) / (b/N)
2. 磁盘调度算法
① 先来先服务算法
② 最短寻找时间优先
③ 扫描算法
LOOK调度算法
④ 循环扫描算法
小结
5.3.3 减少磁盘延迟时间的方法
交替编号
磁盘地址结构的涉及
错位命名
小结
5.3.4 磁盘的管理
1. 磁盘初始化
2. 引导块
内存中ROM存放的是 自举装入程序 , 而引导块存放的是完整的自举程序;
3. 坏块的管理
坏块是硬件故障,无法修复;
小结
5.3.5 固态硬盘
5.4 常见问题和易混淆知识点
1.设备分配
1)分配设备。首先根据I/O请求中的物理设备名查找系统设备表(SDT),从中找出该设备的 DCT,再根据DCT 中的设备状态字段,可知该设备是否正忙。若忙,便将请求IO进程的PCB挂到设备队列上;若空闲,则按照一定的算法计算设备分配的安全性,若安全则将设备分配给请求进程,否则仍将其PCB挂到设备队列上。
2)分配控制器。系统把设备分配给请求IO的进程后,再到其DCT中找出与该设备连接的
控制器的COCT,从 COCT中的状态字段中可知该控制器是否忙碌。若忙,则将请求IO进程的PCB 挂到该控制器的等待队列上;若空闲,则将控制器分配给进程。 3)分配通道。在该COCT中又可找到与该控制器连接的通道的CHCT,再根据CHCT 内的状态信息,可知该通道是否忙碌。若忙,则将请求TO的进程挂到该通道的等待队列上;若空闲,则将该通道分配给进程。只有在上述三者都分配成功时,这次设备的分配才算成功。然后,便可启动该IO设备进行数据传送。
为使独占设备的分配具有更强的灵活性,提高分配的成功率,还可从以下两方面对基本的设备分配程序加以改进:
① 增加设备的独立性。进程使用逻辑设备名请求IO。这样,系统首先从SDT中找出第一个该类设备的DCT。若该设备忙,则又查找第二个该类设备的DCT。仅当所有该类设备都忙时,才把进程挂到该类设备的等待队列上;只要有一个该类设备可用,系统便进一步计算分配该设备的安全性。
② 考虑多通路情况。为防止IO系统的“瓶颈”现象,通常采用多通路的TO系统结构。此时对控制器和通道的分配同样要经过几次反复,即若设备(控制器)所连接的第一个控制器(通道)忙时,则应查看其所连接的第二个控制器(通道),仅当所有控制器(通道)都忙时,此次的控制器(通道)分配才算失败,才把进程挂到控制器(通道)的等待队列上。而只要有一个控制器(通道)可用,系统便可将它分配给进程;
设备分配过程中,先后分别访问的数据结构为SDT → DCT → COCT → CHCT。要成功分配一个设备,必须要:
① 设备可用;② 控制器可用;③ 通道可用;所以,“设备分配,要过三关”;
2.提高磁盘I/O速度的方法
1)提前读。在读磁盘当前块时,把下一磁盘块也读入内存缓冲区;
2)延迟写。仅在缓冲区首部设置延迟写标志,然后释放此缓冲区并将其链入空闲缓冲区链表的尾部,当其他进程申请到此缓冲区时,才真正把缓冲区信息写入磁盘块;
3)虚拟盘。是指用内存空间去仿真磁盘,又叫RAM盘。虚拟盘是一种易失性存储器。虚拟盘常用于存放临时文件;
1)I/O管理要完成哪些功能 ?
答:
- 状态跟踪:要能实时掌握外部设备的状态;
- 设备存取:要实现对设备的存取操作;
- 设备分配:在多用户环境下,负责设备的分配与回收;
- 设备控制:包括设备的驱动、完成和故障的中断处理;
1) 当处理机和外部设备的速度差距较大时,有什么办法可以解决问题 ?
答:
可采用缓冲技术来缓解CPU 与外设速度上的矛盾;
即在某个地方(一般为主存)设立一片缓冲区,外设与CPU的输入/输出都经过缓冲区,这样外设和CPU就都不用互相等待。
2) 什么是设备的独立性 ? 引入设备的独立性有什么好处 ?
答:
设备独立性是指用户在编程序时使用的设备与实际设备无关;
一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明IO使用的设备类型即可;
设备独立性有以下优点:①方便用户编程。②使程序运行不受具体机器环境的限制。③便于程序移植。
1)在磁盘上进行一次读写操作需要哪几部分时间 ?其中哪部分时间最长 ?
在磁盘上进行一次读写操作花费的时间由寻道时间、延迟时间和传输时间决定;
其中寻道时间是将磁头移动到指定磁道所需要的时间,延迟时间是磁头定位到某一磁道的扇区(块号)所需要的时间,传输时间是从磁盘读出或向磁盘写入数据所经历的时间;
一般来说,寻道时间因为要移动磁臂,所以占用时间最长;
2)存储一个文件时,当一个磁道存储不下时,
剩下部分是存在同一个盘面的不同磁道好,还是存在同一一个柱面上的不同盘面好 ?
上一问已经说到,寻道时间对于一次磁盘访问的影响是最大的;
若存在同一个盘面的不同磁道,则磁臂势必要移动,这样会大大增加文件的访问时间,而存在同一个柱面上的不同盘面就不需要移动磁道,所以一般情况下存在同一个柱面上的不同盘面更好;