计算机操做系统进修条记(四):设备办理 — I/O 办理
四、设备办理 —— I/O 办理 4.1 设备办理概述 4.1.1 I/O 设备I/O 设备概述
布景: 现代计算机系统凡是装备大量的 I/O 设备,用于计算机系统与外部世界(如用户、其它计算机或电子设备等)停止信息交换或存储
I/O 设备又称为外围设备或外部设备,简称外设I/O 操做: 内存和 I/O 设备之间的信息传送操做按信息传输标的目的划分 I/O 设备输入设备: 将外界信息输入计算机(键盘、鼠标)输出设备: 将计算成果输出(显示屏、打印机)输入输出设备: 既能够输入信息,也能够输出信息(网卡、磁盘)按交互功用划分 I/O 设备人际交互设备: 用于用户与计算机之间的交互通信(鼠标、键盘、显示器)存储设备: 耐久性地存储大量信息并快速检索(磁盘、光盘)机机通信设备: 用于计算机和计算机之间的通信(网卡、调造解调器)按设备办理划分 I/O 设备字符设备: 以字符为单元停止信息交换(大大都人机交互设备)块设备: 以固定大小的数据块停止信息交换(磁盘)收集设备: 用于与长途设备通信的设备(网卡)4.1.2 设备办理目的克制设备和 CPU 速度不婚配所引起的问题。令主机和设备并行工做,进步设备利用效率。对设备停止笼统,屏障设备的物理细节和操做过程,设置装备摆设驱动法式,供给同一界面,供用户或高层软件利用。
笼统为文件系统中的节点,同一办理裸设备: 不被操做系统间接办理,由应用法式读写,I/O 效率更高办理内容设备中断处置缓冲区办理设备的分配与去配设备驱动调度实现虚拟设备办理条理I/O 硬件: I/O 设备、接口线路、控造部件、通道I/O 软件: 系统 I/O 软件、用户空间 I/O 软件4.2 I/O 控造体例 4.2.1 设备控造器概述将 I/O 设备中的机械部件和电子部件分隔处置,此中电子部件称为设备控造器。
设备控造器又称为设备适配器、I/O 控造器、I/O 控造接口,简称 I/O 模块或 I/O 接口。
OS 与控造器交互,而非与设备交互。
功用承受、识别号令(来自 CPU 或通道)数据交换记录设备形态(供 CPU 处置)设备地址识别(毗连多台设备时)构成与主机交互
(记录设备形态)形态/控造存放器(数据交换)数据缓冲存放器(承受号令)地址译码和 I/O 控造逻辑与设备交互
外设接口控造逻辑 4.2.2 轮询体例详细流程轮询体例是忙期待的过程。
处置器向控造器发送一个 I/O 号令若是设备未停当,则频频查看 I/O 形态,曲至设备停当施行数据交换特点处置 I/O 恳求会末行原法式的施行CPU 需要参与数据传送CPU 与设备串行工做,效率低下4.2.3 中断体例详细流程处置器向控造器发出 I/O 号令,然后继续施行后续指令。
若是该历程撑持异步 I/O,则继续施行该历程。不然,历程在那个中断点挂起,CPU 施行其他法式。控造器查抄设备形态,停当后倡议中断。CPU 响应中断,转向中断处置法式。中断处置法式施行数据读写操做。恢复施行原先法式。特点CPU 不需要期待 I/O 设备停当CPU 仍需要参与数据传送(响应中断后,原法式会停行施行)CPU 和设备部门并行,效率进步4.2.4 DMA 体例DMA 模块DMA: 间接存储器拜候
DMA 模块: 模拟处置器来控造主存和设备控造器之间的数据交换
详细流程处置器向 DMA 模块发出 I/O 号令处置器继续施行其它工做,DMA 模块负责传送全数数据数据传送完毕后,DMA 中断处置器特点CPU 不会末行原法式的施行(CPU 无须期待 I/O 设备停当,也无需停止数据传送)CPU 只在数据传送的起头和完毕时参与
起头时,CPU 需要对 DMA 模块停止初始化完毕时,CPU 响应中断,但没必要保留现场DMA 体例中的周期窃取当 DMA 和 CPU 同时经总线拜候内存时,CPU 老是将总线的占有权让给 DMA 一个或几个主存周期。
因为 CPU 大部门情况下与 Cache 停止数据交换,因而周期窃取对 CPU 与主存的数据交换速度影响不大。
4.2.5 三类 I/O 控造体例总结轮询体例CPU 需要期待设备停当,且参与数据传送。
中断体例CPU 无需期待设备停当,但响应中断后参与数据传送。
DMA 体例CPU 在数据传送起头和完毕时参与,与主存停止数据交换时不参与。
4.2.6 I/O 通道概述I/O 通道,又称为通道控造器、I/O 处置器。
设备控造器包罗本身公用的处置器和通道法式。
I/O 指令不再由处置器施行,而是存在主存中,由 I/O 通道所包罗的处置器施行。接纳四级构造,处置器-通道-控造器-设备带有部分存储器的 I/O 通道相当于一台自治的计算机
I/O指令存储在控造器自带的部分存储器中,并由 I/O 通道所包罗的处置器施行能够控造大量的 I/O 设备,同时最小化 CPU 的干预常用于交互式末端通信,负责包罗控造末端在内的大部门使命流程CPU 碰到 I/O 恳求,启动指定通道一旦启动胜利,通道起头控造 I/O 设备停止操做,CPU 施行其他使命I/O 操做完成后,I/O 通道发出中断,CPU 停行当前工做,转向处置 I/O 操做完毕事务CPU 与通道并行工做。
4.3 总线与 I/O 4.3.1 总线概述总线目的: 处理 I/O 速度不婚配问题。
总线毗连体例差别,会招致计算机性能的庞大差别,从而招致计算机价格的庞大差别。只要合理地组织总线,才气使得处置器和设备充实并行,进步系统效率。
4.3.2 单总线总线构造将 CPU、主存和 I/O 模块毗连到统一组总线上。
长处构造简单、易于扩大。
缺点主存需要和 I/O 模块共用总线设备增加会形成总线变长,进而增加传输时延无法适用于大量高速设备 4.3.3 传统的三级总线总线构造主存和 Cache 通过主存总线传送数据,主存总线和扩展总线上的 I/O 设备之间传送数据通过扩展总线接口缓冲长处主存与 I/O 之间的数据传送与处置器的活动别离能够撑持更多的 I/O 设备缺点不适用于 I/O 设备数据速度相差太大的情形。
4.3.4 接纳南北桥的多级总线总线构造通过存储总线、PCI 总线、E(ISA) 总线别离毗连主存、高速 I/O 设备和低速 I/O 设备。
长处能够撑持差别数据速度的 I/O 设备。
4.3.5 接纳 I/O 通道的多级总线总线构造撑持 CPU、主存和多个 I/O 通道之间的数据传送撑持 I/O 通道和 I/O 控造器,以及 I/O 控造器和设备之间的数据传送 4.4 I/O 软件的实现条理 4.4.1 I/O 软件设想设想目的高效率: 改善设备效率,尤其是磁盘 I/O 操做的效率。
通用性: 用同一的尺度来办理所有设备。
设想思绪把软件组织成条理构造,低层软件用来屏障硬件细节,高层软件向用户供给简洁、友善的界面。
设想原则设备无关性: 编写拜候文件的法式与详细设备无关出错处置: 低层软件能处置的错误不让高层软件感知同步/异步传输: 撑持阻塞和中断驱动两种工做体例缓冲手艺: 成立数据缓冲区,进步吞吐率4.4.2 I/O 软件条理构造 4.5 I/O 软件的实现 4.5.1 I/O 中断处置法式概述位于 OS 底层,与硬件设备亲近相关,与系统其余部门尽可能少地发作联络历程恳求 I/O 操做时,凡是被挂起,曲到数据传输完毕后并产生 I/O 中断时,操做系统接收 CPU 后转向中断处置法式当设备向 CPU 提出中断恳求时,CPU 响应恳求并转入中断处置法式功用查抄设备形态存放器内容,判断产生中断的原因,按照 I/O 操做的完成情况停止响应的处置。
(错误)若是数据传输有错,向上层软件陈述设备的出错信息,施行从头施行(一般完毕)若是一般完毕,唤醒期待传输的历程,使其转换为停当态(未完毕)若是有期待传输的 I/O 号令,通知相关软件启动下一个 I/O 恳求4.5.2 设备驱动法式概述设备驱动法式包罗与设备亲近相关的所有代码从独立于设备的软件中领受并施行 I/O 恳求
逻辑 I/O(用户提交)转化为物理 I/O监视设备能否准确施行,办理数据缓冲区,停止需要的纠错处置设备驱动法式与中断处置法式的区别中断处置法式: 响应并原子处置 I/O 中断
设备驱动法式: 负责设备中详细的处置细节
功用设备初始化
在系统初度启动或设备传输数据时,预置设备和控造器以及通道形态施行设备驱动例程
负责启动设备,停止数据传输关于具有通道体例的设备,还负责生成通道指令和通道法式,启动通道工做挪用和施行中断处置法式
负责处置设备和控造器及通道所发出的各类中断条理每个设备驱动法式只处置一种设备,或者一类慎密相关的设备。
整体驱动法式
间接向 OS 供给接口和控造硬件,适用于功用简单的驱动法式,效率较高,但较难迁徙分层驱动法式
将驱动法式分红多层,放在栈中,系统接到 I/O 恳求时先挪用栈顶的驱动法式,栈顶的驱动法式能够间接处置恳求或向下挪用更低层的驱动法式,曲至恳求被处置。适用于功用复杂、重用性要求较高的驱动法式,构造明晰且便于移植,但会增加一部门系统开销。4.5.3 独立于设备的 I/O 软件施行适用于所有设备的常用 I/O 功用,并向用户层软件供给一致性接口。
功用设备定名: 通过途径名寻址设备设备庇护: 查抄用户能否有权拜候所申请设备供给与设备无关的数据单元: 字符数量,块尺寸缓冲手艺: 传输速度,时间约束,不克不及间接送达目标地设备分配和形态跟踪: 分配差别类型的设备错误处置和陈述: 驱动法式无法处置的错误4.5.4 用户空间的 I/O 软件库函数一小部门 I/O 软件不在 OS 中,是与应用法式链接在一路的库函数,以至完全由运行于用户态的法式构成。系统挪用凡是由库函数封拆后供用户利用,封拆函数只是将系统挪用所用的参数放在适宜位置,然后施行访管指令来陷入内核,再由内核函数实现实正的 I/O 操做。SPOOLing 软件在内核外运行的系统 I/O 软件,接纳预输入、缓输出和井办理手艺,通过创建守护历程和特殊目次处理独占型设备的空占问题。
4.6 I/O 缓冲区 4.6.1 I/O 缓冲区概述提出原因为领会决 CPU 与设备之间速度不婚配的矛盾,协调逻辑记录大小和物理记录大小纷歧致的问题(每次读入大小),进步 CPU 和设备并行性,削减 I/O 操做对 CPU 的中断次数,放宽对 CPU 中断响应时间的要求。
缓冲区位置在内存中开拓的存储区,专门用于临时存放 I/O 操做的数据。
缓冲区的两个操做写操做: 将数据送至缓冲区,曲到拆满,历程继续计算,同时系统将缓冲区的内容写到设备上。读操做: 系统将设备上的物理记录读至缓冲区,按照要求将当前所需要的数据从缓冲区中读出并传送给历程。4.6.2 单缓冲区只要一个缓冲区,I/O设备 \rightarrow OS,OS \rightarrow 用户历程,两个过程不克不及同时停止,效果一般。
4.6.3 双缓冲区利用两个缓冲区,I/O 先将数据传给 Buffer1,Buffer1 将数据传给用户的同时,I/O 将数据传给 Buffer2,使得 "I/O设备 \rightarrow OS","OS \rightarrow 用户" 两个过程能够并行,效率进步。
4.6.4 轮回缓冲区轮回缓冲区,I/O 给 Buffer2 数据,Buffer1 把数据给用户;I/O 给 Buffer3 数据时,Buffer2 把数据给用户。
4.7 设备独立性设备独立性的素质是关于 "用户申请物理设备" 那一过程再加了一层封拆。
4.7.1 设备独立性概念用户施行功课前不指定物理设备,而是指定逻辑设备,使得用户功课和物理设备别离开,再通过其它路子成立逻辑设备和物理设备之间的映射。
前提设备办理中需要将逻辑设备名转换为物理设备名,因而系统需要供给逻辑设备名和物理设备名的对应表以供转换利用。
4.7.2 设备独立性长处应用法式通用性更强。
应用法式与详细物理设备无关,系统增减或变动设备时不需要修改源法式。易于应对 I/O 设备毛病,进步系统可靠性。增加设备分配的灵敏性,更有效天时用设备资本,实现多道法式设想。4.8 独占型外设的分配 4.8.1 独占型外设概念独占型外设: 只能由一个历程独占式利用
共享设备: 能够让多个历程同时利用。此类设备的办理次要是驱动调度和施行驱动,一般没必要分配。
计算机中绝大大都设备属于独占型设备,如键盘、鼠标,而只要磁盘、光盘、磁带库不属于独占设备。
4.8.2 设备分配体例静态分配静态分配: 历程运行前申请
实现简单,可以避免系统发作死锁,但会降低设备操纵率。动态分配动态分配: 历程随用随申请
进步设备操纵率,但可能发作死锁问题。例如: 一个系统只要一台磁带机和一台打印机,如今有两个历程 A 和 B 施行时都需要那两台机器,而 A 动态分配到了磁带机,B 动态分配到了打印机,此时就发作了死锁。
4.8.3 设备分配的数据构造设备表每条设备都有各自的设备表,用来注销那类设备中的每台物理设备。
内容: 物理设备名、逻辑设备名、占有设备的历程号、能否分配、好/坏标记
设备类表每类设备对应于设备类表中的一栏。
内容: 设备类、总台数、空闲台数、设备表起始地址
撑持设备独立性时才会利用设备类表。
4.9 磁盘的物理构造 4.9.1 磁盘构造盘片磁盘由多个盘片构成每个盘片被划分为多个齐心圆构造的磁道
差别盘片上位于不异位置的磁盘构成的圆柱体称为柱面扇区、簇(多个相邻扇区)每个磁道分为固定多个或不等个数的扇区,为了对大量扇区寻址,OS 将相邻扇区组合成簇存储文件。
磁盘物理块地址(柱面号, 磁头号, 扇区号): 暗示挪动臂在哪一个柱面上,磁头定位了哪个盘面,扇区定位了哪一个详细的物理记录。(0面0道1扇区): 0盘面,0柱面,1扇区(盘面、柱面从 0 起头编号,扇区从 1 起头编号) 4.9.2 磁盘读取数据流程磁盘读取数据时,磁头必需定位到指定的磁道上的指定扇区的起头处。
详细过程寻道: 控造挪动臂抵达指定柱面,选择磁头号扭转: 期待要读写的扇区扭转到磁头下数据传送 4.9.3 磁盘存取时间磁盘完成数据读写所需时间 = 寻道时间 + 扭转延迟 + 传送时间
T_a=T_s+\displaystyle\frac{1}{2r}+\displaystyle\frac{b}{rN}
T_a:
存取时间
T_s:寻道时间
r:磁盘扭转速度(转/秒)
B:要传送的字节数
N: 一个磁道中的字节数 4.10 磁盘的驱动调度 4.10.1 磁盘调度调度原因磁盘可能同时领受到若干 I/O 恳求,若是随机选择并响应 I/O 恳求,可能得到最坏的性能。
调度战略磁盘存取时间次要是寻道与扭转,因而调度战略次要是移臂调度和扭转调度。
4.10.2 挪动臂调度目标使挪动臂的挪动时间最短,从而削减寻道总时间。
(1)先辈先出挪动臂式随机挪动,寻道性能较差按挨次处置恳求,对所有历程公允(2)最短查找时间优先先施行查找时间最短的恳求,具有较好的寻道性能存在 “饥饿” 现象(3)扫描算法 ———— 单向扫描扫描臂总向一个方面扫描,归程中不供给办事适用于不竭有大量柱面平均散布的恳求的情形(4)扫描算法 ———— 双向扫描该算法是对单向扫描的一个改良。
挪动臂每次向一个标的目的挪动,碰到比来的 I/O 恳求便停止处置,抵达最初一个柱面后再向相反标的目的挪动对比来扫描所逾越区域的恳求响应较慢(5)电梯调度对扫描算法停止一个末版优化。电梯调度算法是处理移臂调度的典范算法。
无恳求时挪动臂停行不动,有恳求时按电梯规律挪动每次选择沿挪动臂的挪动标的目的比来的柱面若是当前挪动标的目的上没有但相反标的目的有恳求时,改动挪动标的目的4.10.3 扭转调度目标使得扭转延迟总时间起码。
(1)轮回排序通过优化 I/O 恳求排序,在起码扭转圈数内完成位于统一柱面的拜候恳求。扭转位置测定硬件和多磁头同时读写手艺有利于进步扭转调度的效率。(2)优化散布通过优化信息在存储空间的摆列体例来削减扭转延迟。
瓜代排序
若是沿着磁道按序对扇区编号,可能因为磁盘转速太快,形成处置当前扇区的数据时,下一个扇区已经跳过,需要再转一圈才气继续读数据。因而,对扇区编号时会间隔编号,例如 2:1 暗示相邻编号之间会间隔 1 个扇区,3:1 暗示会间隔 2 个扇区。相邻扇区成簇
把相邻多个扇区集中成簇一路读写柱面集中存储
持续记录数据时,先记录在统一柱面的差别磁道上,然后再改换柱面削减数据读写时的移臂操做4.11 SPOOLing 系统SPOOLing 系统的本色就是用缓冲区实现 "输入预先完成,输出成批输出" 的效果,进步效率。
素质上仍是将一个 “输入-施行-输出” 的持续过程切分为三个离散过程,来包管 CPU 与外设的并发性。
4.11.1 虚拟设备虚拟设备: 利用一类物理设备模仿另一类物理设备的手艺。
内存卡模仿磁盘块设备模仿字符设备输入输出重定向(文件)4.11.2 SPOOLing 系统构造五大构成部件为存放输入、输出数据,系统在磁盘上开拓输入井和输出井,用做缓冲区。
输入井输出井预输入法式: 将数据从输入设备传送到磁盘输入井预输出法式: 将数据从磁盘输出井传送到输出设备井办理法式: 控造功课和井之间的数据交换(I/O 重定向)SPOOLing 构造功用预输入
OS 将功课需要的输入数据成批从输入设备上预先输入到磁盘的输入缓冲区中暂存调度功课施行时,功课利用数据没必要再启动输入设备,从磁盘的输入缓冲区读入即可缓输出
功课不启动输出设备,只是将输出数据暂存到磁盘输出缓冲区中功课施行完毕后,数据由 OS 成批输出长处
设备操纵率进步功课运行时间缩短每个功课都觉得各自拥有所需的独占设备 4.11.3 打印 SPOOLing 系统打印机空占问题若是用户历程通过翻开打印机的设备文件来申请和利用打印机,往往会形成该历程翻开设备文件后长达数小时不消,但其他历程又无法利用打印机。
处理计划打印机守护历程是独一有特权利用打印机设备的历程打印文件前,用户历程先产生完好的待输出文件,并存放在打印目次下打印机空闲时,启动守护历程,打印待输出文件4.12 批处置系统功课办理多道批处置 OS 的功课办理功课申明语言: 用于功课控造的语言功课申明书: 描绘详细功课的控造体例功课形态
输入形态(预输入)后备形态(空闲)运行形态(运行)完成形态(缓输出)功课调度: 从后备形态功课中选择部门进入运行形态(前提是资本充沛)功课调度算法: 优先数、短功课、响应比、设备搭配等