作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行
设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作业和物理设备分离开来,再通过其它途径建立逻辑设备和物理设备之间的映射
设备管理的功能之一就是将逻辑设备名转换为物理设备名,为此系统需要提供逻辑设备名和物理设备名的对照表以供转换使用
而微型计算机的操作系统则一般不支持设备独立性,多采用直接指定某台具体物理设备以进行设备分配的方式(比较简单)
设备独立性的优点:
  1. 应用程序与具体物理设备无关,系统增减或变更设备时不需要修改源程序
  2. 易于应对I/O设备故障,提高系统可靠性
  3. 增加设备分配的灵活性,更有效地利用设备资源,实现多道程序设计
 
从设备的物理特性来看,设备可分为独占型设备、共享设备、虚拟设备,相应管理和分配设备的技术就分为静态分配、动态分配、虚拟分配。
  • 独占型设备
大多数设备都是独占型设备,只能由一个作业独占式使用,先申请再使用再归还,如键盘、显示器、打印机,这是由设备的物理特性决定的。
往往采用静态分配:作业执行前将所要使用的设备全部分配给它,作业执行过程中不再需要使用这类设备或作业执行结束将要撤离时再收回设备。实现简单,能够防止系统发生死锁,但会降低设备利用率。
对某些以独占方式使用的设备,也可以采用动态分配,以提高设备利用率。
  • 共享设备
可以让多个作业同时使用,如磁盘。
设备管理的主要工作是驱动调度和实施驱动,一般不必进行分配。
常用的设备分配算法有先来先服务、优先级高者先服务等。
 
设备分配时的数据结构:
  • 设备类表:支持设备独立性时才会使用
每类设备对应于设备类表的中一栏,包括:设备类、总台数、空闲台数、设备表起始地址等。
  • 设备表:每类设备都有各自的设备表
用来登记这类设备中的每台物理设备,包括:物理设备名(号)、逻辑设备名(号)、占有设备的进程号、是否分配、好/坏标志等
 
在采用通道结构的系统中,则复杂得多:
  • 系统设置表
一张,记录系统配置的所有物理设备的情况,每台物理设备占用一栏,包括:设备类型、台数、设备号、设备控制表指针等
  • 通道控制表
  • 控制器控制表
  • 设备控制表
每个通道、控制器、设备各一张,分别记录各自的地址(标识符)、状态(忙/闲、已分配/未分配)、等待获得此部件的进程队列指针及一次分配后相互链接的指针,以备分配和执行I/O操作时使用

最新文章

  1. 高阶Laplace曲面形变算法(Polyharmonic Deformation)
  2. 《OOC》笔记(1)——C语言const、static和extern的用法
  3. 仿Java的AtomicMarkableReference的AtomicMarkablePointer(C++)
  4. Android Permission中英对照
  5. php 连接mongodb 增查改删操作
  6. java异常与处理
  7. 创建XML文档结构
  8. RadioGroup
  9. 近期面试总结(PHP后端开发工程师)(部分笔试题)
  10. 使Tomcat指向指定的JDK目录
  11. scrapy安装过程问题解决、新建项目、调试断点
  12. 『骑士精神 IDA*』
  13. [模板] dfs序, 树链剖分, 换根
  14. 初学CSS-2-文本的属性
  15. uploadify中文开发文档,解决php多图上传
  16. DbgPrint/KdPrint输出格式控制
  17. svn 图标状态说明
  18. 硬件原理图Checklist检查表(通用版)
  19. null 和 undefined 区别
  20. 51nod数字1的数量

热门文章

  1. PHP设计模式之----简单工厂模式
  2. Antd DatePicker 语言项-显示中文月份
  3. luogu P2607 [ZJOI2008]骑士 tarjan dp
  4. 银弹谷V百科|使用技巧:Vbase技巧二则之一
  5. Java助教工作总结
  6. 付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
  7. 在IntelliJ IDEA中多线程并发代码的调试方法
  8. 利用mybatis的Generator的插件生成代码
  9. Java基础—控制流程语句(条件语句与循环结构)
  10. C#LeetCode刷题之#191-位1的个数(Number of 1 Bits)