导图社区 408操作系统第五章 输入输出管理
408操作系统第五章 输入输出管理思维导图,本导图整理了I/O管理、设备独立性软件和磁盘固态硬盘的内容。
编辑于2022-09-05 17:13:19 黑龙江省第五章 输入输出管理 5.1 I/O管理概述
I/O设备的概念和分类
什么是I/O设备? “I/O”就是“输入/输出”(Input/Output),I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。I/O设备由机械部件和电子部件组成。
按使用特性分类
人机交互类外部设备:数据传输速度慢。例:鼠标、键盘、打印机等——用于人机交互
存储设备:数据传输速度快。例:移动硬盘、光盘等——用于数据存储
网络通信设备:数据传输速度介于上述二者之间。例:调制解调器等——用于网络通信
按传输速率分类
低速设备:鼠标、键盘等——传输速率为每秒几个到几百字节
中速设备:如激光打印机等——传输速率为每秒数千至上万个字节
高速设备:如磁盘等——传输速率为每秒数千字节至千兆字节的设备
按信息交换的单位分类
块设备:传输速率较高,可寻址,即对它可随机地读/写任一块。例:磁盘等——数据传输的基本单位是“块”
字符设备:传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式。例:鼠标、键盘等——数据传输的基本单位是字符。
I/O控制器
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。
主要功能
接受和识别CPU发出的命令:如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数
向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌
数据交换:I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器
组成
CPU与控制器的接口:用于实现CPU与控制器之间的通信。
I/O逻辑:负责接收和识别CPU的各种命令(如地址译码),并负责对设备发出命令。
控制器与设备的接口:用于实现控制器与设备之间的通信。
注:①一个I/O控制器可能会对应多个设备;②数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。
两种寄存器编址方式
内存映射I/O:控制器中的寄存器与内存地址统一编址。优点:简化了指令。可以采用对内存进行操作的指令来对控制器进行操作。
寄存器独立编制。控制器中的寄存器使用单独的地址。缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号。
I/O控制方式
程序直接控制方式
完成一次读/写的过程:CPU发出I/O命令后需要不断轮询
CPU干预频率:极高,I/O操作开始之前、完成之后需要CPU介入,并且 在等待I/O完成的过程中CPU需要不断地轮询检查。
每次I/O的数据传输单位:每次读/写一个字
数据流向: 读操作(数据输入):I/O设备—>CPU—>内存; 写操作(数据输出):内存—>CPU—>I/O设备; 每个字的读/写都需要CPU的帮助
优缺点: 优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”) 缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低。
中断驱动方式
完成一次读/写的过程:CPU发出I/O命令后可以做其他事,本次I/O完成后设备控制器发出中断信号
CPU干预的频率:高,每次I/O操作开始之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行。
每次I/O的数据传输单位:每次读/写一个字
数据流向: 读操作(数据输入):I/O设备—>CPU—>内存 写操作(数据输出):内存—>CPU—>I/O设备
优缺点: 优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询。CPU和I/O设备可并行工作,CPU利用率得到明显提升。 缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。
DMA方式
完成一次读/写的过程:CPU发出I/O命令后可以做其他事,本次I/O完成后DMA控制器发出中断信号
CPU干预的频率:中,仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
每次I/O的数据传输单位:每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
数据流向(不再需要经过CPU): 读操作(数据输入):I/O设备—>内存 写操作(数据输出):内存—>I/O设备
优缺点: 优点:数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和I/O设备的并行性得到提升。 缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成。
通道控制方式(难点理解:通道=弱鸡版CPU通道程序=任务清单)
完成一次读/写的过程:CPU发出I/O命令后可以做其他事。通道会执行通道程序以完成I/O,完成后通道向CPU发出中断信号
CPU干预频率:极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预
每次I/O的数据传输单位:每次读/写一组数据块
数据流向(在通道的控制下进行) 读操作(数据输入):I/O设备—>内存 写操作(数据输出):内存—>I/O设备
优缺点: 缺点:实现复杂,需要专门的通道硬件支持 优点:CPU、通道、I/O设备可并行工作,资源利用率很高。
整个发展过程就是要尽量减少CPU对I/O过程的干预,把CPU从繁杂的I/O控制事务中解脱出来,以便更多地去完成数据处理任务。
I/O软件层次结构(越上面的层次越接近用户;越下面的层次越接近硬件)
用户层软件:实现与用户交互的接口,向上提供方便易用的库函数
设备独立性软件: ①向上层提供统一的调用接口(如read/write系统调用); ②设备的保护; ③差错处理; ④设备的分配与回收; ⑤数据缓冲区管理; ⑥建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序(逻辑设备表的作用)
设备驱动程序:设置设备寄存器、检查设备状态
中断处理程序:进行中断处理
操作系统内核部分:即I/O系统,或称I/O核心子系统
硬件:执行I/O操作,有机械部件、电子部件组成(参考“I/O控制器”小节)
理解记忆I/O软件各个层次之间的顺序,能够推理判断某个处理应该是在哪个层次完成的(最常考的是设备独立性软件、设备驱动程序这两层。只需理解一个特点即可:直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的)
输入输出管理(新考点)
输入/输出应用程序接口
字符设备接口
get/put系统调用:向字符设备读/写一个字符。 如:键盘、打印机,不可“寻址”,每次读1个字符。
块设备接口
read/write系统调用:向块设备的读写指针位置读/写多个字符; seek系统调用:修改读写指针位置。 如:磁盘,可“寻址”,每次读/写1个块。
网络设备接口
又称“网络套接字(socket)接口”,socket系统调用:创建一个网络套接字,需指明网络协议(TCP? UDP? ); bind:将套接字绑定到某个本地“端口”; connect:将套接字连接到远程地址; read/write:从套接字读/写数据。 如:网络控制器(网卡)。
阻塞/非阻塞I/O概念
阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待。eg:字符设备接口——从键盘读一个字符get
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。eg:块设备接口——往磁盘写数据write
设备驱动程序接口
不同的操作系统,对设备驱动程序接口的标准各不相同。
设备厂商必须根据操作系统的接口要求,开发相应的设备驱动程序,设备才能被使用
第五章 输入输出管理
5.2 设备独立性软件
I/O核心子系统
考研中,我们需要重点理解和掌握的功能是:I/O调度、设备保护、假脱机技术(SPOOLing技术)、设备分配与回收、缓冲区管理(即缓冲与高速缓存)
假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。
I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。
文件保护:操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。(参考“文件保护”小节)
假脱机技术(SPOOLing技术)
定义:用软件的方式模拟脱机技术。SPOOLing系统的组成如下:
输入井和输出井: “输入井”模拟脱机输入时的磁带,用于收容I/O设备输入的数据。 “输出井”模拟脱机输出时的磁带,用于收容用户进程输出的数据。
输入进程和输出进程:要实现SPOOLing技术,必须要有多道程序技术的支持。系统会建立“输入进程”和“输出进程。
“输入进程”模拟脱机输入时的外围控制机;“输出进程”模拟脱机输出时的外围控制机。
输入缓冲区和输出缓冲区: 在输入进程的控制下,“输入缓冲区”用于暂存从输入设备输入的数据,之后再转存到输入井中; 在输出进程的控制下,“输出缓冲区”用于暂存从输出井送来的数据,之后再传送到输出设备上。注意,输入缓冲区和输出缓冲区是在内存中的缓冲区。
共享打印机原理分析
独占式设备——只允许各个进程串行使用的设备。一段时间内只能满足一个进程的请求。
共享设备——允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是交替使用)。可以同时满足多个进程的使用请求。
虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享。SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。
设备的分配与回收
设备分配时应考虑的因素,
设备的固有属性可分为三种
独占设备——一个时段只能分配给一个进程(如打印机)。 共享设备——可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。 虚拟设备——采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing技术实现的共享打印机)。
设备分配算法:先来先服务、优先级高者优先、短任务优先……
设备分配中的安全性:从进程运行的安全性上考虑,设备分配有两种方式
安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子) 一个时段内每个进程只能使用一个设备。 优点:破坏了“请求和保持”条件,不会死锁。缺点:对于一个进程来说,CPU和I/O设备只能串行工作
不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。 一个进程可以同时使用多个设备。 优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进。缺点:有可能发生死锁(死锁避免、死锁的检测和解除)
静态分配与动态分配
静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源(破坏了请求和保持”条件,不会发生死锁)
动态分配:进程运行过程中动态申请设备资源
设备分配管理中的数据结构
“设备、控制器、通道”之间的关系:一个通道可控制多个设备控制器,每个设备控制器可控制多个设备。
设备控制表(DCT ):每个设备对应一张DCT,关键字段:类型/标识符/状态/指向COCT的指针/等待队列指针
控制器控制表(COCT):每个控制器对应一张COCT,关键字段:状态/指向CHCT的指针/等待队列指针
通道控制表(CHCT):每个控制器对应一张CHCT,关键字段:状态/等待队列指针
系统设备表(SDT): 记录整个系统中所有设备的情况,每个设备对应一个表目,关键字段:设备类型/标识符/DCT/驱动程序入口
设备分配的步骤
①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
注:只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可启动I/O设备进行数据传送
缺点:①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程。②若换了一个物理设备,则程序无法运行。③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。
设备分配步骤的改进方法
用户编程时使用逻辑设备名申请设备,操作系统负责实现从逻辑设备名到物理设备名的映射(通过LUT)
逻辑设备表的设置问题:整个系统只有一张LUT——各用户所用的逻辑设备名不允许重复;每个用户一张LUT——各个用户的逻辑设备名可重复
5.3 磁盘和固态硬盘
磁盘的结构
磁盘、磁道、扇区的概念
磁盘由表面涂有磁性物质的圆形盘片组成
每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区
如何在磁盘中读/写数据:磁头移动到目标位置,盘片旋转,对应扇区划过磁道才能完成读/写
盘面、柱面的概念
磁盘有多个盘片"摞"起来,每个盘片有两个盘面
所有盘面中相对位置相同的磁道组成柱面
磁盘的物理地址
可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。在“文件的物理结构”小节中,我们经常提到文件数据存放在外存中的几号块,这个块号就可以转换成(柱面号,盘面号,扇区号)的地址形式。可根据该地址读取一个“块”
①根据“柱面号”移动磁臂,让磁头指向指定柱面;
②激活指定盘面对应的磁头;
③磁盘旋转的过程中,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写。
磁盘的分类
根据磁头是否可移动:固定头磁盘(每个磁道有一个磁头) ;移动头磁盘(每个盘面只有一个磁头)
根据盘片是否可更换:固定盘磁盘(盘片不可更换);可换盘磁盘(盘片可以更换)
磁盘调度算法
一次磁盘读/写操作需要的时间
寻找时间(寻道时间):启动磁臂,移动磁头所花的时间(磁盘调度算法影响的指标); 延迟时间:将目标扇区转到磁头下面所花的时间; 传输时间:读/写数据花费的时间
磁盘调度算法
先来先服务(FCFS):按访问请求到达的先后顺序进行处理。 最短寻找时间优先(SSTF):每次都优先响应距离磁头最近的磁道访问请求;贪心算法的思想,能保证眼前最优,但无法保证总的寻道时间最短。缺点:可能导致饥饿。 扫描算法(电梯算法、SCAN):只有磁头移动到最边缘的磁道时才可以改变磁头移动方向。缺点:对各个位置磁道的响应频率不平均。 循环扫描算法(C-SCAN):只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点, 返回途中不响应任何请求。 低频考点: LOOK算法:SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即改变磁头方向。 C-LOOK算法:C-SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即让磁头返回。(题目中无特别说明时SCAN就是LOOK,C-SCAN就是C-LOOK)
减少磁盘延迟时间的方法
交替编号
做法:让编号相邻的扇区在物理上不相邻; 原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区
错位命名
做法:让相邻扇面的扇区编号“错位”; 原理:与“交替编号”的原理相同。“错位命名法”可降低延迟时间。
磁盘地址结构为什么用(柱面号,盘面号,扇区号)而不用(盘面号,柱面号,扇区号)结构?
原因:在读取地址连续的磁盘块时,前者更不需要移动磁头
磁盘的管理
磁盘初始化
Step1:进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区通常可分为头、数据区域(如512B大小)、尾三个部分组成。
Step2:将磁盘分区,每个分区由若干柱面组成(即分为我们熟悉的C盘、D盘、E盘)
Step3:进行逻辑格式化,创建文件系统。包括创建文件系统的根目录、初始化存储空间管理所用的数据结构(如位示图、空闲分区表)
引导块
计算机开机时需要进行一系列初始化的工作,这些初始化工作是通过执行初始化程序(自举程序)完成的
ROM中只存放很小的“自举装入程序”
开机时计算机先运行“自举装入程序”,通过执行该程序就可找到引导块,并将完整的“自举程序”读入内存,完成初始化
坏块的管理:无法正常使用的扇区就是“坏块”。属于硬件故障,操作系统是无法修复的。应该将坏块标记出来,以免错误地使用到它。
对于简单的磁盘,可以在逻辑格式化时(建立文件系统时)对整个磁盘进行坏块检查,标明哪些扇区是坏扇区,比如:在FAT表上标明。(在这种方式中,坏块对操作系统不透明。)
对于复杂的磁盘,磁盘控制器(磁盘设备内部的一个硬件部件)会维护一个坏块链表。在磁盘出厂前进行低级格式化(物理格式化)时就将坏块链进行初始化。会保留一些“备用扇区”,用于替换坏块。这种方案称为扇区备用。且这种处理方式中,坏块对操作系统透明。
固态硬盘SSD
原理:基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM
组成
闪存翻译层——负责翻译逻辑块号,找到对应页(Page)
存储介质:多个闪存芯片(Flash Chip) 一>每个芯片包含多个块(block) 一>每个块包含多个页(page)
读写性能特性
1.以页(page) 为单位读/写。相当于磁盘的“扇区"。 2.以块(block) 为单位"擦除"。擦干净的块,其中的每页都可以写一次,读无限次。 3.支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址。 4.读快、写慢。要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页。
与机械硬盘相比的特点
SSD读写速度快,随机访问性能高,用电路控制访问位置;机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟。 SSD安静无噪音、耐摔抗震、能耗低、造价更贵。 SSD的一个"块"被擦除次数过多 (重复写同一个块)可能会坏掉,而机械硬盘的扇区不会因为写的次数太多而坏掉
磨损均衡技术
思想:将"擦除"平均分布在各个块上,以提升使用寿命。磨损均衡技术
动态磨损均衡:写入数据时, 优先选择累计擦除次数少的新闪存块。
静态磨损均衡:SSD监测并自动进行数据分配、迁移,让老旧的闪存块承担以读一为主的储存任务,让较新的闪存块承担更多的写任务。
理想情况下,固态硬盘的寿命:约23年