你好,我是闪客,欢送和我一起学习 Linux 源码。
每个程序员都有一个操作系统梦,想要深刻了解操作系统,品读源码是必经之路。
很多优良的操作系统书籍,都是以 Linux 0.11 这个经典版本为钻研对象进行解说的,比方《Linux 内核设计的艺术》《Linux 内核齐全正文》等,毕竟挑战最新版本难度过大,Linux 0.11 的常识含量更匹配初学者须要,也足以让咱们建设对操作系统的根本意识。
但为什么即使是 Linux 0.11 这种代码量起码的版本,依然令很多人望而生畏呢?
咱们看看《Linux 内核设计的艺术》的结尾:
对于操作系统而言,稳固且牢靠地运行是最重要的。现行技术计划是将用户过程与用户过程之间、用户过程与操作系统之间进行拆散,操作系统能够治理用户过程,然而用户过程之间不能互相干涉 ……
怎么样?你是不是看了个结尾,就有点昏昏欲睡?因为这些图书曾经建设了宏观视线,好像“上帝”鸟瞰源码,所有了然于胸。然而对于还没入门的咱们来说,跟着大部头书籍梳理操作系统的整体逻辑,往往就会以失败告终。
而同样都是大部头书籍,为什么很多小说就能让咱们骑虎难下,看得直呼过瘾。咱们看一下《天龙八部》的结尾。
青光闪动,一柄青钢剑倏地刺出,指向中年汉子左肩,使剑少年不待剑招用老,腕抖剑斜,剑锋已削向那汉子右颈。那中年汉子……
感觉很不一样吧?在咱们没有深厚积攒的时候,强行做思维拔高是拔不下来的,还不如放弃一张白纸的状态,轻装上阵,看到哪里算哪里。随着情节的开展,你会迅速地沉迷其中。
于是,我试着用读小说的心态,去浏览 Linux 源代码。我不再希图一下子就能梳理出什么思维、体系,但不晓得从哪一行代码起,整个操作系统的前因后果,曾经清晰地呈现在我的背后了,这个过程居然是人不知; 鬼不觉的。
一开始,我只是想简略分享一下本人借助 Linux 0.11 源码学习操作系统的感触。当我把本人了解后的内容梳理进去,没想到一下就写了 50 多讲。
因为有了本人一点点的推导和了解,我不再须要刻意记忆那繁冗的知识点。读着读着,我曾经清晰明确这样的体系,是如何一步步从第一行代码逐渐建设起来的。
这些程序如何“起承转合”,都完满交融在了我浏览 Linux 0.11 这个大故事背景下,非常天然。
我把这个系列课程分成了五大部分。[strong_begin] 本课程是 Linux0.11 源码趣读第一、二季。[strong_end]
第一局部:进入内核前的苦力活 ,这是咱们第一季的内容,这部分会讲述从开机后的那一刻,始终到 Linux 内核的 main 办法,到底经验了什么。这些工作与 Intel CPU 的开发手册高度相干。通过这一部分的学习,你将会对开机后产生的事件,以及 Intel CPU 的体系结构有个清晰的意识。
第二局部:大战后期的初始化工作 ,这是咱们第二季的内容,讲述 main 办法中的各种初始化函数,这些函数是操作系统各个模块得以运作的根底,因为它建设了内核中相当重要的数据结构。比方在过程调度初始化时,建设了 task_struct 构造,这是过程调度的外围。其实之后操作系统各个模块的运作原理,就是一直和这些数据结构打交道而已。
第三局部:一个新过程的诞生 ,讲述了从内核态切换至用户态,并建设起第一个用户过程的全副过程。有了第一个过程的建设,前面第二个、第三个过程的建设简直是齐全一样的情理。学完这部分,你将会了解一个多过程的操作系统是如何建设和运作的。
第四局部:shell 程序的到来 ,次要探讨如何将磁盘中存储的 shell 程序加载到内存中来,并最终交给 CPU 去执行。shell 程序自身会一直接管用户的输出,而后通过用户的输出信息,创立一个新的过程,将硬盘中的数据加载到内存中来,再交给 CPU 去执行,完满闭环至此造成。
第五局部:一条 shell 程序的执行 。咱们就会跟着一条 shell 程序“走南闯北”,从用户输出给电脑一个一个字符串开始,始终讲到该 shell 程序最终被执行。这个过程简直波及到操作系统全副模块的常识。通过这一部分,你就能把前四个模块,以及整个操作系统的常识体系做一个串联,把握一条程序执行的全副细节。
列出全景图,是为了让你有所期待,不过别有累赘,就把它当本小说,从头跟着我一步步学习就好啦。
在这个专栏里,我并不会总把操作系统的体系架构挂在嘴边,而是通过一行行代码逐步把你带入情节,最终让你人不知; 鬼不觉地发现:原来整个操作系统的体系就这样一点点建设起来了。
心愿你跟我走完这个系列,也能收回一句感叹,原来操作系统源码不过如此,就是这么个破玩意而已!
最初简略介绍一下本人,我是低并发编程的公号作者。业余时间我很喜爱钻研各种底层技术,并善于用通俗易懂的语言解说简单的技术原理。
咱们的第一、二季内容蕴含 20 讲,短小精悍,却能帮你无效推导操作系统的外围工作原理。
点击收费支付选集 >> https://time.geekbang.org/ope…
或保留海报微信扫码支付👇🏻