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缓冲

使用缓冲的原因

  1. 缓和CPU与IO设备间速度不匹配的矛盾
  2. 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  3. 解决基本数据单元大小不匹配的问题
  4. 提高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中。

主要考虑的问题有两个:

  1. 缓存数据与用户空间交换的问题:数据传送、共享内存指针
  2. 置换策略:LRU LFU

操作系统-IO管理和磁盘调度的更多相关文章

  1. IO管理与磁盘调度

  2. 操作系统精髓与设计原理(九)——I/O管理和磁盘调度

    文章目录 I/O设备 I/O功能组织 直接存储器访问 操作系统设计问题 设计目标 IO功能的逻辑结构 I/O缓冲 单缓冲 双缓冲 循环缓冲 缓冲的作用 磁盘调度 磁盘性能参数 磁盘调度策略 先进先出 ...

  3. 操作系统-IO管理概述

    IO管理概述 一.IO设备 IO设备管理是操作系统设计中最凌乱也最具挑战性的部分.由于它包含了很多领域的不同设备以及与设备相关的应用程序,因此很难有一个通用且一直的设计方案.所以在理解设备管理之前,应 ...

  4. 操作系统——IO管理

    一.IO系统结构 在计算机系统中.cpu要和很多外设进行交互.比方鼠标,键盘,网卡等等. 1.IO是怎样协调工作的那? (1)对于设备来说,其有两部分组成,一部分是机械部分,还有一部分是电子控制部分. ...

  5. 操作系统-IO管理疑难点

    IO管理疑难点 一.分配设备 首先根据IO请求中的物理设备名查找系统设备表(SDT),从中找出该设备的DCT(设备控制表),再根据DCT中的设备状态字段,可知该设备是否正忙.若忙,便将请求IO进程的P ...

  6. 操作系统之IO管理

    IO系统结构 设备的分类 按数据组织分 块设备: 信息的存取总是以数据块为单位. 它属于有结构设备,如磁盘等. 磁盘设备的基本特征是传输速率较高,以及可寻址,即对它可随机地读/写任一块. 字符设备: ...

  7. 最短寻道优先算法(SSTF)——磁盘调度管理

    原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...

  8. 扫描算法(SCAN)——磁盘调度管理

    原创 上一篇博客写了最短寻道优先算法(SSTF)——磁盘调度管理:http://www.cnblogs.com/chiweiming/p/9073312.html 此篇介绍扫描算法(SCAN)——磁盘 ...

  9. [系统资源攻略]IO第一篇-磁盘IO,内核IO概念

    几个基本的概念 在研究磁盘性能之前我们必须先了解磁盘的结构,以及工作原理.不过在这里就不再重复说明了,关系硬盘结构和工作原理的信息可以参考维基百科上面的相关词条--Hard disk drive(英文 ...

随机推荐

  1. python-jenkins 操作

    Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html 实例代码: import jenkins je ...

  2. windows远程无法粘贴复制

    解决办法: 1.  打开电脑的任务管理器,找到 rdpclip.exe 进程,如果能找到进程,就右键结束进程,如果没有,那就正好,不用结束了,说明没启动,正常来说,都会存在的,但是在我的win10就开 ...

  3. 903C. Boxes Packing#俄罗斯套娃问题(map使用)

    题目出处:http://codeforces.com/problemset/problem/903/C 题目大意:求这组数据中数据出现的最大重复次数 #include<iostream> ...

  4. python学习笔记(25)-继承

    #继承 class RobotOne: #第一代机器人 def __init__(self,year,name): self.year=year self.name=name def walking_ ...

  5. hdu2876 Connections between cities(LCA倍增)

    图不一定联通,所以用并查集找各个联通块的祖先分别建图,之后就和LCA的步骤差不多了 #include<iostream> #include<cstring> #include& ...

  6. 零基础学习Web前端开发

    目录 技术背景 开发环境 学习过程 参考资料 结束语 技术背景 什么是前端开发? 前端开发是创建Web页面或App等将界面呈现给用户的过程.通过使用 HTML,CSS,JavaScript,以及它们衍 ...

  7. 苹果联合创始人高调宣布弃用Facebook是什么梗?

    这段时间,扎克伯格非常郁闷.泄密丑闻不仅让Facebook股价大跌.引来审查等,还被众多互联网.科技大佬批判.孤立.如,"钢铁侠"马斯克就直接删除了SpaceX 和特斯拉的 Fac ...

  8. AUTO Uninstaller 常见问题

    小伙伴是不是遇到 CAD/3dmax/maya/Revit/Inventor 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,CAD/3dmax/maya/Revit/Inven ...

  9. 初级vector

    标准库vector类型 #include<vector> using std::vector; vector为一个类模板. vector的初始化 vector<T> v1; v ...

  10. 吴裕雄--天生自然HTML学习笔记:HTML 表单和输入

    HTML 表单用于收集不同类型的用户输入. <!DOCTYPE html> <html> <head>  <meta charset="utf-8& ...