win8风格 网站模板,提供网站建设工具的品牌,网站关键词优化哪家正规,环保局网站建设申请5.1 I/O管理概述 5.1.1 I/O设备
注#xff1a;块设备可以寻址#xff0c;但是字符设备是不可寻址的
I/O设备是将数据输入到计算机中#xff0c;或者可以接收计算机输出数据的外部设备#xff0c;属于计算机中的硬件部件#xff1b;
设备的分类 按使用特性分类#xff…5.1 I/O管理概述 5.1.1 I/O设备
注块设备可以寻址但是字符设备是不可寻址的
I/O设备是将数据输入到计算机中或者可以接收计算机输出数据的外部设备属于计算机中的硬件部件
设备的分类 按使用特性分类 人机交互类外部设备鼠标、键盘、打印机等用于人机交互。数据传输速度慢。存储设备移动硬盘、光盘等用于数据存储。数据传输速度快。网络通信设备调制解调器等用于网络通信。数据传输速度介于上述二者之间。 按信息交换的单位分类 块设备。信息交换以数据块为单位。它属于有结构设备如磁盘等。磁盘设备的基本特征是传输速率较高、可寻址即对它可随机地读/写任意一块。字符设备。信息交换以字符为单位。它属于无结构类型如交互式终端机、打印机等。 按传输速率分类 低速设备。传输速率仅为每秒几字节到数百字节的一类设备如键盘、鼠标等。中速设备。传输速率为每秒数千字节至数万字节的一类设备如激光打印机等。高速设备。传输速率在数百千字节至千兆字节的一类设备如磁盘机、光盘机等。 I/O接口 I/O接口又称为设备控制器位于CPU与设备之间它既要与CPU通信又要与设备通信还要具有按CPU发来的命令去控制设备工作的功能主要由三部分组成如下图所示。 组成部分 设备控制器与CPU的接口实现控制器与CPU之间的通信 该接口有三类信号线数据线、地址线和控制线。 数据线与两类寄存器相连数据寄存器存放从设备送来的输入数据或从CPU送来的输出数据和控制/状态寄存器存放从CPU送来的控制信息或设备的状态信息。 设备控制器与设备的接口实现控制器与设备之间的通信 一个设备控制器可以连接一个或多个设备因此控制器中有一个或多个设备接口。 每个接口中都存在数据、控制和状态三种类型的信号。 I/O逻辑负责识别CPU发出的命令并向设备发出命令 用于实现对设备的控制。它通过一组控制线与CPU交互对从CPU收到的I/O命令进行译码。 CPU启动设备时将启动命令发送给控制器同时通过地址线把地址发送给控制器由控制器的I/O逻辑对地址进行译码并相应地对所选设备进行控制。 主要功能 接受和识别CPU发出的指令控制寄存器向CPU报告设备的状态状态寄存器数据交换数据寄存器暂存数据地址识别由I/O逻辑实现数据缓冲差错控制 3.I/O端口
I/O端口是指设备控制器中可被CPU直接访问的寄存器主要有以下三类寄存器。 寄存器类型 数据寄存器实现CPU和外设之间的数据缓冲。状态寄存器获取执行结果和设备的状态信息以让CPU知道是否准备好。控制寄存器由CPU写入以便启动命令或更改设备模式。 实现I/O端口通信有两种编址方法 独立编址。为每个端口分配一个I/O端口号所有I/O端口形成I/O端口空间普通用户程序不能对其进行访问只有操作系统使用特殊的I/O指令才能访问端口。统一编址。又称内存映射I/O每个端口被分配唯一的内存地址且不会有内存被分配这地址通常分配给端口的地址靠近地址空间的顶端。
5.1.2 I/O控制方式
设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备与内存之间的输入/输出控制方式有以下4种。 程序直接控制方式 如下图所示计算机从外部设备读取的每个字CPU需要对外设状态进行循环检查直到确定该字已经在I/O控制器的数据寄存器中。 工作流程 CPU干预的频率很频繁I/O操作开始之前、完成之后需要CPU介入并且在等待I/O完成的过程中CPU需要不断地轮询检查。 数据传送的单位每次读/写一个字 数据的流向 读操作数据输入I/O设备→CPU→内存写操作数据输出内存→CPU→I/O设备每个字的读/写都需要CPU的帮助 优点实现简单。在读/写指令之后加上实现循环检查的一系列指令即可 缺点CPU和I/O设备只能串行工作CPU需要一直轮询检查长期处于“忙等”状态CPU利用率低。 这种方式不会让进程阻塞 /*实际上程序直接控制方式也称为忙等待或轮询在某些情况下确实会让进程阻塞但这里的“阻塞”与传统意义上的操作系统中的阻塞如等待I/O操作完成而挂起进程有所不同。在程序直接控制方式中进程不会因等待I/O操作完成而被操作系统挂起或切换到其他进程但它会停留在当前的循环中不断检查I/O操作的完成情况这同样会导致进程无法执行其他任务从而形成一种“阻塞”的效果尽管这种阻塞是在用户态内发生的并未涉及操作系统层面的进程调度。详细解释如下忙等待Busy Waiting在程序直接控制方式中当进程需要执行I/O操作时它不会通过系统调用来请求操作系统完成I/O而是会直接在用户态中循环检查I/O设备的状态。如果I/O操作尚未完成进程会继续循环检查而不是被操作系统挂起或切换到其他进程。这种持续的检查操作占用了CPU资源但进程并没有进行实质性的工作如处理数据、计算等因此被视为一种“忙等待”或“轮询”。
CPU资源浪费由于进程在忙等待期间持续占用CPU资源而并没有进行有效的计算或处理这会导致CPU资源的浪费。特别是当I/O操作需要较长时间才能完成时这种浪费尤为明显。
响应性差由于进程被“阻塞”在忙等待循环中它无法及时响应其他事件或请求如用户输入、定时器中断等。这会导致程序的响应性变差用户体验下降。
并非真正的阻塞然而需要注意的是程序直接控制方式中的“阻塞”与传统意义上的阻塞如等待I/O操作完成而挂起进程是不同的。在程序直接控制方式中进程并没有被操作系统挂起或切换到其他进程它仍然在运行中只是由于持续进行无效的忙等待而无法执行其他任务。
综上所述程序直接控制方式虽然不会让进程在操作系统层面被挂起或阻塞但它通过忙等待的方式同样会导致进程无法执行其他任务从而形成一种在用户态内的“阻塞”效果。因此在实际应用中我们通常会采用更高效的I/O控制方式如中断驱动方式、DMA方式等来避免这种不必要的资源浪费和性能下降。*/中断驱动方式 中断驱动方式的思想是允许I/O设备主动打断CPU的运行并请求服务从而解放” CPU使得其向I/O控制器发送读命令后可以继续做其他有用的工作。 工作流程 引入中断机制。由于I/O设备速度很慢因此在CPU发出读/写命令后可将等待I/O的进程阻塞先切换到别的进程执行。当I/O完成后控制器会向CPU发出一个中断信号CPU检测到中断信号后会保存当前进程的运行环境信息转去执行中断处理程序处理该中断。处理中断的过程中CPU从I/O控制器读一个字的数据传送到CPU寄存器再写入主存。接着CPU恢复等待I/O的进程或其他进程的运行环境然后继续执行。 ①CPU会在每个指令周期的末尾检查中断 ②中断处理过程中需要保存、恢复进程的运行环境这个过程是需要一定时间开销的。可见如果中断发生的须率太高也会降低系统性能。 CPU干预的频率每次I/O操作开始之前、完成之后需要CPU介入。等待I/O完成的过程中CPU可以切换到别的进程执行。数据传送单位每次读/写一个字数据流向 读操作数据输入I/O设备→CPU→内存写操作数据输出内存→CPU→I/O设备 优点与“程序直接控制方式”相比在“中断驱动方式”中I/O控制器会通过中断信号主动报告I/O已完成CPU不再需要不停地轮询。CPU和I/O设备可并行工作CPU利用率得到明显提升。缺点每个字在I/O设备与内存之间的传输都需要经过CPU。而频繁的中断处理会消耗较多的CPU时间。 这种方式会让进程阻塞 DMA方式 DMA直接存储器存取方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路彻底“解放”CPU。下图为DMA工作流程。 与“中断驱动方式”相比DMA方式有这样几个改进 ①数据的传送单位是“块”。不再是一个字、一个字的传送②数据的流向是从设备直接放入内存或者从内存直接到设备。不再需要CPU作为“快递小哥”。③仅在传送一个或多个数据块的开始和结束时才需要CPU干预数据传送通过DMA控制器完成。 DMA控制器组成 下图为DMA控制器的组成。 DMA控制器中设置如下4类寄存器 数据寄存器DR。暂存从设备到内存或从内存到设备的数据。内存地址寄存器MAR。在输入时它存放把数据从设备传送到内存的起始目标地址在输出时它存放由内存到设备的内存源地址。数据计数器DC。存放本次要传送的字节数剩余要读/写的字节数。命令/状态寄存器CR。接收从CPU发来的I/O命令、有关控制信息或设备的状态。 CPU干预的频率仅在传送一个或多个数据块的开始和结束时才需要CPU干预。 数据传送单位每次读/写一个或多个块注意每次读写的只能是连续的多个块且这些块读入内存后在内存中也必须是连续的 数据流向 读操作数据输入I/O设备→内存写操作数据输出内存→I/O设备 优点数据传输以“块”为单位CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存数据传输效率进一步增加。CPU和I/O设备的并行性得到提升。 缺点CPU每发出一条I/O指令只能读/写一个或多个连续的数据块。如果要读/写多个离散存储的数据块或者要将数据分别写到不同的内存区域时CPU要发出多条I/O指令进行多次中断处理才能完成。 通道控制方式 通道I/O通道是指专门负责输入输出的处理机。是一种硬件可以理解为是“弱鸡版的CPU”。通道可以识别并执行一系列通道指令。 与CPU相比通道可以执行的指令很单一并且通道程序是放在主机内存中的也就是说通道与CPU共享内存 完成一次读写流程 CPU干预的频率极低通道会根据CPU的指示执行相应的通道程序只有完成一组数据块的读/写后才需要发出中断信号请求CPU干预。 数据传送的单位每次读/写一组数据块 数据的流向在通道的控制下进行 读操作数据输入I/O设备→内存写操作数据输出内存→I/O设备 缺点实现复杂需要专门的通道硬件支持 优点CPU、通道、I/O设备可并行工作资源利用率很高。
5.1.4 I/O软件层次结构
为了更好地设计 I/O 软件采用 层次式结构 的 I/O 软件 一个比较合理的层次划分如上图所示。整个I/O软件可以视为具有4个层次的系统结构各层次功能如下 用户层软件产生I/O请求格式化I/OSPOOLing 实现了与用户交互的接口用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。 用户层软件将用户请求翻译成格式化的I/O请求并通过“系统调用”请求操作系统内核的服务 设备独立性软件映射保护分块缓冲分配 设备独立性软件又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。 功能 ① 向上层提供统一的调用接口如read/write系统调用② 设备的保护③ 差错处理④ 设备的分配与可收 ⑤ 数据缓冲区管理 ⑥ 建立逻辑设备名到物理设备名的映射关系根据设备类型选择调用相应的驱动程序 逻辑设备 为实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中使用逻辑设备名来请求使用某类设备而在系统实际执行时必须将逻辑设备名映射成物理设备名使用。 使用逻辑设备名好处 ①增加设备分配的灵活性 ②易于实现I/O重定向指用于I/O操作的设备可以更换(即重定向)而不必改变应用程序。 设备独立性软件需要通过“逻辑设备表LUTLogical Unit Table”来确定逻辑设备对应的物理设备并找到该设备对应的设备驱动程序。 I/O设备被当做一种特殊的文件不同类型的I/O设备需要有不同的驱动程序处理 操作系统系统可以采用两种方式管理逻辑设备表LUT 第一种方式整个系统只设置一张LUT这就意味着所有用户不能使用相同的逻辑设备名因此这种方式只适用于单用户操作系统。 第二种方式为每个用户设置一张LUT各个用户使用的逻辑设备名可以重复适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程而LUT就存放在用户管理进程的PCB中。 设备驱动程序设置设备寄存器检查设备状态 与硬件直接相关负责具体实现系统对设备发出的操作指令驱动I/O设备工作的驱动程序。 将上层发出的一系列命令如read/write转化成特定设备“能听得懂”的一系列操作。 不同设备的内部硬件特性也不同这些特性只有厂家才知道因此厂家须提供与设备相对应的驱动程序CPU执行驱动程序的指令序列来完成设置设备寄存器检查设备状态等工作。 为I/O内核子系统隐藏设备控制器之间的差异。 4.中断处理程序
当I/O任务完成时I/O控制器会发送一个中断信号系统会根据中断信号类型找到相应的中断处理程序并执行。 中断处理程序的处理流程如下 中断处理层的任务 进行进程上下文的切换对处理中断信号源进行测试读取设备状态和修改进程状态等。 由于中断处理与硬件紧密相关对用户而言应尽量加以屏蔽因此应放在操作系统的底层系统的其余部分尽可能少地与之发生联系。 5.硬件
执行IO操作机械部件、电子部件组成
总结
说明用户对设备的一次命令过程如下所示
①当用户要读取某设备的内容时通过操作系统提供的read命令接口这就经过了用户层。②操作系统提供给用户使用的接口一般是统一的通用接口也就是几乎每个设备都可以响应的统一命令如read命令用户发出的read命令首先经过设备独立层进行解析然后交往下层。③接下来不同类型的设备对read命令的行为会有所不同如磁盘接收read命令后的行为与打印机接收read命令后的行为是不同的。因此需要针对不同的设备把read命令解析成不同的指令这就经过了设备驱动层。④命令解析完毕后需要中断正在运行的进程转而执行read命令这就需要中断处理程序。⑤最后命令真正抵达硬件设备硬件设备的控制器按照上层传达的命令操控硬件设备完成相应的功能。
理解
直接涉及到硬件其体细节、且与中断无关的操作肯定是在设备驱动程序层完成的
没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的。
5.1.4 应用程序I/O接口
在I/O系统与高层之间的接口中根据设备类型的不同又进一步分为若干接口。 字符设备接口 字符设备是指数据的存取和传输是以字符为单位的设备如键盘、打印机等。基本特征是传输速率较低、不可寻址并且在输入输出时通常采用中断驱动方式。 字符设备的操作 get和put操作。由于字符设备不可寻址只能采取顺序存取方式通常为字符设备建立一个字符缓冲区用户程序通过get操作从缓冲区获取字符通过put操作将字符输出到缓冲区。in-control指令。字符设备类型繁多差异甚大因此在接口中提供一种通用的in-control指令来处理它们包含了许多参数每个参数表示一个与具体设备相关的特定功能。 字符设备都属于独占设备为此接口中还需要提供打开和关闭操作以实现互斥共享。 块设备接口 块设备是指数据的存取和传输是以数据块为单位的设备典型的块设备是磁盘。基本特征是传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式。 隐藏了磁盘的二维结构在二维结构中每个扇区的地址需要用磁道号和扇区号来表示。块设备接口将磁盘的所有扇区从0到n-1依次编号这样就将二维结构变为一种线性序列。将抽象命令映射为低层操作块设备接口支持上层发来的对文件或设备的打开、读、写和关闭等抽象命令该接口将上述命令映射为设备能识别的较低层的具体操作。内存映射接口内存映射接口通过内存的字节数组来访问磁盘而不提供读/写磁盘操作。映射文件到内存的系统调用返回包含文件副本的一个虚拟内存地址。只在需要访问内存映像时才由虚拟存储器实际调页。内存映射文件的访问如同内存读写一样简单极大地方便了程序员。 网络设备接口 许多操作系统提供的网络I/O接口为网络套接字接口套接字接口的系统调用使应用程序创建的本地套接字连接到远程应用程序创建的套接字通过此连接发送和接收数据。 阻塞/非阻塞I/O **阻塞I/O**当用户进程调用I/O操作时进程就被阻塞需要等待I/O操作完成进程才被唤醒继续执行。 eg字符设备接口一一从键盘读一个字符get 非阻塞I/O用户进程调用I/O操作时不阻塞该进程该I/O调用返回一个错误返回值通常进程需要通过轮询的方式来查询I/O操作是否完成。 eg块设备接口一一往磁盘写数据write 5.1.5 本节小结
I/O管理要完成哪些功能 I/O管理需要完成以下4部分内容 状态跟踪。要能实时掌握外部设备的状态。设备存取。要实现对设备的存取操作。设备分配。在多用户环境下负责设备的分配与回收。设备控制。包括设备的驱动、完成和故障的中断处理。 错题总结或者需要注意的点
1.共享设备必须是可寻址和可随机访问的设备
2.共享设备是指在一段时间内允许多个进程同时访问的设备而不是同一时刻
3.虚拟设备是指把一个物理设备变换成多个对应的逻辑设备
4.设备控制器通常需要提供控制寄存器状态寄存器和控制命令
5.在OS中通道技术是一种硬件机制
6.通道控制设备控制器设备控制器控制设备工作
7.向设备寄存器的写命令是在I/O软件中的设备驱动程序完成的
8.中断驱动方式
处理中断请求一旦确定了中断源中断处理程序就会执行与该中断源相关联的特定代码。这可能包括读取设备的状态寄存器、从设备读取数据或向设备写入数据、更新系统的状态或执行其他必要的操作。