操作系统5——输入输出系统

这篇具有很好参考价值的文章主要介绍了操作系统5——输入输出系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本系列博客重点在深圳大学操作系统课程的核心内容梳理,参考书目《计算机操作系统》(有问题欢迎在评论区讨论指出,或直接私信联系我)。


梗概

本篇博客主要介绍操作系统第六章输入输出系统的相关知识。

目录

一、I/O(输入输出)系统

1.概述

2.I/O设备和设备控制器

3.I/O通道

4.I/O控制方式

二、缓冲管理

三、设备分配

四、用户层的I/O软件——假脱机(Spooling)系统

五、磁盘存储器管理

1.概述

1.1 结构与数据

1.2 磁盘访问时间

2.磁盘调度算法

2.1 先来先服务(FCFS)

2.2 最短寻道时间优先(SSTF)

2.3 扫描调度算法(SCAN)

2.4 循环扫描调度算法(CSCAN)

2.5 磁盘调度算法例题

3.补充知识


一、I/O(输入输出)系统

输入输出系统(Input/output)系统管理的主要对象为I/O设备与相应的设备控制器,最主要功能是完成用户提出的I/O请求,提高I/O速率,以及提高设备利用率

1.概述

I/O软件涉及的面很宽,向下与硬件有密切关系,向上又与文件系统、虚拟存储器系统和用户直接交互,当今主流方案为层次式结构的I/O系统,利用下层服务完成输入输出功能的子功能并向上层提供服务

操作系统5——输入输出系统

其中,I/O系统的各模块层次视图如下:

操作系统5——输入输出系统

2.I/O设备和设备控制器

I/O设备一般是由执行I/O操作的机械部分和执行控制I/O的电子部件组成。前者为I/O设备,后者为设备控制器或适配器(adapter)。在微型机和小型机中的控制器常做成印刷电路卡形式,因而也常称为控制卡、接口卡或网卡,可将它插入计算机的扩展槽中。在有的大、中型计算机系统中,还配置了I/O通道或I/O处理机。

I/O设备的分类很多,如:

  • 按使用特性分类:①存储设备(外存:容量大,速度慢) ②I/O设备(输入输出/交互设备,键盘鼠标扫描仪/显示器)
  • 按传输速率分类:①低速设备 ②中速设备 ③高速设备 

通常,设备并不直接与CPU通信,而是通过设备控制器。

操作系统5——输入输出系统

设备控制器的主要功能是:控制一个或多个I/O设备,易实现I/O设备和计算机(CPU)之间的数据交换。设备控制器的组成如下:

操作系统5——输入输出系统

3.I/O通道

虽然在CPU与I/O设备之间增加了设备控制器后,已能大大减少CPU对I/O的干预,但当主机所配置的外设很多时,CPU的负担仍然很重。为此,在CPU和设备控制器之间又增设了I/O通道(I/O Channel)。其主要目的是为了建立独立的I/O操作。

I/O通道是一种特殊处理机,具有执行I/O指令的能力,通过执行通道(I/O)程序控制I/O操作

1、指令类型单一,主要限于与I/O操作有关的指令

2、没有自己的内存,通道程序放在主机内存中

所以I/O通道会出现“瓶颈”问题,通道价格昂贵导致数量少,限制了I/O操作,降低了系统吞吐量。如下图中,为启动设备4,需要启动通道1和控制器2,若已被其他设备占用,会出现无法启动。 

操作系统5——输入输出系统

主要解决方案为多通路I/O系统,样例如下:

操作系统5——输入输出系统

不仅解决了“瓶颈”问题,也提高了系统的可靠性。

4.I/O控制方式

对于I/O设备的控制方式,发展历程主要是轮询程序到中断到DMA控制器到通道。 发展的核心宗旨是减少主机对I/O控制的干预,以便其完成更多数据处理任务

  • 轮询的可编程I/O方式:输入输出时将busy状态位置1,并不断循环测试是否完成,造成CPU的极大浪费。
  • 使用中断的可编程I/O方式:CPU与I/O设备并行工作,每一次输入完数据CPU再花少量时间去中断。
  • 直接存储器访问方式:中断的I/O方式是以字(节)为单位干预的,对于块设备效率极低。故引入DMA控制器,组成如下:

操作系统5——输入输出系统

操作系统5——输入输出系统

  • I/O通道控制方式:把对一个数据块的读写干预减少到对一组数据块的读写干预。  

对于I/O通道控制方式核心实现为通过通道程序完成对I/O设备的控制,通道程序一般包含以下信息:

(1)操作:读、写(2)P:通道结束位:P=1表示本条指令是通道程序的最后一条指令(3)R:记录结束位:R=1表示这是处理某记录的最后一条指令(4)计数:表示本条指令要读写的字节数(5)内存地址:标明字符送入内存的首址

操作系统5——输入输出系统

以上样例包含三个记录,1-3指令为一个记录,4为一个,5-6为一个(看R)。

二、缓冲管理

现代操作系统中,几乎所有I/O设备再与CPU交换数据时都使用了缓冲区,本质上是一个存储区域,一般由硬件寄存器或内存(更常见)组成。 

缓冲的引入主要原因如下:

  • 缓和CPU与I/O设备间速度不匹配的矛盾:生产者无需等待消费者就绪,即可将数据输出到缓冲区
  • 减少对CPU的中断频率, 放宽对CPU中断响应时间的限制,下例中,对于(a)每100us就要中断且响应一次,(b)可将中断频率降为1/8,(c)可将响应时间降为1/8

    操作系统5——输入输出系统

  • 提高CPU和I/O设备之间的并行性

1、单缓冲区: 

一I/O请求一缓冲区

运行周期:Max(C, T) + M

操作系统5——输入输出系统

2、双缓冲区: 

消费者若未取走缓冲区数据,生产者生产出新数据也无法放入,故引入双缓冲区。

运行周期:Max(C+M, T)

C+M<T:主机速度快,主机等待,磁盘连续输入

操作系统5——输入输出系统

三、设备分配

系统为实现对独占设备的分配,必须配置对应的数据结构——设备控制表(DCT)

操作系统5——输入输出系统

控制器控制表、通道控制表和系统设备表对比如下:

操作系统5——输入输出系统

单通道系统的设备分配流程如下:

操作系统5——输入输出系统

四、用户层的I/O软件——假脱机(Spooling)系统

在用户层的I/O软件中,需要完全运行于内核之外的假脱机系统。通过假脱机系统(技术),可以将一台物理I/O设备虚拟为多台逻辑I/O设备,运行多用户共享。 

SPOOLing技术的核心是由系统中的两个专门负责I/O的进程,模拟I/O外围机的功能,实现(假)脱机输入/输出。

操作系统5——输入输出系统

其系统组成如下:

1、输入与输出井:

在磁盘上开辟的两个大的存储空间:

  • 输入井是模拟脱机输入时的磁盘,用于收容I/O设备输入的数据
  • 输出井是模拟脱机输出时的磁盘,用于收容用户进程的输出数据 

2、输入缓冲区和输出缓冲区: 

为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中开辟的两个缓冲区: 

  • 输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井
  • 输出缓冲区用于暂存由输出井送来的数据,以后再传送到输出设备

3、输入进程SPi和输出进程SPo: 

  • 输入进程SPi模拟脱机输入时的外围控制机,将用户要求输入的数据从输入设备,通过输入缓冲区再送到输入井
  • 输出进程SPo模拟脱机输出时的外围控制机,将用户要求输出的数据从输出井,通过输出缓冲区送到输出设备

操作系统5——输入输出系统

系统特点如下:

  • 提高I/O速度
  • 将独占设备改造为共享设备
  • 实现了虚拟设备功能 

五、磁盘存储器管理

磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量文件,对文件的读写都涉及对磁盘的访问。

1.概述

1.1 结构与数据

磁盘结构如下:

操作系统5——输入输出系统

1、磁盘的组成:

  • 磁盘由多个盘片组成
  • 每个盘片分两个盘面
  • 每个盘面分若干个磁道(同心圆)
  • 每个磁道分若干个扇区

2:磁盘的寻址:磁头——柱面——扇区

  • 磁头Head:第几个盘片的正面或背面
  • 柱面Cylinder:第几个磁道
  • 扇区Sector:磁道上的分区号 

扇区(Sector)数据结构如下,主要包括(1)标识符字段(ID Field),(2)数据字段(Data Field)

操作系统5——输入输出系统

而对于磁盘的类型,有如下两种:

  • 固定头磁盘,每条磁道都有一读/写磁头,所有的磁头装在一刚性磁臂中。磁头并行读/写,I/O速度快,用于大容量磁盘
  • 移动头磁盘,每个盘面仅配有一个磁头,磁头能移动进行寻道。I/O速度较慢,结构简单,广泛应用于中小型磁盘设备 

1.2 磁盘访问时间

为了读或写,磁头必须移动到指定的磁道上,并等待指定的扇区旋转到磁头下,然后再读或写数据,故磁盘访问时间可分为三部分:

1、寻道时间Ts:磁头移动到指定磁道上的时间

启动磁臂时间s与磁头移动n条磁道花费的时间之和             

Ts=m×n+s

Tips:m是常数,与磁盘驱动器的速度有关,一般磁盘m=0.2;高速磁盘,m≤0.1 磁臂的启动时间s约为2 ms。 一般寻道时间5~30 ms

2、旋转延迟时间Tτ :扇区移动到磁头下面的时间

5400转硬盘,即5400 r/min,每转需时11.1 ms,平均旋转延迟时间Tτ为5.55 ms

3、传输时间Tt:数据从磁盘读出或向磁盘写入数据

与每次所读/写的字节数b和旋转速度有关,r为磁盘每秒钟的转数;N为一条磁道上的字节 

操作系统5——输入输出系统

若知道扇区数,Tt = 1/(r*扇区数) 

4、访问总时间Ta:

当一次读/写的字节数相当于半条磁道上的字节数时,总时间:

操作系统5——输入输出系统

Tips:传输时间占比低 

 例题

若磁盘转速为7200 转分,平均寻道时间为 8ms,每个磁__牛客网 (nowcoder.com)

操作系统--磁盘调度题目_若磁盘转速为6000转,每个磁道包含1000个扇区_real_metrix的博客-CSDN博客

2.磁盘调度算法

1、提高磁盘I/O速度的方法:

提升磁盘硬件性能 采用好的调度算法 设置磁盘高速缓冲区

2、磁盘调度:

磁盘属于共享设备,允许多个进程访问,因此需要磁盘调度算法

磁盘调度算法目标是平均寻道时间少

2.1 先来先服务(FCFS)

核心:根据进程请求访问磁盘的先后次序调度

  • 优点:简单,每个请求都能依次得到处理
  • 缺点:平均寻道距离较大

2.2 最短寻道时间优先(SSTF)

核心:依据访问磁道与当前磁道最近原则(实际上是基于优先级的调度)

操作系统5——输入输出系统

Tips:当前磁道为100 

  • 优点:平均寻道时间较短
  • 缺点:会导致某些进程发生“饥饿”现象,磁头有可能长期停留在同一磁道上(磁臂粘着)

2.3 扫描调度算法(SCAN)

核心:依据磁头移动方向及访问磁道与当前磁道距离最短两个原则

磁头移动方向为…,向外,然后向内,再向外,…一直循环往复 例如:当前磁头停在80号磁道上服务,并且刚刚完成了89号磁道的请求,说明磁头移动方向向内

操作系统5——输入输出系统

Tips:当前磁道为100,且方向向外 

  • 优点:不会出现进程“饥饿”现象,平均访问寻道时间较短
  • 缺点:与磁头近但在磁头运动反方向的磁道等待时间长,磁头有可能长期停留在同一磁道上(磁臂粘着) 

2.4 循环扫描调度算法(CSCAN)

核心:到达最外磁道后,返回最小磁道开始SCAN算法

操作系统5——输入输出系统

Tips:当前磁道为100,且方向向外  

  • 优点:不会出现进程“饥饿”现象,平均访问寻道时间较短,最长等待时间较SCAN短(一半)
  • 缺点:磁头有可能长期停留在同一磁道上(磁臂粘着)

2.5 磁盘调度算法例题

有一磁盘管理系统,磁道按内往外方向升序编号,假设当前等待访问磁盘的请求序列为:15、10、30、 150、 190、 80、 95、 40、 140、 20。当前磁头停在90号磁道服务,之前刚完成93号磁道的访问。请分别采用FCFS、SSTF、SCAN、CSCAN算法,求出各种算法的调度序列以及平均寻道距离

操作系统--分别用FCFS,SSTF,SCAN,CSCAN算法计算总寻道长度和平均寻道长度例题(详细)_代码爱小菜鸡的博客-CSDN博客

OS 磁盘调度算法 之 FCFS、SSTF、SCAN、CSCAN_scan算法例题讲解_MoMing丶的博客-CSDN博客

3.补充知识

1、磁盘高速缓存(Disk Cache):

利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息。

高速缓存是一组在逻辑上属于磁盘, 而物理上是驻留在内存中的盘块。

2、高速缓存在内存中的两种形式:

内存中开辟单独的存储空间作为磁盘高速缓存,其大小是固定的,不受应用程序多少的影响

把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘高速缓存共享

3、提高磁盘速度的其它方法:

提前读:根据局部性原理,将邻近的磁盘块提前读入内存,例如预调页策略

延迟写:修改过的页面不立刻写回磁盘,积累一定数量一次性写回,减少I/O操作次数

优化物理块分布:同一文件的物理快尽量集中

虚拟盘:利用内存空间或其他存储介质仿真磁盘,例如内存式硬盘和固态硬盘文章来源地址https://www.toymoban.com/news/detail-514911.html

到了这里,关于操作系统5——输入输出系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 30天自制操作系统 day 1 写一个可以在没有操作系统的计算机上输出字符串的程序,并在计算机上运行

    工具:qemu 模拟器 计算机启动后,在屏幕打印一串字符串。 显示字符的原理 把一些机器指令写在第一扇区。通过int 0x10中断,让显卡在屏幕上显示字符。只需要在0x10之前按照规定准备好寄存器,显卡就能正确显示字符。 显卡显示字符的规定 流程 计算机会按照规定的流程自

    2024年02月16日
    浏览(48)
  • Win10 操作系统如何让不同的音频输出设备播放不同的声音

    应用案例:我做题时蓝牙音箱播放音乐,其他应用通过电脑扬声器播放声音。 鼠标左键点击 Windows 微标健,再点击设置按钮。 在搜索框中搜索“混音器选项”,按下回车。 打开混音器选项后就可以进行修改了。 右键点击任务栏右下角的声音图标,点击“打开声音设置”。

    2024年01月21日
    浏览(43)
  • ubuntu版本Linux操作系统上安装键盘中文输入法

    要在ubuntu版本Linux操作系统上安装键盘中文输入法 可以按照以下步骤进行操作: 1、Linux终端输入: sudo apt-get install ibus-pinyin 这将安装一个常用的中文输入法 “ ibus-pinyin ”。 2、重新启动系统:为了使输入法生效,需要重新启动您的系统 Linux终端输入: sudo reboot 3、在重启后

    2024年02月16日
    浏览(52)
  • 万字长文·通俗易懂·一篇包掌握——输入/输出·文件操作(c语言超详细系列)(二)

    前言:Hello,大家好😘,我是心跳sy,上一节我们主要学习了格式化输入输出的基本内容,这一节我们对格式化进行更加深入的了解,对文件概念进行介绍,并且对输入、输出与文件读写的基本概念进行学习,本节主要对printf,scanf深入了解,并介绍文件处理函数,如fprintf,

    2024年02月13日
    浏览(64)
  • 操作系统实验3.3 版本1.2内核的进程调度过程分析 && 两个进程的严格交替输出

    1. mygdb 侧调试命令: 2. 第三关.txt : 1.概述:0号进程和1号进程间进程调度过程 (1)从 system_call 函数进入相应的系统调用函数 在两个进程运行 alarm 和 pause 函数时,到执行 alarm 和 pause 系统调用时,都会进入到system_call函数,在下图第一处划线位置根据系统调用号,调用相应的

    2024年02月11日
    浏览(179)
  • 麒麟系统部署常见操作(R系列Kylin)

    # 获取系统位数 getconf LONG_BIT # 查询操作系统release信息 lsb_release -a # 查询系统信息 cat /etc/issue # 查询系统名称 uname -a # 查看操作系统 nkvers # 查看系统架构 cat /etc/.kyinfo # 获取内存总大小 grep MemTotal /proc/meminfo # 获取交换分区大小 grep SwapTotal /proc/meminfo # 获取内存使用详情 free #

    2024年02月11日
    浏览(42)
  • Ansible环境搭建,CentOS 系列操作系统搭建Ansible集群环境

    Ansible是一种自动化工具,基于Python写的,原理什么的就不过多再说了,详情参考:https://www.itwk.cc/post/403.html https://blog.csdn.net/qq_34185638/article/details/131079320?spm=1001.2014.3001.5502 HOSTNAME IP OS master.example.com 10.5.5.132 CentOS Stream 8 Mini Install node1.example.com 10.5.5.133 CentOS Stream 8 Mini Install n

    2024年02月14日
    浏览(96)
  • 微软操作系统中,windows server 系列和windows 的区别

    Windows Server和Windows Desktop(即我们常说的Windows系统)是Microsoft公司的两种操作系统产品,它们都基于Windows NT内核。两者在设计目标、功能和价格等方面存在显著的区别。 设计目标与功能 Windows Desktop系统主要针对个人用户和企业的端点用户,以满足日常办公、娱乐、浏览网页

    2024年02月13日
    浏览(52)
  • 安卓系列机型 另类体验第三方系统 DSU操作步骤解析 不影响主系统开启第二系统

    dsu loader即 动态系统更新,可以在使用动态分区的安卓设备上,不影响原来系统的同时安装一个副系统,用于体验最新的原生安卓系统。可以不影响主系统的基础上体验其他gsi第三方。DSU 依赖于 Android 动态分区功能,并要求 GSI 作为可信系统映像由 Google 或您的 OEM 进行签名

    2024年02月08日
    浏览(49)
  • 【Linux系列】“dev-node1“ 运行的操作系统分析

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包