如何读 Linux 内核

本文是关于内核入门的思路,并不涉及内核本身。本文纯属个人观点,不成熟。


一 基础


1. 汇编语言与 x86 体系结构

理解操作系统要先理解计算机,理解计算机需要理解汇编。当然,内核的大部分都使用 C 语言进行开发,在 2.6.11 中, arch/x86/boot/setup.S 中,实现了操作系统启动的初始化工作,后来在 3.0+ 中也用 C 来实现了。
学习 x86 而不是其他体系的理由是,你的笔记本和台式机都是 x86,仅此而已。
关于汇编,推荐的书目是《Professional assembly programing》,因为这本书非常简单,尽管知识面比较狭窄,但是初期够用。汇编学习比较漫长,没有耐心可以暂时先跳过深入学习。


2. C 语言

肯定必须非常熟悉,程序员必练。
推荐书籍:丹尼斯里奇的《C 程序设计语言》。


3. Unix 编程经验

用 C 或者 C++ 写真正的代码。至少得知道,Unix 大概是个什么样子。Linus 说,Unix 有六个基本系统调用(open, close, read, write, fork, exec),然后加上 pipe。


二 内核编译

这事情其实没有实际意义,你都还没开始写代码呢......但是这会让你的心里有个大概的认识:我后面的工作,会这样子嵌入内核中。


1. 内核的选择

一般情况考虑从实际出发,公司 / 实验室的人用什么,跟着做。如果你只是自己玩,那就随意,建议和你的 guest os 版本接近,否则比较调整和编译选项比较痛苦。


2. Guest OS 的选择

没有太多经验,但是倾向于 Gentoo 这种比较开放的,像 ubuntu 这种隐藏的事情较多的,不是一个好选择,但是如果你只是写一个模块而不进入内核,ubuntu  OK 的。


3. 虚拟机

VirtualBox 是一个比较理想的选择,而且允许 shared folder 和 snapshot 这两个非常非常重要的特性,特别是 snapshot,也许你可以参考这个: 点击打开链接 。


4. 编译安装

参考此处: Compile kernel in the ubuntu way , 或者参考自带的 README 文档(后者更加好)。注意下要使用你的 guest os 的 config 而不是 defconfig,当这可能导致内核编译非常漫长,非常巨大(你可以自己根据 guest os 的 config 来调整编译选项)。随后你可以 
uname -r
检查一下自己的版本,看看对不对,然后就没了,一般装上新内核之后不去运用新特性的话,看不出什么区别。


三 内核模块

或许是时候你应该写一个内核模块的 hello world 了,你肯定会感到非常开心,因为 part 2 的环境建立通常浪费你 1~2 天时间,而且很 boring。

推荐的书目是:《 The linux kernel module programing guide》,电子书,非常短,真正的 hello world,给你一个对于内核的,比较具体的初步认识。这一部分其实是比较容易的。

如果涉及驱动,内核的 Document/kernel-docs.txt 推荐了一本《Linux Device Drivers》,个人感觉可以参考。


四 内核本身

推荐的书是《Understanding the linux kernel》,就算你是对于计算机基础薄弱,一样能看懂,非常厚,建议先看附录的计算机启动,初步不用深入理解,先看个大概流程,然后再开始看正文。

如果你现在要在内核中做改动,个人认为《深入理解 linux 内核架构》不错,纯工具书,如果要给内核文件系统增加功能或者机制,很好的参考书。

不要看《Linux kernel develoment》,个人认为不三不四的一本书,逻辑混乱。

最重要的,读代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《深入理解Linux内核》是一本经典的计算机科学书籍,它是由Daniel P. Bovet和Marco Cesati共同撰写的。该书深入介绍了Linux内核的各个方面,包括进程管理、内存管理、文件系统、设备驱动程序等等。 在《深入理解Linux内核》中,作者系统地介绍了Linux内核的设计和实现原理。他们从整体架构开始,逐步深入讲解各个子系统的功能和实现细节,全面展示了Linux内核的工作原理。通过学习这本书,者可以学习到Linux内核的基本概念、关键数据结构和算法,以及与其他操作系统的对比。 这本书针对的者主要是计算机专业的学生和从业人员。它不仅能帮助者更深入地理解Linux操作系统,还能培养者分析和解决操作系统相关问题的能力。同时,书中丰富的实例和代码也对学习者进行了良好的指导,帮助他们更好地理解和掌握内核编程技巧。 总而言之,《深入理解Linux内核》是一本值得深入研的经典教材。它不仅详细介绍了Linux内核的各个方面,还为者提供了丰富的实例和代码,帮助他们更好地理解和掌握内核编程技巧。完这本书,者可以更深入地理解Linux内核的工作原理,为深入研究和开发操作系统打好坚实的基础。 ### 回答2: 《深入理解 Linux 内核》是一本介绍 Linux 操作系统内核设计和实现原理的经典著作。这本书的目的是帮助者深入了解 Linux 内核的核心概念、运行机制和关键模块,从而更好地理解 Linux 操作系统的工作原理。 首先,这本书涵盖了 Linux 内核的各个方面,包括进程管理、内存管理、进程间通信、文件系统、设备驱动程序等。通过深入了解这些模块的设计和实现原理,者可以全面掌握 Linux 内核的工作方式,并能够更好地进行系统调优和应用开发。 此外,本书还介绍了 Linux 内核的主要数据结构和算法,包括链表、红黑树、哈希表等。对这些数据结构的深入理解,对于理解 Linux 内核代码和实现原理非常重要。通过详细讲解这些数据结构的设计和实现,者可以更好地理解它们在 Linux 内核中的使用场景和性能特性。 另外,本书还详细介绍了 Linux 内核的调试和性能优化技术。作者详细介绍了使用 GNU 调试器来调试内核代码、使用运行时检测工具来检测内核错误、使用静态分析工具来分析内核代码等技术。这些技术对于诊断和解决内核问题非常有帮助,并能够提高系统性能。 总的来说,深入理解 Linux 内核这本书是一本系统而深入的介绍 Linux 内核设计和实现原理的优秀著作。通过学习这本书,者可以全面掌握 Linux 内核的运行机制和关键模块,提高对 Linux 操作系统的理解和应用开发的能力。 ### 回答3: 《深入理解Linux内核》 PDF是一本经典的Linux内核学习资料,它以深入和全面的方式探索了Linux内核的工作原理和设计思想。 首先,这本书介绍了Linux内核的基本概念和组成结构。它从进程管理、内存管理、文件系统等方面详细解析了内核的各个功能模块,让者了解内核的整体架构和运行机制。 其次,这本书深入剖析了Linux内核的调度器和进程管理。它详细介绍了调度器的工作原理,包括进程调度策略、调度队列的管理等内容。此外,它还讨论了进程的创建、销毁以及进程状态转换等方面,帮助者理解进程管理的核心概念和实现原理。 此外,这本书还介绍了Linux内核的内存管理机制。它涵盖了虚拟内存、分页机制、内存分配和回收等关键话题。通过解析内存管理的细节,者可以更好地理解Linux内核如何管理系统资源,并优化内存使用效率。 此外,《深入理解Linux内核》 PDF还深入讲解了Linux的文件系统。它涵盖了文件系统的组织结构、文件系统缓存、文件的写操作等关键知识点。通过学习文件系统的实现原理,者可以了解文件系统如何存储和管理文件数据,并对文件I/O操作有更深入的理解。 最后,这本书还涵盖了设备驱动程序和网络协议栈等内容。它讲解了设备驱动程序的框架和实现原理,以及Linux内核对网络通信的支持。通过学习这些内容,者可以了解Linux内核如何与外设和网络进行交互。 总之,这本书通过详细而全面的介绍,帮助者深入理解Linux内核的工作原理和设计思想。它不仅适合想要深入研究Linux内核的专业人士,也适合对Linux系统有兴趣的者参考学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值