假脱机技术Spooling和守护进程

news2024/9/25 9:37:54

文章目录

  • 假脱机系统Spooling和守护进程
    • 1.假脱机技术的引入
    • 2.SPOOling系统的组成
    • 3.SPOOling系统的工作过程
    • 守护进程

假脱机系统Spooling和守护进程

1.假脱机技术的引入

脱机技术: 为了缓和CPU的高速性与IO设备的低速性间的矛盾,而引入了脱机输入,脱机输出技术。该技术是利用专门的外围控制机,先将低速IO设备上的数据传送到高速磁盘上,或者相反。这样的处理机需要输入数据时,便可以直接从磁盘中读取数据,极大地提高了输入速度。反之,当处理机需要输出数据时,也可以以很快的速度将数据先输出到磁盘上,处理机便可去做自己的事情。

假脱机技术: 当系统引入多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时外围控制机的功能,把低速IO设备上的数据传送到高速磁盘上。再利用另外一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。这样便可在主机的直接控制下,实现以前的脱机输入,输出功能。此时的外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作技术称为SPOOling技术,或称为假脱机技术。通过假脱机技术可以将一台物理IO设备虚拟为多台逻辑IO设备,允许多个用户共享一台物理IO设备。

2.SPOOling系统的组成

在这里插入图片描述

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

3.SPOOling系统的工作过程

以假脱机打印系统为例:

  • 每当用户进程发出打印输出请求时,假脱机打印机系统并不是立即把打印机分配给该用户进程,而是由假脱机管理进程完成两项工作:
    • ①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存
    • ②为用户进程申请一张空白的用户请求打印表,并将该用户的打印要求填入其中,再将该表挂到假脱机文件队列上。
    • 在完成了这两项工作后,虽然还没有进行任何实际的打印输出,但是对于用户而言,其打印请求已经得到了满足,打印输出任务已完成。所以可以称为后台打印
  • 真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的打印要求将要打印的数据由输出井传送到内存缓冲区,再交互打印机进行打印。
  • 一个打印任务完成后,假脱机打印进程再次查看假脱机文件队列,若队列非空,则重复上述工作,直至队列为空,此后假脱机打印进程将自己阻塞起来,仅当再次有打印请求时,才被重新唤醒运行。

总结:在假脱机打印系统下,对于每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统正在为自己打印;真正的打印操作是在打印机空闲且该打印任务在等待队列中已排到队首时进行的,而且打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机。以上过程对于用户来讲是透明的,所以对用户来讲完成了把一台IO设备虚拟成多台IO设备的逻辑实现。

守护进程

凡是需要将独占设备改造为可供多个进程共享的设备时,都要为该设备配置一个守护进程和一个假脱机文件队列(目录)。守护进程是允许使用该独占设备的唯一进程,其它所有进程都不能直接使用该设备,只能将对该设备的使用要求写入一份文件中,放在假脱机目录中。由守护进程按照目录中的文件依次来完成诸进程对该设备的请求,这样就把一台独占设备改造为可为多个进程共享的设备。

在假脱机打印系统中,如果采用守护进程的方式,则将假脱机管理系统更换为为打印机建立一个守护进程,

  • 它可以为用户在磁盘缓冲区中申请一个空闲盘块,并将要打印的数据送入其中,将该盘块的首地址返回给请求进程;
  • 然后每个要打印的进程首先生成一份要求打印的文件,其中包含对打印的要求和指向装有打印输出数据盘块的指针等信息
  • 然后将用户请求打印文件放入假脱机文件队列(目录)中
  • 守护进程是允许使用打印机的唯一进程,当有要求打印的文件进入假脱机文件队列时,如果守护进程正在睡眠则将它唤醒
  • 由守护进程按照目录中第一个文件的说明进行打印,打印完成后再按照第二个文件中的说明进行打印,如此逐份地进行打印直到目录中的全部文件打印完毕,守护进程无事可做再去睡眠,等待新的打印请求到来。

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

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

相关文章

Objective-C 中类和对象的基本使用 方法的调用(消息传递)

总目录 iOS开发笔记目录 从一无所知到入门 文章目录Intro截图自定义类型的interface部分和implementation部分main方法中的类型调用部分Demo测试代码输出Intro Objective-C,具有面向对象特性的C。 但其实,它的面向对象和其他高级语言相比,还…

【C++】C++的内存模型之四大分区

程序的内存模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值&…

CIMCAI intelligent tally shore AI auto container damage detect

全球港航人工智能/集装箱人工智能领军者CIMCAI,世界首创港口岸边超级智能理货产品自动化AI验箱,AI自动化码头港口数字化港口。中集飞瞳CIMCAI领跑全球港口码头人工智能科技,领先集装箱箱况残损识别科技全方位提升港口码头效能。集装箱残损可能…

剑指 Offer 68 - I. 二叉树的最近公共祖先

摘要 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 剑指 Offer 68 - II. 二叉树的最近公共祖先 一、二叉搜索树的最近公共祖先 注意到题目中给出的是一棵二叉搜索树,因此我们可以快速地找出树中的某个节点以及从根节点到该节点的路径,例如我们需要找…

2023年金三银四必备软件测试常见面试题1500问!!!

十九、持续集成19.1 jenkins ant jmeter svn接口自动化测试?jenkins ant jmeter svn环境搭建原来这个环境是我这边搭建的,主要是几个步骤,第一Jenkins安装、第二,ant安装、第三,jmeter安装、第四,jmeter与ant连…

HTML基础(1)

HTML基础HTML基本介绍编辑工具HTML概述多如牛毛的标签头部标签&#xff1a;标题与段落标签&#xff1a;br换行符&#xff1a;a href超链接标签&#xff1a;< meta > 元素标签&#xff1a;主体标签HTML注释&#xff1a;水平线标签hr&#xff1a;段落标签p&#xff1a;文本…

[ 常用工具篇 ] 多媒体视频处理工具 ffmpeg 安装使用详解

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

【python学习笔记】:字符串编码转换

在 Python 中&#xff0c;有 2 种常用的字符串类型&#xff0c;分别为 str 和 bytes 类型&#xff0c;其中 str 用来表示 Unicode 字符&#xff0c;bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。 Python encode()方法 …

软件工程(4)--螺旋模型

前言 这是基于我所学习的软件工程课程总结的第四篇文章。 在软件开发过程中必须及时识别和分析风险&#xff0c;并且采取适当措施以消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险&#xff0c;一种行…

LeetCode 725. 分隔链表

LeetCode 725. 分隔链表 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 给你一个头结点为 headheadhead 的单链表和一个整数 kkk &#xff0c;请你设计一个算法将链表分隔为 kkk 个连续的部分。 每部分的长度应该尽可能的相等&#xff1a;任意两部分的长度差…

〖产品思维训练白宝书 - 核心竞争力篇⑯〗- 产品经理核心竞争力解读之如何学习的又快又好并学以致用

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

前端算法codewhy第一章: 邂逅数据结构与算法

第一章: 邂逅数据结构与算法 编程的真相 – 数据的处理 数据结构与算法的本质 学习数据结构与算法到底有什么实际应用&#xff1f; 源码中的数据结构 如何学习数据结构与算法&#xff1f; TypeScript常见数据结构与算法 到底什么是数据结构 什么是数据结构&#xff08;Data Str…

数据库系统之并发控制(重点标记)

1. 并发控制概述 事务是并发控制的基本单位&#xff0c;并发控制机制的任务是&#xff1a; 对并发操作进行正确调度。保证事务的隔离性。保证数据库的一致性。 数据不一致及其原因 并发操作带来的数据不一致性主要包括丢失修改&#xff0c;不重复读和读“脏”数据。产生三类数…

Appium自动化测试 Inspector定位Webview/H5页面元素

目录操作步骤Python操作该混合App代码Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 FQ 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法FQ, 而且还需要Android设备安装Google框架以及手机版Chrome浏览器以及相应的…

图片分类 STL-10 数据集下载及使用指南

转载自安全验证 - 知乎 这次给大家介绍的 STL10数据集&#xff0c;是图片分类任务早期常用的基准数据集之一&#xff0c;虽然只有10种样本&#xff0c;图片尺寸也偏小&#xff0c;但是标注类型比较平衡&#xff0c;各种种类都有各500张&#xff08;train&#xff09;/800张&am…

深度解析linux的文件系统

背景&#xff1a;虚拟文件系统&#xff08;有时也称作虚拟文件交换&#xff0c;更常见的是简称VFS)作为内核子系统&#xff0c;为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件系统不但依赖VFS共存&#xff0c;而且也依靠VFS系统协同工作。通过虚拟文件系统&…

动态规划(一):01背包问题和完全背包问题

动态规划 目录动态规划1.01背包问题1.1题目介绍1.2思路一介绍(二维数组)1.3思路二介绍(一维数组) 空间优化1.4思路三介绍(输入数据优化)2.完全背包问题2.1题目描述&#xff1a;2.2思路一(朴素算法)2.3思路二(将k优化处理掉)2.4思路三(优化j的初始条件)总结1.01背包问题 1.1题目…

求职-进度

2-23 投递 恒生校招 C https://campus.hundsun.com/personal/deliveryRecord 投递 合合信息 大数据开发工程师 https://intsig.zhiye.com/personal/deliveryRecord 投递 尚游网络 游戏服务器开发工程师 https://app.mokahr.com/campus_apply/shangyou/36582?recommendCodeDS…

项目管理中,哪些信息差是不应该存在的呢?

在项目管理中&#xff0c;如果存在信息差&#xff0c;那么就会存在了巨大的问题&#xff0c;从而导致项目的失败。 项目管理中哪些信息差是不应该存在的呢&#xff1f; 1、项目背景 项目经理接手项目&#xff0c;首先要了解清楚项目背景&#xff0c;避免在项目过程中对自己…

计算句子向量相似度:SentenceBert和SimCSE

SentenceBert Sentence-BERT: 如何通过对比学习得到更好的句子向量表示 - 哔哩哔哩 (bilibili.com) (229条消息) Sentence-BERT详解_数学家是我理想的博客-CSDN博客_sentence-bert 动机&#xff1a; 直接把2个句子串联起来输入Bert做分类&#xff08;即Cross-Encoder方式&…