一、内核分析相关说明
分析内核的缘起。一是个人对linux内核运行机制的好奇和对开源软件自由精神的向往;二是工作和发展方向的需要。linux从发行至今已经走过28个年头,最新的linux内核已经到了5.0版本。虽然我们生活中看不到linux系统,但是大到集群计算中心,小到嵌入式设备,都运行着基于linux内核的操作系统。
linux内核是整个生态中的核心。基于linux内核加上各种定制的GUI或文件系统,形成了各种定制的发行版本以及大名鼎鼎的Android;对linux内核本身的定制使内核可以在各种架构的cpu,各种完全不同形态和使用场景的设备上使用;基于或者借鉴linux内核有许多不同的类Unix内核和操作系统;基于linux+各种lib/application可以增加更丰富的应用场景,比如搭载google TPU的嵌入式设备,就可以在linux上运行tensorflow Lite在edge端实现模式识别和决策,从而为嵌入式设备在边缘端赋能。在物联网、大数据、云计算及人工智能的浪潮中,linux kernel必定会大放异彩。
linux内核分析版本选择。选择1.0版本一是因为这是第一个正式发布版,比0.11等预发行版更加完整和稳定;二是该版本代码量是正式版本中最少的,对于初入内核分析的人难度最小。对于1.0版本之后可以进一步查看2.6版本的重大变化和最新版(比如5.0)的最新特性,这样能以较低的难度跟上kernel的主流更新版本和特性演进。
内核分析方法。内核分析从零起步,但是至少需要以下基础
- C语言(至少熟悉语法)
- 硬件知识(至少理解基础的计算机体系结构)
内核分析会结合内核的启动流程、各子系统、内核目录这三个线路来进行分析。在分析的过程中,遇到不懂的知识会系统的在linux相关知识分类中进行系统学习,从而清晰而完整的分析整个linux内核源码。
学习态度。linux内核是道法术中的道,系统,整体,清晰的理解非常重要。所以一步一步打好基础,理解好框架和具体细节都很重要。不要抱着7天速成,拿来就用的想法,这是对待术的态度,而不是对待道的态度。
二、代码分析准备
代码下载。可以在linux官网下载1.0内核源码。下面附链接地址,下载后使用winrar或者tar解压即可。
https://mirrors.edge.kernel.org/pub/linux/kernel/v1.0/linux-1.0.tar.gz
分析工程建立。推荐使用Source insight,该软件安装和新建工程的方法请自行百度。