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

操作系统-I/O(2)设备的分配的更多相关文章

  1. KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  2. KVM(四) I/O 设备直接分配和 SR-IOV

    (4):I/O 设备直接分配和 SR-IOV 本文将分析 PCI/PCIe 设备直接分配(Pass-through)和 SR-IOV, 以及三种 I/O 虚拟化方式的比较. 1. PCI/PCI-E ...

  3. [STF手机设备管理平台]连接其它操作系统上的安卓设备实操介绍

    一.背景 看到之前曾有人发贴,贴名[stf 连接各操作系统上安卓设备的操作方法分享],介绍了一下,虽然说方法和理论都有,但下述评论中还是有很多人不知如何操作,特别是不知道stf provider命令如 ...

  4. 在Windows 10 操作系统打开Windows Mobile 设备中心,要么双击无反应,要么正在启动后过会就关闭了

    在Windows 10 操作系统打开Windows Mobile 设备中心,要么双击无反应,要么正在启动后过会就关闭了 解决方法: 1.运行:输入services.msc进入服务 2.找到(前提你的P ...

  5. 【整理】--【字符设备】分配设备号register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()

    (1) 分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下: extern int register_chrdev_region(dev_t,unsigned int,const char ...

  6. userAgent,JS这么屌的用户代理,你造吗?——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

    1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: var client = function() { var ...

  7. [图解tensorflow源码] [转载] tensorflow设备内存分配算法解析 (BFC算法)

    转载自 http://weibo.com/p/1001603980563068394770   @ICT_吴林阳 tensorflow设备内存管理模块实现了一个best-fit with coales ...

  8. cgroup测试存储设备IOPS分配

    1 使用:创建树并且attach子系统 首先要创建文件系统的挂载点作为树的根 mkdir /cgroup/name mkdir /cgroup/cpu_and_mem Mount这个挂载点到一个或者多 ...

  9. linux设备号分配

    参考:http://blog.chinaunix.net/uid-24460251-id-2606762.htmlhttp://blog.csdn.net/zjjyliuweijie/article/ ...

随机推荐

  1. python爬虫实践——爬取“梨视频”

    一.爬虫的基本过程: 1.发送请求(请求库:request,selenium) 2.获取响应数据()服务器返回 3.解析并提取数据(解析库:re,BeautifulSoup,Xpath) 4.保存数据 ...

  2. OceanBase安装和使用

    链接 https://mp.weixin.qq.com/s?spm=a2c6h.12873639.0.0.41f92c9bH5FL2Y&__biz=MzU3OTc2MDQxNg==&m ...

  3. 集合的一些实例的demo实现

    按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 准备牌: 牌可以设计为一个ArrayList,每个字符串为一 ...

  4. CF802C Heidi and Library hard 费用流 区间k覆盖问题

    LINK:Heidi and Library 先说一下简单版本的 就是权值都为1. 一直无脑加书 然后发现会引起冲突,可以发现此时需要扔掉一本书. 扔掉的话 可以考虑扔掉哪一本是最优的 可以发现扔掉n ...

  5. hashMap在jdk1.7与jdk1.8中的原理及不同

    在分析jdk1.7中HashMap的hash冲突时,不知大家是否有个疑问就是万一发生碰撞的节点非常多怎么版?如果说成百上千个节点在hash时发生碰撞,存储一个链表中,那么如果要查找其中一个节点,那就不 ...

  6. Navicat15安装教程

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12797170.html 一:简介 Navicat是一套快速.可靠的数据库管理工具 ...

  7. 【目标检测】:SPP-Net深入理解(从R-CNN到SPP-Net)

    一. 导论 SPP-Net是何凯明在基于R-CNN的基础上提出来的目标检测模型,使用SPP-Net可以大幅度提升目标检测的速度,检测同样一张图片当中的所有目标,SPP-Net所花费的时间仅仅是RCNN ...

  8. 019_go语言中的方法

    代码演示 package main import "fmt" type rect struct { width, heigh int } func (r *rect) area() ...

  9. 曲线生成与求交—B样条曲线

    B样条曲线生成 Bezier曲线缺点:改变任一控制点的位置,将影响整条曲线的形状. B样条曲线是对Bezier曲线的改进,可进行局部控制,生成的曲线与控制多边形的外形更接近,将Bezier曲线作为一特 ...

  10. 关于Springboot配置文件的理解

    一.Springboot Springboot是用来简化Spring框架搭建和开发一款框架,可以理解为是一种Spring框架的简化版. 二.如何在IDEA里面初始化Springboot 主要可以分为两 ...