第五章:IO管理
Part1:基础知识
1、IO控制方式
详见计算机组成原理6.5章:IO控制方式
2、IO系统层次结构
Part2:设备独立软件
1、缓冲区管理
为了缓和CPU和设备(外存)的速度矛盾,常常在内存中开辟一片缓冲区,用于对设备的读写,有以下几种方式
- 单缓冲区:只有一块区域(其大小和工作区相当)
- 双缓冲区:有2块区域,当CPU向其中一块读入是,另外一块可以写
- 缓冲池:存在三个队列;空队列(可用),输入队列(装满输入数据,等待CPU读取),输出队列(装满输出数据,等待CPU写入设备)
- 循环缓冲:由多个缓冲区构成一个循环队列
单缓冲区和双缓冲区在考试中常常考察分析CPU处理一块数据的平均处理时间,这里有一个技巧:
假设一种初始状态,然后计算下一次到达该状态所需时间,即为处理一块数据的时间。
2、SPOOLing技术:Simultaneous Peripheral Operation On-Line
在讲假脱机技术之间,先说明一下脱机技术
2.1 脱机技术
所谓的脱机,即为脱离处理机(CPU)进行的输入输出操作,在很早的计算机上,采用打控纸带进程输入和输出操作,但是这样子严重浪费了CPU的时间,于是出现了先将纸带内容读入到高速的磁带上,CPU从磁带上读入内容,输出是先写到磁带上,然后在写回到纸带上。这样子高速的磁带就缓和CPU和纸带的速度差异,而假脱机技术,就是利用磁盘模拟磁带的功能
2.2 假脱机技术流程
以输入为例
当有进程需要使用打印机时,CPU先答应下来,将其打印内容放到输入井中,并在内存中保持一个请求队列,当轮到该进程时,只需将输入井中的内容给打印机即可。
这样子即可将一台物理设备虚拟化为多台逻辑设备,一台独占式设备虚拟化为共享设备
3、设备的分配与回收
3.1 设备分配方式和特征
-
设备属性
- 独占设备
- 共享设备
- 虚拟设备(SPOOLing)
-
设备分配方式
-
安全性
- 安全分配方式:进程IO请求之后阻塞,IO完成之后唤醒(串行,低效)
- 不安全分配方式:不阻塞(并行,高效)
-
分配时间
-
静态分配:进程运行前分配全部资源,运行完成之后回收
-
动态分配:进程运行时动态申请
-
-
3.2 相关数据结构
- Device Control Table:一个设备一个DCT
- Controller Control Table:一个控制器一个COCT
- Channel Control Table:一个通道一个CHCT
- System Device Table:记录系统中所有设备的情况
模型:
设备分配过程:
查SDT,查DCT并且分配Device,查COCT并且分配Controller,查CHCT并且分配Channel
这个过程中无需创建进程
Part3:外存管理
1、磁盘
1.1 磁盘读写时间
- 寻道时间Tmove:磁头启动+移动磁头时间
- 旋转时间Tradius:如果未说明,则为旋转半圈的时间1
- 传输时间Ttrans:即为读写时间,由读写字数和读写速度决定
Ttotal=Tmove+Tradius+Ttrans
1.2 磁盘调度算法
-
FCFS:First come First Serve
-
SSTF:Shortest Seek Time First
-
Scan Algorithm:如同电梯运行
-
Circul Scan Algorithm:C-Scan
在3的基础上规定死方向,只能往一个方向上运行
1.3 磁盘管理
初始化磁盘2
- 低级格式化:形成物理分区(扇区)3
- 高级格式化:形成文件系统
2、固态硬盘
详见计算机组成原理第三章,存储器管理Part2:存储器硬件中的ROM部分
这里稍微补充一下
由于flash半导体存储器是随机访问的存储器,无需考虑寻道时间和旋转时延,故采用FIFO按照IO请求直接响应即可
Part end:参考文献和一些说明
磁盘旋转时间单位为rpm,即radius per minute,转每分钟。1000rpm即为每分钟1000转 ↩︎
磁盘在刚造出来时,其磁性颗粒的磁性方向是随机的,经过磁头的读写后,其磁性方向有了规律,称之为格式化,也就是把无规则的磁盘初始化为有规则的扇区。类比砖头和扇区,砖头是最基本的建筑单元,扇区是最基本的数据读写单元,而且和砖头类似,砖头有格式,但是格式低级,扇区也有格式,但是格式低级,故称之为低级格式化(物理分区)。接下来作为最基本读写单元的扇区,就要参与建筑房屋了,那就是文件系统。文件系统就是按照某种高层逻辑组合起来的扇区,自然也有他的格式,而且是更高级的格式。总结如下:首先将磁盘低级格式化为扇区,再高级格式化为文件系统(也成为逻辑格式化)操作系统在高级格式化磁盘之后,就不再以扇区为单位对磁盘进行读写而是以文件系统中的簇为单位。 ↩︎
物理扇区通常有两个基本部分组成,扇区头和数据区域。扇区头包含驱动器和控制器使用信息(地址标识,缺陷标识,纠正信息) ↩︎