您现在的位置是:首页 > 正文

假脱机技术Spooling和守护进程

2024-04-01 04:45:30阅读 4

假脱机系统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设备的逻辑实现。

守护进程

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

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

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

网站文章

  • linux centos 安装svn,在CentOS 6.3中安装与配置SVN的方法

    安装说明系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件检查已安装版本复制代码代码如下:#检查是否安装了低版本的SVN...

    2024-04-01 04:45:22
  • Puppeteer万物皆可爬

    Puppeteer万物皆可爬

    puppeteer 是一个Chrome官方出品的headless Chrome node库。它提供了一系列的API, 可以在无UI的情况下调用Chrome的功能, 适用于爬虫、自动化处理...

    2024-04-01 04:44:44
  • gin post 数据参数_golang--gin获取post里body的参数

    以下内容转载自https://blog.csdn.net/weixin_36344862/article/details/111932206如题,post发送数据有几种形式,form和流是最常用的。特...

    2024-04-01 04:44:32
  • 前端实现图片下载的方法

    在任何方案下,前端都无法绕过跨域的限制,所以需要图片所在的服务器对你当前域名开放权限,否则是无法下载的,最多能做到查看图片。1、直接使用a标签的download属性。2、canvas对象+a标签。3、ajax请求(blob或base64格式)+a标签。4、domtoimage+a标签。5、form表单。6、iframe。

    2024-04-01 04:43:51
  • mybatis运行原理详解

    mybatis运行原理详解

    第一部分:项目结构user_info表:没什么好说的就3个字段User实体类:@Datapublic class User { private Long id; private Strin...

    2024-04-01 04:43:44
  • Leetcode刷题详解——子集

    Leetcode刷题详解——子集

    在递归时我们需要保证递归结束时当前的状态与进行递归操作前的状态不变,而当我们在选择进行步骤2进行递归时,当前状态会发生变化,因此我们需要在递归结束时撤回添加操作,即进行回溯。数组一定存在2^(数组长度...

    2024-04-01 04:43:36
  • 计算机毕业设计/课程设计系列基于SpringBoot的校园问答论坛管理系统

    计算机毕业设计/课程设计系列基于SpringBoot的校园问答论坛管理系统

    本课程演示的是一款基于SpringBoot的校园问答论坛管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。1. 包含:项目源码、项目文档、数据库脚本、软件工具等...

    2024-04-01 04:43:28
  • DVWA渗透测试演示(中)

    DVWA渗透测试演示(中)

    续DVWA渗透测试演示(上):六、DVWA之FileInclusion:(1)实验原理:PHP文件包含漏洞的产生原因是在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预料之外...

    2024-04-01 04:42:53
  • [计算机网络]应用层协议,HTTP,SMTP,DNS

    [计算机网络]应用层协议,HTTP,SMTP,DNS

    应用层应用层协议原理网络应用程序体系结构规定如何在各种端系统上组织应用程序,由研发者设计客户机/服务器服务器:对外提供服务的一系列硬件和软件客户机:使用服务器提供的服务服务器7*24小时提供服务永久性...

    2024-04-01 04:42:47
  • VS 2005中使用C#创建及调用WebService完整实例

    关于WebService的概念及相关说明,在这里就不多说了,直接说如何实现IIS配置安装IIS(Windows 默认安装即可),确认可以从其他IP访问本机的默认主页,安装ASP.NET 2.0到IIS...

    2024-04-01 04:42:40