同事跳槽阿里,临走甩给一份上千页的 Linux 源码笔记,真香
UNIX操作系统以简单、一致、优雅的设计著称,这种真正非凡的特性使得UNIX系统在超过1/4世纪的时间里影响了整个世界。而且,正是由于Linux的蓬勃发展,发源于UNIX的思想才依然活力依旧,并在可预见的未来其发展势头会一直持续下去。
UNIX和Linux操作系统带有某种强烈的吸引力,前述的两段引文很好地描述了这种吸引力的精神本质。UNIX操作系统诞生于贝尔实验室,Dennis Ritchie是其发明人之一。他在引文中提到,只有天才才能欣赏UNIX操作系统的简单性|这是否是完全正确的呢?显然不是,因为Ritchie在经过全面考虑后立即改口,称程序员也同样有资格欣赏UNIX操作系统。
UNIX和Linux操作系统的源代码复杂、文档少、对程序员的要求高,要想看懂这些代码并不是一件容易事。但只要一个人开始感受到内核源代码中所能获得的远见卓识,那就很难逃脱Linux的吸引力了。在此我给读者提出一个忠告: 一旦开始潜心钻研操作系统内核,就很容易沉溺于此种乐趣之中。
事实上,Benny Goodheart和James Cox在其书The Magic Garden Explained (该书解释了UNIX System V的内部实现机制)的序言中,早已对此做过说明(前文第二段引文)。当然,Linux肯定 也能让读者发疯!
内容提要
本书讨论了Linux内核的概念、结构和实现。主要内容包括多任务、调度和进程管理,物理内存的管理以及内核与相关硬件的交互,用户空间的进程如何访问虚拟内存,如何编写设备驱动程序,模块机制以及虚拟文件系统,Ext 文件系统属性和访问控制表的实现方式,内核中网络的实现,系统调用的实现方式,内核对时间相关功能的处理,页面回收和页交换的相关机制以及审计的实现等。此外,本书借助内核源代码中最关键的部分进行讲解,帮助读者掌握重要的知识点,从而在运用中充分展现Linux系统的魅力。
本书讨论了Linux内核的概念、结构和实现。各章分别介绍了下述主题。
由于篇幅限制小编,小编只在这里给大家展示目录及部分内容,有需要完整文档的程序猿(媛)可以帮忙转发+关注,添加助理vx:yunduoa2019获取
第1章简介和概述
概述Linux内核,讲述了内核的总体图景,后续章节则根据总体结构对内核进行更详细的研究。
第2章进程管理和调度
讨论了多任务、调度和进程管理的基本知识,并分析了这些基本技术和概念抽象的实现方式。
第3章内存管理
讨论了如何管理物理内存。本章既讨论了内核与相关硬件的交互,也讨论了内核内部通过伙伴系统和slab分配器来分配内存的方式。
第4章进程虚拟内存
继续对内存进行讨论,讲解了用户空间的进程如何访问虚拟内存,以及在内核层面实现虚拟内存视图所需要的详细的数据结构和相关机制。
第5章锁与进程间通信
介绍了保证内核能够在多处理器系统上正确运作所需的机制。此外,本章还介绍了进程如何相互通信。
第6章设备驱动程序
引导读者理解如何编写设备驱动程序,使内核支持新的硬件。
第7章模块
阐述了模块机制,该机制能够向内核动态添加新的功能。
第8章虚拟文件系统
讨论了虚拟文件系统,这是内核中一个一般的间接层,能够支持各种各样的不同文件系统,包括物理文件系统和虚拟文件系统。
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以帮忙转发+关注,添加助理vx:yunduoa2019获取
第9章Ext文件系统族
讲解了Ext文件系统族,包括Ext2和Ext3文件系统,这是很多Linux系统安装的标准选项。
第10章无持久存储的文件系统
继续讨论文件系统,包括procfs和sysfs。 这两个文件系统并非用来存储信息,而是向用户层提供关于内核的元信息。此外,本章阐述了一些减轻编写文件系统负担的方法。
第11章扩展属性和访问控制表
给出了Ext文件系统属性和访问控制表的实现方式,这两者有助于提高系统的安全性。
第12章网络
讨论内核中网络的实现,内容集中于IPv4、TCP、UDP和netfilter。
第13章系统调用
介绍了系统调用的实现方式,系统调用是从用户层请求内核服务的标准机制。
第14章内核活动
对中断触发内核活动的方式进行了分析,并介绍了内核中将工作延迟至后续时间点执行的机制。
第15章时间管理
说明了内核对时间相关功能的处理,包括了高低两种分辨率的情形。
第16章页缓存和块缓存
讨论了借助于页缓存和块缓存来加速内核操作。
第17章数据同步
讨论了如何对内存中缓存的数据与持久存储设备上的数据源进行同步。
第18章页面回收和页交换
介绍了页面回收和页交换的相关机制。
第19章审计
介绍了审计的实现,审计负责详细记录内核的活动。
附录A体系结构相关知识
讨论了内核所支持的各种计算机体系结构的特点。
附录B使用源代码
简述了有效使用内核源代码的各种工具和方法。
附录C有关C语言的注记
提供了关于C语言的一些技术札记,并讨论了GNU C编译器的结构。
附录D系统启动
给出了内核的启动过程。
附录EELF二进制格式
介绍了ELF二进制格式。
附录F内核开发过程
讨论了内核开发的许多社会性的方面,以及Linux内核社区。
由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!不会只有大纲和目录,有需要的程序猿(媛)可以帮忙转发+关注,添加助理vx:yunduoa2019获取
版权声明: 本文为 InfoQ 作者【周老师】的原创文章。
原文链接:【http://xie.infoq.cn/article/3aa897b138fd305282d9a2986】。文章转载请联系作者。
评论