脱机I/O方式和假脱机系统

提示:在写这个博客的时候小编更加的觉得计算机基础知识的重要性了,而且对计算机的整个发展历程和计算机的底层工作原理特别感兴趣

脱机I/O方式和假脱机系统

  • 一、脱机I/O方式
  • 二、假脱机系统
    • 1、假脱机技术(SPOOLing, simulataneaus peripheral operating online)
    • 2、脱机系统的组成
    • 3、假脱机系统的特点
    • 4、假脱机打印系统


一、脱机I/O方式

  • 为了解决人机矛盾以及 CPU 和 I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机I/O技术。
  • 该技术是事先将装有用户程序和数据的纸带(卡) 装入纸带输入机,在一台外围机的控制下,把纸带上的程序和数据输入磁带。当CPU需要这些程序和数据时,再从磁带上将它们高速地调入内存。
  • 当CPU需要输出时,可先由CPU把数据直接从内存高速地送到磁带上,然后在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。
    在这里插入图片描述
  • 由于程序和数据的输入和输出都是在外围机的控制下完成的(它们都是在脱离主机的情况下进行的),故称为脱机I/O方式
  • 把在主机的直接控制下进行I/O的方式,称为联机I/O方式。
  • 脱机I/O方式的优点:
    • 减少了CPU的空闲时间。 装带、卸带以及将数据从低速I/O设备送到高速磁带上(或反之)的操作,都是在脱机情况下由外围机完成的,并不占用主机时间,因此有效减少了CPU的空闲时间。
    • 提高了I/O速度。 当CPU在运行中需要输入数据时,系统是直接高速磁带上将数据输入内存的,这极大地提高了I/O速度。

二、假脱机系统

  • 通过假脱机技术可以可以将一台物理I/O设备虚拟为多台逻辑I/O设备,这样就可以允许多个用户共享一台物理I/O设备。

1、假脱机技术(SPOOLing, simulataneaus peripheral operating online)

  • 当系统中引入多道程序技术后,系统便完全可以利用一道程序来模拟脱机输入时的外围控制机功能,进而把低速I/O设备上的数据传送到高速磁盘上;再利用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。
  • 该方式是在主机的直接控制下实现以前的脱机输入/输出功能,称为联机I/O方式

2、脱机系统的组成

  • 脱机技术是对脱机输入/脱机输出系统模拟,脱机系统建立在通道技术多道程序技术的基础上,以高速随机外存(通常为磁盘)为后援存储器,其由四部分组成。
    在这里插入图片描述
    • 输入#和输出#。
      • 这是在磁盘开辟出来的两个存储区域。
      • 输入#模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。
      • 输出#模拟脱机输出时的磁盘,用来收容用户程序的输出数据。
      • 输入#/输出#中的数据一般以文件的形式组织管理,我们把这些文件称为#文件。
      • 一个文件仅存放一个进程的输入(或输出)数据,所有进程的数据输入(或输出)文件可链接成一个输入(或输出)队列。
    • 输入缓冲区和输出缓冲区。
      • 内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。
      • 输入缓冲区用于暂存输入设备传送来的数据,之后再将其传送到输入#。
      • 输出缓冲区用于暂存从输出#传送来的数据,之后再将其传送到输出设备。
    • 输入进程和输出进程。
      • 输入进程,也称为预输入进程,用于脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入#。当CPU须输入数据时,直接从输入#读入内存。
      • 输出进程,也称为缓输出进程,用于模拟脱机输出时的外围控制机器,把用户要求输出的数据从内存传送(并存放)到输出#,待输出设备空闲时,再将输出#中的数据经输出缓冲区输出到输出设备。
    • #管理程序。
      • 用于控制作业与磁盘井之间信息的交换。
      • 当作业执行过程中向某台设备发出启动输入或输出操作请求时,由OS调用井管理程序,由该程序控制从输入井读取信息或将信息输出至输出井。

3、假脱机系统的特点

  • (1)提高了I/O速度。 这里对数据所执行的IO操作,已从对低速I/O设备执行的IO操作演变为对磁盘缓冲区中的数据进行的存取操作,如同脱机输入/脱机输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾。
  • (2)将独占设备改造为共享设备。 在假脱机打印机系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配了一个空闲盘块和建立了一张I/O请求表。这样,便把独占设备改造成了共享设备。
  • (3)实现了虚拟设备功能。宏观上,虽然多个进程在同时使用一台独占设备,但对于每个进程而言,它们都会认为自己独占了一个设备。当然,该设备只是逻辑上的设备。

4、假脱机打印系统

  • 假脱机打印机系统实现了将独占设备变换为若干台对应的逻辑设备的功能。
    在这里插入图片描述
  • 假脱机打印系统的组成:
    • ①磁盘缓冲区,是在磁盘上开辟的一个存储空间,用于暂存用户程序的输出数据,在该缓冲区中可以设置几个盘块队列,如空盘块队列、满盘块队列等。
    • ②打印缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾,设置在内存中,用于暂存从磁盘缓冲区发送来的数据,以后会再传送给打印设备进行打印。
    • ③假脱机管理进程和假脱机打印进程。由假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并把它放入假脱机文件队列中,由假脱机打印进程依次对队列中的文件进行打印。
  • 用户进程发出打印输出请求时:
    • ①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据放入其中;
    • ②为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。
    • 真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将要打印的数据由磁盘缓冲区传送到内存缓冲区,再交付打印机进行打印。一个打印任务完成后,假脱机打印进程将会再次查看假脱机文件队列,若队列非空,则重复上述工作,直至队列为空。此后,假脱机打印进程会将自己阻塞起来,仅当再次有打印请求时,其才会被重新唤醒运行。
  • 由此可见,利用假脱机系统向用户提供共享打印机的概念是:对每个用户而言,系统并非即时执行其程序输出数据的真实打印操作,而只是即时将数据输出到缓冲区,这时的数据并未真正被打印,只是让用户感觉系统已为他打印;真正的打印操作,是在打印机空闲且该打印任务在等待队列中已排到队首时进行的:而且,打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机。以上过程是对用户屏蔽的,即用户是不可见的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[NSSCTF Round#16 Basic] CPR

打着玩玩,比赛很简单。 Crypto pr 一个RSA题,n1p*q,n2q*r给了两个c和p,r而且flag经过pad用单因子无法解出。分别用p,r解完再取crt from Crypto.Util.number import * import randomflagplaintext NSSCTF{****************} charset abcdefghijklmn…

Open CASCADE学习|基于visual studio 2022编译源码

目录 1、简介 2、下载 2.1下载visual studio 2022 community 2.2下载下载cmake工具 2.3下载源码 2.4下载第三方插件 3、安装 3.1安装visual studio 2022 community 3.2安装cmake 4、编译源码 5、测试 1、简介 Open CASCADE(简称…

【b站咸虾米】新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址:【新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 三、vue语法 继续回到官…

python爬虫,验证码识别,携带cookies请求

古诗词网案例!!! 识别验证码类型: # 此处用到的图片验证码识别网址为:http://ttshitu.com/ 图鉴 import base64 import json import requests # 一、图片文字类型(默认 3 数英混合): # 1 : 纯数字 # 1001:纯数字2 # 2 : 纯英文 # 1002:纯英文2 # 3 : 数英混合 # 1003:…

GC6109——双通道5V低电压步进电机驱动芯片,低噪声、低振动,应用摄像机,机器人等产品中

GC6109是双通道5V低电压步进电机驱动器,具有低噪声、低振动的特点,特别适用于相机的变焦和对焦系统,万向节和其他精密、低噪声的STM控制系统。该芯片为每个通道集成了256微步驱动器。带SPl接口,用户可以方便地调整驱动器的参数。内…

【信号与系统】【北京航空航天大学】实验一、信号的MATLAB表示及信号运算

一、实验目的 1、初步掌握 MATLAB 仿真软件的使用; 2、学习使用 MATLAB 产生基本时域信号,并绘制信号波形; 3、学习利用 MATLAB 实现信号的基本运算; 4、利用 MATLAB 分析常用的连续时域信号。 二、实验内容 1、 生成连续信号 …

1、理解Transformer:革新自然语言处理的模型

目录 一、论文题目 二、背景与动机 三、卖点与创新 四、解决的问题 五、具体实现细节 0. Transformer 架构的主要组件 1. 注意力、自注意力(Self-Attention)到多头注意力(Multi-Head Attention) 注意力到底是做什么的&…

【问题探讨】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究

目录 主要内容 模型研究 结果一览 下载链接 主要内容 该模型以环境保护成本和运行成本为双目标构建了微电网优化调度模型,模型目标函数和约束条件复现文献《基于改进粒子群算法的微电网多目标优化调度》,程序的特点是采用非支配排序的蜣螂…

面试算法105:最大的岛屿

题目 海洋岛屿地图可以用由0、1组成的二维数组表示,水平或竖直方向相连的一组1表示一个岛屿,请计算最大的岛屿的面积(即岛屿中1的数目)。例如,在下图中有4个岛屿,其中最大的岛屿的面积为5。 分析 将岛屿…

如何将.NET 8.0的ASP.NET Core Web API部署成Windows服务

写在前面 前面写了一篇关于将.NET应用转换成Windows服务的方法,其实真正的目的是为了探索如何将Asp.Net Core Web Api 部署成Windows 服务。基于上一篇的基础,只需把创建 WebApplication 的代码放到 BackgroundService 的ExecuteAsync方法中即可。 其中…

【重学C语言】二、前期准备和第一个C程序

【重学C语言】二、前期准备和第一个C程序 1. VS 项目1.1 创建项目 2. Clion 项目(本博主主用)2.1 创建项目2.2 Clion 配置 3. 构建类型4. 构建模式5. 注释6. 第一个 C 程序7. 程序闪退8. 新手遇到的问题 1. VS 项目 1.1 创建项目 打开 VS 创建新项目 创建 main.c 书写以下…

高精度彩色3D相机:开启崭新的彩色3D成像时代

3D成像的新时代 近年来,机器人技术的快速发展促使对3D相机技术的需求不断增加,原因在于,相机在提高机器人的性能和实现多种功能方面发挥了决定性作用。然而,其中许多应用所需的解决方案更复杂,仅提供环境的深度信息是…

SQL语句案例

1、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 分析: 平均 avg---GROUP BY分组 从高到低--ORDER BY 所有学生的所有课程的成绩---行转列 所有学生----外联(所有)----RIGHT JOIN右联 SELECT s.sid, s.sname , 不…

linux 如何创建文件

我们在写一些教程的时候,经常会需要创建一些用于演示的文档,这些文档往往需要填充一些不特定的内容。那么如何快速的创建演示用的文档呢? docfaker.py docfaker.py是一个py脚本,用于创建一个简单的txt文档,docfaker.…

简单工厂模式、工厂方法、抽象工厂模式

下面例子中鼠标,键盘,耳麦为产品,惠普,戴尔为工厂。 简单工厂模式 简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。 比如下图中的鼠标工厂,专业生产鼠标&#xf…

基于springboot+vue2的课程教学考试系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

[情商-11]:人际交流的心理架构与需求层次模型

目录 前言: 一、心理架构 1.1 个体生理层 1.2 个体心理层 1.3 点对点人际交流层 1.4 社会网络层 1.5 社会价值层 二、人的需求层次模型 2.1 需求(欲望)层次模型 2.2 基因与人需求之间的关系 2.3 个体生理需求 2.4 个体的心理需求…

Unity——VContainer的依赖注入

一、IOC控制反转和DI依赖倒置 1、IOC框架核心原理是依赖倒置原则 C#设计模式的六大原则 使用这种思想方式,可以让我们无需关心对象的生成方式,只需要告诉容器我需要的对象即可,而告诉容器我需要对象的方式就叫做DI(依赖注入&…

leetcode刷题记录18(2023-08-29)【最短无序连续子数组(单调栈) | 合并二叉树(dfs) | 任务调度器(桶) | 回文子串(二维dp)】

581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入&am…

IT从业人员如何养生?

目前,电脑对人体生理和心理方面的负面影响已日益受到人们的重视。为此科学使用电脑,减少电脑和网络的危害是十分必要的。好代码网总结了一些it从业人员的保健知识,分享给大家。 一是要增强自我保健意识 工作间隙注意适当休息,一般…