编程不是我的主要工作,虽然我喜欢它,有时也会得到报酬。多年以来我一直听说Linux和我的朋友们向我展示了许多* nixes(或* nici?),尽管我坚持使用Mac OS。
你认为Linux内核中有任何我喜欢看的部分,这有助于我理解整个内容是什么吗?例如,Linux与Darwin有何不同?
我已经在汇编程序和DOS中长大,所以像中断或低级别C这样的东西不应成为理解的障碍。但最后我对高级概念更感兴趣,比如线程或网络堆栈 - 我知道不同的操作系统会以不同的方式执行它们。我正在寻找有趣,轻松和愉快的事情,比如深夜阅读。
(注意:做一个CW,以防万一)
更新:我找了一些文档并开始阅读:
答案 0 :(得分:31)
我建议查看LXR。它可以更容易地跟踪代码流(您不必搜索每个被调用的函数 - 嗯,你有,但网站为你做了)。
当前版本(2.6.30)的一些起点:
start_kernel()
- 将其视为main()
的内核等价物。该函数初始化几乎所有的内核子系统;按照它在代码中查看在启动过程中您在屏幕上滚动的内容。start_kernel()
。.code16gcc
)编译的,它允许生成32位实模式代码。答案 1 :(得分:11)
我自己,我总是发现任务调度代码有点令人兴奋: - /
你需要让自己成为行业之外的业余爱好。或者生活: - )
答案 2 :(得分:8)
内核中的注释非常有趣。在kerneltrap上有一些tips on where to find the best ones。
arch / sparc / lib / checksum.S- / *太阳,你只是不能打败我,你就是不能。停止尝试, arch / sparc / lib / checksum.S:*放弃。我很认真,我要踢生活的狗屎 arch / sparc / lib / checksum.S- * out of you,game over,Lights out。* /
答案 3 :(得分:6)
linux-0.01.tar.gz是历史核心,有利于开始 它简单而小巧,适合开始阅读 (也有void main(void)而不是start_kernel()lol:D)
答案 4 :(得分:3)
在深入了解Linux内核之前,您可能想要阅读或略读一本描述Linux内核的书。
想到的书是:
答案 5 :(得分:1)
你可能会更多地阅读有关OS理论的书。至于源代码:我不知道,但你可以轻松下载Linux kernel source,看看你是否能找到任何吸引人的东西。
答案 6 :(得分:1)
在src目录中运行时,这应该会出现一些有趣的代码:
grep -ir "fixme" *
还尝试其他滑稽术语,废话,狗屎,f ***,企鹅等。
答案 7 :(得分:1)
您需要在上下文中重新定义“fun”这个词。 :)
也就是说,Linux内核可能是一个太过庞大的怪物。您可能希望从一些学术或更原始的内核开始,首先了解正在发生的事情。您可能还需要考虑Jolix本书。
答案 8 :(得分:1)
很多人都推荐linux的v0.0.1是最容易理解的。
但是,如果您正在寻找良好的内核源代码来阅读,我不会选择Linux,它是一个黑客的野兽(就像说GCC来源是“有趣”)相反,您可能希望尝试Minix或其中一个BSD(Darwin基本上是NetBSD iirc的一个分支),甚至是其中一个免费的DOS克隆,如果其他一切都有点过于恐怖......
答案 9 :(得分:1)
尝试阅读实现这些角色设备的代码: 的/ dev /零 的/ dev / null的 的/ dev /全
也许随机数生成器,如果你倾向于。该代码比所有其他设备驱动程序简单明了,因为它不接触任何硬件。
从drivers / char / mem开始。*
答案 10 :(得分:1)
我们可以学习一些简单的技巧,例如
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
...
#define min(x, y) ...
...
#define container_of
答案 11 :(得分:0)
为了好玩,我想你也可以看到Minix,它不完全是linux,但tenenbaum的现代操作系统是一个很好的阅读。