当前位置: 首页 > news >正文

Spooling的原理

脱机技术

程序猿先用纸带机把自己的程序数据输入到磁带中,这个输入的过程是由一台专门的外围控制机实现的。之后CPU直接从快速的磁带中读取想要的这些输入数据。输出也类似。
请添加图片描述

假脱机技术(Spooling技术)

即用软件的方式来模拟脱机技术。要实现Splooling技术必须要有多道程序技术的支持,系统会建立“输入进程”和“输出进程”
请添加图片描述

  • 输入井:模拟脱机输入时的磁带,用于收容I/O设备输入的数据
  • 输出井:模拟脱机输出时的磁带,用于收容用户进程输出的数据
  • 输入进程:用软件的方式模拟脱机输入时的外围控制机(将要输入的数据放到磁盘中模拟输入磁带的输入井中)
  • 输出进程:用软件的方式模拟脱机输出时的外围控制机(从磁盘中模拟输出磁带的输出井取出数据输出到设备上)
  • 输入缓冲区:在输入进程的控制下,输入缓冲区用于暂存从输入设备输入的数据,之后再转存到输入井中
  • 输出缓冲区:在输出进程的控制下,输出缓冲区用于暂存从输出井送来的数据,之后再传送到输出设备上

举个例子:共享打印机

请添加图片描述

当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但并不是真正把打印机分配给它们,而是由假脱机管理进程为每个进程做两件事:

  1. 在磁盘的输出井中为进程申请一个空闲缓冲区,并将要打印的数据送入其中
  2. 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上

当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。

因为每个进程提出打印请求时,系统都会在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享

采用Spooling技术的计算机系统,其实并不需要外围控制机,因为它实际上是建立输入进程来模拟脱机输入时的外围控制机,建立输出进程来模拟脱机输出时的外围控制机的。并不是物理上的外围控制机,而是用软件模拟实现的

http://www.lryc.cn/news/147959.html

相关文章:

  • Homebrew 无法安装过时的PHP版本
  • python爬取bilibili,下载视频
  • java八股文面试[多线程]——进程与线程的区别
  • SpringBootWeb 登录认证[Cookie + Session + Token + Filter + Interceptor]
  • d3dcompiler_43.dll丢失怎么修复,分享几种修复d3dcompiler_43.dll的方法
  • mqtt集群搭建并使用nginx做负载均衡_亲测得结论
  • JavaScript—DOM(文档对象模型)
  • mysql Index
  • ​八路参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.
  • Leetcode Top 100 Liked Questions(序号75~104)
  • Shell编程之流程控制
  • 什么是Python爬虫分布式架构,可能遇到哪些问题,如何解决
  • QT下使用ffmpeg+SDL实现音视频播放器,支持录像截图功能,提供源码分享与下载
  • Microsoft Excel整合Python:数据分析的新纪元
  • 【前端代码规范】
  • postgresql-日期函数
  • Android11去掉Setings里的投射菜单条目
  • fnm(Node.js 版本管理器)
  • Apipost:为什么是开发者首选的API调试工具
  • Echarts图表坐标轴文字太长,省略显示,鼠标放上显示全部(vue)
  • C语言控制语句——跳转关键字
  • C#,《小白学程序》第五课:队列(Queue)
  • 【【萌新的STM32学习25--- USART寄存器的介绍】】
  • SpringBootWeb案例 Part 5
  • 【ES6】Promise.race的用法
  • PMP - 敏捷 3355
  • Mapbox-gl 关闭所有Popup,以及关闭按钮出现黑色边框bug
  • RE:从零开始的车载Android HMI(四) - 收音机刻度尺
  • 评估安全 Wi-Fi 接入:Cisco ISE、Aruba、Portnox 和 Foxpass
  • java 泛型作为方法的返回值的封装