840 likes | 982 Views
I/O 设备管理. 知识点: I/O 系统硬件 I/O 软件 磁盘调度. 7.1 I/O 系统硬件. 在计算机系统中,使用了许多 I/O 设备,它们的特点和操作方式不完全一样。但是,所有的 I/O 设备都是通过 设备管理程序 来管理的。 设备管理是计算机操作系统中最繁杂且与硬件紧密相关的部分。 要把 大量的 I/O 设备 精减 成一个 单一模块的 I/O 系统,必须全面地适应已有设备的需求,也必须考虑到未来的存储和输入 / 输出技术的发展。. I/O 设备. 计算机所管理的 I/O 外部设备按输入输出对象的不同可以分为以下 3 类:
E N D
I/O设备管理 知识点: • I/O 系统硬件 • I/O 软件 • 磁盘调度
7.1 I/O系统硬件 在计算机系统中,使用了许多I/O设备,它们的特点和操作方式不完全一样。但是,所有的I/O设备都是通过设备管理程序来管理的。 设备管理是计算机操作系统中最繁杂且与硬件紧密相关的部分。 要把大量的I/O设备精减成一个单一模块的I/O系统,必须全面地适应已有设备的需求,也必须考虑到未来的存储和输入/输出技术的发展。
I/O设备 计算机所管理的I/O外部设备按输入输出对象的不同可以分为以下3类: • ① 用户可读设备,用于用户与计算机通信。 • ② 机器可读设备,用于电子装置与计算机通信。 • ③ 通信设备,用于与远程设备通信。
I/O设备 所有这些设备其属性和类别有很大的区别,其主要的区别在于(P213-214): • ① 数据传输速度。 • ② 应用。 • ③ 控制的复杂性。 • ④ 信息组织方式。 • ⑤ 数据描述。 • ⑥ 错误条件。
设备控制器 • I/O设备一般由机械和电子两部分组成,通常将这两部分分开处理,以提供更加模块化、更加通用的设计。 • 电子部分称作设备控制器或适配器(Device Controller或Adapter)。 • 机械部分就是设备本身,控制器通过电缆与设备内部相连。
设备控制器 设备控制器的主要作用有: • ① 接收和识别CPU发来的多种不同命令; • ② 实现CPU与控制器之间、控制器和设备之间的数据交换; • ③ 记录和报告设备的状态。 • ④ 地址识别。识别控制器控制的每个设备的地址。
设备控制器 • 每个 I/O 设备通过设备控制器 与计算机的数据总线和地址总线相连接。 • 设备控制器是用于操作端口、总线或设备的一组电子器件。 • 某些设备(如磁盘设备)有内置的控制器
CPU 地址总线 数据总线 RAM 设备控制器 与设备 (总线由单独的线路组成)
设备控制器 • 处理器如何向控制器发送命令和数据以完成 I/O 传输呢? • 设备控制器有一个或多个用于数据和控制信号的寄存器。 • 设备控制器可能包含有数据寄存器、状态寄存器、控制寄存器和存储器(这部分存储器称为硬件缓冲区)。 • 处理器通过读写这些寄存器的位组合来与设备控制器通信。
Address A B & & & 8 D 锁 存 器 Write Read From data bus To device 1 思考: 设备的地址? 工作原理? & & & 1 & . . & 8 D 锁 存 器 From data bus To device 3 & & & &
设备控制器中的寄存器 • 状态寄存器:保存是否忙、任务是否完成、是否出错等信息。 • 控制寄存器 • 向设备发送命令或改变设备状态。 • 数据寄存器(输入/出) • 数据被写入该设备数据寄存器,或 • 从该设备数据寄存器读出数据供处理器使用。 • Buffer • 数据从该设备读出后、处理器对它处理之前临时存放数据,或临时存放正等待写到该设备的数据。
设备控制器中的寄存器 忙 已完成 出错 … ... 控制寄存器 状态寄存器 数据寄存器 0 数据寄存器 1 数据寄存器 n-1 设备控制器
内存映射 I/O • 传统上,CPU 用特殊的 I/O 指令和单独的 I/O 总线对每个设备读/写信息。 • 例如,一个读/写命令必须指定设备地址 • IN AX,80H • 用内存映射 I/O时,CPU 使用相同的指令和总线对内存和所有的输入/出设备进行通信。
内存映射 I/O • I/O 设备被看作是主存映射图中的某个内存位置。 • 没有专门的设备地址 • 对每个设备寄存器有标准的内存地址。 • 处理器通过标准数据传输指令来完成对设备控制器的读写。 思考:我们学习过这样的方式吗?
内存映射 I/O 设备地址 内存地址 device one device two device three RAM (传统的方法) 内存地址 device one device two device three RAM (内存映射 I/O)
内存映射 I/O • 个人计算机(PC)使用特殊的 I/O 指令来控制一些设备,而使用内存映射 I/O指令来控制其他设备(如,图形控制器(视频卡))。 • 图形控制器有一个较大的内存映射区域以保存屏幕内容。 • 处理器通过对图形控制器的内存映射区写数据来向屏幕输出(例如一幅图片)。
I/O技术 1. I/O技术简介 目前,操作系统中的I/O技术大致有以下3种: • (1) 程序I/O • (2) 中断驱动I/O • (3) 直接存储器存储(DMA)
I/O技术 随着计算机系统的发展,单个部件也越来越复杂。最明显的例子就是I/O技术的发展。 • ① 处理器直接控制边缘设备。 • ② 增加一个控制器或I/O模块。 • ③ 使用了如阶段②的设置,但增加了中断。 • ④ I/O模块通过DMA直接控制内存。 • ⑤ I/O模块由一个单独处理器处理,有专门用于I/O的指令集。 • ⑥ I/O模块有本地存储器,事实上,有其自己的计算机。
I/O技术 2. DMA • 对于需要做大量传输的设备(例如磁盘驱动器),如果用 CPU 按字节协调、在这类设备与主存之间传输数据那就太浪费了。 • 作为代替,许多系统采用直接内存访问(DMA)控制器以减轻 CPU 的负担。 • DMA 控制器可以直接从主存读信息或直接向主存写信息。 • 在这期间,CPU 可以通过高速缓存工作;直到 DMA 控制器释放总线前,CPU 都不会访问主存。
DMA CPU 高速缓存 DMA 控制器 RAM cpu 存储总线 系统总线 磁盘 控制器
I/O技术 DMA是一种优于中断方式的I/O控制方式,其特点为:数据传输的基本单位是数据块,即CPU与I/O设备之间,每次至少传送一个数据块;所传送的数据是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,向CPU发中断信号,请求CPU干预,整块数据的传送是在控制器的控制下完成的。
I/O技术 • DMA控制器组成 :
I/O技术 3. I/O通道 计算机中设计了一个专门负责外设I/O的处理器,置于CPU和设备控制器之间,称这个I/O处理器为I/O通道。 设计目的是: 建立独立的I/O操作,使数据的传送独立于CPU,并尽量使有关I/O操作的组织、管理及结束也独立,以保证CPU有更多时间进行数据处理。
I/O技术 • I/O通道是DMA方式的发展,它的程序是由通道指令组成的,称为通道程序。I/O处理器和CPU共享主存储器。 • 在微型计算机中,其I/O处理器并不完全具有前述I/O通道的所有功能,因此,就称为I/O处理器。
I/O技术 • 在大型计算机中常有多个I/O通道,而在一般的微型计算机中则可以配置1--2个I/O处理器(或更多)。 • 这些I/O处理器和中央处理器共享主存储器和总线(微型机中采用总线结构),在大型机中就可能出现几条通道和中央处理器同时争相访问主存储器的情况。为此给通道和中央处理器规定了不同的优先次序。
I/O技术 • 通道通过执行通道程序,并与设备控制器一起共同实现对I/O设备的控制。 • 通道程序是由一系列的通道指令(或称为通道命令)所构成。通道指令和一般的机器指令不同,在它的每条指令中通常包含下列信息:操作码,内存地址,计数,通道程序结束位P,记录结束标志R。
I/O技术 一般I/O通道有3种类型: • (1) 字节多路通道—以字节为单位、多路(子通道)分时轮转 • (2) 数组选择通道—以数组为单位、每次选择一路、高速传输 • (3) 数组多路通道—以数组为单位、多路分时轮转、高速传输 I/O 通道方式的发展,既可进一步减少CPU 的干预,又可实现 CPU、通道和 I/O 设备 3 者的并行工作,从而更有效地提高了整个系统的资源利用率。
I/O软件 I/O软件的总体目标是,按分层的思想构造软件,较低层的软件要使较高层的软件独立于硬件,较高层的软件则要向用户提供一个友好、规范、清晰的界面。I/O软件设计的具体目标是(P222): • ① 设备独立性。 • ② 统一命名。 • ③ 同步/异步传输。 • ④ 出错处理。 • ⑤ 设备共享与独占。
7.2 I/O软件 根据I/O软件的设计目标,将I/O软件组织成以下4个层次: • (1)中断处理程序 • (2)设备驱动程序 • (3)与设备无关的操作系统软件 • (4)用户层软件
中断处理程序 在现代计算机系统中,对I/O设备的控制,广泛采用中断驱动(Interrupt-driven)方式,即当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器便按照该命令的要求去控制I/O设备,此时,CPU与I/O设备并行操作。
中断处理程序 无论是哪种I/O设备,其中断处理程序的处理基本相同,其步骤为: • ① 唤醒被阻塞的驱动进程。 • ② 保护被中断进程的CPU环境。 • ③ 分析中断原因,转入相应的中断处理程序。 • ④ 进行中断处理。 • ⑤ 恢复现场。
向量中断 • 更为先进的系统采用向量中断。 • 要求中断的设备既发出中断请求信号也给出一个中断号。 • 中断号作为中断服务程序(入口地址)表的偏移量。 • 中断服务程序(入口地址)表称为中断向量。 • 采用这种机制,要求中断的设备可以让 CPU 马上执行特定的中断处理程序。
Intel Pentium CPU 中断 向量号 0 除出错 1 调试异常 5 边界范围异常 6 非法操作码 7 设备不可用 8 两次出错 12 堆栈出错 13 通用保护 14页出错 16 浮点错误 . . . >=32 可屏蔽中断 非(不可)屏蔽 中断 (可以被 CPU 屏蔽的中断)
中断优先级 • 中断号还可以用来定义中断优先级。 • 先进的系统采用向量(中断)号作为优先级。 • 如果系统正在处理一个低优先级的中断(中断号为 60),它可以被更高优先级的中断(中断号为 0-59)抢占。 • 低优先级设备的中断(中断号大等于 60)必须等待直到当前中断服务程序执行完成,它才会被响应。
中断 • 现代操作系统可以与中断机制进行多种方式的交互。 • 在系统启动时,操作系统探测硬件总线以发现哪些设备是存在的,而且将相应的中断处理程序安装到中断向量中。
中断 • 在 I/O 时,各种设备控制器如果准备好服务会触发(申请)中断。 • 这些中断表示输入数据已有,或输出已完成,或已检测到错误。
设备驱动程序 • 由于 I/O 设备有很大的差异,所以对操作系统的设计造成某些问题。 • 操作系统怎样才能以一种标准的、统一的方式对待 I/O 设备呢? • 操作系统怎样设计才能做到向计算机添加新设备(例如,添加新磁盘)而不需要重写操作系统代码呢? • 操作系统怎样才能对应用程序给出方便、统一的接口呢?
设备驱动程序 • 操作系统能够以统一的方式对待不同的I/O 设备,因为具体的差别被称为设备驱动程序 的内核模块所封装。
设备驱动程序 • 这些设备驱动程序一方面可以定制以适合各种设备,另一方面也对内核 I/O 子系统提供了一组标准接口。 • 设备驱动程序层的作用是为内核 I/O 子系统隐藏设备控制器之间的差异。 • 一个特定的设备可能带有多种设备驱动程序;例如,MS-DOS、Win98、Win2000、 Windows XP 和 Solaris 驱动程序。
设备驱动程序 所有与设备相关的代码放在设备驱动程序中。它是I/O进程与设备控制器之间的通信程序,因为它常以进程的形式存在,故也可以称为设备驱动进程。由于驱动程序与设备硬件密切相关,故应为每一类设备配置一种驱动程序,或为一类密切相关的设备配置一个驱动程序。
设备驱动程序 1.设备驱动程序的功能 • ① 将接收到的来自它上一层的与设备无关的抽象请求转为具体请求。 • ② 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数、设置设备的工作方式。 • ③ 发出I/O命令,启动分配到的I/O设备,完成指定的I/O操作。 • ④ 及时响应控制器或通道发来的中断请求,并调用相应的中断处理程序处理。 • ⑤ 对于有通道的计算机系统,驱动程序还应能根据用户I/O请求构成通道程序。
设备驱动程序 2. 设备驱动程序的处理过程 • 一般地说,设备驱动程序的任务是接收来自它上面一层的与设备无关软件的请求,并执行这个请求。 • 一个典型的请求是“读第n块”,如果请求到来时驱动程序是空闲的,则立即开始执行该请求;若驱动程序正在执行一个请求,则将新到来的请求插到一个等待处理I/O请求队列中。
与设备无关的I/O软件 • 大部分I/O软件是与设备无关的,设备驱动程序与设备独立软件之间的确切界限依赖于具体系统,因为对于一些本来应按照设备独立方式实现的功能,出于效率和其他原因,实际上还是由设备驱动来实现的。 • 与设备无关软件层通常应实现的功能为:设备驱动程序的统一接口、设备命名、提供一个与设备无关的块大小、缓冲、块设备的存储分配、分配和释放独占设备、错误报告等。
与设备无关的I/O软件 • 与设备无关的I/O软件系统称为I/O子系统。 • I/O子系统执行着与设备无关的操作。 • 同时I/O子系统为用户应用程序提供一个统一的接口。 下面讨论I/O子系统所需完成的主要功能。
OS 内核 I/O 子系统 鼠标驱动 程序 硬盘驱动 程序 键盘驱动 程序 … ... 软盘驱动 程序 键盘 控制器 鼠标 控制器 … ... 软盘 控制器 硬盘 控制器 键盘 鼠标 … ... 软盘 驱动器 硬盘 驱动器
与设备无关的I/O软件 1. 设备命名 • 与设备无关的软件(即I/O子系统)负责把设备的符号名映射到相应的设备驱动程序。 • 设备命名后,所有设备的名字的集合称做设备的名字空间。 • UNIX系列有3种不同的名字空间。 • (1) 主、次设备号(hda、hdb等) • (2) 内部号(标识设备驱动程序)与外部号(标识用户可见的设备) • (3) 设备文件与路径名(如/dev/had、/devfd0等)
与设备无关的I/O软件 2. 设备保护 • 与设备命名机制密切相关的是设备保护。 • 在大多数大型计算机系统中,用户进程对I/O设备的访问是完全禁止的。