当前位置: 首页 > news >正文

做网站相册国外 平面设计 网站

做网站相册,国外 平面设计 网站,重庆seo推广公司,重庆微信网站开输入/输出(I/O)管理 考纲内容 I/O管理基础 设备#xff1a;设备的基本概念#xff0c;设备的分类#xff0c;I/O接口 I/O控制方式#xff1a;轮询方式#xff0c;中断方式#xff0c;DMA方式 I/O软件层次结构#xff1a;中断处理程序#xff0c;驱动程序#xff0c;…输入/输出(I/O)管理 考纲内容 I/O管理基础 设备设备的基本概念设备的分类I/O接口 I/O控制方式轮询方式中断方式DMA方式 I/O软件层次结构中断处理程序驱动程序设备独立性软件用户层I/O软件 输入/输出应用程序接口字符设备接口块设备接口网络设备接口阻塞/非阻塞I/O设备独立软件 缓冲区管理设备分配与回收假脱机技术(SPOOLing)设备驱动程序接口外存管理 磁盘磁盘结构格式化分区磁盘调度算法 固态硬盘读/写性能特效磨损均衡 复习提示 重点掌握I/O接口、I/O软件、三种I/O控制方式、高速缓存与缓冲区、SPOOLing技术磁盘特性和调度算法。本章很多知识点与硬件高度相关 I/O管理概述 I/O设备 1、设备的分类 I/O设备是指**可以将数据输入计算机的外部设备或者可以接收计算机输出数据的外部设备** I/O设备的类型繁多从不同的⻆度可将它们分为不同的类型 按信息交换的单位分类 I/O设备可分为 块设备。信息交换以**数据块为单位如磁盘、磁带等 磁盘设备的基本特征是传输速率较高、可寻址即对它可随机地读/写任意一块**字符设备。信息交换以**字符为单位如交互式终端机、打印机等 它们的基本特征是传输速率低、不可寻址并且时常采用中断I/O方式** 按设备的传输速率分类 I/O设备可分为 低速设备。传输速率仅为每秒几字节到数百字节如键盘、鼠标等中速设备。传输速率为每秒数千字节至数万字节如激光打印机等高速设备。传输速率在数百千字节至千兆字节如磁盘机、光盘机等 按设备的使用特性分类 I/O设备可分为 存储设备。用于存储信息的外部设备如磁盘、磁带、光盘等输入/输出设备。又可分为**输入设备、输出设备和交互式设备** 输入设备用于向计算机输入外部信息如键盘、鼠标、扫描仪等 输出设备用于计算机向外输出数据信息如打印机等 交互式设备则集成了上述两类设备的功能如触控显示器等 按设备的共享属性分类 I/O设备可分为 独占设备。同一时刻只能由一个进程占用的设备同一时刻只能由一个进程占用的设备。一旦将这类设备分配给某进程便由该进程独占直至用完释放。低速设备一般是独占设备如打印机共享设备。同一时间段内允许多个进程同时访问的设备。对于共享设备可同时分配给多个进程通过分时的方式共享使用。典型的共享设备是磁盘虚拟设备。通过**SPOOLing技术将独占设备改造为共享设备将一个物理设备变为多个逻辑设备**从而可将设备同时分配给多个进程 2、I/O接口 I/O接口(又称设备控制器)是**CPU与设备之间的接口以实现设备和计算机之间的数据交换** 它接收发自CPU的命令控制设备工作使CPU能从繁杂的设备控制事务中解脱出来。设备控制器主要由三部分组成 设备控制器与CPU的接口。用于**实现CPU与设备控制器之间的通信** 该接口有三类信号线数据线、地址线和控制线 数据线传送的是**读/写数据、控制信息和状态信息** 地址线传送的是**要访问I/O接口中的寄存器编号** 控制线传送的是**读/写等控制信号**设备控制器与设备的接口。一个设备控制器可以连接一个或多个设备因此控制器中有一个或多个设备接口 每个接口都可传输数据、控制和状态三种类型的信号I/O逻辑。用于**实现对设备的控制**。它通过一组控制线与CPU交互对从CPU收到的I/O命令进行译码 CPU启动设备时将启动命令发送给控制器同时通过地址线将地址发送给控制器由控制器的I/O逻辑对地址进行译码并对所选设备进行控制 设备控制器的主要功能有 1、接收和识别命令如磁盘控制器能接收CPU发来的读、写、查找等命令 2、数据交换包括CPU和控制器之间的数据传输以及控制器和设备之间的数据传输 3、标识和报告设备的状态以供CPU处理 4、地址识别 5、数据缓冲 6、差错控制3、I/O接口的类型 从不同的⻆度看I/O接口可以分为不同的类型 按**数据传送方式(外设和接口一侧)可分为并行接口(一个字节或者一个字的所有位同时传送)和串行接口**(一位一位地有序传送)接口要完成数据格式的转换按**主机访问I/O设备的控制方式可分为程序查询接口、中断接口和DMA接口**等按**功能选择的灵活性可分为可编程接口(通过编程改变接口功能)和不可编程接口** 4、I/O端口 I/O端口是指**设备控制器中可被CPU直接访问的寄存器**主要有以下三类寄存器 数据寄存器用于缓存从设备送来的输入数据或**从CPU送来的输出数据**状态寄存器保存设备的执行结果或状态信息以**供CPU读取**控制寄存器由CPU写入以便启动命令或更改设备模式 I/O端口要想能够被CPU访问就要**对各个端口进行编址每个端口对应一个端口地址。而对I/O端口的编址方式有与存储器独立编址和统一编址**两种 独立编址 独立编址是指**为每个端口分配一个I/O端口号。I/O端口的地址空间与主存地址空间是两个独立的地址空间**它们的范围可以重叠相同地址可能属于不同的地址空间 普通用户程序不能对端口进行访问只有操作系统使用特殊的I/O指令才能访问端口 优点I/O端口数比主存单元少得多只需少量地址线使得**I/O端口译码简单寻址速度更快。使用专用I/O指令可使程序更加清晰便于理解和检查 缺点I/O指令少只提供简单的传输操作所以程序设计的灵活性较差。此外CPU需要提供两组独立的存储器和设备的读/写控制信号增加了控制的复杂性** 统一编址 统一编址又称内存映射I/O是指**将主存地址空间分出一部分给I/O端口进行编址I/O端口和主存单元在同一地址空间的不同分段中**用统一的访存指令就可访问I/O端口 优点不需要专⻔的I/O指令使得CPU访问I/O的操作更加**灵活和方便还使得端口有较大的编址空间。I/O访问的保护机制可由虚拟存储管理系统来实现无须专⻔设置 缺点端口地址占用了部分主存地址空间使主存的可用容量变小。此外由于在识别I/O端口时全部地址线都需参加译码使得译码电路更复杂降低了寻址速度** I/O控制方式 I/O控制是指**控制设备和主机之间的数据传送** 在I/O控制方式的发展过程中始终贯穿着这样一个宗旨尽量减少CPU对I/O控制的干预将CPU从繁杂的I/O控制事务中解脱出来以便其能更多地去执行运算任务。I/O控制方式共有4种 1、程序直接控制方式 CPU对I/O设备的控制采取**轮询的I/O方式又称程序轮询方式** CPU向设备控制器发出一条I/O指令启动从I/O设备读取一个字(节)然后**不断地循环测试设备状态(称为轮询)直到确定该字(节)已在设备控制器的数据寄存器中** 于是CPU将数据寄存器中的数据取出送入内存的指定单元这样便完成了一个字(节)的I/O操作 这种方式简单且易于实现 但由于在CPU中未采用中断机构使I/O设备无法向CPU报告它已完成了一个字(节)的输入操作。因此CPU的绝大部分时间都处于等待I/O设备状态的循环测试中CPU和I/O设备只能串行工作由于**CPU和I/O设备的速度差异很大导致CPU的利用率相当低** 2、中断驱动方式 中断驱动方式的思想是允许I/O设备主动打断CPU的运行并请求服务从而“解放”CPU使得**CPU向设备控制器发出一条I/O指令后可以继续做其他有用的工作** 从**设备控制器的⻆度**来看 设备控制器从CPU接收一个读命令然后从设备读数据 一旦数据读入设备控制器的数据寄存器便通过控制线给CPU发出中断信号表示数据已准备好然后等待CPU请求该数据 设备控制器收到CPU发出的取数据请求后将数据放到数据总线上传到CPU的寄存器中 至此本次I/O操作完成设备控制器又可开始下一次I/O操作 从**CPU的⻆度**来看 当前运行进程发出读命令该进程将被阻塞然后保存该进程的上下文转去执行其他程序 在每个指令周期的末尾CPU检查中断信号。当有来自设备控制器的中断时CPU保存当前运行进程的上下文转去执行中断处理程序以处理该中断请求。这时CPU从设备控制器读一个字的数据传送到寄存器并存入主存 中断处理完后解除发出I/O命令的进程的阻塞状态然后恢复该进程(或其他进程)的上下文然后继续运行 相比于程序轮询I/O方式在中断驱动I/O方式中设备控制器通过中断主动向CPU报告I/O操作已完成不再需要轮询在设备准备数据期间CPU和设备并行工作CPU的利用率得到明显提升 但是中断驱动方式仍有两个明显的问题 1、设备与内存之间的数据交换都必须经过CPU中的寄存器 2、CPU是以字(节)为单位进行干预的若将这种方式用于块设备的I/O操作则显然是极其低效的 因此中断驱动I/O方式的速度仍然受限 3、DMA方式 DMA(直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路彻底“解放”CPU DMA方式的特点如下 基本传送单位是数据块而不再是字(节)所传送的数据是从设备直接送入内存的或者相反而不再经过CPU仅在传送一个或多个数据块的开始和结束时才需要CPU干预 DMA控制器的组成 为了实现主机和控制器之间直接交换成块的数据须在DMA控制器中设置如下4类寄存器 命令/状态寄存器(CR)。接收从CPU发来的I/O命令、有关控制信息或设备的状态内存地址寄存器(MAR)。在输入时它存放将数据从设备传送到内存的起始目标地址在输出时它存放由内存到设备的内存源地址数据寄存器(DR)。暂存从设备到内存或从内存到设备的数据数据计数器(DC)。存放本次要传送的字(节)数 如上所示DMA方式的工作过程是 CPU接收到设备的DMA请求时它向DMA控制器发出一条命令同时设置MAR和DC初值启动DMA控制器然后继续其他工作 之后CPU就将I/O控制权交给DMA控制器由DMA.控制器负责数据传送 DMA控制器直接与内存交互每次传送一个字这个过程不需要CPU参与 整个数据传送结束后DMA控制器向CPU发送一个中断信号 因此**只有在传送开始和结束时才需要CPU的参与** DMA方式的优点数据传输**以“块”为单位CPU介入的频率进一步降低数据传送不再经过CPU的寄存器CPU和设备的并行操作程度得到了进一步提升** 4、通道控制方式 I/O通道是一种特殊的处理机它可执行一系列通道指令 设置通道后CPU只需向通道发送一条I/O指令指明通道程序在内存中的位置和要访问的I/O设备通道收到该指令后执行通道程序完成规定的I/O任务后向CPU发出中断请求 通道方式**可以实现CPU、通道和I/O设备三者的并行工作**从而更有效地提高整个系统的资源利用率 通道与一般处理机的区别是通道指令的类型单一没有自己的内存通道所执行的通道程序是放在主机的内存中的也就是说通道与CPU共享内存通道与DMA方式的区别是DMA方式需要CPU来控制传输的数据块大小、传输的内存位置而通道方式中这些信息是由通道控制的。另外每个DMA控制器对应一台设备与内存传递数据而一个通道可以控制多台设备与内存的数据交换I/O软件层次结构 I/O软件涉及的面很宽往下与硬件有着密切关系往上又与虚拟存储器系统、文件系统和用户直接交互它们都需要I/O软件来实现I/O操作 为使复杂的I/O软件能具有清晰的结构、良好的可移植性和易适应性目前普遍采用**层次式结构的I/O软件。将系统中的设备管理模块分为若干层次每层都是利用其下层提供的服务**完成输入/输出功能中的某些子功能并屏蔽这些功能实现的细节向高层提供服务 在层次式结构的I/O软件中只要层次间的接口不变对某一层次中的软件的修改都不会引起其下层或高层代码的变更仅最低层才涉及硬件的具体特性 一个比较合理的层次划分如下所示 整个I/O软件可以视为具有4个层次的系统结构各层次及其功能如下 用户层软件 实现与用户交互的接口用户可直接调用在用户层提供的、与I/O操作有关的库函数对设备进行操作 通常大部分的I/O软件都在操作系统内核但仍有一小部分在用户层包括与用户程序链接在一起的库函数 用户层I/O软件必须通过一组系统调用来获取操作系统服务 设备独立性软件 用于**实现用户程序与设备驱动器的统一接口、设备命名、设备保护以及设备的分配与释放等同时为设备管理和数据传送提供必要的存储空间** 设备独立性也称设备无关性其含义是指**应用程序所用的设备不局限于某个具体的物理设备** 为实现设备独立性而引入了**逻辑设备和物理设备这两个概念 在应用程序中使用逻辑设备名来请求使用某类设备而在系统实际执行时必须将逻辑设备名映射成物理设备名** 使用逻辑设备名的好处 增加设备分配的灵活性 易于实现I/O重定向所谓I/O重定向是指用于I/O操作的设备可以更换(重定向)而不必改变应用程序为了实现设备独立性必须再在驱动程序之上设置一层设备独立性软件设备独立性软件的主要功能可分为以下两个方面 执行所有设备的公有操作包括对设备的分配与回收;将逻辑设备名映射为物理设备名对设备进行保护禁止用户直接访问设备缓冲管理差错控制提供独立于设备的大小统一的逻辑块屏蔽设备之间信息交换单位大小和传输速率的差异向用户层(或文件层)提供统一接口。无论何种设备它们向用户所提供的接口应是相同的。例如对各种设备的读/写操作在应用程序中都统一使用read/write命令等 设备驱动程序 与硬件直接相关负责具体实现系统对设备发出的操作指令驱动I/O设备工作的驱动程序 通常每类设备配置一个设备驱动程序它是I/O进程与设备控制器之间的通信程序通常以进程的形式存在 设备驱动程序向上层用户程序提供一组标准接口设备具体的差别被设备驱动程序所封装用于接收上层软件发来的抽象I/O要求如read/write命令转换为具体要求后发送给设备控制器控制I/O设备工作它也将由设备控制器发来的信号传送给上层软件从而为I/O内核子系统隐藏设备控制器之间的差异 中断处理程序 用于保存被中断进程的CPU环境转入相应的中断处理程序进行处理处理完毕再恢复被中断进程的现场后返回到被中断进程 中断处理层的主要任务有进行进程上下文的切换对处理中断信号源进行测试读取设备状态和修改进程状态等 由于中断处理与硬件紧密相关对用户而言应尽量加以屏蔽因此应放在操作系统的底层系统的其余部分尽可能少地与之发生联系 用户对设备的一次命令各层次的处理过程 当用户要读取某设备的内容时通过操作系统提供的read命令接口这就经过了**用户层**操作系统提供给用户使用的接口一般是统一的通用接口也就是**几乎每个设备都可以响应的统一命令如read命令用户发出的read命令首先经过设备独立层**进行解析然后交往下层接下来不同类型的设备对read命令的行为有所不同如磁盘接收read命令后的行为与打印机接收read命令后的行为是不同的。因此需要针对不同的设备将read命令解析成不同的指令这就经过了**设备驱动层**命令解析完毕后需要中断正在运行的进程转而执行**read命令这就需要中断处理程序**最后命令真正抵达硬件设备硬件设备的控制器按照上层传达的命令操控硬件设备完成相应的功能 应用程序I/O接口 1、I/O接口的分类 在I/O系统与高层之间的接口中根据**设备类型的不同**又进一步分为若干类 字符设备接口 字符设备是指数据的存取和传输是**以字符为单位**的设备如键盘、打印机等 基本特征是**传输速率较低、不可寻址并且在输入/输出时通常采用中断驱动方式** get和put操作。由于字符设备不可寻址只能采取顺序存取方式通常为字符设备**建立一个字符缓冲区用户程序通过get操作从缓冲区获取字符通过put操作将字符输出到缓冲区** in-control指令。字符设备类型繁多差异甚大因此在接口中提供一种通用的in-control指令来处理它们(包含了许多参数每个参数表示一个与具体设备相关的特定功能)。字符设备都属于独占设备为此接口中还需要提供打开和关闭操作以实现互斥共享 块设备接口 块设备是指数据的存取和传输是**以数据块为单位**的设备典型的块设备是磁盘 基本特征是**传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式** 隐藏了磁盘的二维结构。在二维结构中每个扇区的地址需要用磁道号和扇区号来表示。块设备接口将磁盘的所有扇区从0到n-1依次编号这样就将二维结构变为一种线性序列 将抽象命令映射为低层操作。块设备接口支持上层发来的对文件或设备的打开、读、写和关闭等抽象命令该接口将上述命令映射为设备能识别的较低层的具体操作 内存映射接口通过内存的字节数组来访问磁盘而不提供读/写磁盘操作。映射文件到内存的系统调用返回包含文件副本的一个虚拟内存地址。只在需要访问内存映像时才由虚拟存储器实际调⻚。内存映射文件的访问如同内存读/写一样简单极大地方便了程序员 网络设备接口 现代操作系统都提供面向网络的功能因此还需要提供相应的网络软件和网络通信接口使计算机能够通过网络与网络上的其他计算机进行通信或上网浏览 许多操作系统提供的网络I/O接口网络套接字接口套接字接口的系统调用使应用程序创建的本地套接字连接到远程应用程序创建的套接字通过此连接发送和接收数据 2、阻塞I/O和非阻塞I/O 操作系统的I/O接口还涉及两种模式阻塞和非阻塞 阻塞I/O 指**当用户进程调用I/O操作时进程就被阻塞并移到阻塞队列I/O操作完成后进程才被唤醒移到就绪队列** 当进程恢复执行时它收到系统调用的返回值并继续处理数据。大多数操作系统提供的I/O接口都是采用阻塞I/O 优点操作简单实现难度低适合并发量小的应用开发 缺点I/O执行阶段进程会一直阻塞下去 非阻塞I/O 指**当用户进程调用I/O操作时不阻塞该进程但进程需要不断询问I/O操作是否完成在I/O执行阶段进程还可以做其他事情** 当问到I/O操作完成后系统将数据从内核复制到用户空间进程继续处理数据 优点进程在等待IO期间不会阻塞可以做其他事情适合并发量大的应用开发 缺点轮询方式询问I/O结果会占用CPU的时间 本节小结 I/O管理要完成哪些功能? I/O管理需要完成以下4部分内容 状态跟踪。要能实时掌握外部设备的状态 设备存取。要实现对设备的存取操作 设备分配。在多用户环境下负责设备的分配与回收 设备控制。包括设备的驱动、完成和故障的中断处理提醒 共享设备必须是可寻址的可随机访问的设备若不是则不能保证数据的完整性和一致性 DMA主要用于块设备因此磁盘设备的I/O控制主要采取DMA方式 设备的固有属性决定了设备的使用方式 设备独立性可以提高设备分配的灵活性和设备的利用率 设备安全性可以保证分配设备时不会导致永久阻塞 设备分配时一般无需考虑及时性及时性是一个与系统性能和用户需求相关的因素设备分配时应该考虑的问题是如何再保证系统安全和正确运行的前提下合理地分配和利用设备资源 系统为每台设备确定一个编号以便区分和识别设备的编号称为绝对号 通道控制设备控制器、设备控制器控制设备工作三者关系层层递进 将系统调用参数翻译成设备操作命令的工作由设备无关的操作系统软件完成 设备无关的操作系统软件是I/O软件的一部分它向上层提供系统调用的接口根据设备类型选择调用相应的驱动程序 设备驱动程序负责执行操作系统发出的I/O命令因设备的不同而不同 在程序直接控制方式下用户进程在I/O过程中不会被阻塞驱动程序完成用户进程的I/O请求后才结束CPU和I/O操作串行 在中断控制方式下驱动程序启动第一次I/O操作后将调出其他进程执行而当前用户进程被阻塞CPU和设备准备并行 在DMC方式下驱动程序执行调度程序转其他进程执行当前用户进程被阻塞时CPU和是数据传送并行 中断处理结束后是否返回到被中断的进程有两种情况 1、采用的是屏蔽中断方式(单重中断)此时会返回被中断的进程 2、采用的是中断嵌套方式(多重中断)若没有更搞优先级的中断请求则会返回被中断的进程否则系统将处理更高优先级的中断请求设备独立性软件 设备独立性软件 也称与设备无关的软件是**I/O系统的最高层软件它的下层是设备驱动程序其界限因操作系统和设备的不同而有所差异。总体而言设备独立性软件包括执行所有设备公有操作的软件** 高速緩存与緩沖区 1、磁益高速媛存(Disk Cache) 操作系统中**使用磁盘高速缓存技术来提高磁盘的I/O速度访问高速缓存比访问原始磁盘数据更为高效** 磁盘高速缓存技术是指**利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此磁盘高速缓存逻辑上属于磁盘物理上则是驻留在内存中的盘块** 磁盘高速缓存在内存中分为两种形式 一种是**在内存中开辟一个单独的空间作为缓存区大小固定** 另一种是**将未利用的内存空间作为一个缓冲池供请求分⻚系统和磁盘I/O时共享** 2、緩沖区(Buffer) 在设备管理子系统中引入缓冲区的目的主要如下 缓和CPU与I/O设备间速度不匹配的矛盾减少对CPU的中断频率放宽对CPU中断响应时间的限制解决基本数据单元大小(数据粒度)不匹配的问题提高CPU和I/O设备之间的并行性 缓冲区的实现方法如下 采用硬件缓冲器但由于成本太高除一些关键部位外一般不采用硬件缓冲器利用内存作为缓冲区 根据系统设置缓冲区的个数缓冲技术可以分为如下几种 单缓冲 每当用户进程发出一个I/O请求操作系统便在内存中之分配一个缓冲区。通常一个缓冲区的大小就是一个块 在块设备输入时假定从设备将一块数据输入到缓冲区的时间为T操作系统将该缓冲区中的数据传送到工作区的时间为M而CPU对这一块数据进行处理的时间为C。注意必须等缓冲区冲满后才能从缓冲区中取出数据 在单缓冲区中T是可以和C并行的 当TC时CPU处理一块完数据后暂时不能将下一块数据传送到工作区必须等待缓冲区装满数据再将下一块数据从缓冲区传送到工作区平均处理一块数据的时间为TM 当TC时缓冲区中装满数据后暂时不能继续送入下一块数据必须等待CPU处理完上一块数据再将下一块数据从缓冲区传送到工作区平均处理一块数据的时间为CM 总结单缓冲区处理每块数据的平均时间为Max(C,T)M 由于缓冲区是共享资源因此**使用时必须互斥**。若CPU尚未取走缓冲区中的数据则即使设备又生产出新的数据也无法将其送入缓冲区此时设备需要等待 双缓冲 为了加快输入和输出速度提高设备利用率引入了双缓冲机制也称缓冲对换 当设备输入数据时先将数据送入缓冲区1装满后便转向缓冲区2 此时操作系统可以从缓冲区1中取出数据送入用户进程并由CPU对数据进行处理 当缓冲区1中取出的数据处理完后若缓冲区2已冲满则操作系统又从缓冲区2中取出数据送入用户进程处理而设备又可以开始将数据送入缓冲区1 双缓冲机制提高了设备和CPU的并行程度 设备输入数据到缓冲区、数据传送到用户进程和处理的时间分别为T、M和C 在双缓冲区中C和M是可以与T并行的 当TCM时说明**设备输入的时间比数据传送和处理的时间多可使设备连续输入。假设在某个时刻缓冲区1是空的缓冲区2是满的缓冲区2开始向工作区传送数据缓冲区1开始装入数据。传送并处理的时间为CM但缓冲区1还未装满必须等待缓冲区1装满数据再将下一块数据从缓冲区1传送到工作区平均处理一块数据的时间为T 当TCM时说明设备输入的时间比数据传送和处理的时间少可使CPU不必等待设备输入**。假设在某个时刻缓冲区1是空的缓冲区2是满的缓冲区2开始向工作区传送数据缓冲区1开始装入数据。缓冲区1装满数据的用时为T必须等待缓冲区2中的数据传送并处理完后才能将下一块数据从缓冲区1传送到工作区平均处理一块数据的时间为CM 总结双缓冲区处理每块数据的平均时间为Max(CM,T) 若两台机器之间仅配置了单缓冲 则它们**在任意时刻都只能实现单方向的数据传输而绝不允许双方同时向对方发送数据** 为了实现双向数据传输必须在两台机器中都设置两个缓冲区一个用作发送缓冲区另一个用作接收缓冲区 注 在双缓冲机制中当输入与输出的速度基本匹配时能取得较好的效果 但若两者的速度相差甚远则双缓冲区的效果不会太理想循环缓冲 多缓冲机制让多个缓冲区组成循环缓冲区的形式。灰色表示已装满数据的缓冲区白色表示空缓冲区 循环缓冲**包含多个大小相等的缓冲区**每个缓冲区中有一个链接指针指向下一个缓冲区最后一个缓冲区指针指向第一个缓冲区多个缓冲区链接成一个循环队列 循环缓冲中还需设置in和out两个指针in指向**第一个可以输入数据的空缓冲区out指向第一个可以提取数据的满缓冲区。输入/输出时in和out指针沿链接方向循环移动** 缓冲池 相比于缓冲区(仅是一块内存空间)缓冲池是**包含一个用于管理自身的数据结构和一组操作函数的管理机制用于管理多个缓冲区。缓冲池可供多个进程共享使用** 缓冲池由多个系统公用的缓冲区组成缓冲区按其使用状况可以分为 空缓冲队列由空缓冲区链接而成的队列输入队列由装满输入数据的缓冲区链接而成的队列输出队列由装满输出数据的缓冲区所链接成的队列 此外还应具有4种工作缓冲区 用于**收容输入**数据的工作缓冲区(hin)用于**提取输入**数据的工作缓冲区(sin)用于**收容输出**数据的工作缓冲区(hout)用于**提取输出**数据的工作缓冲区(sout) 缓冲池中的缓冲区有以下4种工作方式 收容输入。输入进程需要输入数据时从空缓冲队列的队首摘下一个空缓冲区作为收容输入工作缓冲区然后**将数据输入其中装满后再将它挂到输入队列的队尾**提取输入。计算进程需要输入数据时从输入队列的队首取得一个缓冲区作为提取输入工作缓冲区从中**提取数据用完该数据后将它挂到空缓冲队列的列尾**收容输出。计算进程需要输出数据时从空缓冲队列的队首取得一个空缓冲区作为收容输出工作缓冲区当其中**装满数据后再将它挂到输出队列的队尾**提取输出。输出进程需要输出数据时从输出队列的队首取得一个装满输出数据的缓冲区作为提取输出工作缓冲区当**数据提取完后再将它挂到空缓冲队列的队尾** 高速缓存与缓冲区的对比 高速缓存是**可以保存数据拷⻉的高速存储器**访问高速缓存比访问原始数据更高效速度更快 设备分配与回收 1、设备分配概述 设备分配是指**根据用户的I/O请求分配所需的设备** 分配的总原则充分发挥设备的使用效率尽可能地让设备忙碌又要避免由于不合理的分配方法造成进程死锁 2、设备分配的数据结构 在系统中可能存在多个通道每个通道可以连接多个控制器每个控制器可以连接多个物理设备 设备分配的数据结构要能体现出这种从属关系各数据结构的介绍如下 设备控制表(DCT) 系统为**每个设备配置一张DCT**表中的表项就是设备的各个属性 在DCT中应该有下列字段 设备类型表示设备类型如打印机、扫描仪、键盘等 设备标识符即物理设备名每个设备在系统中的物理设备名是唯一的 设备状态表示当前设备的状态(忙/闲) 指向控制器表的指针每个设备由一个控制器控制该指针指向对应的控制器表 重复执行次数或时间重复执行次数达到规定值仍不成功时才认为此次I/O失败 设备队列的队首指针指向正在等待该设备的进程队列(由进程PCB组成)的队首注当某个进程释放某个设备且无其他进程请求该设备时系统将该设备DCT中的设备状态改为空闲即可实现“设备回收” 控制器控制表(COCT) 每个设备控制器都对应一张COCT 操作系统根据COCT的信息**对控制器进行操作和管理。每个控制器由一个通道控制**通过表项与控制器连接的通道表指针可以找到相应通道的信息 通道控制表(CHCT) 每个通道都对应一张CHCT 操作系统根据CHCT的信息**对通道进行操作和管理。一个通道可为多个控制器服务**通过表项与通道连接的控制器表首址可以找到该通道管理的所有控制器的信息 系统设备表(SDT) 整个系统只有一张SDT 它**记录已连接到系统中的所有物理设备的情况每个物理设备对应一个表目** 3、设备分配时应考虑的因素 在多道程序系统中进程数多于资源数因此要有一套合理的分配原则主要考虑的因素有设备的固有属性、设备的分配算法、设备分配的安全性以及设备的独立性 设备的固有属性 设备的固有属性可分成三种对它们应采取不同的分配策略 独占设备将它分配给某个进程后便由该进程独占直至进程完成或释放该设备共享设备可将它同时分配给多个进程需要合理调度各个进程访问该设备的先后次序虚拟设备虚拟设备**属于可共享设备**可将它同时分配给多个进程使用 设备分配算法 针对设备分配通常只采用以下两种分配算法 FCFS算法。该算法根据各个进程对某个设备提出请求的先后次序将这些进程**排成一个设备请求队列设备分配程序总是将设备首先分配给队首进程**最高优先级优先算法。在用该算法形成设备队列时优先级高的进程排在设备队列前面而**对于优先级相同的I/O请求则按FCFS原则排队** 设备分配中的安全性 设备分配中的安全性是指**在设备分配中应防止发生进程死锁** 安全分配方式 每当进程发出I/O请求后便进入阻塞态直到其I/O操作完成时才被唤醒 这样进程一旦获得某种设备后便会阻塞不能再请求任何资源而在它阻塞时也不保持任何资源 其优点是**设备分配安全缺点是CPU和I/O设备是串行工作的**不安全分配方式 进程**在发出I/O请求后仍继续运行需要时又会发出第二个、第三个I/O请求等 仅当进程所请求的设备已被另一进程占用时才进入阻塞态 优点是一个进程可同时操作多个设备使进程推进迅速缺点是有可能造成死锁** 4、设备分配的步骤 下面以独占设备为例介绍设备分配的过程 分配设备。首先根据I/O请求中的物理设备名查找SDT从中找出该设备的DCT再根据DCT中的设备状态字段可知该设备的状态。若忙则将进程PCB挂到设备等待队列中若不忙则根据一定的策略将设备分配给该进程分配控制器。设备分配后根据DCT找到COCT查询控制器的状态。若忙则将进程PCB挂到控制器等待队列中若不忙则将控制器分配给该进程分配通道。控制器分配后根据COCT找到CHCT查询通道的状态。若忙则将进程PCB挂到通道等待队列中若不忙则将通道分配给该进程只有设备、控制器和通道都分配成功时这次的设备分配才算成功之后便可启动设备进行数据传送 在上面的例子中进程是以物理设备名提出I/O请求的。若指定设备已分配给其他进程则该进程分配失败或者说上面的设备分配程序不具有设备无关性。为了获得设备的独立性进程应使用逻辑设备名。这样系统首先从SDT中找出第一个**该类**设备的DCT。若该设备忙则查找第二个该类设备的DCT仅当所有该类设备都忙时才将进程挂到该类设备的等待队列上。而只要有一个该类设备可用系统便进入进一步的分配操作 5、逻辑设备名到物理设备名的映射 为了**实现设备的独立性进程中应使用逻辑设备名来请求某类设备 因为系统只识别物理设备名因此在系统中需要配置一张逻辑设备表用于将逻辑设备名映射为物理设备名** **逻辑设备表(LUT)**的每个表项中包含3项内容逻辑设备名、物理设备名和设备驱动程序的入口地址 当进程用逻辑设备名来请求分配设备时系统会为它分配一台相应的物理设备并在LUT中建立一个表目填上相应的信息当以后进程再利用该逻辑设备名请求I/O操作时系统通过查找LUT来寻找对应的物理设备及其驱动程序 在系统中可采取两种方式设置逻辑设备表 整个系统中只设置一张LUT。所有进程的设备分配情况都记录在同一张LUT中这就**要求所有用户不能使用相同的逻辑设备名主要适用于单用户系统**为每个用户设置一张LUT。系统为每个用户设置一张LUT同时在多用户系统中都配置系统设备表。因此不同用户可以使用相同的逻辑设备名 SPOOLing技术(假脱机技术) 为了缓和CPU的高速性与I/O设备的低速性之间的矛盾引入了假脱机技术它是操作系统中采用的一项**将独占设备改造成共享设备的技术** 该技术利用**专⻔的外围控制机先将低速I/O设备上的数据传送到高速磁盘上或者相反** 当**CPU需要输入数据时便可直接从磁盘中读取数据当CPU需要输出数据时也能以很快的速度将数据先输出到磁盘上** 引入多道程序技术后系统便**可利用程序来模拟脱机输入/输出时的外围控制机在主机的直接控制下实现脱机输入/输出功能** SPOOLing系统的组成如下所示 输入井和输出井 在**磁盘上**开辟出的两个存储区域 输入井模拟脱机输入时的磁盘用于收容I/O设备输入的数据 输出井模拟脱机输出时的磁盘用于收容用户程序的输出数据 一个进程的输入(或输出)数据保存为一个文件所有进程的输入(或输出)文件链接成一个输入(或输出)队列 输入缓冲区和输出缓冲区 在**内存中**开辟的两个缓冲区 输入缓冲区用于暂存由输入设备送来的数据以后再传送到输入井 输出缓冲区用于暂存从输出井送来的数据以后再传送到输出设备 起到暂存作用暂存在内存中 输入进程和输出进程 输入进程用于模拟脱机输入时的外围控制机将用户要求的数据从输入设备传送到输入缓冲区再存放到输入井中。当CPU需要输入数据时直接从输入井中读入内存 输出进程用于模拟脱机输出时的外围控制机将用户要求输入的数据从内存传送到输出井待输出设备空闲时再将输出井中的数据经输出缓冲区输出至输出设备 井管理程序 用于控制作业与磁盘井之间信息的交换 打印机是典型的独占设备利用SPOOLing技术可将它改造为一台可供多个用户共享的打印设备 当多个用户进程发出打印输出请求时SPOOLing系统同意它们的请求但并不真正立即将打印机分配给它们而由假脱机管理进程为每个进程做如下两项工作 在磁盘缓冲区中为进程申请一个空闲盘块并将要打印的**数据送入其中暂存**为用户进程**申请一张空白的用户请求打印表并将用户的打印要求填入其中再将该表挂到假脱机文件队列上** 对每个用户进程而言系统并非即时执行真实的打印操作而只是即时将数据输出到缓冲区这时的数据并未被真正打印而只让用户感觉系统已为它打印真正的打印操作是在打印机空闲且该打印任务在等待队列中己排到队首时进行的 以上过程用户是不可⻅的。虽然系统中只有一台打印机但是当进程提出打印请求时系统都在输出井中为其分配一个缓冲区(相当于分配一台逻辑设备)使每个进程都觉得自己正在独占一台打印机从而实现对打印机的共享 SPOOLing系统的特点 提高了I/O速度将对低速I/O设备执行的操作演变为对磁盘缓冲区中数据的存取操作如同脱机输入/输出一样缓和了CPU和低速I/O设备之间速度不匹配的矛盾独占设备改造为共享设备在假脱机打印机系统中实际上并没有为任何进程分配设备实现了虚拟设备功能对每个进程而言它们都认为自己独占了一台设备 设备驱动程序接口 设备驱动程序是I/O系统的上层与设备控制器之间的通信程序其主要任务是**接收上层应用发来的抽象I/O请求如read或write命令将它们转换为具体要求后发送给设备控制器进而使其启动设备去执行任务反之它也将设备控制器发来的信号传送给上层应用** 为了实现上层应用与设备控制器之间的通信设备驱动程序应具有以下功能 接收由上层软件发来的命令和参数并**将抽象要求转换为与设备相关的具体要求**。例如将抽象要求中的盘块号转换为磁盘的盘面号、磁道号及扇区号检查用户I/O请求的合法性了解设备的工作状态传递与设备操作有关的参数设置设备的工作方式发出I/O命令若设备**空闲则立即启动它完成指定的I/O操作若设备忙则将请求者的PCB挂到设备队列上等待**及时响应由设备控制器发来的中断请求并根据其中断类型调用相应的中断处理程序进行处理 相比于普通的应用程序和系统程序设备驱动程序具有以下差异 设备驱动程序将抽象的I/O请求转换成具体的I/O操作后传送给设备控制器并将设备控制器中记录的设备状态和I/O操作的完成情况及时地反馈给请求进程设备驱动程序**与设备采用的I/O控制方式紧密相关常用的I/O控制方式是中断驱动方式和DMA方式**设备驱动程序**与硬件密切相关对于不同类型的设备应配置不同的设备驱动程序**由于设备驱动程序与硬件紧密相关目前很多设备驱动程序的基本部分已固化在ROM中设备驱动程序应**允许同时多次调用执行** 为了使所有的设备驱动程序都有统一的接口 一方面要求**每个设备驱动程序与操作系统之间都有相同或相近的接口**以便更容易地添加一个新的设备驱动程序同时更容易地编制设备驱动程序另一方面要**将抽象的设备名转换为具体的物理设备名**并且进一步找到相应的设备驱动程序入口此外还应**对设备进行保护防止无权访问的用户使用设备** 本节小结 当处理机和外部设备的速度差距较大时有什么办法可以解决问题? 可采用缓冲技术来缓解CPU与外设速度上的矛盾 即在某个地方(一般为主存)设立一片缓冲区外设与CPU的输入/输出都经过缓冲区这样外设和CPU就都不用互相等待什么是设备的独立性?引入设备的独立性有什么好处? 设备独立性是指用户在编程序时使用的设备与实际设备无关 一个程序应独立于分配给它的某类设备的具体设备即在用户程序中只指明I/O使用的设备类型即可设备独立性有以下优点 1、方便用户编程 2、使程序运行不受具体机器环境的限制 3、便于程序移植提醒 设备的独立性是指用户使用设备的透明性因此用户编程时使用的设备与实际使用的设备无关 缓冲池是系统的共用资源可供多个进程共享并且既能用于输入又能用于输出。一般包含三种类型的缓冲1、空闲缓冲区2、装满输入数据的缓冲区3、装满输出数据的缓冲区。为了管理上的方便可将相同类型的缓冲区链成一个队列 支持双向发送和接收数据的设备应使用双缓冲区双缓冲区可以实现同一时刻的双向数据传输提高设备的效率和利用率 单缓冲区只能实现单向数据传输 多缓冲区和缓冲池是用于提高I/O性能的技术但不是必须的也不一定适合所有的双向设备 使用单缓冲或双缓冲进行通信时都可以实现数据的双向传输。单缓冲只是不同时刻收发数据是可以进行双向传输的 在鼠标移动式若有高优先级的操作产生为例记录鼠标活动的情况必须使用缓冲技术 由于磁盘驱动器和目标或源I/O设备间的吞吐量不同必须采用缓冲技术 为了能使数据从用户作业空间传送到磁盘或从磁盘传送到用户作业空间必须采用缓冲技术 单机资源利用率最关键的资源使处理器资源最大化地提高处理器利用率就能最大化的提高系统效率 多道程序设计技术使提高处理器利用率的关键技术而如SPOOLing技术、虚拟技术、交换技术这些都属于设备和内存的相关技术 SPOOLing技术需要使用磁盘空间(输入井和输出井)和内存空间(输入/输出缓冲区)不需要外围计算机的支持 SPOOLing系统由预输入程序(输入进程和输入缓冲区)、井管理程序(输入井和输出井)和缓输出程序(输出进程和输出缓冲区)组成 构成SPOOLing系统的基本条件不仅要有大容量、高速度的外村作为输入井和输出井而且还要有SPOOLing软件的支持 利用SPOOLing技术提高了系统和I/O设备的利用率不必等待I/O操作完成 SPOOLing技术将独占设备虚拟成共享设备因此必须先有独占设备才行 设备寄存器写命令是由设备驱动程序完成的 检查用户是否有权使用设备属于设备保护使由设备独立性软件完成的 将二进制整数转换成ASCII码的格式打印时通过I/O库函数完成的属于用户层软件 缓冲区管理属于输入/输出的共有操作是由设备独立性软件完成的 对I/O设备传回的数据进行分析和缓冲由操作系统完成 设备驱动程序的处理过程 1、将抽象要求转化为具体要求 2、对服务请求进行校验 3、检查设备状态 4、传送必要的参数 5、启动I/O设备 计算柱面号、磁头号和扇区号的工作是由设备驱动程序完成的 磁盘和内存速度差异决定了可以将内存经常访问的文件调入磁盘缓冲区高速缓存中复制的访问比磁盘I/O的机械操作要块很多 SPOOLing利用专门的外围控制机将低速I/O设备上的数据传送到高速磁盘上或者相反 SPOOLing技术建立在多道程序设计技术的基础上在一个时间段内输入进程、输出进程是可以和运行的作业进程并发执行的 设备输入井/输出井之间数据的传送是由系统实现的磁盘和固态硬盘 磁盘 磁盘通过一个称为磁头的导体线圈从磁盘存取数据在读/写操作期间磁头固定磁盘在下面高速旋转 磁盘盘面上的数据存储在一组同心圆中称磁道。每个磁道与磁头一样宽一个盘面有上千个磁道。磁道又划分为几百个扇区每个扇区固定存储大小一个扇区称为一个盘块 相邻磁道及相邻扇区间通过一定的间隙分隔开以避免精度错误 由于扇区按固定圆心⻆度划分所以密度从最外道向里道增加磁盘的存储能力受限于最内道的最大记录密度 注 为了提高磁盘的存储容量充分利用磁盘外层磁道的存储能力现代磁盘不再将内外磁道划分为相同数目的扇区而将盘面划分为若干环带同一环带内的所有磁道具有相同的扇区数显然外层环带的磁道拥有较内层环带的磁道更多的扇区磁盘安装在一个磁盘驱动器中它由磁头臂、用于旋转磁盘的转轴和用于数据输入/输出的电子设备组成 多个盘片垂直堆叠组成磁盘组每个盘面对应一个磁头所有磁头固定在一起与磁盘中心的距离相同且只能共进退 所有盘片上相对位置相同的磁道组成柱面 扇区是磁盘可寻址的最小单位磁盘上能存储的物理块数目由**扇区数、磁道数及磁盘面数决定磁盘地址用柱面号-盘面号-扇区号**表示 磁盘按不同的方式可分为若干类型 固定头磁盘磁头相对于盘片的径向方向固定这种磁盘中的每个磁道有一个磁头活动头磁盘磁头可移动磁头臂可来回伸缩定位磁道固定盘磁盘盘片永久固定在磁盘驱动器内可换盘磁盘盘片可移动和替换 磁盘的管理 1、磁盘初始化 一个新的磁盘只是一个磁性记录材料的空白盘 在磁盘可以存储数据之前必须将它分成扇区以便磁盘控制器能够进行读/写操作这个过程称为低级格式化(或称物理格式化) 每个扇区通常由头部、数据区域和尾部组成 头部和尾部包含了一些磁盘控制器的使用信息其中**利用磁道号、磁头号和扇区号来标志一个扇区利用CRC字段对扇区进行校验** 2、分区 在可以使用磁盘存储文件之前还要完成两个步骤 将磁盘分区每个分区由一个或多个柱面组成每个分区的起始扇区和大小都记录在磁盘主引导记录的分区表中对物理分区进行逻辑格式化(也称**高级格式化**)将初始文件系统数据结构存储到磁盘上这些数据结构包括空闲空间和已分配空间以及一个初始为空的目录建立根目录、对保存空闲磁盘块信息的数据结构进行初始化 因扇区的单位太小为了提高效率操作系统将多个相邻的扇区组合在一起形成一**簇(在Linux中称为块) 为了更高效地管理磁盘一簇只能存放一个文件的内容文件所占用的空间只能是簇的整数倍** 3、引导块 计算机启动时需要运行一个初始化程序(自举程序)它初始化CPU、寄存器、设备控制器和内存等接着启动操作系统 自举程序**找到磁盘上的操作系统内核将它加载到内存并转到起始地址从而开始操作系统的运行**。 自举程序**通常存放在ROM中为了避免改变自举代码而需要改变ROM硬件的问题通常只在ROM中保留很小的自举装入程序而将完整功能的引导程序保存在磁盘的启动块上启动块位于磁盘**的固定位置。具有启动分区的磁盘称为启动磁盘或系统磁盘 引导ROM中的代码指示磁盘控制器将引导块读入内存然后开始执行它可以从非固定的磁盘位置加载整个操作系统并且开始运行操作系统 下面以Windows为例来分析引导过程 Windows允许将磁盘分为多个分区有一个分区引导分区它包含操作系统和设备驱动程序Windows系统将引导代码存储在磁盘的第0号扇区它称主引导记录(MBR)引导首先运行ROM中的代码这个代码指示系统从MBR中读取引导代码除了包含引导代码MBR还包含一个磁盘分区表和一个标志(以指示从哪个分区引导系统)当系统找到引导分区时读取分区的第一个扇区称为引导扇区并继续余下的引导过程包括加载各种系统服务 4、坏块 由于磁盘有移动部件且容错能力弱因此容易导致一个或多个扇区损坏。根据所用的磁盘和控制器对这些块有多种处理方式 对于简单磁盘如采用IDE控制器的磁盘坏块可手动处理如MS-DOS的Format命令执行逻辑格式化时会扫描磁盘以检查坏块。坏块在FAT表上会标明因此程序不会使用它们 对于复杂的磁盘控制器维护磁盘内的坏块列表。这个列表在出厂低级格式化时就已初始化并在磁盘的使用过程中不断更新。低级格式化将一些块保留作为备用操作系统看不到这些块。控制器可以**采用备用块来逻辑地替代坏块**这种方案称为扇区备用 对坏块的处理实质上就是用某种机制使系统不去使用坏块 磁盘调度算法 1、磁盘的存取时间 一次磁盘读/写操作的时间**由寻找(寻道)时间、旋转延迟时间和传输时间决定** 寻道时间Ts 活动头磁盘在读/写信息前将磁头移动到目的磁道所需的时间这个时间除**跨越 n 条磁道的时间外还包括启动磁头臂的时间 sm是与磁盘驱动器速度有关的常数**(越为2ms) T s m ∗ n s Ts m*ns Tsm∗ns 旋转延迟时间Tr 磁头**定位到要读/写扇区所需的时间设磁盘的旋转速度为 r有 T r 1 / 2 r Tr{1}/{2r} Tr1/2r 注题目中一般是告诉你转速最好别太依赖公式最好求一下转一周需要的时间** 传输时间Tt 从磁盘读出或向磁盘写入数据所需的时间这个时间**取决于每次所读/写的字节数 b 和磁盘的旋转速度 rN一个磁道上的字节数** T t b / r N Ttb/rN Ttb/rN **总平均存取时间Ta**可以表示为 T a T s 1 / 2 r b / r N TaTs1/2rb/rN TaTs1/2rb/rN 2、磁盘调度算法 在磁盘的存取时间中寻道时间占大头它与磁盘调度算法密切相关 延迟时间和传输时间都与磁盘旋转速度线性相关所以转速是磁盘性能的一个非常重要的硬件参数也很难从操作系统层面进行优化。因此磁盘调度的**主要目标是减少磁盘的平均寻道时间** 目前常用的磁盘调度算法有以下几种 先来先服务(FCFS)算法 FCFS算法**根据进程请求访问磁盘的先后顺序进行调度**这是一种最简单的调度算法 该算法的优点是**具有公平性** 若只有少量进程需要访问且大部分请求都是访问簇聚的文件扇区则有望达到较好的性能 若有大量进程竞争使用磁盘则这种算法在性能上往往接近于随机调度 最短寻道时间优先(SSTF)算法 SSTF算法**每次选择调度的是与当前磁头最近的磁道使每次的寻道时间最短** 每次选择最小寻道时间**并不能保证平均寻道时间最小但能提供比FCFS算法更好的性能** 这种算法会产生“饥饿”现象在某个磁道附近一直出现新的请求则离这个磁道较远的磁道将会一直得不到访问 扫描(SCAN)算法 规定只有磁头移动到最外侧磁道时才能向内移动移动到最内侧磁道时才能向外移动这就是SCAN算法的思想 在SSTF算法的基础上规定了磁头移动的方向由于磁头移动规律与电梯运行相似因此又称电梯调度算法 SCAN算法**对最近扫描过的区域不公平因此它在访问局部性方面不如FCFS算法和SSTF算法好** 采用SCAN算法时不但要知道**磁头的当前位置而且要知道磁头的移动方向** 循环扫描(C-SCAN)算法 在SCAN算法的基础上规定**磁头单向移动来提供服务返回时直接快速移动至起始端而不服务任何请求** 由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求所以使用改进型的C-SCAN算法来避免这个问题 采用SCAN算法和C-SCAN算法时磁头总是严格地遵循从盘面的一端到另一端 LOOK调度和C-LOOK调度则**磁头只需移动到最远端的一个请求即可返回不需要到达磁盘端点** 注若无特别说明也可默认SCAN算法和C-SCAN算法为LOK调度和C-LOOK调度 以上四种磁盘调度算法的优缺点 3、减少延迟时间的方法 除减少寻道时间外**减少延迟时间**也是提高磁盘传输效率的重要因素 磁盘是连续自转设备磁头读入一个扇区后需要经过短暂的处理时间才能开始读入下一个扇区 若逻辑上相邻的块在物理上也相邻则读入几个连续的逻辑块可能需要很⻓的延迟时间 为此可**对一个盘面的扇区进行交替编号即让逻辑上相邻的块物理上保持一定的间隔**于是读入多个连续块时能够减少延迟时间 此外由于磁盘的所有盘面是同步转动的逻辑块在相同柱面上也是按盘面号连续存放的 要读入不同盘面上的连续块在读完0号盘7号扇区后还需要一段处理时间所以当磁头首次划过1号盘0号扇区(下一次要读的块)时并不能读取只能等磁头再次划过该扇区时才能读取 为此可**对不同的盘面进行错位命名**则读入相邻两个盘面的连续块时也能减少延迟时间 4、提高磁盘I/O速度的方法 磁盘的存取时间中寻道时间和延迟时间属于“找”的时间凡是“找”的时间都可以通过一定的方法优化但传输时间是磁盘本身性质所决定的不能通过一定的措施减少 文件的访问速度是衡量文件系统性能最重要的因素可从以下三个方面来优化 改进文件的目录结构及检索目录的方法以减少对目录的查找时间选取好的文件存储结构以提高对文件的访问速度提高磁盘I/O速度以实现文件中的数据在磁盘和内存之间快速传送 提高磁盘I/O的速度 采用磁盘高速缓存调整磁盘请求顺序提前读。在读磁盘当前块时将下一磁盘块也读入内存缓冲区延迟写。仅在缓冲区首部设置延迟写标志然后释放此缓冲区并将其链入空闲缓冲区链表的尾部当其他进程申请到此缓冲区时才真正将缓冲区信息写入磁盘块优化物理块的分布。除了上面介绍的扇区编号优化当文件采用**链接方式和索引方式组织时应尽量将同一个文件的盘块安排在一个磁道上或相邻的磁道上以減少寻道时间。另外将若干盘块组成簇按簇对文件进行分配**也可减少磁头的平均移动距离虚拟盘。是指**用内存空间去仿真磁盘又叫RAM盘。常用于存放临时文件**采用磁盘阵列RAID。由于可采用并行交叉存取因此能大幅提高磁盘I/O速度 固态硬盘 1、固态硬盘的特性 固态硬盘(SSD)是一种基于闪存技术的存储器与U盘并无本质差别只是容量更大存取性能更好 一个SSD由一个或多个**闪存芯片和闪存翻译层**组成 闪存芯片替代传统磁盘中的机械驱动器 闪存翻译层将来自CPU的逻辑块读/写请求翻译成对底层物理设备的读/写控制信号相当于扮演了磁盘控制器的⻆色 数据是**以⻚为单位读/写的。只有在一⻚所属的块整个被擦除后才能写这一⻚** 不过一旦一个块被擦除块中的每⻚就都可以直接再写一次 某个块进行了若干重复写后就会磨损坏不能再使用 随机写很慢有两个原因 擦除块比较慢通常比访问⻚高一个数量级如果写操作试图修改一个包含已有数据的⻚ Pi 那么这个块中所有含有用数据的⻚都必须被复制到一个新(擦除过的)块中然后才能进行对⻚ Pi 的写操作 比起传统磁盘SSD有很多优点它由半导体存储器构成没有移动的部件因此随机访问速度比机械磁盘要快很多也没有任何机械噪声和震动能耗更低、抗震性好、安全性高等 2、磨损均衡 固态硬盘也有缺点闪存的擦写寿命是有限的读/写数据时会集中在SSD的一部分闪存一旦这部分闪存损坏整块SSD也就损坏了为了弥补SSD的寿命缺陷引入了磨损均衡 SSD磨损均衡技术大致分为两种 动态磨损均衡。写入数据时自动选择较新的闪存块。老的闪存块先歇一歇静态磨损均衡。这种技术更为先进就算没有数据写入SSD也会监测并自动进行数据分配让老的闪存块承担无须写数据的存储任务同时让较新的闪存块腾出空间平常的读/写操作在较新的闪存块中进行。如此一来各闪存块的寿命损耗就都差不多 本节小结 在磁盘上进行一次读/写操作需要哪几部分时间?其中哪部分时间最⻓? 在磁盘上进行一次读/写操作花费的时间由寻道时间、延迟时间和传输时间决定 寻道时间是将磁头移动到指定磁道所需要的时间 延迟时间是磁头定位到某一磁道的扇区(块号)所需要的时间 传输时间是从磁盘读出或向磁盘写入数据所经历的时间一般来说寻道时间因为要移动磁头臂所以占用时间最⻓存储一个文件时当一个磁道存储不下时剩下部分是存在同一个盘面的不同磁道好还是存在同一个柱面上的不同盘面好? 寻道时间对于一次磁盘访问的影响是最大的若存在同一个盘面的不同磁道则磁头臂势必要移动这样会大大增加文件的访向时间而存在同一个柱面上的不同盘面就不需要移动磁道所以一般情况下存在同一个柱面上的不同盘面更好提醒 磁盘是可共享设备(分时共享)是指某段时间内可以有多个用户进行访问。但某一时刻只能有一个作业可以访问 磁盘调度中对读/写时间影响最大的是寻找时间寻找过程为机械运动时间较长影响较大 硬盘的操作系统引导扇区产生在对硬盘进行高级格式化时。对于高级格式化。操作系统将初始的文件系统数据结构存储到磁盘上 磨损均衡机制的目的是盐城固态硬盘的寿命 当系统中总是持续存在某个磁道的访问请求时均持续慢速最短存到时间优先、扫描算法和循环扫描算法的访问条件会一直服务该访问请求尽管系统中还存在其他磁道的访问请求但却得不到响应。而先来先服务请求次序进行调度比较公平疑难点 为了增加设备分配的灵活性、成功率可以如何改进? 可以从以下两方面对基本的设备分配程序加以改进 1、增加设备的独立性。进程使用逻辑设备名请求I/O。这样系统首先从SDT中找出第一个该类设备的DCT。若该设备忙则又查找第二个该类设备的DCT。仅当所有该类设备都忙时才将进程挂到该类设备的等待队列上;只要有一个该类设备可用系统便进一步计算分配该设备的安全性 2、考虑多通路情况。为防止I/O系统的“瓶颈”现象通常采用多通路的I/O系统结构。此时对控制器和通道的分配同样要经过几次反复即若设备(控制器)所连接的第一个控制器(通道)忙时则应查看其所连接的第二个控制器(通道)仅当所有控制器(通道)都忙时此次的控制器(通道)分配才算失败才将进程挂到控制器(通道)的等待队列上。而只要有一个控制器(通道)可用系统便可将它分配给进程设备分配过程中先后分别访问的数据结构为SDT - DCT - COCT - CHCT 要成功分配一个设备必须要1、设备可用2、控制器可用3、通道可用什么是用户缓冲区、内核缓冲区? “内核”其实是指内核缓冲区“用户空间”是指用户缓冲区用户缓冲区是指当用户进程读文件时通常先申请一块内存数组称为Buffer用来存放读取的数据 每次read调用将读取的数据写入Bufter之后程序都从Bufter中获取数据当Buffer使用完后再进行下一次调用填充Buffer 可⻅用户缓冲区的目的是减少系统调用次数从而降低系统在用户态与核心态之间切换的开销内核也有自己的缓冲区 当用户进程从磁盘读取数据时不直接读磁盘而将内核缓冲区中的数据复制到用户缓冲区中 若内核缓冲区中没有数据则内核请求从磁盘读取然后将进程挂起为其他进程服务等到数据已读取到内核缓冲区中时将内核缓冲区中的数据复制到用户进程的缓冲区才通知进程(当然I/O模型不同处理的方式也不同) 当用户进程需要写数据时数据可能不直接写入磁盘而将数据写入内核缓冲区时机适当时(如内核缓冲区的数据积累到一定量后)内核才将内核缓冲区的数据写入磁盘 可⻅内核缓冲区是为了在操作系统级别提高磁盘I/O效率优化磁盘写操作
http://www.hkea.cn/news/14452521/

相关文章:

  • 在什么网站上做自媒体企业网络营销的优势
  • 潮州网站seo2023年装修风格及颜色
  • 专业做英文网站的公司如何做分类网站信息营销
  • 钦州建设网站记事本做网站背景色怎么弄
  • 专门做游戏交易的网站有哪些朋友圈网站文章怎么做的
  • 网站建设模板代理龙岩今天刚刚最新新闻事件
  • 统计网站怎么做建网站花钱吗
  • 网站推广的意义和方法网站用户体验设计
  • 湖北网站设计制作价格企业服务官网模板
  • 动易网站cms安微省建设厅田网站
  • 有没有做京东客好的网站推荐道路建设去什么网站能看到
  • 番禺网站推广设计网址有哪些
  • 如何进行网站域名解析淘宝交易指数换算工具
  • 榆中建设局网站wordpress keywords 插件
  • 娱乐网站建设怎么样北京建设网站公司
  • 哪些网站可以做微商宝安网站建设制作
  • 网站开发免费视频播放器个人网站做推广
  • 网站平台建设费计入什么科目如何设置公司网站
  • 怎么做中英文版网站最近三天的新闻大事摘抄
  • 网站开发 语言 架构 数据库手机网站建设ppt
  • 建设茶网站目的自己做网站上市
  • 专门做男士用品的网站推广计划怎么做推广是什么
  • 网站运营系统宁波网络推广产品服务
  • 华亚快印网站开发wordpress文章列表加广告
  • 怎么看网站用的什么程序做的郑州关键词排名公司电话
  • 企业网站可以自己做吗如何模仿网站模板
  • 哈尔滨网站提升排名制作企业网站的新闻
  • 网站建设网站模板贵州交通建设集团网站
  • qq网页注册入口网站站seo教程
  • 哈尔滨网站建设教程搭建平台的近义词