I/O管理

  • 执行I/O的三种技术

    无中断 使用中断
    通过处理器实现I/O和内存间的传送 程序控制I/O 中断驱动I/O
    I/O和内存间直接传送 直接存储器访问/通道
    • 程序控制:进入忙等待,即CPU不断试探状态寄存器,查看设备是否可以使用。设备空闲后先读入CPU的寄存器,再把CPU寄存器中的内容放入内存,如scanf/printf。CPU干预频率很频繁,需要不断轮询检查。CPU和I/O设备只能串行工作。按字存取数据。
    • 中断驱动:(若I/O指令非阻塞,处理器继续执行其后续指令,若阻塞则操作系统将其设为阻塞态并调度其他进程,这里讨论后者)CPU中断后不进行轮检而是中断,当目标设备设备完成后向CPU发出中断信号,CPU检测到后就回去执行。(每个指令周期结束后都会检查一次中断)数据同样需要存到CPU寄存器后再存到内存或I/O设备。每次只能读/写一个字
    • DMA:是操作系统必须支持的主要数据传送方式,使得处理可以不再参与I/O处理,主要用于块设备。数据传送单位是块。
  • I/O模块的发展实际上就是将CPU逐步从I/O任务中解脱出来,为其设立了单独的处理器/指令集/局部存储器,即DMA。DMA可以模拟处理器,并有系统总线的控制权。

    • 请求读或写操作的信号通过在处理器和DMA模块之间使用读写控制线发送。
    • 相关的IO设备地址,通过数据线传送。
    • DMA获得存储器的读或者写的起始地址,在数据线上传送,并由DMA保存其地址寄存器中。
    • 读或者写的数据长度(字数),由DMA保存在其数据计数寄存器DC中。

    以上是CPU的工作,之后就交给DMA了。DMA要完成的:

    • 直接从存储器中或向存储器中逐字传送整块数据。(读入时是以字为单位,只是传送给I/O是整块进行,每次如果读写多个块只能是连续的多个块,并且存放内存后也需要是连续的,如果要不连续的块,需要CPU重新给指令,这就是缺点,离散数据块会导致多条CPU指令)
    • 传送结束后向CPU发送中断信号。
  • 通道控制方式:根据DMA改进的,为了解决读取不连续块的问题

    通道作为一种硬件,需要和CPU共享主机内存,可以识别一系列通道指令,CPU可以一次性写入通道一堆信息,每次读写一组数据块。DMA传输单位是块。

  • DMA的配置

    • (a)中DMA模块充当代理处理器,使用程序控制I/O通过DMA模块在存储器和I/O模块之间交换数据。
    • (c)是对(b)概念的拓展。将DMA与处理器/内存共享的系统总线仅用于DMA与内存交换数据以及与处理器交换控制信号,DMA与I/O模块之间的数据交换是脱离系统总线的。
  • 为了满足通用性(隐藏大部分I/O设备低层例程中的细节),需要考虑I/O功能的逻辑结构。

    用户进程⬅➡逻辑I/O(通信架构)⬅➡设备I/O⬅➡调度和控制⬅➡硬件(逻辑外部设备/通信端口)

    • 逻辑I/O:不关系底层细节,允许用户进程根据设备标识符及打开,关闭,读写等简单命令与设备打交道。负责接收和识别CPU的各种命令。
    • 设备I/O:请求的操作和数据转换为适当的I/O指令序列,通道命令和控制器命令(缓冲技术
    • 调度和控制:处理中断,收集报告I/O状态,与设备真正打交道。
  • 缓冲区:存储区域(一般利用内存)。CPU把要输出的快速放入缓冲区

  • 缓冲机制

    • 无缓冲:死锁(策略:参与I/O操作的用户存储空间必须立即锁定于内存中,即使在排队)/效率低/影响交换策略(数据块传送期间,相应的虚拟地址必须保留在内存中,否则数据可能丢失。如果使用分页机制,至少需要将目标地址单元的页锁定在内存中。)(DMA算是无缓冲?)

    • 单缓冲:一个I/O请求分配一个位于内存中的系统部分的缓冲区(默认一个缓冲区大小就是一个块)

      • 当缓冲区数据非空时不能写入数据,只能传出,缓冲区为空时才可以写入数据(I/O设备只能以字节为单位传输),但必须充满后才能从缓冲区将数据传出。
      • 时间:max{C,T}+M。C和M只能串行执行,C和T可以并行
      • 面向流的I/O单缓冲能以传送一行(输入时用户进程挂起,输出时则同样将一行输出放在缓冲区,但不需要挂起)或每次传送一个字节的方式使用。
    • 双缓冲/缓冲交换

      • max(C+M,T):C和M串行,和T并行。可确保进程不需要等待I/O。
      • 面向流时用户进程不需要为了输入输出挂起,除非进程运行速度超过了双缓冲速度。
    • 环形缓冲/循环缓冲

      • 将多个大小相等的缓冲区链接成一个循环队列,in指针指向下一个可充入的缓冲区,out/move指向下一个可输出的缓冲区。
    • 缓冲池:系统中公用的缓冲区。

      (7条消息) 缓冲池(buffer pool),这次彻底懂了!!!_58沈剑的博客-CSDN博客

磁盘调度

  • 为了读写,磁头必须定位于指定的磁道和该磁道中指定扇区的开始处

    • 排队延迟:发出I/O请求后需要在一个队列中等待该设备可用(RPS技术:多转一圈)

    • 寻道时间 seek time :磁头定位到磁道的时间,很难减少。Ts:平均寻道时间(<10ms)

    • 旋转延迟 rotational delay :磁头到达扇区开始位置的时间。

    • 存取时间 access time :寻道时间和旋转延迟的总和。

    • 传送时间 :磁头通过下面旋转的扇区,开始执行读操作或写操作,传输所需的时间。

    Ta=Ts+12r+brNT_a = T_s + \frac{1}{2r} +\frac{b}{rN} Ta​=Ts​+2r1​+rNb​

    r:旋转速度(转/秒,故1/r是磁盘转一圈的时间)N:一个磁道中的字节数;b:要传送的字节数;RPM是Revolutions Per Minute的缩写,即一分钟转的圈数

  • 时序比较:假设文件尽可能紧凑地保存,即占据了5个相邻磁道所有扇区(5*500=2500个)

    • 读第一个磁道时间:平均寻道4ms + 旋转延迟4ms(r=8ms)+读500个扇区(8ms)=16ms
    • 假设现在可以不需要寻道时间读取其他磁道,则总时间16+12*4=64ms
    • 如果是随机访问一个扇区需要:4ms+4ms+0.016ms=8.016ms,总时间8.016*1500=20040ms

    说明:磁盘读取扇区顺序对I/O性能影响非常大!

  • 磁盘调度策略:现在假设磁盘有200个磁道,被请求的磁道按照磁盘调度程序接收顺序分别为55、58、39、18、90、160、150、38、184(从磁道100处开始)

    仅基于队列或请求者的属性:

    • 先进先出FIFO:先来先处理,公平,适合请求大多是访问簇聚的文件扇区,不适合大量进程时。
    • 优先级PRI:通常较短的批作业和交互作业的优先级高,而较长计算时间的长作业的优先级较低,可以迅速处理大量短作业,提供比较好的交互响应时间;长作业可能不得不等待过长的时间(饥饿);可能会导致部分用户采用对抗手段:把作业分成小块。对于数据库系统这类策略往往导致性能较差。
    • 后进先出LIFO:提高局部吞吐量,可能饥饿。

    如果调度程序直到当前轨道位置,可以采用以下基于请求项的调度:

    • 最短服务时间优先SSTF(Short Service Time First):总是选择导致最小寻道时间的请求,并不能保证平均寻道时间最小,但是优于FIFO。用随机算法解决距离相等的情况。

    • 电梯/扫描算法SCAN:磁头臂仅沿1个方向移动,途中满足未完成的所有请求,直到到达这个方向上的最后一个磁道,或该方向上没有别的请求为止,接着反转服务方向反方向扫描。

      对最近横跨过的区域不公平(局部性不如SSTF和LIFO)—— C-SCAN;偏爱请求接近最靠里或靠外的磁道的作业,且偏爱最近的作业 —— N-step-SCAN

    • 循环SCAN C-SCAN:扫描限定在一个方向上,因此当访问到最后一个磁道时,磁头臂返回到磁盘相反方向磁道的末端,并再次开始扫描。减少了新请求的最大延迟:对于SCAN,如果从最里面的磁道扫描到最外面的磁道的期望时间为t,则这个外设的扇区期望服务间隔为2t。而对于C-SCAN,间隔约为t+s,其中s为最大寻道时间。

    • N-step-SCAN和FSCAN:

      • 磁头臂的粘性:SSTF、SCAN和C-SCAN的磁头臂可能在很长一段时间内不会移动。例如,如果一个或多个进程对一个磁道有较高的访问速度,那么它们可通过重复地请求这个磁道以垄断整个设备。
      • 解决方案:将磁盘请求队列分成段,一次只有一段被完全处理
      • N-step-SCAN策略:把磁盘请求队列分成长度为N的的几个子队列,每次用SCAN处理一个子队列。在处理某个队列时,新请求必须添加到其他某个队列中。如果在扫描的最后剩下的请求数小于N,则它们全都将在下一次扫描处理。
      • FSCAN:一种使用两个子队列的策略。扫描开始时,所有请求都在一个队列中,另一个队列为空。在扫描过程中所有新到的请求都被放入另一个队列中。对新请求的服务延迟到处理完所有老请求之后。

  • 独立磁盘冗余阵列RAID

  • 磁盘高速缓存cache memory:比内存小且比内存快的存储器,位于内存和处理器之间(利用局部性原理)

【I/O管理】和【磁盘调度】相关推荐

  1. 内存管理、磁盘和文件拾遗

    内存管理.磁盘和文件拾遗 Part1. 内存管理 一个程序的可执行文件在内存中的结果,从大的角度可以分为两个部分:只读部分和可读写部分.只读部分包括程序代码(.text)和程序中的常量(.rodata ...

  2. 磁盘管理:磁盘调度算法

    磁盘调度算法 磁盘管理:磁盘调度算法 1.1 一次读写磁盘操作需要的时间 1.1.1 寻道时间 1.1.2 延迟时间 1.1.3 传输时间 2.1 磁盘调度算法 2.1.1 先来先服务(FCFS) 2 ...

  3. 1.2.7存储结构-磁盘管理:磁盘移臂调度算法、先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描算法(SCAN)、循环扫描(CSCAN)

    1.2.7存储结构-磁盘管理:磁盘移臂调度算法.先来先服务(FCFS).最短寻道时间优先(SSTF).扫描算法(SCAN).循环扫描(CSCAN) 先来先服务(FCFS) 最短寻道时间优先(SSTF) ...

  4. Linux进程管理 (7)实时调度

    关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...

  5. LVM逻辑卷轴管理和磁盘配额实验

    动态卷轴管理和磁盘配额实验 首先先在虚拟机中开启两个硬盘,我在rh6-2中新添加了两个硬盘,分别为sdbc和sdbd: 按照如上方法,再添加1个硬盘. 则添加的磁盘如下所示: 第一步:分区 接下来对s ...

  6. 操作系统实验4—磁盘调度

    操作系统实验4-磁盘调度 文章目录 操作系统实验4-磁盘调度 实验描述 设计思路 上机代码 测试结果 心得体会 实验描述 实验内容: 编写一个磁盘调度程序,模拟操作系统对磁盘的调度. 实验目的: 本实 ...

  7. 操作系统之磁盘调度——SCAN实例讲解

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  8. 磁盘调度 FCFS、SSTF、SCAN 算法c++实现(大学生专用)

    前言 大家放实验报告里面的时候,好歹要把变量名什么的改改吧...一模一样的给老师发现就不好了... 代码 #include <iostream> #include <algorith ...

  9. 计算机系统基础:磁盘调度知识笔记

    1.磁盘调度介绍 磁盘可以被多个进程共享的设备,如果有多个进程请求访问磁盘时,为了保证信息的安全,系统的每一时刻只允许一个进程进入磁盘进行I/O操作,别的进程需要等待. 磁盘需要采用一种适当的算法,使 ...

最新文章

  1. 初学者自学python要看什么书-从python初学者到入门算法,这几本书一定要看,附PDF...
  2. GIS影像数据集初步学习
  3. 设置eclipse启动时使用的jdk
  4. bean包、entity包、mode包、domain包的区别
  5. BugkuCTF-PWN题pwn7-repeater详细讲解多解法
  6. synchronized()_JMM(四):浅谈synchronized锁
  7. Windows Server 2016多用户同时登录远程桌面
  8. C++算法学习(力扣:1122. 数组的相对排序)
  9. 力扣-700 二叉搜索树中的搜索
  10. 应用安全 - Web安全 - 逻辑漏洞整理
  11. Delphi2010Excel导入数据库
  12. 最经典的PS入门笔记,来自李涛老师的高手之路
  13. 药店管理系统/APP/小程序/网站
  14. 文献速递 | 通过m6A RNA甲基化修饰调节癌症中的端粒稳态和基因组稳定性
  15. MMPB/GBSA结合自由能计算以残基贡献度分析
  16. matlab目标跟踪目标检测项目系统源码合集【33套】
  17. 机器学习和深度学习资料汇总【02】
  18. 微信网址打开php,微信打开网址添加在浏览器中打开提示
  19. 牛客入门编程—金字塔图案
  20. ps导出内容快捷键 快速导出png

热门文章

  1. C++网络摄像头数据的获取与显示 (续)
  2. md快捷用语(慢慢补充)
  3. 【Echarts】ECharts中常用的标签
  4. 远程控制软件支持linux,Linux下5款远程桌面软件
  5. JS学习笔记之面向对象 5.3
  6. 关于 DevOps ,咱们聊的可能不是一回事
  7. 2021科大讯飞试题标签预测挑战赛亚军方案总结
  8. 工信部备案新规则下,关于域名核验的相关问题
  9. 涉密计算机与涉密网络管理制度,长沙理工大学网络涉密保密管理制度
  10. 电脑风扇声音大怎么办?具体原因以及解决措施,快速解决