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

news2024/11/21 0:25:14

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

脱机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.coloradmin.cn/o/1375099.html

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

相关文章

一日难再晨及时当勉励 date

文章目录 Linux shell 获取更改系统时间默认输入显示时区世界协调时格式化日期更多信息 Linux shell 获取更改系统时间 … note:: 时光只解催人老,不信多情,长恨离亭,泪滴春衫酒易醒。 - 晏殊《采桑子时光只解催人老》date命令可以用来打印…

GPT 商店强势来袭,人人都要有自己的 GPTs

作者:苍何,前大厂高级 Java 工程师,阿里云专家博主,CSDN 2023 年 实力新星,土木转码,现任部门技术 leader,专注于互联网技术分享,职场经验分享。 🔥热门文章推荐&#xf…

Python学习从0到1 day1 你好 Python

我会在那腥臭腐朽的日子里熠熠生辉 ——24.1.11 1.第一个Python程序 安装python程序,输出第一个程序:你好,世界 print("Hello World"); 2.Python解释器 python解释器,是一个计算机程序,用来翻译python代码,并提交给计算机执行 功能:1.翻译代码 2.提交给计算机…

快速打通 Vue 3(四):标签的 ref 属性与 Vue3 生命周期

很激动进入了 Vue 3 的学习,作为一个已经上线了三年多的框架,很多项目都开始使用 Vue 3 来编写了 这一组文章主要聚焦于 Vue 3 的新技术和新特性 如果想要学习基础的 Vue 语法可以看我专栏中的其他博客 Vue(一):Vue 入…

【Unity】Joystick Pack摇杆插件实现锁四向操作

Joystick Pack ​ 简介:一款Unity摇杆插件,非常轻量化 ​ 摇杆移动类型:圆形、横向、竖向 ​ 摇杆类型: Joystick描述Fixed固定位置Floating浮动操纵杆从用户触碰的地方开始,一直固定到触碰被释放。Dynamic动态操纵…

6个Linux进程管理命令

这些命令允许你查看、监视和控制 Linux 系统上运行的进程。这对确定资源使用情况和停止行为不端的程序非常有用。 1. ps – 报告当前进程概览 使用ps,您可以查看当前shell会话正在运行的进程。它打印有关正在运行的程序的有用信息,如进程ID、TTY&#…

使用微信读书高效阅读论文,自带翻译功能。

下面以“向文本到图像扩散模型添加条件控制”(Adding Conditional Control to Text-to-Image Diffusion Models)这篇论文示例下阅读效果。 论文地址:https://arxiv.org/abs/2302.05543 选择右侧的download PDF, 然后进入论文预览页面&#x…

一、Sharding-JDBC系列01:整合SpringBoot实现分库分表,读写分离

目录 一、概述 二、案例演示-水平分表 (1)、创建springboot工程 (2)、创建数据库和数据表 (3)、application.yaml配置分片规则 (4)、测试数据插入、查询操作 4.1、插入-控制台SQL日志 4.2、查询-控制台SQL日志 三、案例演示-水平分库 (1)、创建数据库和数据表 (2…

延时任务的解决方案

延时任务的解决方案 1.数据库轮询2. JDK的延迟队列3.netty时间轮算法4.使用消息队列 1.数据库轮询 该方案通常是在小型项目中使用,即通过一个线程定时的去扫描数据库,通过订单时间来判断是否有超时的订单,然后进行update或delete等操作 代码示…

蓝桥杯练习题(二)

📑前言 本文主要是【算法】——蓝桥杯练习题(二)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 …

关于CAD导入**地球的一些问题讨论

先上示例: 上图是将北京王佐停车场的红线CAD图导入到图新地球效果,如果看官正是需要这样的效果,那么请你继续往下看,全是干货! 在地球中导入CAD图可以做为电子沙盘。对于工程人来说,是极有帮助的。以前一直用谷歌地球,大约在2020年左右,就被和谐了。当时感觉挺可惜的。…

基于OpenMV与STM32的数据通信项目(代码开源)

前言:本文为手把手教学 OpenMV 与 STM32 的数据通信项目教程,本教程使用 STM32F103C8T6 与 OpenMV 进行操作。 OpenMV 是非常强大的计算机视觉实现工具,自身提供了非常多的视觉项目案例,编程与使用门槛极低。为了进一步增强作品的…

【阅读笔记】Chain of LoRA

一、论文信息 1 论文标题 Chain of LoRA: Efficient Fine-tuning of Language Models via Residual Learning 2 发表刊物 arXiv2023 3 作者团队 Department of Computer Science, Princeton University School of Computer Science and Engineering, Nanyang Technologic…

MySQL基础笔记(3)DML数据操作语句

顾名思义,全称是数据操作语言,用来对数据库中表的数据记录进行增删改操作~ 目录 一.添加数据 1.给指定字段添加数据 2.给全部字段添加数据 3.批量添加数据 二.修改数据 三.删除数据 一.添加数据 1.给指定字段添加数据 insert into 表名 (字段名…

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CNN-BiLSTM-KDE多…

【开源】基于JAVA语言的婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

第8章-第2节-Java中流的简单介绍

1、什么是流 我们可以先想象水流是怎样的?溪水不断流动,最终融入大海;我们今天的学习IO其实如同水流一样,当我们读取文件信息或者写入信息时,如同水流一样,不断读取或者写入,直到业务流程结束。…

【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景: 最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报…

Cylinder3D论文阅读

Cylindrical and Asymmetrical 3D Convolution Networks for LiDAR Segmentation(2020年论文) 作者:香港中文大学 论文链接:https://arxiv.org/pdf/2011.10033.pdf 代码链接:https://github.com/xinge008/Cylinder3D …

基于Springboot的课程答疑系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的课程答疑系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…