操作系统-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(英文 ...
随机推荐
- $.proxy和$.extend
$.proxy用法详解 参考:https://www.cnblogs.com/alice626/p/6004864.html jQuery中的$.proxy官方描述为: 描述:接受一个函数,然后返回一 ...
- Shell遍历目前下后缀名为.xml的文件并替换文件内容
1.shell查找 .xml文件 find /home/esoon/test/external/ -type f -name '*.xml' 2.替换方法 sed -i "s/10.111. ...
- 吴裕雄--天生自然C语言开发:存储类
{ int mount; auto int month; } { register int miles; } #include <stdio.h> /* 函数声明 */ void func ...
- ubuntu .bashrc文件添加jdk后无法登录的解决方案
1. 快捷键(ctl-alt-f2)进入虚拟终端 2. 执行export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/ ...
- 微信公众平台开发2-access_token获取及应用(含源码)
微信公众平台开发-access_token获取及应用(含源码) 很多系统中都有access_token参数,对于微信公众平台的access_token参数,微信服务器判断该公众平台所拥有的权限,允许或 ...
- Tomcat爆出严重漏洞,附影响版本及解决方案
昨天,群里聊嗨了.大家都在远程办公,却都急急忙忙的升级线上的 Tomcat 版本,原因就是 Tomcat 被曝出了严重的漏洞,几乎涉及到所有的版本. 一.漏洞原理具体来说就是 Apache Tomca ...
- Linux下实现与Internet时间同步
一.Linux下实现与Internet时间同步 1.安装ntp [root@server-2 ~]# yum install -y ntpdate 2.同步时间 // 方式一.使用域名连接,要经过DN ...
- android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码
Android精选源码 android身份证.银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用, ...
- 乐观锁(Optimistic Lock)
乐观锁(非阻塞)指不通过锁表来解决并发问题,一般情况下表数据都会加入一个version字段,对该字段进行比较更新来保证数据的一致性. 这里写了个demo,应该可以说明乐观锁的问题. public cl ...
- getline的使用
函数定义: getline(istream &in, string &s) 作用: 在C++中用 string 类型进行终端输入字符串时,解决无法输入带有空格的字符串的问题. 功能: ...