SPOOLing技术详解,结合实际场景让你了解什么是假脱机技术。

news2024/11/27 1:38:58

SPOOLing技术

​ 在手工操作阶段,主机直接从I/O设备获取数据,但是由于设备速度很慢,主机速度很快。人机速度矛盾明显,主机需要浪费很多时间来等待设备。

在这里插入图片描述

  1. 什么是脱机技术,脱机技术可以解决什么问题?

    所谓脱机技术,就是脱离主机的控制进行的输入输出操作。

    • 缓解慢速设备与主机间的速度矛盾。批处理阶段引入了脱机技术(用磁带完成),在设备和主机之间引入了外围控制机和磁带。在外围控制机的控制下,慢速设备的数据会预先被写入到更快速的磁带上,之后主机就可以从快速的磁带上读取数据,从而缓解了慢速输入输出设备和主机之间的速度矛盾。

    • 提高CPU利用率。即使CPU在忙碌,也可以提前将数据输入到磁带;即使慢速的输出设备正在忙碌,也可以提前将数据输出到磁带。
      在这里插入图片描述

  2. 假脱机技术

    • SPOOLing技术的核心思想

      将数据生成和数据处理之间的依赖关系解耦(脱机),使得它们可以独立进行。这种解耦(脱机)使得系统能够更灵活地处理任务,提高了效率和响应能力,同时减少了对资源的竞争

    • 实现原理

      假脱机技术又称为SPOOLing技术,SPOOLing技术只是借鉴了脱机技术的异步思想,千万不要将两者混在一起去思考。SPOOLing组成可以参考下图:

      • 输入进程和输出进程

        输入进程和输出进程来模拟脱机技术的外围控制机。

      • 输入缓冲区和输出缓冲区

        输入缓冲区:是输入进程用来暂存输入数据的缓冲区。有的同学可能会有疑问,输入进程直接将数据放在输入井不就行了,多一个输入缓冲区不是多此一举吗?其实并不是这样的,因为如果输入设备频繁的输入处理起来很耗时但只是占用几个字节的数据或指令,那输出进程每次在输入后都要去进行磁盘I/O的话,这样也会增加很多开销的。但如果有了输入缓冲区的话,就会减少I/O次数,从而减少时间开销。

        输出缓冲区:输出进程将数据从输出井取出后会暂存到此缓冲区。输出缓冲区的作用同样也是为了减少磁盘的I/O。

      • 输入井和输出井

        输入井:用于存放输入数据的空间。

        输出井:用于存放输入数据的空间。

    • 应用场景

      • 当输入设备频繁的输入处理起来复杂但不需要及时响应的数据或指令时,输入进程可以将这些数据或指令先放在输入井中。比如现在输入设备是商品扫码枪,当出库员扫码后会进行扣减库存,生成出库单据等数据信息,而生成这些数据往往是比较耗时的。但是如果采用SPOOLing技术的话,扫码枪只需要确定将商品码通过输入进程存储到数据井后就可以继续扫描了。至于扣减库存、生成出库单据等动作,CPU只需要逐个从输入井中获取商品信息来完成,同时这样也防止了对CPU资源的竞争。

      • 像一些分布式的场景,比如输入设备输入处理复杂、量级非常大但不需要及时响应的数据时,根据SPOOLing技术可以设计微服务解决方案:搭建输入服务对接输入设备,搭建存储服务器A用来存储输入数据,搭建计算服务来处理和计算数据,搭建存储服务器B用来存储输出数据,搭建输出服务将数据从存储服务器B输出到设备。

  3. 共享打印机的原理分析。

    ​ 这是个经典案例,所以抽出来记录一下。打印机大家都接触过,这个设备肯定是一个独享式的设备,因为一旦共享,不同用户间的打印内容可能就会掺杂在一起。但是我们可以使用SPOOLing技术将打印机变成一个在用户看来是共享的设备。

    ​ 目前市面上的很多打印机都是有嵌入打印系统的。如果没有嵌入打印系统的话,就需要单独的一台PC或服务器来运行打印系统,然后线缆连接到打印机上了,其实和嵌入打印系统是一样的。在这里只考虑有嵌入打印系统的打印机。

    ​ 在企业中,我们只需要将PC连接到打印机上,然后打开文档点击打印,PC会将打印任务提交到打印机系统。打印机系统会处理以下三件事情:

    • 在磁盘输出井中为进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将打印任务要打印的数据送入其中。

    • 为打印任务申请一张空白的打印请求表,并将打印请求填入表中(其实就是用来说明打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。

    • 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务。

      在这里插入图片描述

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

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

相关文章

大数据测试:Charles修改响应数据

上一篇大数据测试:Fiddler修改响应数据-CSDN博客 ,有同学反馈有没有Charles的方式修改响应数据,本篇就是Charles修改数据操作步骤,相比较fiddler,Charles相对简单,便捷,我很喜欢 1、背景&…

【笔记】【YOLOv10图像识别】自动识别图片、视频、摄像头、电脑桌面中的花朵学习踩坑

(一)启动 创建环境python3.9 打开此环境终端 (后面的语句操作几乎都在这个终端执行) 输入up主提供的语句:pip install -r requirements.txt 1.下载pytorch网络连接超时 pytorch网址: Start Locally | P…

java -jar 命令自动重启 Java 项目

一、java -jar 方式运行项目 重启Java项目通常意味着你需要先停止当前运行的Java进程,然后再次启动它。下面是在CentOS上执行这些步骤的一种常见方法: 停止Java进程 找到Java进程的PID: 使用ps命令配合grep来查找运行中的Java进程的PID&#…

【Java SE 】封装 的特性 和 static 详解

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 目录 1. 封装的概念 1.1 一个例子 2. 访问权限控制符 3. 包的概念 3.1 import 导入 3.2 常见的包 4. static 静态成员 4.1 static 使用情况 4.2 static 修…

> Invalid revision: 3.22.1-g37088a8-dirty

Android项目使用cmake 3.22.1,编译时报错: > Invalid revision: 3.22.1-g37088a8-dirty解决方法一: 升级Gradle版本和AGP的版本; 建议使用AS推荐的版本: 目前可运行的版本配置: AS:Jel…

champ模型部署指南

一、介绍 champ是由阿里巴巴、复旦大学和南京大学的研究人员共同提出的一种基于3D的将人物图片转换为视频动画的模型,该方法结合了3D参数化模型(特别是SMPL模型)和潜在扩散模型,能够精确地捕捉和再现人体的3D形状和动态,同时保持动画的时间一…

读书读到NOBEL

最近在读陈逸鹤的《程序员的自我修养》这本书,里面有这么一段话: “远古时代的人们只能创造出用于猎捕的长矛,而今天借助来自各行各业人 们的智慧,我们可以制造出高铁、大型飞机,并探索宇宙。但要更进一步解决人类所面…

2024_E_100_连续字母长度

连续字母长度 题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母。 第二行为…

GPT-4o canvas不是对cursor的颠覆,而是人与AI交互的新探索

谈一下Openai新发布的canvas。 关于这个产品的介绍不多说了&#xff0c;网上已经有很多&#xff0c;主要谈下我对它以及相似竞品的比较&#xff0c;以及我的一些看法。 1、vs Claude Artifacts&#xff1a;是chatbot编程方面直接竞品&#xff0c;不过现阶段还是有很大的区别。…

二百六十八、Kettle——同步ClickHouse清洗数据到Hive的DWD层静态分区表中(每天一次)

一、目的 实时数仓用的是ClickHouse&#xff0c;为了避免Hive还要清洗数据&#xff0c;因此就直接把ClickHouse中清洗数据同步到Hive中就行 二、所需工具 ClickHouse&#xff1a;clickhouse-client-21.9.5.16 Kettle&#xff1a;kettle9.2 Hadoop&#xff1a;hadoop-3.1.3…

TH-OCR:强大的光学字符识别工具与车牌识别应用

在当今数字化的时代&#xff0c;高效准确地识别文本和图像中的字符变得至关重要。TH-OCR&#xff08;清华 OCR&#xff09;作为一款优秀的光学字符识别软件&#xff0c;以其卓越的性能和广泛的应用场景&#xff0c;受到了众多用户的青睐。其中&#xff0c;车牌识别功能更是在交…

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 首先新建基于Arduino UNO的protues工程&#xff0c;见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…

一、go入门

go入门 Go历史1.1 诞生时间1.2 里程碑1.3 团队核心人员 2. 为什么使用Go3. 安装Go5. 入门案例6. 开发工具 Go历史 1.1 诞生时间 Go 语言起源 2007 年&#xff0c;并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目&#xff0c;即相关员工利用…

MATLAB小波变换图像融合系统

二、应用背景及意义 本课题利用小波变换进行图像的融合&#xff0c;然后对融合的结果进行图像质量的评价。所谓小波变换图像融合就是对多个的信息目标进行一系列的图像提取和合成&#xff0c;进而可以获得对同一个信息目标的更为精确、全面、可靠的高低频图像信息描述。并且也…

Vue2项目-二进制流预览

一、docx文档 软件&#xff1a;docx-preview&#xff1b; 版本&#xff1a;"^0.1.20"&#xff1b; 1、安装docx-preview npm i docx-preview0.1.20 2、组件配置 <template><div ref"wordContainer"></div> </template><s…

java集合进阶篇-《泛型通配符及其练习》

个人主页→VON 收录专栏→java从入门到起飞 目录 一、前言 二、泛型通配符简要概述 基本概念 无界通配符 (?)&#xff1a; 上限通配符 (? extends T)&#xff1a; 下限通配符 (? super T)&#xff1a; 三、思考 四、综合练习 Animal类及其javabeen Cat类 Dog类 H…

04 设计模式-创造型模式-建造者模式

建造者模式是一种创建型设计模式&#xff0c;它允许你创建复杂对象的步骤与表示方式相分离。 建造者模式是一种创建型设计模式&#xff0c;它的主要目的是将一个复杂对象的构建过程与其表示相分离&#xff0c;从而可以创建具有不同表示形式的对象。 设计模式&#xff0c;最近…

1. 安装框架

一、安装 Laravel 11 框架 按照官方文档直接下一步安装即可 1. 安装步骤 2. 执行数据库迁移 在.env文件中提前配置好数据库连接信息 php artisan migrate二、安装 Filament3.2 参考 中文文档 进行安装 1. 安装 拓展包 composer require filament/filament:"^3.2" -W…

操作系统 和 初识进程

目录 操作系统&#xff08;OS&#xff09; 进程 操作系统&#xff08;OS&#xff09; 概念 操作系统即os&#xff0c;是一款软件。 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。 操作系统的本质是一种进行软硬件管理的软件 笼统的理解&#xf…

Linux服务器前后端项目部署vue+springboot—搭建服务器上的运行环境(JDK、Redis、MySQL、Nginx)

Linux服务器前后端项目部署—①搭建服务器上的运行环境 一、系统参数信息和使用工具 1、服务器信息 华为云 CenteOS7.8 64 配置信息&#xff1a;2核4G 2、使用工具 Xshell6 二、环境安装和配置 &#xff08;一&#xff09;JDK的下载和安装 1、创建一个新目录或者进入目…