I / O调度程序是什么模块

在这一点上,我不需要修改调度程序,尽管这可能会改变。 目前,我的努力是了解他们。 我从各种来源(维基百科,Linux内核开发第二版(第10版),Linux驱动程序开发第3版(第13版)以及其他一些)对这个主题做了大量的阅读。 我对4个主要调度程序以及它们的工作原理有了一个公正的理解。 但是,我还不确定它们是什么。

从代码中,例如block / noop-iosched.c,它似乎是一个内核模块。 但是,当我执行lsmod我没有看到任何作为调度程序跳出来的内容:例如,没有任何内容被命名为noop或cfq。 此外,我没有看到任何类似的东西

<scheduler>      <size> <used>  scsi_transport_sas

这是我期望看到的,因为它是SAS请求从请求队列中取出请求并将它们传递给LLD的SAS传输。 至少,我假设我应该看到类似这样的内容,因为我看到了lsmod关于我的LLD的输出:

scsi_transport_sas     35652  1 mpt3sas

这个中间层驱动程序scsi_transport_sas被mpt3sas用作我的实际SAS控制器。 由于中间层驱动程序为设备出队,我只是假设中间层和I / O调度程序之间会存在类似的关系。

所以,我的问题是,调度程序是什么? 他们是模块吗? 他们是否集成了内核的组件? 他们是软件库并且公开了正确的功能并且与其他存储栈驱动程序一起编译? 我之前提到的参考文献很好地解释了他们所做的工作以及块驱动程序如何与它们进行交互,但他们并没有完全说明它们是什么。

链接地址: http://www.djcxy.com/p/84785.html

上一篇: What module is the i/o scheduler

下一篇: What is the significance of /queue/rotational in Linux?