• 1 I/O系统的功能、模型与接口
    • 基本功能
      • 隐藏IO设备的细节
        • I/O系统通过提供统一的接口和命令集,使得应用程序无需关心各种I/O设备的具体实现细节。
      • 保证设备无关性
        • I/O系统确保应用程序可以在不同的I/O设备之间无缝切换,而无需修改代码。
      • 提高处理机和IO设备利用率
        • 通过缓冲、中断和DMA等技术,I/O系统可以使CPU和I/O设备并行工作,从而提高整体性能。
      • ④对IO设备进行控制
        • I/O系统负责管理和控制所有的I/O设备,包括设备的初始化、操作和错误处理等。
      • ⑤对设备进行正确共享
        • 在多任务环境下,I/O系统需要确保多个任务可以安全地共享同一I/O设备。
      • 处理错误
        • I/O系统需要能够检测和处理各种I/O错误,如设备故障、数据传输错误等。
    • 层次结构与模型
      • 层次结构
        • 用户层软件
          • 与用户交互,给用户操作设备提供了库函数(产生IO请求,格式化IO,Spooling)
        • 与设备无关的IO设备
          • 实现用户与设备驱动器的统一接口,设备命令,设备保护,分配释放,缓冲区管理
        • 设备驱动程序
          • 与硬件直接想关,实现CPU向设备发出的操作命令,驱动IO设备工作
        • 中断处理程序
          • 保存现场信息,转ISR,恢复现场,返回
      • 模型
        • IO系统的上下接口
          • IO系统接口
          • 软硬件接口
        • IO系统分层
    • 接口
      • 分类
        • 设备接口
          • 块设备与高层间接口,数据存储和传输以块为单位的设备,磁盘,光盘,速率高,可寻址,可随机访问,DMA传输。
        • 设备接口
          • 流设备与高层之间的接口,也叫字符设备接口,数据存储和传输以字符为单位的设备,键盘,打印机,鼠标,速率低,不可寻址,中断传输。
        • 网络通信接口
          • 网络设备与上层间的接口,网络设备:网卡等,OS提供网络软件和网络通信接口,计算机通过网络与其他计算机进行通信与数据访问。
  • 2 I/O设备和设备控制器
    • I/O设备
      • 含义
        • 执行io操作的机械部分和执行io操控制的电子部分组成
      • 类型
        • 共享特性
          • 独占设备
          • 共享设备
        • 传输特性
          • 块设备
          • 流设备(字符设备)
        • 使用特性
          • 存储设备
          • IO设备
            • 输入设备
            • 输出设备
            • 交互设备
        • 传输速率
          • 低速设备
          • 中速设备
          • 高速设备
      • 设备与设备控制器之间的接口
        • 含义
          • 在计算机系统中,设备并不直接与CPU进行通信,而是与设备控制器进行通信。设备控制器是一种特殊的硬件,它负责管理和控制一个或多个I/O设备。设备与设备控制器之间的接口是设备和设备控制器进行通信的媒介。
        • 分类
          • 数据信号线
            • 用于在设备和设备控制器之间传输数据。当CPU需要从设备读取数据或向设备写入数据时,数据会通过数据信号线进行传输。
          • 控制信号线
            • 用于发送控制信号,以控制设备的操作。例如,CPU可以通过控制信号线向设备发送读或写的命令。
          • 状态信号线
            • 用于反馈设备的状态信息。例如,设备可以通过状态信号线向CPU报告其是否准备好进行数据传输,或者是否发生了错误。
    • 设备控制器
      • 含义
        • 设备控制器是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理机从繁杂的设备控制事务中解脱出来。
      • 基本功能
        • 接收和识别命令
          • 接收并识别CPU向控制器发送的多种不同的命令。
        • ②数据交换
          • 实现CPU与控制器之间、控制器与设备之间的数据交换。
        • 标志报告设备的状态
          • 应记下设备的状态供CPU了解
        • ④地址识别
          • 应能正确识别设备地址和寄存器地址
        • ⑤数据缓冲
          • 在控制器中必须设置一缓冲器
        • ⑥差错控制
          • 兼管对由I/O设备传送来的数据进行差错检测
      • 组成
        • ①设备控制器与CPU的接口
          • 该接口用于实现CPU与设备控制器之间的通
        • ②设备控制器与设备的接口
          • 在一个设备控制器上,可以连接一个或多个设备
        • IO逻辑
          • 在设备控制器中的I/O逻辑用于实现对设备的控制
      • 分类
        • 控制字符设备的控制器
        • 控制设备的控制器
    • 内存映像
      • 含义
        • 驱动程序将抽象I/O命令转换出的一系列具体的命令、参数等数据,装入设备控制器的相应寄存器中,由设备控制器来执行这些命令,具体实施对I/O设备的控制。这一工作可采用以下两种方法完成。
      • 特定IO指令形式
        • 用于独立编址,端口地址与内存地址不可重叠,读端口和读内存用不同的指令,通过IO指令控制设备端口读写,如微机:IN/OUT/MOV
      • 内存映像IO形式
        • 用于统一编址中,端口地址与内存地址统一编制,作为内存地址空间的一部分,读端口和读内存用相同指令,简化IO编程
    • 通道
      • 引入
        • 目的
          • 建立独立的I/O操作,即不仅使数据的传送能独立于CPU,而且使对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间进行数据处理;
        • 特点
          • 一是I/O通道指令类型单一(这是由通道硬件比较简单所致),其所能执行的命令主要局限于与I/O操作有关的指令;
          • 二是I/O通道没有自己的内存,所执行的通道程序是放在主机的内存中的,
      • 类型
        • 字节多路通道
          • 以字节交叉方式工作,连接多个低速设备,按时间片轮转方式为多个设备服务。
        • 数组选择通道
          • 可连接多个高速设备,一次只服务一个设备,通道利用率低。
        • 数组多路通道
          • 将数组选择通道传输速率高和字节多路通道能使各子通道(设备)分时并行操作相结合,按数组方式传输,速率高,通道利用率高。
      • 瓶颈问题
        • 问题
          • 由于通道价格昂贵,即必然数量少,这往往成为了IO的瓶颈,进而导致系统吞吐量下降。
        • 解决方法
          • 增设通路而不增加通道,一个设备连接多个控制器,一个控制器连接多个设备
    • 设备的控制方式
      • 使用轮询的可编程I/O方式
        • 含义:处理器不断检查设备是否准备好进行数据传输。这种方式需要处理器不断地查询设备的状态,因此可能会占用大量的处理器时间。
        • 方式:处理器通过检查设备的状态寄存器来确定设备是否准备好。如果设备准备好了,处理器就会执行数据传输。
      • 使用中断的可编程I/O方式
        • 含义:当设备准备好进行数据传输时,它会发送一个中断信号给处理器。处理器会暂停当前的任务,处理这个中断。
        • 方式:处理器在执行其他任务时,设备会在准备好进行数据传输时发送中断。处理器会保存当前的状态,处理这个中断,然后恢复之前的任务。
      • 直接存储器访问(DMA)方式
        • 含义:DMA控制器可以直接控制系统总线,以便在主存和设备之间直接传输数据,而无需处理器的干预。
        • 方式:DMA控制器在收到处理器的请求后,会直接与设备进行数据传输,传输完成后,DMA控制器会向处理器发送一个中断信号。
      • I/O通道方式
        • 含义:I/O通道是一种特殊的处理器,专门用于处理I/O操作,从而释放主处理器的负担。
        • 方式:处理器只需发送一个启动I/O通道的命令,然后就可以继续执行其他任务,而I/O通道会自行处理整个I/O操作。
  • 3 中断和中断处理程序
    • 中断简介
      • 1.中断和陷入
        • 中断
          • 由IO设备向CPU发出的信号,也称为外部中断。当接收到中断信号时,CPU会暂停正在执行的程序,保存当前的CPU环境,然后自动转去执行该IO设备的中断处理程序。
        • 陷入
          • 由CPU内部事件所引起的中断,又称内中断。例如:运算溢出,程序出错,如非法指令,地址越界。
      • 2.中断向量表和中断优先级
        • 中断向量表
          • 操作系统为每个中断都配备一个中断号中断处理程序(ISR)。ISR在内存的首地址称为中断向量,系统所有的中断向量放在一起构成一个表格,称为中断向量表(IVT)。
        • 中断优先级
          • 根据中断的紧迫程度为中断安排优先级。优先级越高的中断越紧迫。高优先级的中断可以打断低优先级的执行,这就是所谓的中断嵌套
      • 3.处理多中断信号源的方式
        • 屏蔽(禁止)中断
          • 在处理中断时,可以选择屏蔽所有的中断,这样就可以避免在处理一个中断的过程中被其他中断打断。
        • 嵌套中断
          • 如果同时有多个中断信号,可以选择先处理优先级高的中断。这样,高优先级的中断可以抢占低优先级中断的CPU。
    • 中断处理程序
      • 测定是否有未响应的中断信号
        • 这是中断处理程序的第一步,处理器需要检查是否有任何未响应的中断信号。如果有,处理器将开始处理这个中断。
      • 保护被中断进程的CPU现场环境
        • 在处理中断之前,处理器需要保存当前正在执行的进程的状态。这包括寄存器的内容,程序计数器的值,以及其他相关的状态信息。这样做是为了在中断处理完成后,能够恢复被中断的进程,使其能够从中断点继续执行。
      • 转入相应设备的中断处理程序
        • 处理器根据中断向量表找到对应设备的中断处理程序,并开始执行。
      • 处理中断
        • 在这一步,处理器执行中断处理程序,完成与中断相关的任务。这可能包括读取或写入设备数据,处理设备错误等。
      • 恢复CPU现场环境后退出中断
        • 一旦中断处理完成,处理器将恢复被中断进程的状态,包括寄存器的内容,程序计数器的值等。然后,处理器将控制权返回给被中断的进程,使其能够从中断点继续执行。
  • 4 设备驱动程序
    • 设备驱动程序概述
      • 含义
        • 设备处理程序又称设备驱动程序
        • 是I/O系统的高层与设备控制器之间的通信程序,主要任务:
          • ①接受上层软件抽象I/O命令,转换为具体参数发给设备控制器,启动设备执行
          • ②由设备控制器发来的信号传送给上层软件
        • 驱动程序与硬件密切相关,应为每类设备配置一种驱动程序
      • 功能
        • 接受设备无关层软件的命令和参数,将抽象命令转换为与设备相关的低层操作序列
        • 检查I/O合法性,了解设备工作状态,传递与I/O设备有关的操作序列,设置设备工作方式
        • 发出I/O命令,若设备空闲便启动I/O设备完成操作;若设备忙碌则将请求块挂在设备队列上等待
        • ④及时响应设备控制器的中断请求,根据中断类型调用相应中断处理程序
      • 特点
        • ① 实现设备无关层软件与设备控制器的通信和转换程序
        • ② 与设备控制器及I/O设备紧密相关
        • ③ 与I/O设备所采用的I/O控制方式紧密相关,若中断驱动和DMA
        • ④ 因为与设备的紧密相关,许多用汇编语言编写。目前很多驱动程序已经固化在ROM中
        • ⑤ 驱动程序应允许可重入,一个正在运行的驱动程序常会在一次调用完成前再次被调用。
      • 处理方式
        • ① 每类设置一个进程,专门执行该类设备I/O操作,如交互式中断进程。打印进程等,适合大型系统
        • ② 系统中只有一个I/O进程,执行所有各类设备I/O操作
        • ③ 不设置专门设备处理进程,只为各类设备设
    • 执行过程
      • 1.将抽象要求转换为具体要求
      • 2.校验服务请求
      • 3.检查设备的状态
      • 4.传送必要的参数
      • 5.启动I/O设备
    • 框架
      • 1.设备驱动程序与外界的接口
      • 2.设备驱动程序的组成
  • 5 与设备无关的I/O软件
    • 基本概念
      • 通过物理设备名使用设备
        • 每个硬件设备都有一个唯一的物理设备名,这个名字通常与设备的硬件特性有关。通过物理设备名使用设备意味着软件需要知道每个设备的具体硬件特性,这在一定程度上增加了软件的复杂性。
      • 引入逻辑设备名
        • 为了简化软件的设计和提高其可移植性,操作系统通常会为每个物理设备引入一个逻辑设备名。逻辑设备名与设备的硬件特性无关,它只是一个抽象的标识符,可以用来代表任何类型的设备。
      • 实现从逻辑设备名到物理设备名的转换
        • 操作系统需要提供一种机制,将逻辑设备名映射到对应的物理设备名。这样,当软件通过逻辑设备名发出I/O请求时,操作系统就可以根据这个映射找到对应的物理设备,并将请求转发给它。
    • 与设备无关的I/O软件共有操作
      • 提供设备驱动程序的统一接口
        • 这是为了使上层软件能够以一种统一的方式访问各种不同的硬件设备。通过这个接口,上层软件无需关心设备的具体实现细节,只需要调用统一的接口函数即可。
      • 缓冲管理
        • 为了提高I/O操作的效率。通过在内存中设置缓冲区,可以让CPU和I/O设备并行工作,从而提高系统的整体性能。
      • 差错控制
        • 为了确保数据的正确传输。如果在I/O操作中发生错误,如数据丢失或损坏,差错控制机制可以检测到这些错误,并采取相应的措施来纠正或报告错误。
      • 独占设备的分配与回收
        • 了有效地管理系统中的硬件资源。当一个进程需要使用某个设备时,系统会为其分配该设备;当进程使用完设备后,系统会回收设备,使其可以被其他进程使用。
      • 提供独立于设备的逻辑数据块
        • 为了简化上层软件的设计。通过将物理设备抽象为逻辑数据块,上层软件可以以一种与设备无关的方式进行数据操作,从而提高软件的可移植性和可维护性。
    • 设备分配与回收
      • 设备分配中的数据结构
        • 设备控制表
          • 用于存储设备的状态信息,如设备是否空闲,设备的当前位置等。
        • 控制器控制表、通道控制表和系统设备表
          • 用于存储控制器的状态信息,如控制器是否空闲,控制器当前正在控制的设备等。
      • 设备分配时应考虑的因素
        • 设备固有的属性
          • 如设备的类型,设备的性能,设备的状态等。
        • 设备分配算法
          • 如先来先服务,短作业优先,优先级调度等。
        • 设备分配中的安全性
          • 如防止设备冲突,防止设备死锁等。
      • 独占设备的分配程序
        • 基本的设备分配程序
          • 分配设备
          • 分配控制器
          • 分配通道
        • 设备分配程序的改进
          • 如引入优先级,引入预约机制,引入中断机制等。
    • 逻辑设备名映射到物理设备名
      • 逻辑设备表
        • 是操作系统中的一个重要数据结构,它用于将应用程序中使用的逻辑设备名映射到对应的物理设备名。在逻辑设备表中,每个表项包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。
      • 逻辑设备表的设置
        • 第一种方式
          • 在整个系统中只设置一张逻辑设备表。这种方式下,所有的用户共享同一张逻辑设备表,逻辑设备表中的每个表项都对应一个全局唯一的逻辑设备名。
        • 第二种方式
          • 为每个用户设置一张逻辑设备表。这种方式下,每个用户都有自己的逻辑设备表,可以为不同的用户提供更灵活的设备命名和管理方式。
    • I/O调度
      • I/O调度是操作系统中的一种机制,用于确定在块设备上执行I/O操作的顺序。其主要目标是提高系统的整体性能,使进程之间公平地共享设备访问,以及减少完成I/O操作所需的平均等待时间。
      • 在实际应用中,应用程序发布的系统调用的顺序并不一定总是最佳的选择,因此需要通过I/O调度来改善系统的整体性能。例如,对于磁盘这类设备,顺序读写的速度是最快的,因为顺序读写时,磁头移动的距离最小。所以,避免随机读写是提高磁盘I/O效率最有效的方法。
  • 6 用户层的I/O软件
    • 系统调用与库函数
      • 系统调用
        • 是操作系统提供给用户程序调用的接口。用户程序通过接口来获得操作系统内核提供的服务。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。系统调用是用户进程进入内核的接口层,它本身并非内核函数,但它是由内核函数实现的。
      • 库函数
        • 是将函数封装入库,供用户使用的一种方式。库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分。库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大。库函数是有缓冲的,系统调用是无缓冲的。
    • 假脱机系统
      • 假脱机技术
        • 假脱机技术,也称为SPOOLing(Simultaneous Peripheral Operation On-Line)技术,是用软件的方式模拟脱机技术.
      • 假脱机系统的组成
        • 输入井和输出井
          • 在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。
        • 输入缓冲区和输出缓冲区
          • 在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存由输入设备传送的数据,之后再传送到输入井。输出缓冲区用于暂存从输出井传送的数据,之后再传送到输出设备。
        • 输入进程和输出进程
          • 输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井。输出进程模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区输出至输出设备上。
        • 井管理程序
          • 用于控制作业与磁盘之间信息的交换。当作业执行过程中向某台设备发出启动输入或输出操作请求时,由操作系统调用井管理程序,由其控制从输入井读取信息或将信息输出至输出井。
      • 假脱机系统的特点
        • 提高了I/O速度
          • 对数据所执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样。
        • 将独占设备改造为共享设备
          • 在假脱机打印系统中,实际上并没有为任何进程分配设备,而只是在磁盘缓冲区中为进程分配一个空闲盘块和建立一张I/O请求表,这样,便把独占设备改造为共享设备。
        • 实现了虚拟设备功能
          • 宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,它们都会认为自己是独占了一个设备。
      • 假脱机打印机系统
        • 假脱机打印机系统是一种虚拟的打印机系统,它模拟了一个真实的脱机打印机的操作。它允许用户将打印任务添加到队列中,并在打印机处于脱机状态时保留打印作业,直到打印机重新连接并准备好打印。假脱机打印机系统的组成部分包括:
        • 1.磁盘缓冲区:在磁盘上开辟的一个存储空间,用于暂存用户程序的输出数据。
        • 2.打印缓冲区:用于缓和CPU和磁盘之间的速度不匹配问题,设置在内存中,用于暂存从磁盘缓冲区送来的数据,以后再传送给打印机设备打印。
        • 3.假脱机管理进程和假脱机打印进程:管理进程为每个要求打印的用户数据建立一个假脱机文件,并放入到假脱机文件队列中,由打印进程依次对队列中的文件进行打印。
      • 守护进程
        • 是一类在后台运行的系统服务进程,而不是在交互式用户界面下运行的进程。它们通常在系统启动时启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。守护进程在运行时通常不与显示器、键盘、鼠标交互,可以在操作系统启动时由系统启动。例如,syslogd就是指管理系统日志的守护进程,sshd是接收传入SSH连接的守护进程。
  • 7 缓冲区管理
    • 含义
      • 缓冲区是计算机中的一块临时存储区,它可以由专门的硬件寄存器组成,也可以用内存作为缓冲区。
    • 作用
      • ①缓和CPU与I/O设备之间速度不匹配的矛盾
        • 由于CPU的处理速度通常远高于I/O设备的数据传输速度,因此需要缓冲区来暂存数据,以便CPU和I/O设备能够以各自的速度独立工作。
      • ②减少对CPU的中断频率,放宽对CPU中断相应时间的限制
        • 通过在缓冲区中积累数据,可以减少CPU需要响应的中断次数,从而减轻CPU的负担。
      • ③解决数据粒度不匹配的问题
        • 有时,CPU处理的数据单位(如字或字节)与I/O设备传输的数据单位可能不同。在这种情况下,缓冲区可以作为一个转换层,将一个单位的数据转换为另一个单位。
      • ④提高CPU与I/O设备之间的并行性
        • 通过使用缓冲区,CPU可以在I/O设备传输数据时执行其他任务,从而提高系统的整体效率。
    • 分类
      • 单缓冲区和双缓冲区
        • 单缓冲区
          • 每当用户进程发出一 I/O 请求时,操作系统会在主存中为其分配一个缓冲区。当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
        • 双缓冲区
          • 操作系统会在主存中为其分配两个缓冲区。这种策略允许一个缓冲区在接收数据时,另一个缓冲区可以被处理,从而提高了数据处理的效率。
      • 环形缓冲区
        • (也称为循环缓冲区或环形队列)是一种先进先出(FIFO)的闭环的存储空间,适合缓存数据流。它的一个有用特性是:当一个数据元素被用掉后,其余数据元素不需要移动其存储位置。
      • 缓冲池
        • 是系统内的缓冲区统一管理起来,变专用为通用。缓冲池由若干个大小相同的缓冲区组成。当某进程需要使用缓冲区时,提出申请,由管理程序分配给它,用完后释放缓冲区。这样可用少量的缓冲区为更多的进程服务。
    • 缓存
      • 含义
        • 缓存(cache)原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。缓存就是数据交换的缓冲区(称作Cache),是存贮数据(使用频繁的数据)的临时地方。
      • 作用
        • 缓存主要是为了提高数据的读取速度。因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能。
      • 和缓冲的区别
        • 缓冲区 (buffer),它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。
          • Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了。
        • Cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。
        • 简单来说就是buffer偏重于写,而cache偏重于读。
  • 8磁盘性能概述和磁盘调度
    • 磁盘性能概述
      • 数据的组织与格式
        • 数据格式定义了数据的组织方式和表示形式,决定了数据在传输、存储和处理过程中的结构与形式。
      • 磁盘的类型
        • 固定头磁盘
          • 固定头磁盘在每条磁道上都有一个读/写磁头,可进行并行读写,提高了磁盘的I/O速度。
        • 移动头磁盘
          • 移动头磁盘的磁头可以移动,磁头臂可来回伸缩定位磁道。
      • 磁盘的访问时间
        • 寻道时间
          • 寻道时间是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
        • 平均旋转延迟时间
          • 平均旋转延迟=1/ (2*转数每秒),比如7200转的硬盘的平均旋转延迟等于1/2*120≈4.17ms。
        • 传输时间
          • 传输时间是指一个站点从开始发送数据帧到数据帧发送完毕所需要的全部时间。
    • 早期的磁盘调度算法
      • FCFS调度算法
        • FCFS(First Come First Serve)算法是一种最简单的磁盘调度算法,也是最早的磁盘调度算法之一。该算法的思想是按照磁盘请求的先后顺序进行调度,即先到达磁盘请求的先被服务。
      • SSTF调度算法
        • SSTF(Shortest Seek Time First)算法服务于最接近当前头部位置的请求。在该算法中,头指针的方向非常重要。当请求之间发生平局时,头部将在其当前方向上为请求提供服务。与FCFS相比,SSTF算法在总寻道时间方面非常有效。
    • 基于扫描的磁盘调度算法
      • SCAN调度算法
        • SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。
      • CSCAN调度算法
        • CSCAN(Circular SCAN)算法是SCAN算法的一种改进。它在一个方向上工作,即它扫描到该方向的末端,然后跳到另一个末端,服务于同一方向上的请求。
      • NStepSCAN调度算法
        • N-Step-SCAN算法是SCAN算法的一种变体,它将磁盘划分为N个区域,并在每个区域内分别处理请求,然后再移动到下一个区域。通过将磁盘划分为区域并分别扫描每个区域,N-Step-SCAN可以通过减少改变扫描方向所需的时间来提高磁盘调度性能¹⁸¹⁹[^20^]。
      • FSCAN调度算法
        • FSCAN算法将磁盘请求队列分成两个子队列,一个是由当前所有请求磁盘I/O形成的队列,由磁盘调度按SCAN算法进行处理。另一个是在扫描期间,将新出现的所有请求I/O磁盘的进程放入等待处理的请求队列中。