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

标签 linux open-source operating-system kernel

编程不是我的主要工作,尽管我喜欢它并且有时会为此获得报酬。多年来,我一直在听说 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/

相关文章:

c - 用于 FPGA 的开源 OCR 系统

c - 互斥锁内的信号量等待

c - 如果 malloc 通过 gdb 返回 NULL,如何设置条件断点

linux - 如何将目录添加到 $PATH 但前提是它不存在

javascript - 用于创建离散和三 Angular 分布的 JS 模拟框架

language-agnostic - 所有程序都必须有返回值吗?

file - 打开未正确关闭的文件会怎样?

php - Raspberry Pi/MS SQL Server 交互

linux - 使用 sed 插入一行

python - 将 char 转换为日期时间 odoo 9