h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }p { margin-bottom: 0.25cm; line-height: 120%; }
I/O管理
--I/O核心子系统
一、I/O调度概念
操作系统开发人员通过为每个设备维护一个请求队列来实现调度。当一个应用程序运行阻塞I/O系统调用时,该请求就加到相应设备的队列上。
二、高速缓存与缓冲区
1.高速缓存
高速缓存是可以保留数据拷贝的高速内存。
主要是用来提高访问速度!实例:chrome浏览器第一次与第二次启动的速度差别!
2.缓冲区
缓冲区是用来保存在两设备之间或在设备和应用程序之间所传输数据的内存区域。缓冲技术可分为:
单缓冲:在设备和处理机之间只设置一个缓冲区,由输入设备和输出设备公用。
双缓冲:为输入和输出设备分配两个缓冲区,两个缓冲区交替使用。
循环缓冲:为I/O设备分别设置多个缓冲区,一部分专门用于输入,另一部分专门用于输出。
缓冲池:将多个缓冲区合并在一起构成公用缓冲池进行统一管理,池中的缓冲区可供多个进程共享。
【简而言之:匹配高速和低速设备之间的问题】
三、设备分配与回收
1.设备分配概述
设备分配的任务是按照一定的策略请求设备的进程分配合适的设备及相关的硬件。分为独占型设备、共享型设备和虚拟型设备三种。
p { margin-bottom: 0.25cm; line-height: 120%; }
2.设备分配用数据结构
设备的分配和管理是通过数据结构来进行的,通过它来描述系统的配置,I/O 设备的状态特性及当前的使用情况。如下图所示。虚线表示如果该设备存在的话。
设备分配的数据结构
比较重要的数据结构有:
(1)系统设备表SDT:整个系统一张系统设备表【在操作系统内部】。
(2)设备控制表DCT:系统为每一台物理设备配置一张DCT【在操作系统内部】。
(3)控制器控制表COCT:系统为每一个控制器设置一张COCT。
(4)通道控制表CHCT:只在通道控制方式的系统中存在,每个通道一张。
3.设备分配策略
(1)设备分配原则:设备分配的总原则既要充分发挥设备的使用效率。又要避免造成进程死锁。
(2)设备的分配方式:静态分配主要用于对独占设备的分配,它是在用户作业开始运行之前由系统一次分配该作业所要求的全部设备、控制器和通道,直到该作业被撤销才释放。动态分配是在进程运行过程中按需进行的,进程需要设备时,向系统提出请求,系统按照事先规定的策略给进程分配所需要的设备、控制器和通道,用完之后立即释放。
(3)设备的分配策略:常用的动态设备分配策略有先请求先分配(FIFO)、优先级高者先分配等。
四、假脱机技术(SPOOLing)【将独享设备转换为共享设备】
SPOOLing技术,即同时联机外围操作技术,又称假脱机技术,是指在多道程序环境下,利用多道程序中的一道或两道程序来模拟脱机输入输出中的外围控制机的功能,以达到“脱机”输入输出的目的。
SPOOLing系统的组成
(1)输入井和输出井:这是在磁盘上开辟的两个大存储空间。
(2)输入缓冲区和输出缓冲区:这是在内存中开辟的两个缓冲区。
(3)输入进程SP1和输出进程SP0:这是内存中的两个进程。