操作系统-IO管理和磁盘调度
I/O设备
IO设备的类型
分为三类:人机交互类外部设备:打印机、显示器、鼠标、键盘等等。这类设备数据交换速度相对较慢,通常是以字节为单位进行数据交换的
存储设备:用于存储程序和数据的设备,如磁盘、磁带、光盘等。这类设备用于数据交换、速度较快。
网络通信设备:用于与远程设备通信的设备,如各种网络接口、调制解调器、其速度介于两者之间。
 
                                           
IO控制方式
程序控制I/O:处理器代表一个进程给io模块发送一个io命令,该进程进入忙等待,直到操作完成
中断驱动I/O:处理器代表进程向io发送命令,如果来自进程的io指令是非阻塞的,那么处理器继续执行进程的后续指令。如果io指令时阻塞的,那么处理器执行来自操作系统的指令,将当前进程设置为阻塞态并且调度其他进程。
直接存储器访问(DMA):一个DMA模块控制内存和io模块之间的数据交换。为传送一块数据,处理器给DMA模块发送请求,并且只有当整个数据块传送结束后,它才能被中断。
DMA: 在io设备和内存之间开辟直接的数据交换通路,彻底解放CPU。有利于系统总线与存储器进行双向数据传送。其基本单位是数据块,整块数据的传送是在DMA控制器的控制下完成的,仅仅在传送一个或多个数据块的开始和结束的时候,才需要CPU干预。所传送的数据,也是直接从设备送入内存的,反之相同。
操作系统的IO设计
在设计io机制的时候,两个最重要的目标是效率和通用性。
本地外围设备的组织:硬件->调度和控制->设备I/O->逻辑I/O->用户进程
通信端口的组织:硬件->调度和控制->设备I/O->通信结构->用户进程
文件系统的组织:硬件->调度和控制->设备I/O->物理组织->文件系统->目录管理->用户进程
逻辑IO:逻辑io模块把设备当作一个逻辑资源来处理,它并不关心实际控制设备的细节。逻辑io模块代表用户进程管理的一般io功能,允许用户进程根据设备标识符以及诸如打开、关闭、读、写之类的简单命令与设备打交道。
设备IO:请求的操作和数据(缓冲的数据、记录等)被转换成适当的IO指令序列、通道命令和控制器命令。可以使用缓冲技术来提高利用率。
调度和控制:io操作的排队、调度实际上发生在这一层,处理中断、收集并报告io状态。这一层是与io模块和设备硬件真正发生交互的软件层。
 
                                           
设备独立性: 用户在编程序时使用的设备与实际设备无关。一个程序独立于分配给它的某类设备的具体设备,即在用户程序中只需要指明IO使用的设备类型即可。 其优先包括:方便用户编程、使程序运行不受具体机器环境的限制、便于程序移植。
I/O缓冲
使用缓冲的原因
- 缓和CPU与IO设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 解决基本数据单元大小不匹配的问题
- 提高CPU与IO设备之间的并行性
缓冲是用来平滑IO需求的峰值的一种技术,但是当进程的平均需求大于io设备的服务能力的时候,缓冲再多也不能让io设备与这个进程一直并驾齐驱。但是在多道程序设计环境中,多种io活动和多种进程活动的时候,缓冲是提高系统效率和单个进程性能的一种方法。
缓冲
缓冲:在输入请求发出前就开始执行输入传送,并且在输出请求发出一段时间之后才开始执行输出传送。【预输入,缓输出】
面向块的设备:将信息保存在块中,块的大小是固定的,传送过程中一次传送一块。如磁盘和USB
面向流的设备:以字节流的方式输入输出数据,没有块结构。如终端、打印机、通信端口、鼠标等等。
单缓冲
当用户进程发出IO请求的时候,操作系统给该操作分配一个位于内存中系统部分的缓冲区。
面向块:输入传送的数据被放到系统缓冲区中,当传送完成的时候,进程把该块移到用户空间,并立即请求另一块。需要数据的设备或处理器从缓冲区中拿走数据。这样能够期望这块数据最终会被使用。
最终用时为MAX(C,T)+M。(c:处理器处理时间,m:数据传输到用户区的时间,t:输入到缓冲区的时间。)
加速比为: (T+C)/(MAX(C,T)+M)
优势在于能够提高系统速度,并且操作系统可以进行进程交换。但是增加了操作系统的逻辑复杂度。交换逻辑也会受到影响。
面向流:每次传送一行的方式或者每次传送一个字节的方式使用。传送行的方式输入要挂起,输出不用。传送字节的方式采用生产者/消费者模型。
双缓冲
也称缓冲交换。给操作系统分配两个系统缓冲区,在一个进程往一个缓冲区中传送数据(取数据)的同时,操作系统清空(或者填充)另一个缓冲区。
它的执行时间是MAX(C,T),加速比是 (T+C)/MAX(C,T)。 如果C<=T,则有可能使得面向块的设备全速运行,反之也能确保处理器的效率,不需要等待IO。因此性能能够有所提高,但是复杂性也提升了。
面向流:每次传送一行的io,用户进程不需要为输入输出挂起程序。对于每次传送一个字节的操作,双缓冲并没有特别的优势。都采用生产者/消费者模型。
 
                                           
循环缓冲
如果该进程需要爆发式地执行大量的IO操作,仅仅有两个缓冲是不够的,在这种情况下,通常使用多于两个的缓冲区的方案来缓解不足。当使用两个以上的缓冲区的时候,这组缓冲区自身被当作循环缓冲区。
 
                                           
缓冲池
由多个系统公共的缓冲区组成,缓冲区按其使用情况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列和装满输出数据的缓冲队列。还包括了四个缓冲区:收容输入数据、提取输入数据、收容输出数据、提取输出数据的工作缓冲区。
当输入程序需要输入数据的时候,从空缓冲队列对首使用一个空缓冲区,作为收容输入的工作缓冲区,然后装入数据,装满后再挂到输入队列队尾。当计算程序需要输入数据的时候,从输入队列取得一个缓冲区作为提取输入工作缓冲区,计算进程从中提取数据,数据用完后再放入到空缓冲队列。
磁盘调度
磁盘性能参数
寻道时间:磁头定位到磁道所需要的时间
旋转延迟:磁道定位之后,磁盘控制器开始等待,直到适当的扇区旋转到磁头处的时间。
存取时间:寻道时间+旋转延迟,即达到读或写的位置所需要的时间。
传输时间:磁头定位完成,磁头通过下面旋转的扇区,执行读操作或写操作所需要的时间。
 
                                           
 
                                           
总的存取时间=存取时间(寻道时间+旋转延迟)+传输时间
 
                                           
计算:
 
                                           
磁盘调度策略
磁盘访问产生性能差异的原因可以追溯到寻道时间。如果扇区访问请求包括随机选择磁道,则性能就特别低。为提高性能,需要减少花费在寻道上的时间。
| 名称 | 说明 | 注释 | 
| RSS | 随机访问 | 用于分析和模拟 | 
| FIFO | 按顺序处理队列中的项目 | 最公平的调度,如果大量进程竞争一个磁盘,这种技术在性能上往往接近于随即调度。 | 
| PRI | 根据进程优先级来 | 在磁盘队列管理之外控制,不能优化磁盘的利用率 | 
| LIFO | 后进先出 | 局部性最好,资源利用率最高 | 
| SSTF | 最短服务时间优先,移动道数最少 | 利用率高,队列小 | 
| SCAN | 仅沿一个方向移动,在途中满足请求。到达后反方向扫描 | 服务分布比较好 | 
| C-SCAN | 限定在一个方向上,到达之后,回到起始段重新扫描 | 服务变化较低 | 
| N-step-SCAN | 把请求队列分成长度为N的子队列,每一次SCAN扫描,如果此时由新请求,则放到新队列中 | 服务保证 | 
| FSCAN | 两个子队列 | 负载敏感 | 
 
                                            
                                           
 
                                           
硬盘高速缓存
一个硬盘高速缓存是内存中为磁盘扇区设置的一个缓冲区,包含有磁盘中某些扇区的副本。当出现一个请求某一特定扇区的IO请求时,首先进行检测,以确定该扇区是否在cache中。
主要考虑的问题有两个:
- 缓存数据与用户空间交换的问题:数据传送、共享内存指针
- 置换策略:LRU LFU
操作系统-IO管理和磁盘调度的更多相关文章
- IO管理与磁盘调度
- 操作系统精髓与设计原理(九)——I/O管理和磁盘调度
		文章目录 I/O设备 I/O功能组织 直接存储器访问 操作系统设计问题 设计目标 IO功能的逻辑结构 I/O缓冲 单缓冲 双缓冲 循环缓冲 缓冲的作用 磁盘调度 磁盘性能参数 磁盘调度策略 先进先出 ... 
- 操作系统-IO管理概述
		IO管理概述 一.IO设备 IO设备管理是操作系统设计中最凌乱也最具挑战性的部分.由于它包含了很多领域的不同设备以及与设备相关的应用程序,因此很难有一个通用且一直的设计方案.所以在理解设备管理之前,应 ... 
- 操作系统——IO管理
		一.IO系统结构 在计算机系统中.cpu要和很多外设进行交互.比方鼠标,键盘,网卡等等. 1.IO是怎样协调工作的那? (1)对于设备来说,其有两部分组成,一部分是机械部分,还有一部分是电子控制部分. ... 
- 操作系统-IO管理疑难点
		IO管理疑难点 一.分配设备 首先根据IO请求中的物理设备名查找系统设备表(SDT),从中找出该设备的DCT(设备控制表),再根据DCT中的设备状态字段,可知该设备是否正忙.若忙,便将请求IO进程的P ... 
- 操作系统之IO管理
		IO系统结构 设备的分类 按数据组织分 块设备: 信息的存取总是以数据块为单位. 它属于有结构设备,如磁盘等. 磁盘设备的基本特征是传输速率较高,以及可寻址,即对它可随机地读/写任一块. 字符设备: ... 
- 最短寻道优先算法(SSTF)——磁盘调度管理
		原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ... 
- 扫描算法(SCAN)——磁盘调度管理
		原创 上一篇博客写了最短寻道优先算法(SSTF)——磁盘调度管理:http://www.cnblogs.com/chiweiming/p/9073312.html 此篇介绍扫描算法(SCAN)——磁盘 ... 
- [系统资源攻略]IO第一篇-磁盘IO,内核IO概念
		几个基本的概念 在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理.不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条--Hard disk drive(英文 ... 
随机推荐
- 用户界面编程模式 MVC MVP MVVM
			用户界面编程模式 MVC MVP MVVM 程序 = 数据 + 算法 数据:就是待处理的东西 算法:就是代码 涉及到人机交互的程序,不可避免涉及到界面和界面上显示的数据原始方式是界面代码和逻辑代码糅合 ... 
- 数学是什么?_题跋—>数学是什么?
			题跋—>数学是什么? 数学的定义在不同的解释中有不同的释义,它又像是哲学.又像是逻辑性:即研究数量关系.有研究结构和空间关系等等.因此很难给予一个非常准确的定义,正因为如此数学是渗透于生活的各个 ... 
- drf框架与postman初始
			drf框架 全称:django-rest framework 知识点 """ 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful ... 
- space sniffer
			space sniffer 一款检测本地磁盘文件占用情况的工具,高效,快速. 
- C# 接口练习
			#define debug using System; using System.Collections; namespace ConsoleApp1 { interface IAnimal { in ... 
- 108)PHP分页显示
			一个代码页的链接:https://www.cnblogs.com/mmykdbc/p/6688460.html 首先一个简单的代码展示: 目录关系: 数据库表格展示: 结果展示: 然后 代码展示 ... 
- iOS数据锁
			简介 当一个线程访问数据时,而其他数据不能进行访问,保证线程安全或者可以理解为执行多线程,对于共享资源访问时保证互斥的要求 文章 不再安全的 OSSpinLock iOS开发中的11种锁以及性能对比 ... 
- [LC] 359. Logger Rate Limiter
			Design a logger system that receive stream of messages along with its timestamps, each message shoul ... 
- pycharm全局搜索快捷键无反应
			原因:和搜狗输入法的快捷键冲突 
- 吴裕雄--天生自然HTML学习笔记:HTML 布局
			网页布局对改善网站的外观非常重要. 请慎重设计您的网页布局. <!DOCTYPE html> <html> <head> <meta charset=&qu ... 
