OS_@假脱机技术@设备分配@设备映射

news2024/11/26 2:44:20

文章目录

  • OS_@假脱机技术@设备分配@设备映射
    • 设备分配的策略
      • 1)设备分配原则
      • 2)设备分配方式
        • 静态分配
        • 动态分配
      • 3)设备分配算法
    • 设备分配的安全性
      • 1)安全分配方式
      • 2)不安全分配方式
    • 逻辑设备名到物理设备名的映射
      • 两种方式设置逻辑设备表
      • 假脱机(Spooling)系统
        • SPOOLing系统的组成
        • SPOOLing的工作原理
          • 井(磁盘中)
          • 缓冲区(内存中)
          • 输入输出进程
          • 井管理程序
        • SPOOLing系统的特点
        • 假脱机打印机系统
          • 守护进程(daemon)

OS_@假脱机技术@设备分配@设备映射

设备分配的策略

1)设备分配原则

  • 设备分配应根据设备特性、用户要求和系统配置情况 既要充分发挥设备的使用效率,又要避免造成进程死锁,还要将用户程序和具体设备隔离开

2)设备分配方式

  • 设备分配方式有静态分配和动态分配两种

静态分配

  • 主要用于对独占设备的分配,它在用户作业开始执行前,由系统一次性分配该作业所要求的全部设备、控制器
  • 一旦分配,这些设备、控制器就一直为该作业所占用,直到该作业被撤销
  • 静态分配方式不会出现死锁,但设备的使用效率低

动态分配

  • 在进程执行过程中根据执行需要进行 当进程需要设备时,通过系统调用命令向系统提出设备请求,由系统按某种策略给进程分配所需要的设备、控制器,一旦用完,便立即释放 这种方式有利于提高设备利用率
  • 但若分配算法使用不当,则有可能造成进程死锁

3)设备分配算法

  • 常用的动态设备分配算法有
  • 先请求先分配
  • 优先级高者优先等
  • 对于独占设备,既可以采用动态分配方式,又可以采用静态分配方式
  • 往往采用静态分配方式
  • 共享设备可被多个进程所共享,一般采用动态分配方式
    • 但在每个I/O传输的单位时间内只被一个进程所占有,通常采用先请求先分配和优先级高者优先的分配算法

设备分配的安全性

  • 设备分配的安全性是指设备分配中应防止发生进程死锁

1)安全分配方式

  • 每当进程发出I/O请求后便进入阻塞态,直到其IO操作完成时才被唤醒
  • 这样,一旦进程已经获得某种设备后便阻塞,不能再请求任何资源,而在它阻塞时也不保持任何资源
  • 其优点是设备分配安全
  • 缺点是CPU和I/O设备是串行工作的

2)不安全分配方式

  • 进程在发出I/O请求后仍继续运行,需要时又发出第二个、第三个/O请求等
  • 仅当进程所请求的设备已被另一进程占用时,才进入阻塞态
  • 优点是一个进程可同时操作多个设备,使进程推进迅速
  • 缺点是有可能造成死锁

逻辑设备名到物理设备名的映射

  • 为了提高设备分配的灵活性和设备的利用率,方便实现/O重定向,引入了设备独立性 设备独立性是指应用程序独立于具体使用的物理设备 为了实现设备独立性,在应用程序中使用逻辑设备名来请求使用某类设备,在系统中设置一张逻辑设备表(Logical Unit Table,LUT),用于将逻辑设备名映射为物理设备名
  • LUT表项包括逻辑设备名、物理设备名和设备驱动程序入口地址;当进程用逻辑设备名来请求分配设备时,系统为它分配一台相应的物理设备,并在LUT中建立一个表目,当以后进程再利用该逻辑设备名请求I/O操作时,系统通过查找LUT来寻找对应的物理设备和驱动程序

两种方式设置逻辑设备表

  • 1)在整个系统中只设置一张LUT 这样,所有进程的设备分配情况都记录在同一张LUT中,此不允许LUT中具有相同的逻辑设备名,主要适用于单用户系统
  • 2)为每个用户设置一张LUT 每当用户登录时,系统便为该用户建立一个进程,同时也为之建立一张LUT,并将该表放入进程的PCB中

假脱机(Spooling)系统

  • 如果说,通过多道程序技术可将一台物理CPU虚拟为多台逻辑CPU,从而允许多个用户共享一台主机,那么,通过假脱机技术,则可将一台物理I/O设备虚拟为多台逻辑I/O设备,这样也就允许多个用户共享一台物理I/O设备

  • In computing, spooling is a specialized form of multi-programming for the purpose of copying data between different devices. In contemporary systems,[a] it is usually used for mediating between a computer application and a slow peripheral, such as a printer.

  • Spooling allows programs to “hand off” work to be done by the peripheral and then proceed to other tasks, or to not begin until input has been transcribed.

  • A dedicated program, the spooler, maintains an orderly sequence of jobs for the peripheral and feeds it data at its own rate.

  • Conversely, for slow input peripherals, such as a card reader, a spooler can maintain a sequence of computational jobs waiting for data, starting each job when all of the relevant input is available;

  • see batch processing. The spool itself refers to the sequence of jobs, or the storage area where they are held.

  • In many cases, the spooler is able to drive devices at their full rated speed with minimal impact on other processing.

Spooling is a combination of buffering and queueing.

Print spooling

  • Nowadays, the most common use of spooling is printing: documents formatted for printing are stored in a queue at the speed of the computer, then retrieved and printed at the speed of the printer.

  • Multiple processes can write documents to the spool without waiting, and can then perform other tasks, while the “spooler” process operates the printer.[1]

  • For example, when a large organization prepares payroll cheques, the computation takes only a few minutes or even seconds, but the printing process might take hours.

  • If the payroll program printed cheques directly, it would be unable to proceed to other computations until all the cheques were printed.

  • Similarly, before spooling was added to PC operating systems, word processors were unable to do anything else, including interact with the user, while printing.

Spooler or print management software often includes a variety of related features, such as allowing priorities to be assigned to print jobs, notifying users when their documents have been printed, distributing print jobs among several printers, selecting appropriate paper for each document, etc.

A print server applies spooling techniques to allow many computers to share the same printer or group of printers

SPOOLing系统的组成

image-20220605091739488

  • 假脱机技术在20世纪50年代,为了缓和CPU的高速性与I/O设备低速性间的矛盾,而引入了脱机输入、脱机输出技术
  • 该技术是利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反
  • 这样当处理机需要输入数据时,便可以直接从磁盘中读取数据,极大地提高了输入速度
  • 反之,在处理机需要输出数据时,也可以很快的速度把数据先输出到磁盘上处理机便可去做自己的事情
  • 事实上,当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上
  • 再用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上
  • 这样,便可在主机的直接控制下,实现以前的脱机输入、输出功能
  • 此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作的技术称为SPOOLing(SimultaneausPeriphemalOperatingOnLine)技术,或称为假脱机技术
  • 2.SPOOLing的组成如前所述,SPOOLing技术是对脱机输入/输出系统的模拟,相应地,如图6-21(a)所示,SPOOLing系统建立在通道技术和多道程序技术的基础上,以高速随机外存(通常为磁盘)为后援存储器

SPOOLing的工作原理

image-20220605091828193

井(磁盘中)
  • (1)输入井和输出井 这是在磁盘上开辟出来的两个存储区域
    • 输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据
    • 输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据
      • 比如要打印出来的数据
    • 输入/输出井中的数据一般以文件的形式组织管理,我们把这些文件称为井文件
    • 输入/输出队列:一个文件仅存放某一个进程的输入(或者输出)数据,所有进程的数据输入(或输出)**文件链接成为一个输入(或输出)队列 **
缓冲区(内存中)
  • (2)输入缓冲区和输出缓冲区
    • 这是在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾
    • 输入缓冲区用于暂存由输入设备传送的数据,之后再传送到输入井
    • 输出缓冲区用于暂存从输出井传送的数据,之后再传送到输出设备
输入输出进程
  • (3)输入进程和输出进程
    • 输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井
    • 当CPU需要输入设备时,直接从输入井读入内存
      • 输出进程也称为缓输出进程,用于模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区输出至输出设备上
井管理程序
  • 用于控制作业与磁盘井之间信息的交换
  • 当作业执行过程中向某台设备发出启动输入或输出操作请求时,由操作系统调用井管理程序,由其控制从输入井读取信息或将信息输出至输出井

SPOOLing系统的特点

  • (1)提高了I/O的速度 这里,对数据所执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾
  • (2)将独占设备改造为共享设备 因为在假脱机打印机系统中,实际上并没为任何进程分配设备,而只是在磁盘缓冲区中为进程分配一个空闲盘块和建立一张I/O请求表 这样,便把独占设备改造为共享设备
  • (3)实现了虚拟设备功能 宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,它们都会认为自己是独占了一个设备 当然,该设备只是逻辑上的设备
    • 假脱机打印机系统实现了将独占设备变换为若干台对应的逻辑设备的功能

假脱机打印机系统

image-20220605094349518

  • 打印机是经常用到的输出设备,属于独占设备 利用假脱机技术可将它改造为一台可供多个用户共享的打印设备,从而提高设备的利用率,也方便了用户

  • 共享打印机技术已被广泛地用于多用户系统和局域网络中

  • 假脱机打印系统主要有以下三部分:

    • (1)磁盘缓冲区 它是在磁盘上开辟的一个存储空间,用于暂存用户程序的输出数据,在该缓冲区中可以设置几个盘块队列,如空盘块队列、满盘块队列等
    • (2)打印缓冲区 用于缓和CPU和磁盘之间速度不匹配的矛盾,设置在内存中,暂存从磁盘缓冲区送来的数据,以后再传送给打印设备进行打印
    • (3)假脱机管理进程和假脱机打印进程
  • 由假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并把它放入假脱机文件队列中,由假脱机打印进程依次对队列中的文件进行打印

  • 每当用户进程发出打印输出请求时,假脱机打印机系统并不是立即把打印机分配给该用户进程,而是由假脱机管理进程完成两项工作:

    • ①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存;
    • ②为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上 在这两项工作完成后,虽然还没有进行任何实际的打印输出,但对于用户进程而言,其打印请求已经得到满足,打印输出任务已经完成
    • 真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将要打印的数据由输出井传送到内存缓冲区,再交付打印机进行打印
    • 一个打印任务完成后,假脱机打印进程将再次查看假脱机文件队列,若队列非空,则重复上述的工作,直至队列为空
    • 此后,假脱机打印进程将自己阻塞起来,仅当再次有打印请求时,才被重新唤醒运行
    • 利用假脱机系统向用户提供共享打印机的概念是:
      • 对每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统已为他打印:
      • 真正的打印操作,是在打印机空闲且该打印任务在等待队列中已排到队首时进行的;
      • 而且,打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机:以上的过程是对用户屏蔽的,用户是不可见的
守护进程(daemon)
  • 前面是利用假脱机系统来实现打印机共享的一种方案,人们对该方案进行了某些修改,如取消该方案中的假脱机管理进程,为打印机建立一个守护进程,由它执行一部分原来由假脱机管理进程实现的功能,如为用户在磁盘缓冲区中申请一个空闲盘块,并将要打印的数据送入其中,将该盘块的首址返回给请求进程
  • 另一部分由请求进程自己完成,每个要求打印的进程首先生成一份要求打印的文件,其中包含对打印的要求和指向装有打印输出数据盘块的指针等信息,然后将用户请求打印文件放入假脱机文件队列(目录)中
  • 守护进程是允许使用打印机的唯一进程
    • 所有需要使用打印机进行打印的进程都需将一份要求打印的文件放在假脱机文件队列(目录)中
    • 如果守护进程正在睡眠,便将它唤醒,由它按照目录中第一个文件中的说明进行打印,打印完成后,再按照目录中第二个文件中的说明进行打印,如此逐份文件地进行打印,直到目录中的全部文件打印完毕,守护进程无事可做,又去睡眠
    • 等待用户进程再次发来打印请求
    • 除了打印机守护进程之外,还可能有许多其它的守护进程,如服务器守护进程和网络守护进程等
    • 事实上,凡是需要将独占设备改造为可供多个进程共享的设备时,都要为该设备配置一个守护进程和一个假脱机文件队列(目录)
    • 同样,守护进程是允许使用该独占设备的唯一进程,所有其它进程都不能直接使用该设备,只能将对该设备的使用要求写入一份文件中,放在假脱机目录中
    • 由守护进程按照目录中的文件依次来完成诸进程对该设备的请求,这样就把一台独占设备改造为可为多个进程共享的设备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

足球一代又一代得青春

世界杯由来 世界杯(World Cup)即国际足联世界杯,是世界上最高水平的足球赛事。 众所周知,现代足球起源于英国,随后风靡世界。由于足球运动的迅速发展,国际比赛也随之出现。1896年,第一届现代奥…

[附源码]计算机毕业设计的疫苗接种管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

Educational Codeforces Round 139 (Rated for Div. 2) D. Lucky Chains

翻译: 让我们命名一对正整数(𝑥,𝑦),幸运的是它们的最大公约数等于1 (gcd(𝑥,𝑦)1)。 让我们定义一个链(𝑥𝑦)引起的一系列双(𝑥𝑦)…

Vue中对获取数据、返回数据进行处理的wode总结

💭💭 ✨:Vue中对获取数据、返回数据进行处理的总结   💟:东非不开森的主页   💜: 也许,不负光阴就是最好的努力,而努力就是最好的自己。💜💜   &#x1f3…

Mybatis:MyBatis的分页插件(11)

Mybaits笔记框架:https://blog.csdn.net/qq_43751200/article/details/128154837 Mybatis中文官方文档: https://mybatis.org/mybatis-3/zh/index.html 分页插件1. 分页插件使用步骤2. 分页插件的使用2.1: 开启分页功能2.2: 分页相关数据2.3: 常用数据1.…

在小公司干测试5年,如今终于熬出头了,入职美团涨薪14K

你的努力,终将成就无可替代的自己,本科毕业后就一直从事软件测试的工作,和多数人一样,最开始从事功能测试的工作,我朋友看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要…

TongWeb7微服务适配方案

先介绍一下我们微服务项目的部署情况: 之前使用的是内置的Tomcat容器部署方式,运行项目使用的 java -jar 项目文件 方式,然后使用k8sdocker容器化部署。 还没了解TongWeb部署的同学们,可以看看我前面写的几个关于TongWeb本地部…

【有营养的算法笔记】巧解蛇形矩阵

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:有营养的算法笔记 ✉️分类专栏:题解 文章目录一、题目描述二、思路讲解三、代码实现一、题目描…

DevExpress ASP.NET and Blazor图表编制

DevExpress ASP.NET and Blazor图表编制 .NET 6现在是受支持的最低框架版本-此版本需要.NET 6和Microsoft Visual Studio 2022(v17.0)或更高版本。 图表编制 范围条形图-最小条形图大小-您现在可以使用新的minBarSize属性为范围条形图中显示的条形图指定最小大小。 数据可视化组…

RabbitMQ如何保证消息的可靠性

文章目录可靠性分析可靠性方案可靠性实现确认Exchange接收到消息确认Queue接收到消息保证Queue及其数据持久化保证消费者的正常消费重复消费问题消息丢失问题可靠性分析 RabbitMQ如何保证消息的可靠?如RabbitMQ基础概念中的架构模型 可以看到一条消息的传递过程&a…

还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅~

我们平时开发项目的时候,经常会需要远程调用下其他服务提供的接口,于是我们会使用一些HTTP工具类比如Hutool提供的HttpUtil。前不久SpringBoot 3.0发布了,出了一个Http Interface的新特性,它允许我们使用声明式服务调用的方式来调…

PreScan快速入门到精通第四十讲目标边界传感器

边界矩形传感器提供了关于传感器可检测物体的边界矩形的信息,并作为对摄像机输入的边界矩形算法的参考。一个例子是行人识别算法,该算法用于检测夜间、雾、雨或雪等恶劣照明条件下的行人。输出的检测到的边界矩形是按距离排序的--最近的在前。 注意:边界矩形传感器不检测(或…

Qt扫盲-QDoubleSpinBox理论总结

QDoubleSpinBox理论总结1. 简述2. 调值与值转换3. 信号4. 修饰&外观1. 简述 QDoubleSpinBox 主要是对于浮点数据的输入进行便捷的封装。QDoubleSpinBox和QSpinBox的使用基本一致,只是有些控制有些不同嘛。比如对于浮点数的小数点精度位数的控制啦。 QDoubleSpi…

第五章. 可视化数据分析图表—常用图表的绘制4—箱形图,3D图表

第五章. 可视化数据分析图 5.3 常用图表的绘制4—箱形图,3D图表 本节主要介绍常用图表的绘制,主要包括箱形图,3D柱形图,3D曲面图。 1.箱形图(matplotlib.pyplot.boxplot) 箱形图又称箱线图、盒须图或盒式…

你还在为 “动态规划” 发愁吗?看完本秘籍,带你斩杀这类题~

目录 前言 一、动态规划——解题思路 二、动态规划——模板以及题目 2.1、Fibonacci 2.2、字符串分割(Word Break) 2.3、三角矩阵(Triangle) 2.4、路径总数(Unique Paths) 2.5、最小路径和(Minimum Path Sum) 2.6、背包问题 2.7、回文串分割(Pa…

第08讲:使用脚手架创建vue项目

一、安装NodeJS 二、配置环境变量 2.1、软件安装完成之后配置npm的环境变量 第1步:获取npm安装位置 使用管理员身份打开CMD,用如下命令获取npm的安装位置: npm config list第2步:配置环境变量 将以上获取的路径保存到path变…

flask请求与响应、session执行流程

目录 请求对象 响应对象 session的使用和原理 闪现(flash) 请求扩展 蓝图 请求对象 请求对象request是全局的,需要导入这个全局的request,在哪个视图函数中就是当次的request对象 请求数据: request.method # 获取提交的方法 …

文件包含漏洞简介

今天继续给大家介绍渗透测试相关知识,本文主要内容是文件包含漏洞简介。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备…

一些好玩的js小作品

今天小编给大家带来了一些很实用的js小作品,下面请一看究竟。 1、计算详细年龄工具js脚本 2、检测是否安装Flash插件及版本号js脚本 3、无法查看源码的页面 4、面积换算js脚本 5、体积和容积换算js脚本 6、长度换算js脚本 7、重量换算js脚本 8、只能输入汉字…

记一些女装数据分析

文章目录服装维度女装生命周期门店维度常见度量值衍生指标服装维度 尺码:XS、S、M、L、XL颜色:黑、红、蓝、白……一级分类:上半身、下半身、全身季节:春、夏、秋、冬价格类型:正价、特价、折扣价、降价、优惠券…价格…