将设备功能保留在设备控制器而不是OS内核中。后果是什么?

时间:2012-11-06 11:12:30

标签: linux-kernel device-driver hardware-interface

我的一个朋友在课堂上问我这个问题,我无法回答。他问道:

因为我们知道内核通过设备驱动程序控制物理硬件。如果所有这些功能都保存在设备控制器本身而不是内核管理它们,那该怎么办?这种情况会带来什么后果?是好是坏?

我在网上搜索了这个问题,但无法获得有关此方案的信息。可能是我没有使用正确的关键字搜索。

您对此的见解将帮助我清除我的概念。

请回答。

感谢。

1 个答案:

答案 0 :(得分:0)

您的问题似乎建议通过“保持”“控制(物理设备控制器内部的物理硬件)来消除”设备驱动程序“。这个的前提似乎是:

  

内核通过设备驱动程序控制物理硬件。

设备驱动程序的描述类似于我对最终用户理解的看法,而不是从开发人员的角度来看。最终用户知道该设备,并且它是采用该抽象的设备驱动程序,并且可以将该设备控制到每个设备端口的特定控制位。

但设备驱动程序负责平凡的内务管理任务,例如:

  • 维护设备状态和可用性;
  • 配置设备以进行操作;
  • 管理数据流,设置/拆除数据传输,在用户空间和内核空间之间复制数据;
  • 处理中断和例外。

这些任务是设备驱动程序的组成部分。这些任务无法从内核驱动程序的范围转移到外围设备。

有时设备驱动程序只能尝试管理设备,而不是完全控制它,例如,在数据包泛洪期间使用NIC驱动程序。

无论多少“所有这些功能都保存在设备控制器内部”,您都无法消除设备驱动程序。并且仍然会有从设备驱动程序向外设发出的控制指令/命令。

有问题的硬件设备应该是计算机外围设备设备,而不是自主机器人设备。该设备应设计为计算机一起运行。处理器和设备之间的任何接口都应该适合于该任务。如果外围设备更加“智能化”,则CPU可以卸载,高级命令接口可以替换低级子操作指令。但只有“一些”功能可以传输到外设,而不是“全部”。