设备管理(四)

目录

一、假脱机技术

1.定义

2.原理

3.共享打印机原理

二、设备的分配与回收

 1.设备分配时应考虑的因素

(1)设备的固有属性

(2)设备的分配算法

(3)设备分配中的安全性

①安全分配方式

②不安全分配方式

2.静态分配与动态分配

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

 (1)设备控制表DCT

 (2)控制器控制表(COCT)

(3)通道控制表(CHCT)

(4)系统设备表(SDT)

4.设备分配的步骤

5.设备分配步骤的改进方法


一、假脱机技术

1.定义

手工操作阶段:主机直接从I/0设备获得数据,由于设备速度慢,主机速度很快。人机速度矛
盾明显,主机要浪费很多时间来等待设备

 批处理阶段引入了脱机输入/输出技术(用磁带完成):

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

脱机就是脱离主机的控制进行的输入/输出操作

2.原理

假脱机技术,又称SPOOLing技术是用软件的方式模拟脱机技术。SPOOLing系统的组成如下:

输入井和输出井:模拟脱机输入/输出时的磁带

输入进程和输出进程模拟脱机输入/输出时的外围控制机

输入进程和输出进程需要和用户进程并发的执行,才能完成这种模拟脱机输入和模拟脱机输出的过程。要实现SPOOLing技术,必须要有多道程序技术的支持。

输入缓冲区和输出缓冲区,内存中的缓冲区,输入、输出时的“中转站”

3.共享打印机原理

打印机是独占式设备——只允许各个进程串行使用,一段时间内只能满足一个进程的请求。

使用SPOOLing技术将打印机变成共享设备——允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是交替使用)。可以同时满足多个进程的使用请求

当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事:

①在磁盘输出井中为进程申请一个空闲缓冲区(这个缓冲区是在磁盘上的),并将要打印的数据送入其中;

②为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是打印任务的说明书,说明用户的打印数据存放位置等信息),再将该表挂到假脱机文件队列上

当打印机空闲时,输出进程会从文件队列的队头输出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务

虽然系统中只有一个打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享

SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备

二、设备的分配与回收

 1.设备分配时应考虑的因素

(1)设备的固有属性

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

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

(2)设备的分配算法

先来先服务、优先级高者优先、短任务优先

(3)设备分配中的安全性

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

①安全分配方式

为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)

一个时段内每个进程只能使用一个设备。

优点:破坏了“请求和保持”条件,不会死锁。

缺点:对于一个进程来说,CPU和I/O设备只能串行工作

②不安全分配方式

进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之前还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞

一个进程可以同时使用多个设备

优点:进程的计算任务和I/O任务可以并行吹,使进程迅速推进

缺点:有可能发生死锁(死锁避免、死锁的检测和解除)

2.静态分配与动态分配

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

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

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

“设备、控制器、通道”之间的关系:

一个通道可控制多个设备控制器,每个设备控制器可控制多个设备 

在个人电脑中,你可以找到如下几种IO控制器:

  1. 主板上的集成控制器:主板集成了多种IO控制器,如USB控制器、SATA控制器等,用于连接键盘、鼠标、硬盘等设备。
  2. 独立的扩展卡:某些功能强大的IO控制器可能位于独立的PCI-E扩展卡上,比如高端的网络控制器或RAID控制器。
  3. 外部设备中的控制器:一些外部设备内部也有自己的IO控制器,例如打印机、扫描仪等设备中的控制单元。

 (1)设备控制表DCT

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

进程管理章节中提到过“系统会根据阻塞原因不同,将进程PCB挂到不同的阻塞队列中”

 (2)控制器控制表(COCT)

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

(3)通道控制表(CHCT)

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

(4)系统设备表(SDT)

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

4.设备分配的步骤

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

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

③根据DCT里的指针找到相应的COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程

④根据COCT里的指针找到相应的CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程

缺点

①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程;②若换了一个物理设备,则程序无法运行;③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待

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

5.设备分配步骤的改进方法

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

②查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表LUT中新增一个表项

③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程

④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙了则将通道分配给进程

逻辑设备表LUT建立了逻辑设备名与物理设备名之间的映射关系。

某用户进程第一次使用设备时使用逻辑设备名向OS发出请求,OS根据用户进程指定的设备类型(逻辑设备名)炒作系统设备表,找到一个空闲设备分配给进程,并在LUT中增加相应表项

如果之后用户进程再次通过相同的逻辑设备名请求使用设备,则操作系统通过LUT表即可知道用户进程实际要使用的是哪个物理设备了,并且也能知道该设备的驱动程序入口地址

逻辑设备表的设置问题:

整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复,适用于单用户操作系统

每个用户一张LUT:不同用户的逻辑设备名可重复,适用于多用户操作系统 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值