作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行
设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作业和物理设备分离开来,再通过其它途径建立逻辑设备和物理设备之间的映射
设备管理的功能之一就是将逻辑设备名转换为物理设备名,为此系统需要提供逻辑设备名和物理设备名的对照表以供转换使用
而微型计算机的操作系统则一般不支持设备独立性,多采用直接指定某台具体物理设备以进行设备分配的方式(比较简单)
设备独立性的优点:
  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. kafka笔记——入门介绍

    中文文档 目录 kafka的优势 首先几个概念 kafka的四大核心API kafka的基本术语 主题和日志(Topic和Log) 每个分区都是一个顺序的,不可变的队列,并且可以持续的添加,分区中的每 ...

  2. SQL Server 枚举异或运算后值存入数据库,读取符合条件的值

    有枚举如下: [Flags] public enum Color { Red = , Green = , Blue = , White = } 定义三个枚举变量,并将值存入数据库: Color col ...

  3. CF724C Ray Tracing 扩展欧几里得 平面展开

    LINK:Ray Tracing 虚这道题很久了 模拟赛考了一个加强版的 瞬间就想到了这道简化版的. 考虑做法 暴力模拟可能可以 官方正解好像就是这个. 不过遇到这种平面问题可以考虑把平面给无限的展开 ...

  4. Pintech品致-高压放大器

      pintech品致推出的HA-520(200KHz,500Vp-p)高压放大器真的是实用的高电压信号放大器, 体积小,轻便及简易的操作, 高电压输出(800Vp-p)等优点.连续输出电流量最大值达 ...

  5. react - 多层级嵌套路由支持

    routerCofing配置 { path: '/route1/someModel', children: [ { path: '/route2', component: RouteBase.Cps1 ...

  6. 8月份Python招聘情况怎么样?Python爬取招聘数据,并进行分析

    前言 拉勾招聘是专业的互联网求职招聘平台.致力于提供真实可靠的互联网招聘求职找工作信息.今天我们一起使用 python 采集拉钩的 python 招聘信息,分析一下找到高薪工作需要掌握哪些技术 开发环 ...

  7. Android 的OkHttp(发送网络请求)

    今天讲的是和HttpURLConnection差不多的OkHttp; 先把网站献上: 官网介绍okhttp的: https://square.github.io/okhttp/ 下载postman的: ...

  8. 极简 Node.js 入门 - 1.3 调试

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  9. 致敬平凡的程序员--《SOD框架“企业级”应用数据架构实战》自序

    “简单就是美” “平凡即是伟大” 上面两句话不知道是哪位名人说的,又或者是广大劳动人民总结的,反正我很小的时候就常常听到这两句话,这两句话也成了我的人生格言,而且事实上我也是一个生活过得比较简单的平凡 ...

  10. pandas | 详解DataFrame中的apply与applymap方法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算. 在上一篇文章当中,我们介绍了panads的一些计算方法, ...