博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5-4-1IO核心子系统
阅读量:3960 次
发布时间:2019-05-24

本文共 2434 字,大约阅读时间需要 8 分钟。

学习目标:

IO调度和设备保护不做重点学习,在前面学过


学习内容:

重点:

1、假脱机技术(SPOOLing技术)
2、设备分配与回收


0.知识总览

在这里插入图片描述

注:上图中中间三层为IO核心子系统。假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。但是408大纲又将假脱机技术归为“I/o核心子系统”的功能,因此考试时还是以大纲为准。

1.I/O调度

I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求。

如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。当多个磁盘I/O请求到来时,用某种调度算法确定满足I/O请求的顺序。

同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定I/O调度顺序。

2.设备保护

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。

在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。(参考“文件保护”小节)

3.假脱机技术(SPOOLing技术)

3.1脱机技术

脱机技术——脱离主机的控制进行的输入/输出操作.

脱机技术即在批处理阶段面对高速CPU和慢速的输入输出的情况下的一个技术。在外围控制机的控制下,慢速输入设备的数据先被输入到更快速的磁带上。之后主机可以从快速的磁带上读入数据,从而缓解了速度矛盾。

引入脱机技术后,缓解了CPU与慢速I/o设备的速度矛盾。另一方面,即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。

3.2假脱机技术

在这里插入图片描述

在这里插入图片描述

4.设备分配与回收

4.1设备分配时应考虑的因素

4.1.1设备的固有属性

设备的固有属性可分为三种:独占设备、共享设备、虚拟设备。

独占设备――一个时段只能分配给一个进程(如打印机)
共享设备――可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
虚拟设备――采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用SPOOLing技术实现的共享打印机)

4.1.2设备分配算法

4.1.3设备分配中的安全性

从进程运行的安全性上考虑,设备分配有两种方式:

安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。一个时段内每个进程只能使用一个设备
优点:破坏了“请求和保持”条件,不会死锁
缺点:对于一个进程来说,CPU和I/O设备只能串行工作

不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个l/O请求得不到满足时才将进程阻塞。一个进程可以同时使用多个设备

优点:进程的计算任务和/o任务可以并行处理,使进程迅速推进
缺点:有可能发生死锁(死锁避免、死锁的检测和解除)

4.2静态分配和动态分配

静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源。破坏了“请求和保持”条件,不会发生死锁

动态分配:进程运行过程中动态申请设备资源

4.3设备分配管理中的数据结构

4.3.1设备控制表(DCT,DeviceControlTable)

系统为每个设备配置一张DCT,用于记录设备情况

在这里插入图片描述

4.3.2控制器控制表(COCT,Controller Control Table)

每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。

在这里插入图片描述

4.3.3通道控制表(CHCT,Channel Control Table))

每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。

在这里插入图片描述

4.3.4系统设备表(SDTSystem Device Table)

记录了系统中全部设备的情况,每个设备对应一个表目。

在这里插入图片描述

4.4设备分配的步骤

4.4.1方法一

①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)

在这里插入图片描述

②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。

在这里插入图片描述
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
在这里插入图片描述
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
在这里插入图片描述
⑤只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可后动I/O设备进行数据传送

缺点

①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程
②若换了一个物理设备,则程序无法运行
③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待(比如我们有三台打印机,但是第一台打印机启动后,其他两台打印机不能被系统所使用)

改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名

4.4.2方法二

①根据进程请求的逻辑设备名查找SDT(注:用户编程时提供的逻辑设备名其实就是“设备类型”)

②查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表(LUT)中新增一个表项。
在这里插入图片描述
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
在这里插入图片描述
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
在这里插入图片描述
逻辑设备表的设置问题
整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复,适用于单用户操作系统
每个用户一张LUT:不同用户的逻辑设备名可重复,适用于多用户操作系统

5.

转载地址:http://yzmzi.baihongyu.com/

你可能感兴趣的文章