Linux内核源码阅读入门(全网最详细教程)

前言

通过阅读Linux内核,你能深入理解Linux底层运行机制,对操作系统有深入理解,会对整个计算机体系都有一个更深刻的认识。在驱动开发/应用开发/后台开发等方向,你都需要了解操作系统内核的运行机制,这样你才能写出更好的代码。

作为程序员,应该深入了解一下操作系统的底层机制,最好是阅读源码,在对操作系统有更深的了解之后,我们写多线程高并发程序,包括架构,优化,算法等,都有更高的高度。我们学习Linux内核源码,不需要将Linux内核每一行都读懂,我们根据自己需要看几个核心的模块即可。

Linux内核源码阅读技巧

Linux 当前最新版本是 6.4.7,总共代码超过700W行,非常庞大。对于阅读 Linux 内核,我们从0.01版本入手,总共代码1W行左右。

Linux内核源码阅读入门(全网最详细教程)_第1张图片

下面是阅读Linux内核的一些技巧:

  • Linux0.01的阅读需要掌握C语言。
  • 阅读源码前,需要了解Linux内核源码的整体分布情况。
  • 现代的操作系统一般由进程管理,内存管理,文件系统,驱动程序和网络组成。
  • 纵向和横向结合起来阅读。顺着程序的执行顺序逐步进行,与按模块进行相结合。比如,对于Linux启动代码可以顺着Linux启动顺序一步一步阅读,对于内存管理部分可以单独进行阅读。
  • 需要反复阅读,慢慢理解。

对于Linux内核整体的代码文件,大家可以在linux0.01文件夹下打开终端,输入命令:

tree

然后就能以树状的方式看到linux0.01的全部文件:

Linux内核源码阅读入门(全网最详细教程)_第2张图片

Linux内核源码整体介绍

下面是内核的整体介绍,大家可以在我的博客主页获取Linux0.01源码带注释说明的资料。

Linux内核源码阅读入门(全网最详细教程)_第3张图片

(1)boot:存放和系统引导相关的代码

(2)fs:存放Linux支持的文件系统代码

(3)include:包含编译核心所需要的大部分头文件(均为.h文件)

  • asm:和汇编相关的头文件
  • linux:和平台相关的头文件
  • sys:和系统相关的头文件

(4)init:初始化代码(存放了main.c文件)

(5)kernel:和内核相关的源码

(6)lib:存放库代码

(7)mm:内存管理相关的代码

(8)tools:工具相关的代码

(9)Makefile:编译文件

main.c文件阅读Linux内核源码阅读入门(全网最详细教程)_第4张图片

  • time_init() —— 初始化运行时间
  • tty_init() —— tty初始化
  • trap_init() ——陷阱门(硬件中断向量)初始化
  • sched_init() —— 调度程序初始化
  • buffer_init() —— 缓冲管理初始化
  • hd_init() —— 硬盘初始化
  • sti() ——所有初始化工作完成后,开启中断
  • move_to_user_mode() —— 进入到用户模式

总结

本文是阅读Linux系统源码的基础入门指南,为读者提供一些建议,详细的代码注释说明放在本人博客资源中,供大家自取。

你可能感兴趣的:(Linux,linux,c++,系统架构,运维,后端)