📜  操作系统中的I / O调度

📅  最后修改于: 2021-08-25 17:04:00             🧑  作者: Mango

在了解I / O调度之前,获得I / O操作的概述很重要。

I / O操作如何执行?
操作系统中有一部分代码专用于管理输入/输出,以提高系统的可靠性和性能。一种计算机系统包含CPU和一个以上连接到公共总线通道的设备控制器,通常称为设备驱动程序。这些设备驱动程序提供了与I / O设备的接口,用于与系统硬件进行通信,从而促进了通信的轻松性,从而提供了对共享内存的访问。

通用总线控制器

操作系统中的I / O请求:
I / O请求由设备驱动程序与I / O设备内部的某些系统程序协作进行管理。操作系统使用三个简单的部分来满足请求:

  • I / O流量控制器:跟踪所有设备,控制单元和通信通道的状态。
  • I / O调度程序:执行OS用来分配和访问设备,控制单元和通信通道的策略。
  • I / O设备处理程序:服务于设备中断并负责数据传输。

操作系统中的I / O调度:
调度用于有效利用计算机资源,避免死锁并为队列中等待的所有进程提供服务。要了解有关CPU调度的更多信息,请参阅《操作系统中的CPU调度》。

I / O流量控制器具有3个主要任务:

  • 主要任务是检查是否至少有一条路径可用。
  • 如果存在多个路径,则必须决定选择哪个路径。
  • 如果所有路径都被占用,则其任务是分析哪条路径最早可用。

I / O调度程序功能类似于过程调度程序,它分配设备,控制单元和通信通道。但是,在I / O请求的负载很重的情况下,调度程序必须决定首先应处理哪个请求,为此,我们要由OS管理多个队列。

进程调度程序<和I / O调度程序之间的主要区别是I / O请求不会被抢占:通道程序一旦启动,就可以继续完成。尽管这是可行的,因为程序相对较短(50到100 ms)。一些现代的操作系统允许I / O Scheduler服务和更高优先级的请求。用简单的话来说,如果一个I / O请求具有更高的优先级,那么它们将在其他具有较低优先级的I / O请求之前得到服务。 I / O调度程序与I / O流量控制器协同工作,以跟踪当前I / O请求正在服务的路径。

I / O设备处理程序管理I / O中断(如果有)和调度算法。很少有I / O处理算法是:

  1. FCFS [先来先服务]。
  2. SSTF [最短搜寻时间优先]。
  3. 扫描
    • N步扫描
    • 扫描
    • C-LOOK

每种调度算法都旨在最大程度地减少手臂移动,平均响应时间,响应时间差异。下面介绍了所有I / O调度算法的概述:

  1. 先到先服务[FCFS]
    它是最简单的设备调度算法之一,因为它易于编程并且对用户(I / O设备)基本公平。唯一的障碍可能是高寻道时间,因此任何其他可以超过最小寻道时间的算法都适合进行调度。
  2. 最短搜寻时间优先[SSTF]:
    在流程调度中,它使用与“最短作业优先”相同的思想,即最先处理最短的流程,而较长的流程必须等待轮到。与I / O调度中的SJF概念进行比较,可以满足最接近被服务轨道(在磁盘上行进距离最短的轨道)的轨道的请求。相对于FCFS的主要优势在于,它可以最大程度地缩短总寻道时间。它支持易于到达的请求,并将旅行推迟到那些不方便的地方。
  3. 扫描算法
    SCAn使用状态标志来指示机械臂的方向,它指示机械臂是朝磁盘中心移动还是向另一侧移动。该算法将臂从磁盘末端移动到中心磁道,从而以其方式为每个请求提供服务。当它到达最内层的轨道时,它会反转方向并朝磁盘上的外层轨道移动,从而再次满足其路径中的每个请求。
  4. LOOK [电梯算法]
    这是SCAN算法的一种变体,除非有待处理的请求,否则arm不一定会一直到达磁盘的任一侧。在服务之前,它会先等待一个请求。一个大问题出现了:“为什么我们应该在扫描中使用LOOK?”。与SCAN相比,LOOK的主要优点在于它可以丢弃I / O请求的不确定延迟。
  5. 扫描的其他变化:
    • N步扫描它将保留所有待处理的请求,直到机械臂开始返回。新请求被分组以进行下一个循环周期。
    • C-SCAN [Circular SCAN](循环扫描) 当手臂在向内循环过程中为请求服务时,它提供了统一的等待时间。要了解更多信息,请参阅SCAN和C-SCAN之间的区别。
    • C-LOOK [C-SCAN的优化版本] Arm不一定返回到编号最小的轨道,而是从要服务的最低请求返回的。它优化了C-SCAN,因为如果不需要,臂不会移动到磁盘末端。要了解更多信息,请参阅C-LOOK和C-SCAN之间的区别。