The CFQ algorithm uses an ordered set of queues based on the I/O priority of the processes that made the requests. That means there's a queue for process of priority, let say, 1, another one for priority 2, etc. Then the requests are placed into a dispatch queue for being handle.
I understand that the algorithm takes the first request from each queue and place them into a dispatch queue for being handle, but I don't get how it handles a single request since they could have multiples blocks (not necessary contiguous).
So, the question is, how does the algorithm handles a single request?, by FCFS? or does it do some kind of sort for avoiding unnecessary head movements?
For example, let's say we have a request that contains the following list of blocks to read:
[1,23,5,76,3]
How would the disk handle this?
by FCFS:
[1,23,5,76,3]
or by sorting the blocks:
[1,3,4,23,76]