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

    如何在输入输出上提高一下效率emmmm #include<iostream> #include<stdio.h> #include<stdlib.h> #inclu ...

  2. PHP zip_entry_compressedsize() 函数

    定义和用法 zip_entry_compressedsize() 函数返回 zip 档案项目的压缩文件尺寸.高佣联盟 www.cgewang.com 语法 zip_entry_compressedsi ...

  3. CF EC 86 E Placing Rooks 组合数学

    LINK:Placing Rooks 丢人现场.jpg 没看到题目中的条件 放n个rook 我以为可以无限放 自闭了好半天. 其实只用放n个.那么就容易很多了. 可以发现 不管怎么放 所有列/所有行 ...

  4. windows:shellcode 代码远程APC注入和加载

    https://www.cnblogs.com/theseventhson/p/13197776.html  上一章介绍了通用的shellcode加载器,这个加载器自己调用virtualAlloc分配 ...

  5. 【oracle】-集合运算:UNION,UNION ALL...

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:求并,重复记录只显示一次. UNION ALL:求并集,显示所有记录信息. INT ...

  6. 【HEOI2015】公约数数列 题解(分块)

    前言:毒瘤数据结构题,半个下午都在搞它了…… --------------------------- 题目链接 题目大意:给定一个长度为$n$的序列,有两种操作:1.把$a_x$的值改成$y$.2.求 ...

  7. IntelliJ IDEA 修改内存大小,使得idea运行更流畅。(转发)

    原文地址:https://blog.csdn.net/qq_27093465/article/details/81947933 idea有个配置文件,可以设置内存大小的,就跟咱的jvm的内存里面的堆大 ...

  8. spring oauth2获取token时WARN:Could not decode JSON for additional information: BaseClientDetails解决办法

    错误描述 简述:oauth_client_details表中additional_information字段默认为null,ClientDetails实体类中类型为Map<String,Obje ...

  9. java 异常一

    一 异常的继承体系 在Java中使用Exception类来描述异常. 查看API中Exception的描述,Exception 类及其子类是 Throwable 的一种形式,它用来表示java程序中 ...

  10. C#LeetCode刷题之#100-相同的树(Same Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4066 访问. 给定两个二叉树,编写一个函数来检验它们是否相同. ...