第4章设备管理 本章讲述内容: 4.1设备管理概述; 4.2输入/输出的处理步骤; 4.3设备的分配与调度算法; 4.4数据的传输方式: 4.5设备管理中的若干技术
第4章 设备管理 4.1 4.2 4.3 本章讲述内容: 4.4 设备管理概述 ; 输入/输出的处理步骤; 设备的分配与调度算法; 数据的传输方式; 4.5 设备管理中的若干技术
4.1设备管理概述 。4.1.1I/O系统的组织结构 ·整个IO结构可以划分 成三个层次:底层是具体的设 进程A进程B进程C 进程N 用户 备和硬件接口,中间是系统软 用户程序十 空间 件(与设备相关软件、与设备 与设备 无关软件),最上面是用户程 无关软件 I/O接口程序 序。 内核 空间 与设备 打印机 摄像机 磁盘 --- 1.控制器 相关软件 驱动程序 驱动程序 驱动程序 ·I/O设备一般都由机械和 电子两个部分组成。为了使设 硬件接口- 打印机控制器 摄像机控制器 磁盘控制器 计更加模块化、更具通用性, 也为了降低设计制作的成本, 设备-+ 如今常把它们分开来处理:电 打印机 摄像机 子部分称作是“设备控制器” 或“适配器”;机械部分仍被 称作是“设备
4.1 设备管理概述 • 4.1.1 I/O系统的组织结构 整个I/O结构可以划分 成三个层次:底层是具体的设 备和硬件接口,中间是系统软 件(与设备相关软件、与设备 无关软件),最上面是用户程 序。 . 打印机 摄像机 硬盘 设备 打印机控制器 摄像机控制器 磁盘控制器 打印机 驱动程序 摄像机 驱动程序 磁盘 驱动程序 I/O接口程序 硬件接口 与设备 相关软件 与设备 无关软件 用户程序 进程A 进程B 进程C 进程N 用户 空间 内核 空间 1. 控制器 I/O设备一般都由机械和 电子两个部分组成。为了使设 计更加模块化、更具通用性, 也为了降低设计制作的成本, 如今常把它们分开来处理:电 子部分称作是“设备控制器” 或“适配器”;机械部分仍被 称作是“设备”。
。控制器的一端与 CPU与设备控制器接口, 设备控制器与/O设备接口 计算机连接,另一端与 设备连接。控制器上有 数据线 设备控制器 数据 数据寄存器 与I/O设备 连接器,设备上引出的 状态 的接☐1 控制 电缆可插到连接器中, 控制状态 设备控制器 数据 完成与控制器的连接。 寄存器 I/O 与1/O设备 状态 很多控制器可同时连接 CPU 地址线 逻辑 的接口2 部件 控制 2个、4个甚至8个相同 设备,它们将共享控制 设备控制器 数据 控制线 器里的/O逻辑部件。 与1/0设备 状态 的接▣i 控制 。控制器除将设备与计算机 连接外,更重要的是随时监视设备的状态,实现对 设备的控制与操作。每个控制器有若干个寄存器, 内存 1/0端▣ 用来与CPU通信。通过往寄存器里“写”,操作系 统可命令设备开启或关闭,可让设备发送数据、接 收数据,或者让设备执行其他操作。通过对寄存器 内存 的“读”,操作系统可得知设备的状态,断定它是 否可以接收新的命令等。 I/O端▣ ■ 为使CPU与控制器的各个寄存器进行通信,常 采用“单独的/O空间”和“内存映射I/O两种方法。 (a)单独的/O和内存空间 (b)内存映射1/O
. 控制器的一端与 计算机连接,另一端与 设备连接。控制器上有 连接器,设备上引出的 电缆可插到连接器中, 完成与控制器的连接。 很多控制器可同时连接 2个、4个甚至8个相同 设备,它们将共享控制 器里的I/O逻辑部件。 数据寄存器 控制/状态 寄存器 I/O 逻辑 部件 设备控制器 与I/O设备 的接口i 设备控制器 与I/O设备 的接口1 设备控制器 与I/O设备 的接口2 数据线 地址线 控制线 数据 状态 控制 数据 状态 控制 数据 状态 控制 CPU与设备控制器接口 设备控制器与I/O设备接口 CPU . 控制器除将设备与计算机 连接外,更重要的是随时监视设备的状态,实现对 设备的控制与操作。每个控制器有若干个寄存器, 用来与CPU通信。通过往寄存器里“写”,操作系 统可命令设备开启或关闭,可让设备发送数据、接 收数据,或者让设备执行其他操作。通过对寄存器 的“读”,操作系统可得知设备的状态,断定它是 否可以接收新的命令等。 . 内存 I/O端口 (a) 单独的I/O和内存空间 (b) 内存映射I/O 内存 I/O端口 为使CPU与控制器的各个寄存器进行通信,常 采用“单独的I/O空间”和“内存映射I/O”两种方法
2.设备驱动程序 。涉及设备管理的软件分为与设备相关和与设备无关的两部分。与设备相关部分就是 设备驱动程序,用于实现对具体设备的管理和操作:与设备无关部分是一些系统调用, 用来把用户的/O请求导向到具体的设备驱动程序。 要让设备工作,必须访问设备控制器中的各种寄存器,这是通过编写特定的程序代 码来实现的,这样的代码程序就称为“设备驱动程序” 设备驱动程序应设计成是可重入的,其代码在执行中不允许被修改。通常,一类设 备有一个设备驱动程序,任务是把用户提交的操作命令转化为物理操作的启动和实施。 3./O接口程序 。/O接口程序就是与设备无关部分软件,它从接收用户对设备提出的1/O请求,然后 把I/O请求转变成所需的/O命令,调用具体的设备驱动程序去执行,完成这个I/O请求。 。O接口程序为用户提供统一的设备命名方式,用主设备号指定设备类型,次设备 号作为参数传递给设备驱动程序,以便确定真正完成读写操作的设备。这样在编程时, 不必指定具体的物理设备,有利于/O设备的故障处理,为设备分配增添了灵活性。称这 种方法是设备管理中的“I/O设备无关性”或“T/O设备独立性”。 。I/O接口程序需要考虑与设备驱动程序的接口。如果各类设备的驱动程序都有自己 不同的接口,那么要往系统里添加一种新的设备类型就会很困难,应该提供驱动程序的 标准接口,这样添加一个新的驱动程序就很容易,开发设备驱动程序的人员也就知道应 该如何着手去编写驱动程序
2. 设备驱动程序 3. I/O接口程序 涉及设备管理的软件分为与设备相关和与设备无关的两部分。与设备相关部分就是 设备驱动程序,用于实现对具体设备的管理和操作;与设备无关部分是一些系统调用, 用来把用户的I/O请求导向到具体的设备驱动程序。 . . 要让设备工作,必须访问设备控制器中的各种寄存器,这是通过编写特定的程序代 码来实现的,这样的代码程序就称为“设备驱动程序”。 . 设备驱动程序应设计成是可重入的,其代码在执行中不允许被修改。通常,一类设 备有一个设备驱动程序,任务是把用户提交的操作命令转化为物理操作的启动和实施。 . I/O接口程序就是与设备无关部分软件,它从接收用户对设备提出的I/O请求,然后 把I/O请求转变成所需的I/O命令,调用具体的设备驱动程序去执行,完成这个I/O请求。 . I/O接口程序为用户提供统一的设备命名方式,用主设备号指定设备类型,次设备 号作为参数传递给设备驱动程序,以便确定真正完成读写操作的设备。这样在编程时, 不必指定具体的物理设备,有利于I/O设备的故障处理,为设备分配增添了灵活性。称这 种方法是设备管理中的“I/O设备无关性”或“I/O设备独立性”。 I/O接口程序需要考虑与设备驱动程序的接口。如果各类设备的驱动程序都有自己 不同的接口,那么要往系统里添加一种新的设备类型就会很困难,应该提供驱动程序的 标准接口,这样添加一个新的驱动程序就很容易,开发设备驱动程序的人员也就知道应 该如何着手去编写驱动程序。
。4.1.2计算机设备的分类 1.基于设备的从属关系分类 。系统设备:操作系统生成时就纳入系统管理范围的设备,也称为“标准设备”。 。用户设备:在完成任务过程中,用户特殊需要的设备。这些是操作系统生成时未 经登记的非标准设备,因此,需要向系统提供使用该设备的设备驱动程序。 2.基于设备的分配特性分类 独享设备:分配给用户进程使用,就必须等它使用完,才能重新分配给另一个用 户进程使用。即独享设备的使用具有排它性。 ·共享设备:可由几个用户进程交替地对它进行信息读或写操作。从宏观上看,它 们在同时使用,因此这种设备的利用率较高。 .虚拟设备:通过辅存的支持,利用SPOOLing技术,把独享设备“改造”成可以共 享的设备,但实际上这种共享设备并不存在。 3.基于设备的工作特性分类 输入输出设备:输入设备是计算机“感知”或“接触”外部世界的设备,用户通 过它把信息送到计算机系统内部:输出设备是计算机“通知”或“控制”外部世界的设 备·,存储设备:计算机用来长期保存各种信息、又可以随时访问这些信息的设备
虚拟设备:通过辅存的支持,利用SPOOLing技术,把独享设备“改造”成可以共 享的设备,但实际上这种共享设备并不存在。 独享设备:分配给用户进程使用,就必须等它使用完,才能重新分配给另一个用 户进程使用。即独享设备的使用具有排它性。 用户设备:在完成任务过程中,用户特殊需要的设备。这些是操作系统生成时未 经登记的非标准设备,因此,需要向系统提供使用该设备的设备驱动程序。 . 输入/输出设备:输入设备是计算机“感知”或“接触”外部世界的设备,用户通 过它把信息送到计算机系统内部;输出设备是计算机“通知”或“控制” 外部世界的设 备 。 • 4.1.2 计算机设备的分类 . 1. 基于设备的从属关系分类 系统设备:操作系统生成时就纳入系统管理范围的设备,也称为“标准设备”。 2. 基于设备的分配特性分类 . . . 共享设备:可由几个用户进程交替地对它进行信息读或写操作。从宏观上看,它 们在同时使用,因此这种设备的利用率较高。 . 3. 基于设备的工作特性分类 . 存储设备:计算机用来长期保存各种信息、又可以随时访问这些信息的设备
(1)磁带 磁带是严格按照信息存放的物理顺序进行定位与存取的存储设备。必须从其头部 开始,一个记录、一个记录地顺序读写,因此是一种适于顺序存取的存储设备。 ·记录间隙 磁带机启停时有惯性需要考虑。启动时,须经过一段时间才能加速到额定速度: 读/写完一个记录到真正停下来,要滑过一段距离。因此,磁带上每个记录间要有所谓 的“记录间隙IRG)”存在。 。记录的成组与分解 为减少磁带上RG的数量,提高存储利用率,写时先在内存缓冲区把若干记录拼装 成一块,然后写出,这个过程称为“记录的成组”;读时先把一块读到内存缓冲区, 然后从中挑选出所需要的记录,这个过程称为“记录的分解”。 (2)磁盘 ·磁盘的特点是存储容量大,存取速度快,能顺序或随机存取。操作系统中的很多 实现技术(如存储管理中的虚拟存储),都是以磁盘作为后援的。因此,它越来越成为 现代计算机系统中一个不可缺少的重要组成部分。 ·柱面号、磁头号、扇区号 盘面上的磁道号就是“柱面号”;每个盘面所对应的读/写磁头从0开始由上到下顺 序编号,是“磁头号”;盘面上的扇区按磁盘旋转的反向、从0开始编号,称为“扇区 号
(1) 磁带 . . 磁盘 磁带是严格按照信息存放的物理顺序进行定位与存取的存储设备。必须从其头部 开始,一个记录、一个记录地顺序读/写,因此是一种适于顺序存取的存储设备。 记录间隙 磁带机启停时有惯性需要考虑。启动时,须经过一段时间才能加速到额定速度; 读/写完一个记录到真正停下来,要滑过一段距离。因此,磁带上每个记录间要有所谓 的“记录间隙(IRG)”存在。 为减少磁带上IRG的数量,提高存储利用率,写时先在内存缓冲区把若干记录拼装 成一块,然后写出,这个过程称为“记录的成组”;读时先把一块读到内存缓冲区, 然后从中挑选出所需要的记录,这个过程称为“记录的分解”。 记录的成组与分解 磁盘的特点是存储容量大,存取速度快,能顺序或随机存取。操作系统中的很多 实现技术(如存储管理中的虚拟存储),都是以磁盘作为后援的。因此,它越来越成为 现代计算机系统中一个不可缺少的重要组成部分。 . 柱面号、磁头号、扇区号 盘面上的磁道号就是“柱面号”;每个盘面所对应的读/写磁头从0开始由上到下顺 序编号,是“磁头号”;盘面上的扇区按磁盘旋转的反向、从0开始编号,称为“扇区 号”。 (2) .
。4.1.2设备管理的目标与功能 1.设备管理的目标 ·提高外部设备的利用率 多道程序设计环境下,外设的数量少于用户进程数,竞争不可避免。如何合理地分 配外部设备,协调它们之间的关系,充分发挥外设之间、外设与CPU之间的并行工作 能力,使系统中各种设备尽可能地处于忙碌状态,是一个非常重要的问题。 ·为用户提供便利、统一的使用界面 “界面”是用户与设备交往的手段。外设类型多样,特性不一,操作各异。系统必须 隐藏各种外设的物理特性和各自的操作方式,这样使用时才会感觉到便利和统一。 2.设备管理的功能 .提供一组/O命令,以便用户进程能够在程序一级发出所需要的/O请求,这就是 用户使用外部设备的“界面”。 。进行设备的分配与回收。 ·对缓冲区管理。外设的数据传输速度都较低,高速CPU与慢速/O设备间的速度 不匹配。为此,系统在内存开辟“缓冲区”,CPU和O设备都通过缓冲区传送数据, 以协调设备与设备之间、设备与CPU之间的工作。 。 实现真正的I/O操作
对缓冲区管理。外设的数据传输速度都较低,高速CPU与慢速I/O设备间的速度 不匹配。为此,系统在内存开辟“缓冲区”,CPU和I/O设备都通过缓冲区传送数据, 以协调设备与设备之间、设备与CPU之间的工作。 提供一组I/O命令,以便用户进程能够在程序一级发出所需要的I/O请求,这就是 用户使用外部设备的“界面”。 • 4.1.2 设备管理的目标与功能 1. 2. 设备管理的目标 设备管理的功能 . . . . 多道程序设计环境下,外设的数量少于用户进程数,竞争不可避免。如何合理地分 配外部设备,协调它们之间的关系,充分发挥外设之间、外设与CPU之间的并行工作 能力,使系统中各种设备尽可能地处于忙碌状态,是一个非常重要的问题。 提高外部设备的利用率 . 为用户提供便利、统一的使用界面 “界面”是用户与设备交往的手段。外设类型多样,特性不一,操作各异。系统必须 隐藏各种外设的物理特性和各自的操作方式,这样使用时才会感觉到便利和统一。 进行设备的分配与回收。 . 实现真正的I/O操作
4.2输入/输出的处理步骤 一个输入/输出请求的四个处理步骤 (1)用户在程序中使用系统提供的输入/输出命令发出/O请求: (②)“输入输出管理程序”接受这个请求: (3)“设备驱动程序”来具体完成所要求的/O操作: (4)“设备中断处理程序”来处理这个请求。 用户进程程序 输入输出管理程序 发出/O请求 设备中断处理程序, READ (input,buffer); 阻塞调用进程 验证/O请求 保护中断现场 传送数据 调用设备驱动程序 buer(缓冲区) 校验设备状态 恢复现场 调用设备驱动程序 激活调用进程 设备驱动程序 初始化并启动1/O 完成真正的/O 返回输入输出管理程序
. 4.2 输入/输出的处理步骤 “设备中断处理程序”来处理这个请求。 一个输入/输出请求的四个处理步骤 用户在程序中使用系统提供的输入/输出命令发出I/O请求; “输入/输出管理程序”接受这个请求; “设备驱动程序”来具体完成所要求的I/O操作; 输入/输出管理程序 . 阻塞调用进程 . 验证I/O请求 . 调用设备驱动程序 . 校验设备状态 . 激活调用进程 用户进程程序 READ (input, buffer) ; buffer (缓冲区) ; 设备驱动程序 . 初始化并启动I/O . 完成真正的I/O . 返回输入/输出管理程序 设备中断处理程序 . 保护中断现场 . 传送数据 . 恢复现场 . 调用设备驱动程序 发出I/O请求 (1) (2) (3) (4)
。4.2.1I/O请求的提出 输入/输出请求来自用户作业进程。比如在某个进程的程序中使用系统提供的O 命令形式为: READ (input,buffer,n); 它表示要求通过输入设备input,读入n个数据到由buffer指明的内存缓冲区中。 ·编译程序会将源程序里的这一条/O请求命令翻译成相应的硬指令,比如具有如下 形式: CALL IOCS,CONTRL,ADDRESS,NUMBER IOCS是操作系统中管理I/O请求的程序入口地址,因此CALL1OCS表示对输入/输出 管理程序的调用。CONTRL是根据命令中的input翻译得到的,表示在哪个设备上有输入 请求:ADDRESS是根据命令中的buffer翻译得到的,表示输入数据存放的缓冲区起始地 址;NUMBER是根据命令中的n翻译得到的,表示输入数据的个数。 。4.2.2对I/0请求的管理 。输入/输出管理程序一方面从用户程序那里接受1/O请求,另一方面把/O请求交给 设备驱动程序去具体完成,因此起到一个桥梁作用。 ·输入输出管理程序先接受用户对设备的操作请求,把发出请求的进程由运行状 态改变为阻塞状态。管理程序根据命令中CONTRL参数提供的信息,让该进程的PCB到 与这个设备有关的阻塞队列中排队,等候/O的完成
• 4.2.1 I/O请求的提出 . 输入/输出请求来自用户作业进程。比如在某个进程的程序中使用系统提供的I/O 命令形式为: READ(input,buffer,n); 它表示要求通过输入设备input,读入n个数据到由buffer指明的内存缓冲区中。 . 编译程序会将源程序里的这一条I/O请求命令翻译成相应的硬指令,比如具有如下 形式: CALL IOCS,CONTRL,ADDRESS,NUMBER IOCS是操作系统中管理I/O请求的程序入口地址,因此CALL IOCS表示对输入/输出 管理程序的调用。CONTRL是根据命令中的input翻译得到的,表示在哪个设备上有输入 请求;ADDRESS是根据命令中的buffer翻译得到的,表示输入数据存放的缓冲区起始地 址;NUMBER是根据命令中的n翻译得到的,表示输入数据的个数。 • 4.2.2 对I/O请求的管理 . 输入/输出管理程序一方面从用户程序那里接受I/O请求,另一方面把I/O请求交给 设备驱动程序去具体完成,因此起到一个桥梁作用。 . 输入/输出管理程序先接受用户对设备的操作请求,把发出请求的进程由运行状 态改变为阻塞状态。管理程序根据命令中CONTRL参数提供的信息,让该进程的PCB到 与这个设备有关的阻塞队列中排队,等候I/O的完成
·若当前设备正处于忙碌状态,那么现在提出I/O请求的进程只能在阻塞队列中排队 等待:若当前设备空闲,那么管理程序验证了1/O请求的合法性后,就把这个设备分配 给该用户进程使用,调用设备驱动程序,去完成具体的输入/输出任务。 。在/O操作完成后,控制由设备驱动程序返回输入输出管理程序,由它把等待这个 /O完成的进程从阻塞队列上摘下来,把它的状态由阻塞变为就绪,并且到就绪队列排 队,再次参与对CPU的竞争。 因此,设备的输入/输出管理程序由三块内容组成:接受用户的/O请求,组织管理 输入输出的进行,以及输入/输出完成后的善后处理。 。4.2.3I/O请求的具体实现 。设备管理中,由设备驱动程序来具体实现/O请求,它必须用有关输入/输出的特权 指令来与设备硬件进行交往,以便真正实现用户的输入/输出操作要求。 ·设备驱动程序读出设备状态,判定其可用后,就向设备发出/O硬指令。设备驱动 程序一旦启动一个I/O操作,就让出对CPU的控制权,以便在输入/输出设备忙于进行I/O 时,CPU能脱身去做其他的事情,从而提高处理机的利用率。 .设备完成一次输入输出后,通过中断告知CPU。CPU接到/O设备的中断信号,就 去调用该设备的中断处理程序。中断处理程序把CPU的当前状态保存起来,以便中断处 理完后,被中断的进程能继续运行下去。另外一个任务是按参数ADDRESS和NUMBER 的指点,进行具体的数据传输
. 因此,设备的输入/输出管理程序由三块内容组成:接受用户的I/O请求,组织管理 输入/输出的进行,以及输入/输出完成后的善后处理。 若当前设备正处于忙碌状态,那么现在提出I/O请求的进程只能在阻塞队列中排队 等待;若当前设备空闲,那么管理程序验证了I/O请求的合法性后,就把这个设备分配 给该用户进程使用,调用设备驱动程序,去完成具体的输入/输出任务。 . 在I/O操作完成后,控制由设备驱动程序返回输入输出管理程序,由它把等待这个 I/O完成的进程从阻塞队列上摘下来,把它的状态由阻塞变为就绪,并且到就绪队列排 队,再次参与对CPU的竞争。 . • 4.2.3 I/O请求的具体实现 . 设备管理中,由设备驱动程序来具体实现I/O请求,它必须用有关输入/输出的特权 指令来与设备硬件进行交往,以便真正实现用户的输入/输出操作要求。 . 设备驱动程序读出设备状态,判定其可用后,就向设备发出I/O硬指令。设备驱动 程序一旦启动一个I/O操作,就让出对CPU的控制权,以便在输入/输出设备忙于进行I/O 时,CPU能脱身去做其他的事情,从而提高处理机的利用率。 . 设备完成一次输入/输出后,通过中断告知CPU。CPU接到I/O设备的中断信号,就 去调用该设备的中断处理程序。中断处理程序把CPU的当前状态保存起来,以便中断处 理完后,被中断的进程能继续运行下去。另外一个任务是按参数ADDRESS和NUMBER 的指点,进行具体的数据传输