小白莲的操作系统day15-5.2(完结撒花)
文章目录
I/O核心子系统
知识总览
重点需理解和掌握的功能是:I/O调度,设备保护,假脱机技术(SPOOLing技术),设备分配与回收,缓冲区管理(即缓冲与高速缓存)
这些功能要在那个层次实现?
注:假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。但是408大纲又将假脱机技术归纳为 “I/O核心子系统”的功能,因此考试时还是以大纲为准。
I/O调度
I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。
如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。当多个磁盘I/O请求到来时,用某种调度算法确定满足I/O请求的顺序。
同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定I/O调度顺序。
设备保护
操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。
在 UNIX系统中,设备被看作是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户 是否有相应的访问权限,以此实现“设备保护”的功能。(参考“文件保护”小节)。
假脱机技术(SPOOLing技术)
知识总览
什么是脱机技术
批处理阶段引入了脱机输入/输出技术(用磁带完成):
假脱机技术–输入井和输出井
“假脱机技术 ”,又称“SPOOLing技术”是用软件的方式模拟脱机技术。SPOOLing系统的组成如下:
要实现SPOOLing技术,必须要有多道程序技术的支持。系统会建立“输入进程”和“输出进程”。
共享打印机原理分析
独占式设备–只允许各个进程串行使用的设备。一段时间内只能满足一个进程的请求。
共享设备–允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是 交替使用)。可以同时满足多个进程的使用请求。
当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事:
(1)在磁盘输出井中位进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将要打印的数据送入其中;
(2)为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。
当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出并传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务。
虽然系统中只有一台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机 的共享。
SPOOLing技术可以把一台 物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。
知识点回顾
设备的分配与回收
知识总览
设备分配时应考虑的因素
设备的固有属性可分为三种:独占设备、共享设备、虚拟设备。
独占设备–一个时段只能分配给一个进程(如打印机)
共享设备–可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
虚拟设备–采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing技术实现的共享打印机)
设备的分配算法:先来先服务、优先级高者优先 、短任务优先…
从进程运行的安全性上考虑,设备分配有两种方式:
安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)
不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。
静态分配和动态分配
静态分配:进程运行前为其分配全部所需资源,运行结束后 归还资源(破坏了“请求和保持”条件,不会发生死锁)。
动态分配:进程运行过程中动态申请设备资源。
设备分配管理中的数据结构
“设备、控制器、通道”之间的关系:
一个通道可控制多个设备控制器,每个设备控制器可控制多个设备。
设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况
“进程管理”章节中曾经提到过“系统会根据阻塞原因不同,将进程PCB挂到不同的阻塞队列中”
控制器控制表(COXT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。
通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目。
设备分配的步骤
注:只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可启动I/O设备进行数据传送。
设备分配步骤的改进
逻辑设备表的设置问题:
整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复,适用于单用户操作系统。
每个用户一张LUT:不同用户的逻辑设备名可重复,适用于多用户操作系统。
知识总览
缓冲区管理
知识总览
什么是缓冲区?有什么作用?
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表大访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)。
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。
缓冲区有什么作用?
单缓冲
假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区大小就是一块)。
注:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
结论:采用单缓冲策略,处理一块数据平均耗时Max(C,T)+M
双缓冲
假设某个用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目没有特别说明,一个缓冲区的大小就是一个块)
双缓冲题目中,假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空。
结论:采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)
使用单/双缓冲在通信时的区别
循环缓冲区
将多个大小相等的缓冲区链接成一个循环 队列。
缓冲池
缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。