导图社区 6.第六章 I O设备管理
这是一篇关于6.第六章 I O设备管理的思维导图。操作系统:是一种复杂的系统软件,是不同程序代码、数据结构、数据初始化文件的集合,可执行。
编辑于2021-06-20 19:49:346.第六章:I/O设备管理
I/O系统的组成:
I/O系统的组成:
I/O系统包括:【I/O设备】,【设备控制器】,【通道】
I/O系统要通过【总线】与CPU、内存相连
I/O系统的结构:
微机I/O系统:
CPU与内存之间可以直接进行信息交换
但是不能与设备直接进行信息交换,必须经过【设备控制器】
主机I/O系统:
主机I/O系统采用四级结构,包括【主机】、【通道】、【控制器】和【设备】
一个通道可以控制多个设备控制器
一个设备控制器也可以控制多个设备
I/O设备的分类:
设备控制器:
什么是设备控制器:
设备控制器是【CPU与I/O设备之间的接口】,接收I/O的命令并【控制设备完成I/O工作】
设备控制器是一个【可编址设备】,连接多个设备时可有多个设备地址
【背】设备控制器的功能:
接收和识别命令
数据交换
通过【数据寄存器】进行数据交换
设备状态的了解和报告
地址识别
数据缓冲
差错控制
设备控制器的组成:
I/O通道:
定义:
一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作
大型主机系统中【专门用于I/O的专用计算机】
工作方式:
引入通道能够使CPU从控制I/O操作的任务中解脱,【使CPU与I/O并行工作】,提高CPU利用率和系统吞吐量
I/O控制方式:
控制方式的目的:
尽量【减少】主机对输入/输出控制的【干预】,【提高】主机与输入/输出的【并行程度】
四中控制方式:
轮询控制方式:
工作方式:
主机试图发送I/O控制命令之前
先通过反复检测设备控制器状态寄存器的【忙/闲标志位】
若设备“忙”,主机继续检测该标志位
直到该位为“空闲”,主机发送I/O指令
缺点:
使CPU经常处于【循环测试状态】
造成【CPU的极大浪费】
影响整个进程的【吞吐量】
中断控制方式:
【背】中断控制方式:
进程执行,发出I/O请求,若I/O设备不忙,向设备发送I/O指令
若设备忙,等待阻塞进程
若设备工作完毕,通过中断控制器发送终端请求信号,CPU响应中断,执行中断处理程序
唤醒被阻塞的进程,执行进程,向设备发出I/O指令,CPU继续调度分配进程
本次I/O结束后,设备控制器通发送中断请求,告知CPU本次数据传输结束
优点:
使CPU和I/O设备在某些时间段上【并行工作】
提高CPU的利用率和系统的【吞吐量】
DMA控制方式:
DMA控制器结构:
DMA【与主机的接口】
DMA【与设备的接口】
【I/O控制逻辑】
DMA控制器中的寄存器:
命令/状态寄存器CR:
接收【从CPU发来的I/O命令或有关控制信息、设备状态】
内存地址寄存器MAR:
【存放内存地址】
输出数据时,存放【输出数据】在【内存的起始地址】
输入数据时,存放【输入数据将要】被放入【内存的起始地址】
数据寄存器DR:
用于暂存DMA传输中要【输入或输出的数据】
数据计数器DC:
指示DMA,本次向CPU发中断信号前要【读或写数据的次数】
DMA控制方式工作流程:
【背】DMA控制方式:
CPU要读数据块时,向磁盘控制器发送一条读命令
CPU将该命令被送到【命令寄存器CR】
【起始地址】送入【MAR寄存器】
【字节数】送入【DC寄存器】
启动DMA控制器进行数据传输,待数据全部传输完毕后,DMA向CPU【发送中断请求】
通道控制方式:
可以使I/O更大程度地独立于主机CPU的I/O控制方式
缓冲管理:
内容:
缓冲区是用来【保存两个设备之间或设备与应用程序之间传输数据的内存区域】
由于CPU的速度远远高于I/O设备,为了尽可能使【CPU与设备并行工作】,提高系统的性能,通常需要操作系统在设备管理软件中提供缓冲区管理功能
缓冲的引入:
引入缓冲的主要原:
处理数据流的【生产者与消费者之间的速度差异】
协调【传输数据大小不一致】的设备
引入缓冲的主要作用:
引入缓冲区除了可以【缓和CPU与I/O设备之间速度不匹配】的矛盾,还能【提高CPU和I/O设备之间的并行性】
单个缓冲:
最简单的缓冲类型,在主存储器的系统区中只设立【一个缓冲区】
用户进程发出I/O请求时,操作系统为该操作分配一个位于主存的缓冲区
双缓冲(缓冲交换):
当一个进程往这一个缓冲区中传送数据时,操作系统正在清空或填充另一个缓冲区
循环缓冲:
在数据到达和数据离去的速度差别很大的情况下,需要增加缓冲区的数量
缓冲区构成图:
两个过程:
Getbuf过程:
消费者进程要【使用缓冲区中数据】时调用
生产者进程要【使用空缓冲区装数据】时调用
Releasebuf过程:
进程使用完缓冲区后,调用Releasebuf过程【释放缓冲区】
缓冲池:
定义:
公共缓冲池中设置多个可供若干进程共享的缓冲区,提高缓冲区的利用率
【可略】缓冲池的组成:
3种类型的缓冲区:
空缓冲区
装满输入数据的缓冲区
装满输出数据的缓冲区
3种缓冲队列:
空缓冲队列
输入队列
输出队列
4种工作缓冲区:
收容输入数据的缓冲区
提取输入数据的缓冲区
收容输出数据的缓冲区
提取输出数据的缓冲区
4种工作方式:
收容输入
提取输入
收容输出
提取输出
设备分配:
设备分配中的数据结构:
定义:支持设备分配的数据结构需要记录设备的状态(忙或空闲)、设备类型等基本信息
四种表:
设备控制表DCT:
系统为每个设备建立一张设备控制表,多台设备控制表构成设备控制表集合。每张设备控制表包含【设备类型】、【设备标识符】、【设备状态】等信息
控制器控制表COCT:
系统为每个控制器设置一张用于【记录该控制器信息】的控制器控制表,通常包含【控制器标识符】、【控制器状态等信息】
通道控制表CHCT:
系统为每个通道设备设一张通道控制表,通常包含【通道标识符】、【通道状态】等信息
系统设备表SDT:
记录了【系统中全部设备】的情况,每个设备占一个表目,其中包括【设备类型】、【设备标识符】、【设备控制表】及设备驱动程序的入口地址
设备分配:
设备的固有属性:
独占性
共享性
可虚拟性
设备分配算法:
先来先服务分配算分
基于优先权分配算法
设备分配方式:
安全分配方式
不安全分配方式
设备独立性:
含义:
应用程序独立于具体使用的物理设备
内容:
【应用程序】中,使用【逻辑设备名称】来请求使用某类设备
系统在【实际执行】时,必须使用【物理设备名称】
【背】设备独立性的好处:
应用程序与物理设备无关
易于处理输入/输出设备的故障
提高了系统的可靠性,增加了设备分配的灵活性
系统增减或变更外围设备时不需要修改应用程序
设备独立软件的功能:
执行所有设备的公有操作:
包括独占设备的分配与回收、【将逻辑设备名转换为物理设备名】、对设备进行保护等
向用户层软件提供统一的接口:
向应用软件和最终用户提供简单、统一的访问接口
独占设备的分配程序:
分配设备
分配控制器
分配通道
SPOOLing技术:
含义:
在多道程序环境下,利用一道程序来模拟脱机输入时的外围控制机的功能把低速I/O设备上的数据传送到高速输出磁盘上,再利用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上
这种在【联机情况下实现的同时外围操作】称为SPOOLing
SPOOLing的组成:
【背】组成部分:
输入井和输出井
输入缓冲区和输出缓冲区
输入进程SPi和输出进程SPo
请求I/O队列
【背】利用SPOOLing技术实现共享打印机:
由输出进程在输出井中申请空闲盘块区,并将要打印的数据送入其中
输出进程再为用户申请并填写一张用户请求打印表,将该表放到请求打印队列上
【背】SPOOLing的特点:
提高了I/O速度
将独占设备改造为共享设备
实现了虚拟设备功能
I/O软件原理:
I/O软件管理:
内容:
输入输出软件的总体目标是【将软件组织成一种层次结构】
【低层软件】用来屏蔽硬件的具体细节
【高层软件】则主要是为用户提供一个简洁、规范的界面
四个层次:
用户层软件:
向系统发出I/O请求,显示I/O操作的结果,提供用户与设备的接口
与设备无关的软件层:
完成设备命名、设备分配、设备独立性和缓冲管理等功能
设备驱动程序:
与硬件关系最密切,包括设备【服务程序】和【中断处理程序】
中断处理程序(底层)
设备管理软件的功能:
实现I/O设备的独立性
错误处理
异步传输
缓冲管理
设备的分配和释放
实现I/O控制方式
中断处理程序:
I/O中断处理程序的作用是【将发出I/O请求而被阻塞的进程唤醒】
设备驱动程序:
设备驱动程序【是I/O进程与设备控制器之间的通信程序】,其主要任务是接受上层软件发来的抽象的I/O请求,如read和write命令,把它们转换为具体要求后,发送给设备控制器启动设备去执行
与硬件无关的I/O软件:
设备命名
设备保护
提供独立于设备的块大小
为块设备和字符设备提供必要的缓冲技术
块设备的存储分配
分配和释放独立设备
错误处理
磁盘管理:
内容:
磁盘存储器不仅【容量大,存取速度快】,而且可以实现【随机存取】,是存放大量程序和数据的理想设备
磁盘管理的重要目标是提高【磁盘空间利用率】和【磁盘访问速度】
磁盘结构:
磁盘结构图:
一个物理记录存储在一个扇区上,磁盘存储的物理记录数目是由【扇区数】、【磁道数】及【磁盘面数】决定的
磁盘类型:
固定头磁盘:
在每条磁道上都有读/写磁头
活动头磁盘 (移动头):
每一个盘面仅配有一个磁头
磁盘访问时间:
寻道时间:
磁头移动到磁道需要的时间
旋转延迟时间:
磁头旋转到扇区需要的时间
传输时间:
读写数据经历的时间
磁盘调度算法:
六种调度算法:
先来先服务 (FCFS)
最短寻道时间优先 (SSTF)
扫描算法 (SCAN)
循环扫描算法 (CSCAN)
NStepSCAN和FSCAN调度算法
具体算法:
先来先服务 (FCFS):
特点:
最简单的磁盘调度算法
根据进程请求磁盘的先后顺序进行调度
优缺点:
优点:
公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况
缺点:
平均寻道时间较长
图:
访问顺序:
1 2 3 4
最短寻道时间优先 (SSTF):
特点:
该算法选择的进程:其要求【访问的磁道与当前磁头所在的磁道距离最近】,以使每次的寻道时间最短
优缺点:
优点:
每次的寻道时间最短,较之FCFS有更好的寻道性能
缺点:
可能导致某个进程发生“饥饿”现象
图:
访问顺序:
3 1 2
扫描算法 (电梯调度算法,SCAN):
特点:
不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑磁头当前的移动方向
优缺点:
优点:
有较好的寻道性能,防止“饥饿”现象
缺点:
有时候进程请求被大大推迟
图:
访问顺序:
3 2 1
磁臂粘着
循环扫描算法 (CSCAN):
特点:
在扫描算法的基础上,规定磁头是【单向移动】的。将最小磁道号紧接着最大磁道号构成循环,进行循环扫描
图:
访问顺序:
3 2 1 4
总结归纳:
先来先服务 (FCFS):
按先后顺序走
最短寻道时间优先 (SSTF):
离着近的走
扫描算法 (电梯调度算法,SCAN):
顺着走,走到谁读谁,掉头继续走
循环扫描算法 (CSCAN):
顺着走,走到谁读谁,从头顺着走
NStepSCAN和FSCAN:
NStepSCAN:
将磁盘请求队列分成【若干个】长度为N的【子队列】
磁盘调度将按【FCFS算法】依次处理这些子队列
每处理一个队列时又是按照【SCAN算法】
对一个队列处理后,再处理其他队列
FSCAN:
将磁盘请求队列分成【两个子队列】
一个是由当前所有请求磁盘访问的进程形成的队列
由磁盘调度按【SCAN算法】进行处理
将新出现的所有请求磁盘访问的进程
放入另一个等待处理的请求队列
提高磁盘I/O速度的方法:
提前读:
减少读数据的时间
延迟写:
减少写磁盘的次数
优化物理块的分布:
减少磁臂移动距离
虚拟盘:
存放临时文件
磁盘高速缓存:
逻辑上属于磁盘,物理上在内存中