linux - 我可以阅读 Linux 内核的哪些部分以获得乐趣?

编程不是我的主要工作,尽管我喜欢它并且有时会为此获得报酬。多年来,我一直在听说 Linux,我的 friend 向我展示了许多 *nix(或 *nici?),尽管我坚持使用 Mac OS。

您认为 Linux 内核的哪些部分是我喜欢看的,可以帮助我理解全部内容是什么?例如,Linux 与 Darwin 有何不同?

我是在汇编程序和 DOS 环境下长大的,因此中断或低级 C 之类的东西不应该成为理解的障碍。但最后我对高级概念更感兴趣,比如线程或网络堆栈——我知道不同的操作系统做它们的方式不同。我正在寻找一些有趣、轻松和愉快的东西,比如深夜阅读。

(注:做了一个CW,以防万一)

更新:我查找了一些文档并开始阅读:

  • Unreliable Guide To Locking

最佳答案

我建议查看 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...”消息是从哪里来的,那就是这里。

https://stackoverflow.com/questions/1010724/

相关文章:

linux - 从 rpm 包中提取规范文件

c - 枚举中这些#define 的目的是什么?

c - 关于 putenv() 和 setenv() 的问题

linux - 进程可以拥有的每个不同 UID 的目的是什么?

linux - tr 命令 - 如何将字符串 "\n"替换为实际的换行符 (\n)

linux - 除了使用 Ctrl + C 之外,如何在 linux 中停止正在运行的 R 命令?

linux - 双斜杠//in `cd//` 在 Linux 中是什么意思?

c - bzero() & bcopy() 与 memset() & memcpy()

linux - 解释导出 LANG、LC_CTYPE 和 LC_ALL 的效果

linux - 使用命令或 bash 脚本清理环境?