输入输出系统

  • I/O设备:输入输出和存储功能的设备

 

  • I/O设备的分类

按传输的速度:

低速设备(如键盘、鼠标、语音输入输出设备)  中速设备(如行式打印机、激光打印机等)

高速设备(如磁带机、磁盘机、光盘机等)。

 

设备按信息交换的单位分类

块设备:用于存储信息。对于信息的存取总是以数据块为单位。典型例子是磁盘。该类设备基本特征是传输速率较高,另一特征是可寻址。

字符设备:用于数据的输入和输出。基本单位是字符。如交互式终端、打印机等。其基本特征是传输速率较低,另一特征是不可寻址。

 

设备按其共享属性分类

独占设备:指在一段时间内只允许一个用户、进程访问的设备,即临界资源。应互斥的访问之。

共享设备:指在一段时间内允许多个进程同时访问的设备。对每一时刻而言仍然是一个进程访问。如磁盘。

虚拟设备:指通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户(进程)同时使用。

 

设备按其使用特性分类:

存储设备、输入\输出设备

 

  • I/O通道

其主要目的是为了建立独立的I/O操作,去解放CPU。在设置通道后,CPU只需向通道发送一条I/O指令。通道完成任务后向CPU发中断信号。

控制功能:CPU与设备控制器

数据传输:内存与外设

  • I/O控制方式

  1. 程序I/O方式,使用轮询的可编程I/O方式。CPU浪费
  2. 终端驱动I/O方式,使用中断的可编程I/O方式。CPU用较短的时间进行中断处理。
  3. 直接存储器访问方式(MDA),以数据块为单位,高效。缺点:不连续的数据块,不能一次处理
  4. I/O通道控制方式,通道时硬件,配合着通道程序
  • 设备分配

  1. 前提:大中型计算机
  2. DS:设备控制表、控制器控制表、通道控制表、系统设备表
  3. 独占设备分配步骤:分配设备、分配控制器、分配通道
  • SPOOLing技术(假脱机)

定义

为缓和CPU的高速性与I/O设备低速性间的矛盾而引入了脱机输入、脱机输出技术。该技术是利用专门的外围控制机,将低速设备上的数据传送到高速磁盘上;或者相反。这样就可以在主机的直接控制下实现脱机输入输出。此时外围操作与CPU对数据的处理同时进行,我们把这种在联机情况下实现的同时外围操作称为SPOOLing(Simultaneaus Periphernal Operating On—Line),或称为假脱机操作。

 

组成

  1. 输入井和输出井。是磁盘上开辟的两个大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。
  2. 输入缓冲区和输出缓冲区。在内存中开辟两个缓冲区,输入缓冲区暂存由输入设备送来的数据,后送输入井;输出缓冲区暂存从输出井送来的数据,后送输出设备。
  3. 输入进程和输出进程。利用两个进程模拟脱机I/O时的外围处理机。
  4. 井管理程序。用于控制作业与磁盘井之间信息的交换。

特点

  1. 提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。
  2. 将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。
  3. 实现了虚拟设备功能。多个进程同时使用一台独占设备,虚拟成了多台设备。
    1. 打印机是独占设备,通过虚拟技术实现“共享”的模拟
  • 缓冲区管理
  1. 引入
    1. 缓和CPU与I/O设备间速度不匹配矛盾。
    2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
    3. 提高CPU和I/O设备之间的并行性。

方法

  1. 单缓冲(效率低)
  2. 双缓冲区(效率比较高,当输入输出速度不匹配时效率受影响)
  3. 循环缓冲区(解决输入和输出速度相差甚远的影响)
  4. 缓冲池(解决多进程缓冲过程中内存利用率的问题)
  • 磁盘管理

9个进程先后提出读盘请求访问的磁道号为:55;58;39;18;90;160 150 38 184目前磁头停留在100道。

 

先来先服务(FCFS)

  1. 优点:公平、简单
  2. 缺点:未对寻道进行优化

     

 

最短寻道时间优先(SSTF)

  1. 优点:寻道优化
  2. 缺点:可能导致某些进程发生“饥饿”。

      

 

扫描SCAN算法

  1. 优点:较好的寻道性能
  2. 缺点:“不巧”的进程严重推迟

        

 

循环扫描算法CSCAN

  1. 优点:进程的延迟变小了

 

FSCAN算法本算法是N-Step-SCAN算法的简化。

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

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

相关文章

vue2源码解析---v-model双向数据绑定

什么是v-model v-model 是 Vue 中的一个指令,用于实现表单元素与 Vue 实例中数据的双向绑定。这意味着当表单元素的值发生变化时,Vue 实例中的数据也会随之更新 工作原理 生成ast树 本质上是语法糖 结合了v-bind和v-on两个指令 示例代码 new Vue({e…

php收集的精典代码

1. οncοntextmenu"window.event.return&#xff06;#118aluefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制…

python外卷(7)--glob

glob模块1.glob.glob()2.对比os.listdir()glob是python自带的一个操作文件的模块&#xff0c;可用于查找 指定路径 中 匹配的 文件。1.glob.glob() 下面是一个测试文件路径&#xff1a; (base) pppp-System-Product-Name:~/Desktop/test_glob$ tree . ├── a │ ├── 1…

Sublime Text 2配置强大的IDE开发环境,运行java

Sublime Text 2是我无意中发现的、据说十分强大的、便捷的编辑器&#xff0c;许多程序员都投入到Sublime Text 2的怀抱中。 1 配置java开发环境的方法如下&#xff1a; 在jdk安装目录下的bin文件夹下新建一个bat格式的文件&#xff0c;文件命为javacexec.bat。 如果是在Wind…

thinkphp的快捷方法实例化对象

D、F、S、C、L、A、I 他们都在functions.php这个文件家 下面我分别说明一下他们的功能 D&#xff08;&#xff09; 加载Model类 M&#xff08;&#xff09; 加载Model类 A&#xff08;&#xff09; 加载Action类 L&#xff08;&#xff09; 获取语言定义 C&#xff08;&#xf…

Python外卷(8)--pdist, squareform

pdist, squareform1.pdist, squareform使用例子2.通过矩阵的四则运算实现上述pdist, squareformscipy.spatial.distance 距离计算库中有两个函数&#xff1a;pdist, squareform&#xff0c;用于计算样本对之间的欧式距离&#xff0c;并且将样本间距离用方阵表示出来。&#xff…

模拟进程调度

功能 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h>#define ElemType PCB #define Status int #define OK 1 #define ERROR 0 #define TimeSlice 1 #define Infinity 10 //INT_MAX#define NAME_M…

gdb调试多进程和多线程命令

1. 默认设置下&#xff0c;在调试多进程程序时GDB只会调试主进程。但是GDB&#xff08;>V7.0&#xff09;支持多进程的 分别以及同时 调试&#xff0c;换句话说&#xff0c;GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值&#xff1a;parent)和detach-on-fork…

python外卷(10)--取整

"取整"那些事1.python 内置函数1.1int()--向下取整1.2round()--四舍五入2.math模块取整函数2.1 math.floor()--向下取整2.2 math.ceil()--向上取整2.3 math.modf()--分别取小数部分和整数部分3.numpy模块取整函数3.1 numpy.floor()--向下取整3.2 numpy.ceil()--向上取…

模拟银行家算法

介绍 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h>#define ElemType PCB #define Status int #define true 1 #define false 0 #define OK 1 #define ERROR 0 #define RESOURCE_NUM …

Lua 与 C混合编程 .

本文通过程序实例说明C调用lua脚本和lua调用C的方法: 先建立一个 test.c文件: #include <stdio.h> #include <stdlib.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" #pragma comment(lib, "lua5.1.lib&qu…

模拟固定分区分配

介绍 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h> #define LIST_INIT_SIZE 10 #define LISTINCREMENT 2 #define true 1 #define false 0 #define PCBType PCB #define Status int…

Linux下的lua和boost c++的搭建和安装

先下载lua &#xff0c;boost c http://www.lua.org/versions.html#5.2 http://www.boost.org/ http://sourceforge.net/projects/luabind/ 1. 安装lua [rootlocalhost ~]#tar zxvf lua-5.1.2.tar.gz -C /usr/local [rootlocalhost ~]# cd /usr/local/ [rootlocalhost lo…

模拟基本分页存储

介绍 data.h #ifndef _Data_h_ #define _Data_h_#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>#define LIST_INIT_SIZE 10 #define LISTINCREMENT 2 #define true 1 #define false 0 #define PCBType PC…

常用正则表达式和shell命令列表

取当前目录下普通文件的后缀名列表&#xff1a; ls -l | awk /^-/{print $NF} |awk -F. {print $NF}|awk !/^$/ 匹配0和正整数的正则表达式&#xff08;除0以外&#xff0c;其它数字不能以0开头&#xff09;&#xff1a; (^0$)|(^[0-9]\d*$) 匹配中文字符的正则表达式&#xff…

无限踩坑系列(7)-Latex使用Tips

Latex常用命令1.latex注释2.图片左边对齐3.字母头上加声调4.脚注5.公式中加空格6.字体加粗体7.公式换行8.\textsuperscript{*}9.\begin{itemize}10.\operatorname{trace}11.\noindent12.\textcircled{}圆圈数字一些TIPs1.latex注释 单行使用百分号%注释 多行使用如下命令,在编…

在CentOS6.2下安装DNS服务软件Bind并快速配置简单实例

[实践Ok]在CentOS6.2下安装DNS并快速配置实例&#xff0c;共八步&#xff0c;心路历程如下&#xff1a;背景介绍&#xff1a;在日常的开发中&#xff0c;往往会在测试机和外网的Http的Url实际接口是不一样的&#xff0c;在测试机一个Url地址&#xff0c;在外网中又是一个地址。…

模拟动态分区分配

介绍 list.h #ifndef _List_h_ #define _List_h_#include "Data.h"//******* 链表 *******// Status InitLinkList(LinkList *L); void PCBAssign(PCBType *e1, PCBType e2); Status GetElemt_L(LinkList L,int i,PCBType *e); Status ListIn…

python模块(4)-Collections

collections1.collection.counter(list)2.collections.defaultdict()3.collection.dequecollections是Python内建的一个集合模块&#xff0c;提供了许多有用的集合类。collections在python官方文档中的解释是High-performance container datatypes1.collection.counter(list) …

js知识点汇总

1.本门课的作用&#xff08;JavaScript的作用&#xff09;所有基于Web的程序开发基础 2.一种计算机客户端脚本语言&#xff0c;主要在Web浏览器解释执行。 3.浏览器中Javascript&#xff0c;用于与用户交互&#xff0c;以及实现页面中各种动态特效 4.在HTML文件中&#xff0…