我的一个朋友在班上问我这个问题,我无法回答。他问:
由于我们知道内核通过设备驱动程序控制物理硬件。如果所有这些功能都保留在设备控制器本身内,而不是内核管理它们。这种情况会带来什么后果?是好是坏?
我在线搜索了这个问题,但无法获得有关此情况的信息。可能我不是在正确的关键字中谷歌搜索。
您深入了解这将有助于我清除自己的概念。
请回答。
谢谢。
您的问题似乎是通过"保持" "控制设备硬件...在设备控制器内部的物理硬件...>。这样的前提似乎是:
内核通过设备驱动程序控制物理硬件。
对设备驱动程序的描述与最终用户理解的看来相似,而不是从开发人员的角度来看。最终用户意识到设备,是设备驱动程序进行抽象,并可以将该设备控制到每个设备端口的特定控制位。
但是设备驱动程序负责平凡的家政任务,例如:
- 保持设备状态和可用性;
- 配置用于操作的设备;
- 管理数据流,设置/拆除数据传输,复制用户空间和内核空间之间的数据;
- 处理中断和例外。
这些任务是设备驱动程序不可或缺的。这些任务不能从内核驱动程序的权限转移到外围设备。
有时设备驱动程序只能尝试管理设备,而不是完全控制它,例如,在数据包洪水期间,NIC驱动程序。
无论多少"所有这些功能都保留在设备控制器本身内" ,您根本不可能消除设备驱动程序。并且仍然会有从设备驱动程序到外围发出的控制指令/命令。
所讨论的硬件设备应为计算机外围设备设备,而不是自动机器人设备。该设备应设计为用计算机使用进行操作。处理器和设备之间的任何接口都应该适合任务。如果使外围设备更加"智能",那么也许CPU可以不承担,并且高级命令界面可以替换低级子操作指令。但是只能将"某些"功能传输到外围,而不是"全部"。