I/O设备管理

第六章 I/O设备管理

I/O系统的组成

I/O系统不仅包括 各种I/O设备,还包括与设备相连的 设备控制器,有些系统还配备了专门用于输入/输出控制的专用计算机(通道),此外:I/O系统要通过总线与CPU、内存相连

I/O系统的结构

I/O系统的结构分为两大类:

  1. 微机I/O系统;
  2. 主机I/O系统;

微机I/O系统

CPU与内存之间可以直接进行信息交换,但是 不能直接与设备进行信息交换,必须经过 设备控制器

主机I/O系统

主机I/O系统采用四级结构,包括:主机、通道、设备控制器和设备

一个通道可以控制多个设备控制器。

一个设备控制器可以控制多个设备。

I/O设备的分类

  1. 按传输速率分类:
    • 低速设备:鼠标、键盘
    • 中速设备:打印机
    • 高速设备:磁盘机、磁带机、光盘机
  2. 按信息交换单位分类:
    • 块设备:磁盘
    • 字符设备:打印机
  3. 按设备的共享属性分类:
    • 独占设备:必须作为临界资源以 互斥形式访问,如:打印机
    • 共享设备:允许 多个进程共同访问 的设备,如:磁盘
    • 虚拟设备:通过 虚拟技术 把一台物理设备变成若干逻辑的设备

设备控制器

设备控制器是 CPU与I/O设备之间的接口,接收I/O命令并 控制设备 完成I/O工作。

设备控制器是一个 可编址设备,链接多个设备时可有多个设备地址。

设备控制器的功能

  1. 接收和识别命令;
  2. 数据交换:通过 数据寄存器 进行数据交换;
  3. 设备状态的了解和报告;
  4. 地址识别;
  5. 数据缓冲;
  6. 差错控制;

设备控制器的组成

  1. 设备控制器与处理机的接口:
    • 数据线;
    • 地址线;
    • 控制线;
  2. 设备控制器与设备的接口,接口中的3类信号为;
    • 数据;
    • 状态;
    • 控制信号;
  3. I/O逻辑,主要由两部分构成:
    • 指令译码器;
    • 地址译码器;

I/O通道

一种特殊的处理机,它具有执行I/O指令的能力,并通过执行通道程序来控制I/O操作。

大型主机系统中 专门用于I/O的专用计算机

引入通道能够使CPU从控制I/O操作的任务中解脱,使 CPU与I/O并行工作,提高CPU利用率和系统吞吐量。

I/O控制方式

目的:尽量 减少 主机对输入/输出控制的 干预提高 主机与输入/输出的 并行程度

  1. 轮询控制方式:早期;
  2. 中断控制方式:引入中断机制后;
  3. DMA控制方式:提高输入输出性能;
  4. 通道控制方式:使输入/输出更大程度地独立于主机CPU;

轮询控制方式

工作流程:

  1. 主机试图发送I/O控制命令之前,先通过 反复检测设备控制器状态寄存器的忙/闲标志位
  2. 若设备“忙”,主机继续检测该标志位;
  3. 直到设备“空闲”,主机发送I/O指令;

缺点:

使CPU经常处于 循环检测状态,造成 CPU的极大浪费,影响整个进程的 吞吐量

中断控制方式

现在计算机系统广泛采用中断控制方式完成对I/O控制。

工作流程:

  1. CPU执行过程中,发出输入/输出请求;
  2. 若此时I/O设备不忙,则向设备控制器发出I/O指令;
  3. 若此时I/O设备忙,则进程阻塞等待;
  4. 当处于“忙”状态的设备工作完毕,通过中断控制器发出中断请求信号;
  5. CPU响应中断,执行对应该设备的中断处理程序,然后唤醒因等待该设备而被阻塞的进程;
  6. CPU继续执行这个进程时,向设备控制器发出I/O指令,然后CPU被调度程序分配给某个进程,继续执行某个进程;
  7. 本次I/O结束后,设备控制器通过CPU发送中断请求信号,告知CPU本次数据传输结束;
输入输出控制方式-中断控制方式.png

优点:

使CPU和I/O设备在某些时间段上 并行工作,提高 CPU利用率系统吞吐量

DMA控制方式

DMA控制器结构:

  1. DMA 与主机的接口
  2. DMA 与设备的接口
  3. I/O控制逻辑

DMA控制器中的寄存器:

  1. 命令/状态寄存器,CR:用于接收从CPU发来的 I/O命令或有关控制信息、设备状态
  2. 内存地址寄存器,MAR存放地址
    • 在输出数据时,存放输出数据在内存的起始地址;
    • 在输入数据时,存放输出数据将要被放入内存的起始地址;
  3. 数据寄存器,DR:用于暂存DMA传输中 要输入或输出的数据
  4. 数据计数器,DC:指示DMA,本次向CPU发中断信号前要 读或写数据的次数

工作流程:

  1. 当CPU要从磁盘读入一个数据块时,就向磁盘控制器发送一条读命令;
  2. 该命令被送到DMA的命令寄存器CR中,同时CPU将本次读入数据将要放在内存中的地址地址送DMA的MAR寄存器,将本次要读的次数送入DC寄存器;
  3. 然后启动DMA控制器进行数据传输,在DMA控制传输过程中,CPU可以执行其他的进程,当本次读入的数据全部传输完毕后,DMA向CPU发送中断请求;
输入输出控制方式-DMA控制方式.png

缓冲管理

缓冲区是用来 保存两个设备之间或设备与应用程序之间传输数据的内存区域

由于CPU的速度远远高于I/O设备,为了 尽可能使CPU与设备并行工作,提高系统的性能,通常需要操作系统在设备管理软件中提供缓冲区管理功能。

缓冲的引入

在数据到达速率与数据离去速率不同的地方,都可以引入缓冲区。

引入缓冲的原因:

  1. 处理数据流的 生产者与消费者之间的速度差异
  2. 协调传输 数据大小不一致 的设备;

引入缓冲的主要作用:

  1. 缓和 CPU与I/O设备之间 速度不匹配 的矛盾;
  2. 提高 CPU和I/O设备之间 并行性

单缓冲

最简单 的缓冲类型,在主存储器的系统区中 只设立一个缓冲区

用户进程发出I/O请求时,操作系统为该操作分配一个位于主存的缓冲区。

双缓冲(缓冲交换)

当一个进程往这一个缓冲区中传输数据(或从这个缓冲区读取数据)时,操作系统正在清空(或填充)另一个缓冲区,这个技术称为双缓冲(Double Buffering),或缓冲交换(Buffering Swapping)。

循环缓冲

在数据到达和数据离去的速度差别很大的情况下,需要增加缓冲区的数量。

循环缓冲区.png

多个缓冲区:

  1. 空缓冲区R;
  2. 已装满数据的缓冲区G;
  3. 现行工作缓冲区C;

多个指针:

  1. Nextg:用于指出 消费者进程下一个可用的装有数据的缓冲区
  2. Nexti:用于指出 生产者这进程下一个可用的空缓冲区
  3. Current:用于指出进程 正在使用的工作缓冲区

Getbuf过程:

  1. 消费者进程要 使用缓冲区数据 时调用;
  2. 生产者进程要 使用空缓冲区装数据 时调用;

Releasebuf过程:

进程使用完缓冲区后,使用Releasebuf过程 释放缓冲区

缓冲池

公共缓冲池中设置多个可供若干进程共享的缓冲区,提高缓冲区的利用率。

缓冲池的组成:

  1. 3种类型的缓冲区:
    • 空缓冲区;
    • 装满输入数据的缓冲区;
    • 装满输出数据的缓冲区;
  2. 3种缓冲队列:
    • 空缓冲队列;
    • 输入队列;
    • 输出队列;
  3. 4种工作缓冲区:
    • 收容输入数据的缓冲区;
    • 提取输入数据的缓冲区;
    • 收容输出数据的缓冲区;
    • 提取输出数据的缓冲区;

设备分配

设备分配中的数据结构

支持设备分配的数据结构需要记录设备的状态(忙或空闲)、设备类型等基本信息。

  1. 设备控制表,DCT - Device Control Table
  2. 控制器控制表:COCT - Controller Control Table
  3. 通道控制表:CHCT - Channel Control Table
  4. 系统设备表:SDT - System Device Table

设备控制表

系统为每个设备建立一张设备控制表,多张设备控制构成设备控制表集合。

每张设备控制表,包含:

  1. 设备类型;
  2. 设备标识符;
  3. 设备状态;

控制器控制表

系统为每个控制器设置一张 用于记录该控制器信息 的控制器控制表。通常包含:

  1. 控制器标识符;
  2. 控制器状态;

通道控制表

系统为每个通道设备设一张通道控制表,通常包含:

  1. 通道标识符;
  2. 通道状态;

系统设备表

记录了 系统中全部设备 的情况,每个设备占一个表目,其中包括:

  1. 设备类型;
  2. 设备标识符;
  3. 设备控制表;
  4. 设备驱动程序的入口地址;

设备分配的考虑因素

  1. 设备的固有属性;
  2. 设备分配算法;
  3. 设备分配方式;

设备的固有属性

  1. 独占性:独占设备 - 独享分配策略;
  2. 共享性:共享设备 - 可同时分配给多个进程使用;
  3. 可虚拟性:可虚拟设备 - 可同时分配给多个进程使用;

设备的分配算法

  1. 先来先服务:根据进程对某设备请求的先后顺序分配;
  2. 基于优先权的分配算法:对高优先权进程所提出的I/O请求也赋予高优先权;

设备分配方式

关键点:是否具备 “请求和保持” 的条件。

  1. 安全分配方式:发出I/O请求后进入阻塞状态;
  2. 不安全分配方式:仅当请求的设备被占用,进程才进入阻塞状态;

设备独立性

基本含义:应用程序独立于具体使用的物理设备

应用程序中,使用 逻辑设备名称 来请求使用某类设备。

系统在实际执行时,必须使用 物理设备名称

实现设备独立性 带来的好处

  1. 应用程序与物理设备无关;
  2. 易于处理输入/输出设别的故障;
  3. 提高了系统的可靠性,增加了设备分配的灵活性;

设备独立软件的功能:

  1. 执行所有设备的公有操作,包括:
    • 独占设备的分配与回收;
    • 使用 逻辑设备表LUT 将逻辑设备名称转换为物理设备名称;
    • 对设备进行保护;
  2. 对用户层软件提供同一的接口;

独占设备的分配程序:

  1. 分配设备;
  2. 分配控制器;
  3. 分配通道;

SPOOLing技术

在多道程序环境下,利用 一道程序 来模拟 脱机输入 时的 外围控制机 的功能,把低速I/O设备上的数据传送到高速输出磁盘上,再利用 另一道程序 来模拟 脱机输出外围控制机 的功能,把数据从磁盘传送到低速输出设备上。

这种在 联机情况下实现的同时外围操作 称为SPOOLing。

SPOOLing的 组成

  1. 输入井和输出井;
  2. 输入缓冲区和输出缓冲区;
  3. 输入进程SPi和输出进程SPo;
  4. 请求I/O队列;
SPOOLing的组成.png

利用SPOOLing技术 实现共享打印机

  1. 由输出进程在输出井中申请空闲盘区块,并将要打印的数据传入其中;
  2. 输出进程再为用户申请并填写一张用户请求打印表,将该表放到请求队列上;

SPOOLing的 特点

  1. 提高 I/O速度
  2. 独占 设备改造成 共享 设备;
  3. 实现了 虚拟设备 功能;

I/O软件管理

I/O软件原理

输入输出软件总体目标是 将软件组织成一种层次结构

低层软件 用来屏蔽硬件的具体细节。

高层软件 则主要是为用户提供一个简洁、规范的界面。

设备管理的4个层次:

  1. 用户层软件:向系统发出I/O请求、显示I/O操作的结果、提供用户与设备的接口;
  2. 与设备无关的软件层:完成设备命名、设备分配、设备独立性和缓冲管理等功能;
  3. 设备驱动程序:与硬件关系密切,包括:设备服务程序、中断处理程序;
  4. 中断处理程序(底层)

设备管理软件的功能

  1. 实现I/O设备的独立性;
  2. 错误处理;
  3. 异步传输;
  4. 缓冲管理;
  5. 设备的分配和释放;
  6. 实现I/O控制方式;

中断处理程序的功能

将发出I/O请求而被阻塞的进程唤醒。

设备驱动程序的功能

设备驱动程序是 I/O进程与设备控制器之间的通信程序,其主要任务接受上层软件发来的抽象的I/O请求,如 readwrite 命令,把它们转换为具体要求后,发送给设备控制器启动设备去执行。

设备驱动程序.png

与硬件无关的I/O软件的功能

  1. 设备命名;
  2. 设备保护;
  3. 提供独立于设备的块大小;
  4. 为块设备和字符设备提供必要的缓冲技术;
  5. 块设备的存储分配;
  6. 分配和释放独立设备;
  7. 错误处理;

磁盘管理

磁盘存储器不仅 容量大,存取速度快,而且可以实现 随机存取,是存放大量程序和数据的理想设备。

磁盘管理的 重要目标:提高磁盘 空间利用率 和磁盘 访问速度

磁盘结构

一个物理记录存储在一个扇区上,磁盘存储的物理记录数目是由 扇区数、磁道数磁盘面数 决定的。

磁盘结构.png

磁盘类型:

  1. 固定头磁盘:在每条磁道上都有读/写磁头;
  2. 活动头磁盘(移动头):每一个盘面仅配有一个磁头;

磁盘访问时间:

  1. 寻道时间:磁头移动到指定 磁道 所经历的时间;
  2. 旋转延迟时间:指定 扇区 移动到磁头下面所经历的时间;
  3. 传输时间:把数据从磁盘读取或向磁盘写入数据时所经历的时间;

花费磁盘访问时间 最长 的是:寻道时间和旋转延迟时间

磁盘访问时间.png

磁盘调度

磁盘调度的一个重要目标是 使磁盘的平均寻道时间最少。包括有:

  1. 先来先服务,First Come First Served, FCFS;
  2. 最短寻道时间优先,Shortest Seek Time First, SSTF;
  3. 扫描算法:SCAN;
  4. 循环扫描算法:CSCAN;
  5. NStepSCAN和FSCAN调度算法;

先来先服务,FCFS

最简单 的磁盘调度算法。

根据进行 请求访问磁盘的先后顺序 进行调度。

优点:公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况

缺点:平均寻道时间较长

磁盘调度-先来先服务.png

最短寻道时间优先,SSTF

该算法选择的进程:其 要求访问的磁道当前磁头所在的磁道 距离 最近,以使每次的寻道时间最短。

优点:每次的寻道时间最短

缺点:可能导致某个进程发生 饥饿 现象

磁盘调度-最短寻道时间优先.png

扫描算法,SCAN

又叫 电梯调度算法,不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑磁头当前的移动方向。

优点:有较好的寻道性能,防止 “饥饿” 现象

缺点:有时候进程请求被大大推迟

磁盘调度-扫描算法.png

循环扫描算法,CSCAN

在扫描算法的基础上,规定磁头是单向移动的。将最小磁道号紧接着最大磁道号构成循环,进行循环扫描。

磁盘调度-循环扫描算法.png

NStepSCAN和FSCAN调度算法

NStepSCAN:FCFS + SCAN

  1. 将磁盘请求队列分成 若干个长度为N的子队列
  2. 磁盘调度将按 FCFS算法 依次处理这些子队列;
  3. 每处理一个队列时又是按照 SCAN算法
  4. 对一个队列处理后,再处理其他队列;

FSCAN

  1. NStepSCAN算法的简化,将磁盘请求队列分成 两个子队列
  2. 一个是由当前所有请求磁盘访问的进程形成的队列,由磁盘调度按 SCAN算法 进行处理;
  3. 将新出现的所有请求磁盘访问的进程,放入另外一个等待处理的请求队列;

提高磁盘I/O速度的方法

  1. 提前读,减少读数据的时间;
  2. 延迟写,减少写磁盘的时间;
  3. 优化物理块的分布,减少磁臂移动距离;
  4. 虚拟盘,RAM,存放临时文件;
  5. 磁盘高速缓存,暂存从磁盘中读出的信息;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 从这一章开始,我们探讨的话题就会与前面的话题稍有不同——我们将开始探讨操作系统对于设备的管理以及它为用户程序提供服...
    夏威夷的芒果阅读 1,394评论 0 0
  • 1. I/O系统的基本功能及模型 1)主要功能: 1.隐藏物理设备细节,方便用户 用户使用抽象的I/O命令即可 2...
    麻皮阿洪阅读 1,564评论 0 0
  • 一、I/O系统 1 I/O设备 I/O设备类型繁多,在OS观点看,设备使用特性、数据传输速率、数据的传输单位、设备...
    溪的风阅读 601评论 0 0
  • 1.I/O系统的功能、模型和接口 1)主要功能 (1)隐藏物理设备细节 (2)实现设备无关性 (3)提高处理机和设...
    Pakho柏豪阅读 649评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,041评论 0 4