CFQ 算法使用一组有序的队列,这些队列基于发出请求的进程的 I/O 优先级。这意味着,优先级为 1 的进程有一个队列,优先级为 2 的进程有一个队列,等等。然后,请求被放入一个调度队列中等待处理。
我知道该算法会从每个队列中获取第一个请求并将它们放入调度队列中等待处理,但我不明白它如何处理单个请求,因为它们可能有多个块(不一定连续)。
那么,问题是,该算法如何处理单个请求?通过 FCFS 吗?或者它是否进行某种排序以避免不必要的头部运动?
例如,假设我们有一个包含以下要读取的块列表的请求:
[1,23,5,76,3]
磁盘如何处理这个问题?
由FCFS提供:
[1,23,5,76,3]
或者通过对块进行排序:
[1,3,4,23,76]