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

守护进程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值