八、IO与存储
设备管理概述
-
设备管理的方法主要有3种
(1)操作系统直接操纵设备的运行,例如直接程序控制、中断方式控制
(2)操作系统间接操纵设备的运行,例如DMA和通道方式
(3)操作系统通过使用设备驱动程序,将设备管理工作通过任务(进程)的形式来体现。OS只需制定标准,将具体操纵设备的程序交给不同的制造商去开发 -
IO系统组成
- 用户库函数接口
- IO内核子系统
- IO调度(磁盘寻道)、缓冲(文件系统磁盘访问)、错误处理、保护
- 设备驱动程序(中断服务程序)
- 隐藏设备差异,为操作系统和设备提供商提供标准的接口
- IO硬件
- 字符设备、块设备;读写;同步异步
- 字符设备、块设备;读写;同步异步
IO控制器
IO控制器的组成
- I/O系统向设备发命令方式
- 一个IO控制器可能对应多个设备
- 读写设备控制器的寄存器
- 寄存器可能有多个(每套寄存器对应一个具体的设备)
- 设备寄存器的编址
- 独立编址: 需要独立的指令。比如X86:in,out;能与DX,AX,AL寄存器结合使用。如out 0x21, AL
- 内存映像编址: 是内存物理地址空间的一部分,使用mov命令,如mov [0x8000f000], AL
I/O控制方式
-
程序直接控制(查询)方式
- 查询(轮询)——原地踏步等待
- 工作步骤小结:
(1)当某进程需要输入/输出数据时,由CPU向设备控制器发出一条I/O指令启动设备工作(对于输出操作,则CPU还要向数据寄存器中存放输出数据);
(2)在设备输入/输出数据期间,CPU不断地循环进行查询设备状态寄存器的值(检查I/O工作是否完成)。
(3)若完成,对输入操作来说CPU则从数据寄存器中取出数据,然后进行下一次的输入/输出数据或结束。 - 优点:简单
- 缺点:CPU与IO只能串行工作,CPU一直轮询忙等,CPU利用率低
- 查询(轮询)——原地踏步等待
-
中断控制方式
- 中断(大部分I/O的处理方式)——设备就绪了告诉CPU一声
- CPU每个时钟周期末尾检查中断,每次数据传输读写一个字
- 优点:CPU与IO设备可并行工作,CPU利用率高
- 缺点:如果出现频繁中断会消耗大量时间
- 中断(大部分I/O的处理方式)——设备就绪了告诉CPU一声
-
直接内存存取(DMA)方式
- DMA(Direct Memory Access直接存储器存取)——简单任务自己做,完成了告诉CPU一声
- DMA(Direct Memory Access直接存储器存取)——简单任务自己做,完成了告诉CPU一声
-
DMA方式数据输入过程
- (1)当一个进程要求设备输入数据时,CPU对DMA进行初始化工作:
- 存放数据的内存起始地址 - DMA控制器的内存地址寄存器MAR;
- 要输入数据的字节数- DMA控制器的传送字节数寄存器DC;
- 控制字(中断允许、DMA启动位=1) -DMA控制器的控制状态寄存器CR;
- 启动位被置1,则启动DMA控制器开始进行数据传输。
- (2)该进程放弃CPU,进入阻塞等待状态,等待第一批数据输入完成。进程调度程序调度其他进程运行。
- (3)由DMA控制器控制整个数据的传输。
- 当输入设备将一个数据送入DMA控制器的数据缓冲寄存器DR后,DMA控制器立即取代CPU,接管数据地址总线的控制权(CPU工作周期挪用),将数据送至相应的内存单元;
- DMA控制器中的传输字节数寄存器计数减1;
- 恢复CPU对数据地址总线的控制权;
- 第(3)步过程循环直到数据传输完毕。
- (4)当一批数据输入完成,DMA控制器向CPU发出中断信号,请求中断运行进程并转向执行中断处理程序。
- (5)中断程序首先保存被中断进程的现场,唤醒等待输入数据的那个进程,使其变成就绪状态,恢复现场,返回被中断的进程继续执行。
- (6)当进程调度程序调度到要求输入数据的那个进程时,该进程就到指定的内存地址
中读取数据进行处理。
- (1)当一个进程要求设备输入数据时,CPU对DMA进行初始化工作:
-
仅在传送数据块的开始和结束时CPU才介入,每次数据传送一个或多个块(连续的块)
-
优点:CPU利用率进一步提升
-
缺点:CPU发出一条IO指令只能读写一个/多个连续的数据块,当需要读写多个离散数据块时CPU利用率会下降
- 通道控制方式(智能设备)
- 通道channel——可以交办复杂任务,完成后汇报
- 通道具有简单的CPU功能,可编程,可管理多个设备同时工作。从而真正实现了CPU与外部设备的并行工作。
- 通道控制方式的工作过程:
(1)当一个进程要求输入输出数据时,CPU根据请求形成有关通道程序,然后执行输入输出指令启动通道工作;
(2)申请输入输出数据的进程放弃CPU进入阻塞等待状态,等待数据输入输出工作的完成,于是进程调度程序调度其他进程运行;
(3)通道开始执行CPU放在主存中的通道程序,独立负责外设与主存的数据交换;
(4)当数据交换完成后,通道向CPU发出中断信号,中断正在运行的进程,转向中断处理程序;
(5)中断处理程序首先保护被中断进程的现场,唤醒申请输入输出的那个进程,使其变为就绪状态,关闭通道,然后恢复现场,返回被中断的进程继续运行;
(6)当进程调度程序调度到申请输入输出数据的那个进程时,该进程就到指定的内存地址中进行数据处理。
- 优点:CPU利用率更高,每次数据传送一组数据块
- 缺点:实现复杂
IO控制器总结
缓冲技术
缓冲技术
-
缓冲的目的:解决CPU和外设速度不匹配的矛盾,提高CPU与外设之间的并行性,减少对CPU的中断频率
-
缓冲技术的实现方法:硬件缓冲、软件缓冲
- (1)硬件缓冲:利用专门的硬件寄存器作为缓冲区,一般由外设自带的专用寄存器构成。例如:Printer、CD-ROM等
- (2)软件缓冲:借助操作系统的管理,在内存中专门开辟若干单元作为缓冲区
-
软件缓冲的四种实现方法:
-
单缓冲:在内存中开辟一个固定大小的区域作为缓冲区
- 外设和CPU交换数据时,先将被交换的数据写入缓冲区,然后再由需要数据的CPU或外设从缓冲区中取出。
- 该方式中,外设与CPU对缓冲区的操作是串行的。
-
双缓冲:在内存中设置2个大小相同的缓冲区。
- 外设和CPU可以交替使用这2个缓冲区,从而在一定程度上实现并行交换数据。
-
环形缓冲:在内存中设置大小相等的多个缓冲区,并将它们链接称为一个环形链表。
- Head一直指向缓冲区链表的第一个缓冲区;
- Full一直指向缓冲区链表中的第一个存满数据的缓冲区;
- Empty一直指向缓冲区链表中的第一个空白的缓冲区。
- 初始化时:Head=Full=Empty,整个缓冲区链表为空;
- 使用过程中:当Full=Empty <==> 整个缓冲区链表为空。
-
缓冲池: 缓冲池是由多个大小相同的缓冲区组成
- 池中的缓冲区是系统公共资源,所有进程均可以共享
- 池由系统管理程序统一管理,负责分配、回收工作
- 池中每个缓冲区既可以用于输入数据,也可以用于输出数据
-
缓冲池的工作流程:
(1)当输入设备需要进行数据输入时,则从空缓冲队列的队首取下一个空缓冲区,将它作为收容输入工作缓冲区,当它被输入装满数据后,则被链接到输入缓冲队列的队尾;
(2)当某进程需要从缓冲池输入数据时,则从输入缓冲队列的队首取一个缓冲区作为提取输入工作缓冲区,该进程从中提取数据,取完后,则将该缓冲区链接到空缓冲区队列的队尾;
(3)当某进程需要输出数据到缓冲池时,则从空缓冲队列的队首取下一个空缓冲区,将它作为收容输出工作缓冲区,该进程向该缓冲区中存放数据,当它被装满数据后,则被链接到输出缓冲队列的队尾;
(4)当输出设备需要进行数据输出时,则从输出缓冲队列的队首取一个缓冲区作为提取输出工作缓冲区,并从中提取数据输出,取完后,则将该缓冲区链接到空缓冲区队列的队尾。
-
假脱机技术——SPOOLING
- Simultaneous Peripheral Operation On Line外部设备同时联机操作,又称假脱机(脱离主机的IO操作)操作
- SPOOL是操作系统中采用的一项将独占设备改造(虚拟)成共享设备的技术。
- 实现方法:截获向某独享设备输出的数据,暂时保存到内存缓冲区或磁盘文件中,并进行排队,之后逐个输出到外设上
- 实现这一技术的软、硬件系统称为SPOOL系统,或假脱机系统,或SPOOLING系统
磁盘IO
-
磁盘I/O: 缓存队列 → 控制器 →寻道 →旋转 → 传输
-
磁盘访问延迟 = 队列时间 + 控制器时间 + 寻道时间 + 旋转时间(半周) + 传输时间
- 关键所在: 最小化寻道时间和旋转延迟
-
磁盘调度算法
-
先来先服务磁盘调度 First Come First Severed (FCFS )
-
最短寻道时间优先磁盘调度 Shortest-Seek-Time First (SSTF)
-
扫描/电梯算法磁盘调度 SCAN
-
循环扫描/电梯算法磁盘调度 C-SCAN
-
C-LOOK磁盘调度
-
总结
-
-
磁盘编址
- 对磁盘的扇区进行编号:扇区 = 头 + 数据区 + 尾
- 地址是:盘面(H) + 磁道(C) + 扇区(S)
- CHS (Cylinder/Head/Sector)模式(硬盘盘片的每一条磁道都具有相同的扇区数)
- 柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道, 最大为 1024(用 10 个二进制位存储)
- 磁头数(Heads) 表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 256 (用 8 个二进制位存储)
- 扇区数(Sectors per track) 表示每一条磁道上有几个扇区, 最大为63 (用 6 个二进制位存储)
- 线性寻址(等密度结构硬盘,外圈磁道的扇区比内圈磁道多)
- 以扇区为单位进行寻址
- 与使用CHS寻址的兼容,在硬盘控制器内部安装了一个地址翻译器
-
磁盘交换区
- 存储页面置换时从内存换出的页面
- 页面 <—> 扇区映射