编程不是我的主要工作,尽管我喜欢它并且有时会为此获得报酬。多年来,我一直在听说 Linux,我的 friend 向我展示了许多 *nix(或 *nici?),尽管我坚持使用 Mac OS。
您认为 Linux 内核的哪些部分是我喜欢看的,可以帮助我理解全部内容是什么?例如,Linux 与 Darwin 有何不同?
我是在汇编程序和 DOS 环境下长大的,因此中断或低级 C 之类的东西不应该成为理解的障碍。但最后我对高级概念更感兴趣,比如线程或网络堆栈——我知道不同的操作系统做它们的方式不同。我正在寻找一些有趣、轻松和愉快的东西,比如深夜阅读。
(注:做了一个CW,以防万一)
更新:我查找了一些文档并开始阅读:
最佳答案
我建议查看 LXR .它使遵循代码流程变得更容易(您不必搜索每个调用的函数 - 嗯,您有,但网站会为您完成)。
一些起点,对于当前版本(2.6.30):
-
start_kernel()
— 将其视为main()
的内核等价物。这个函数初始化了几乎所有的内核子系统;按照它在代码中查看您在启动期间在屏幕上看到的滚动内容。 - entry_32.S — 系统调用和中断(x86-32 版本,应该更接近您所知道的;注意使用 AT&T 汇编方言而不是您可能更习惯的英特尔方言)。
- head_32.S — 内核入口点。这是内核切换到保护模式后启动的地方;最后,它会调用
start_kernel()
。 - arch/x86/boot — 实模式引导代码。它从汇编开始( boot/header.S ),但很快跳转到 C 代码(从 boot/main.c 开始)。是否进行实模式初始化(主要是在切换到保护模式之前必须完成的 BIOS 调用);它是使用奇怪的 GCC 技巧 (
.code16gcc
) 编译的,它允许生成 32 位实模式代码。 - arch/x86/boot/compressed — 如果您想知道“正在解压 Linux...”消息是从哪里来的,那就是这里。
关于linux - 我可以阅读 Linux 内核的哪些部分以获得乐趣?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010724/