了解Linux内核(或任何内核)所需的硬件知识

时间:2012-05-10 06:46:57

标签: linux-kernel kernel hardware

正如标题所示,是否有任何具备理解Linux内核所需的系统知识的来源?

如果没有这样的东西,我应该涵盖哪些硬件主题(我认为它只是在计算机周围)?到什么程度(我想深入了解,而不是电路设计水平)?

2 个答案:

答案 0 :(得分:2)

我建议您购买Beagleboard等嵌入式主板。他们将为您提供所用芯片组的必要文档(在本例中为TI ARM Cortex A8)。开始阅读此芯片组手册。此外,还有许多Android,Ubuntu项目已经在beagleboard上实现。以它们为参考,看看它们如何将驱动程序写入特定的电路板等。这将使您了解内核/驱动程序如何与H / W交互。

来到内核的S / W部分,我建议您一般阅读good book on Operating systems,特别是Linux / Unix OS。这将为您提供关于什么是内核以及它如何管理事物的公平想法。然后,您可以通过writing small kernel modules使用桌面linux,插入和删除它,调试它等。

另外,随身携带kernel source的方便参考,让互联网成为您最好的朋友。

答案 1 :(得分:1)

除了CPU架构的基础知识之外,内核本身并不需要太多的硬件知识。大多数情况下,内核管理内存,文件,分页,交换和任务调度等资源。内核和可加载设备驱动程序之间的接口是纯粹的计算机科学。驱动程序有95%的硬件专用代码,但管理虚拟内存的复杂性在更深层次上是硬件特定的。

我首先会通过一个更简单的系统调用来跟踪,比如gettimeofday()sysinfo(),以了解内核的架构。然后,根据您的兴趣,遵循read()write()sbrk()mmap()的逻辑。 fork()是一个有趣而有趣的人,但可能会非常令人费解。调度程序也是一个值得克服的挑战,但值得付出努力。祝你好运!