OS--学习笔记:设备管理

五、设备管理

1.I/O体系结构

从上至下依次为

用户层IO:产生 I/O 请求、格式化 I/O、Spooling
设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备
分配与释放等等,同时为设备管理与数据传送提供必要的存储空间。

设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动IO设备
工作的驱动程序。

中断处理程序:用户保存被中断进程的CPU环境,处理完并回复被中断程序的现场后,返
回到被中断进程。

硬件:执行 I/O 操作

2.I/O控制方式

img

  • 采用轮询的可编程 I/O 方式
    • 易于实现,但 CPU 和 I/O 设备只能串行工作,CPU 效率较低
  • 采用中断的可编程 I/O 方式
    • 比上一种方法有优势,但数据中的每一个字在存储器与 I/O 控制器之间的传输都要经过 CPU ,这就导致这种方式仍会消耗较多的 CPU 时间
  • 直接存储器访问(DMA)方式
    • DMA 控制时,传输基本单位是数据块,只有传送开始和结束时才需要 CPU 的参与,CPU 利用率较高
  • I/O通道方式(通道是一种特殊的硬件)
    • I/O 通道传送基本单位是一组数据块,有更高的自主权,CPU 利用率更高

总结:整个 I/O 控制方法的发展,总的来说就是四个字 ——“简政放权”:减轻 CPU 对所有操作控制的压力,让合适的 “人”(如其他专门硬件)去处理合适的 “事”(如这里的 I/O 操作)。

3.I/O分配中的数据结构和分配方法

3.1.1设备分配中的数据结构

设备控制表(DCT)

img

控制器控制表(COCT)、通道控制表(CHCT)、系统设备控制表(SDT)

img

上述几种数据结构之间的关系

  • DCT 与 COCT 一一对应
  • CHCT 与 COCT 一对多(一个通道可谓多个设备控制器服务)
  • SDT 整个系统只有 一张
3.2.1分配方法

设备分配的安全性指分配设备时防止发生死锁

设备分配时应考虑到的因素:1)设备固有属性;2)设备分配算法;3)设备分配时的安全性4)
设备独立性
设备的固有属性:1)独占性设备;2)共享性设备;3)可虚拟设备
设备分配算法:1)先来先服务;2)优先级高者有优先。
设备分配中的安全性:1)安全分配方式:放弃了“请求和保持”条件,因此也导致了CPU与IO串行工作

不安全分配方式:具备“请求和保持”条件,可能造成死锁,但也导致了一个进程可同时操作多个设备

4.1通道和通道程序

4.1.1通道

通道是通过执行通道程序,并与设备控制器共同实现对IO设备的控制的。由一系列通道指令(命令)构成。与一般机器指令不同,在他的每条指令中,都包含如下信息:

  1. 操作码 2. 内存地址 3. 技计数 4. 通道程序结束位 5. 记录结束标志
4.1.2通道程序
  • 通道程序由一系列通道指令构成。
  • 通道指令构成如下:
    • 操作码:包括 控制 等操作
    • 内存地址:操作数据的内存首址
    • 计数:操作数据的字节数(与上一项 内存地址 相加,即可获得操作数据的内存范围)
    • 通道程序结束位 PP = 1 表示本条指令是通道程序的最后一条指令
    • 记录结束标志 RR = 0 表示本条指令和下一条指令处理的数据是同一条记录R = 1 表示这是处理某条记录的最后一条指令

5.设备独立性及其实现方法

5.1.1设备独立性

---- 为了提高OS的可适应性和可扩展性,在现代OS中都毫无例外地实现了设备独立性(Device Independence),也称为设备无关性。

---- 其基本含义是:应用程序独立于具体使用的物理设备。为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。

---- 在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。

设备独立性软件

具体含义:基本含义:应用程序独立于具体使用的物

好处:1)设备分配时的灵活性;2)易于实现IO重定向

5.2.1实现方法
  1. 逻辑设备表

    在应用程序中使用逻辑设备名来请求使用某类设备,在系统中设置一张逻辑设备表(LUT),用于将逻辑设备名映射成物理设备名。表的表目中包含三项:逻辑设备名,物理设备名和设备驱动程序的入口地址

  • 建立逻辑设备表的两种方式:

    1)在整个系统中只设置一张LUT,适用于单用户系统

    2)为每个用户设置一张LUT。

6.虚拟设备和SPOOLing技术

SPOOLing(假脱机)技术可以将一台物理IO设备虚拟为多台逻辑IO设备,允许多个用户共享一台物理IO设备。实质上是一种以空间换时间的技术

SPOOLing是对脱机输入、输出系统的模拟。必须建立在多道程序功能的基础上,而且还要此资料免费共享

有高速随机外存的支持,通常采用磁盘存储技术。

SPOOLing主要有三个组成部分

  1. 输入井和输出井,在磁盘上开辟的两个大存储空间,输入井是模拟脱机输入的磁盘设备,用于暂存IO设备输出得数据,输出井是模拟脱机输出的设备,用于暂存用户程序的输出数据。
  2. 输入缓冲区和输出缓冲区,为缓和CPU和IO设备速度不匹配的矛盾,在内存中开辟两个缓冲区:输入和输出缓冲区,输入缓冲区用来暂存由输入设备送来的数据,以后在传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后在传送给输出设备。
  3. 输入进程和输出进程:利用这两个进程模拟脱机IO时的外围控制机。其中输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区在送到输入井,当CPU需要输入数据时,直接从输入井读到内存;输出进程模拟输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上。

优点:

1)提高了I/O的速度。
2)将独占设备改造为共享设备。
3)实现了虚拟设备功能。

7.缓冲管理

缓冲区

操作所需时间
磁盘 → 缓冲区T
缓冲区 → 用户区M
CPU 处理C
7.1.1单缓冲区
  • 每块数据处理时间为
    • max(C, T) + M
7.1.2双缓冲区
  • 每块数据处理时间为
    • max(C+M, T)

单缓冲机制不允许双方同时向对方发送数据,而双缓冲可以。

时间计算小结:能并行的放在 max 内取大的,再和只能串行的任务时间相加

7.1.3循环缓冲

包含多个大小相等的缓冲区,每个缓冲区中由一个链接指针指向下一个缓冲区,构成一个环形。

7.1.4缓冲池

在池中设置多个可供进程共享的缓冲区。
组成:1)空闲缓冲区(空缓冲队列;2)装满输入数据的缓冲区(输入缓冲队列);3)装满输出数据的缓冲区(输出缓冲队列)。

8.设备处理与I/O软件

IO软件总体设计目标是高效率和通用性。

I/O软件应实现目标:

1)与具体设备无关;2)统一命名;3)对错误的处理;4)缓冲技术;5)设备分配和释放;6)IO控制方式

四个层次:

用户层软件、设备独立性软件、设备驱动程序、中断处理程序

9.设备分配

设备分配的目的是视设备为资源进行分配,也就牵扯到了分配的算法。详见处理机调度算法的先来先服务算法优先级高有限服务算法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值