简单的I / O循环调度程序

时间:2014-04-17 06:34:49

标签: c linux-kernel

我正在尝试制作一个非常专业的循环I / O调度程序。我虽然可以采用众所周知的cfq调度程序并根据我的需要进行重新调整。事实证明我不太了解C代码以解决linux cfq中所有4000行代码的含义。我得到了正常的函数调用和结构,就像任何其他编程语言一样但有些东西我不明白。

是否有更简单的cfq版本或任何其他循环调度程序,我可以用于学习目的? (我发现的是相同的cfq代码)

1 个答案:

答案 0 :(得分:1)

您可以通过将元素存储在数组中并将数组用作循环数组来实现循环调度程序。例如,循环20个文件描述符并假设非阻塞IO:

int index = 0;
int file_descriptors[20];
// Open all the descriptors here

while (!end_condition) {
   int working_fd = file_descriptors[index++ % 20];
   // Work with the file descriptor here
}

当然,最好用常量或(在malloc' ed数组的情况下)用malloc替换幻数。