LINUX操作系统是一个开放源代码的免费操作系统。[1]其内核由林纳斯·托瓦兹于1991年10月5日首次发布,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,是一个性能稳定的多用户网络操作系统。
本书讨论了Linux内核的概念、结构和实现。主要内容包括多任务、调度和进程管理,物理内存的管理以及内核与相关硬件的交互,用户空间的进程如何访问虚拟内存,如何编写设备驱动程序,模块机制以及虚拟文件系统,Ext 文件系统属性和访问控制表的实现方式,内核中网络的实现,系统调用的实现方式,内核对时间相关功能的处理,页面回收和页交换的相关机制以及审计的实现等。此外,本书借助内核源代码中最关键的部分进行讲解,帮助读者掌握重要的知识点,从而在运用中充分展现Linux系统的魅力。
希望大家都认真阅读哦,进步肯定不止一点点,下个月就是跳槽的高峰期了,我给大家整理了很多互联网大厂的面试题,包含腾讯,字节,阿里等等,想要了解的,【面试】滴我可取~
概述Linux内核,讲述了内核的总体图景,后续章节则根据总体结构对内核进行更详细的研究。
讨论了多任务、调度和进程管理的基本知识,并分析了这些基本技术和概念抽象的实现方式。
讨论了如何管理物理内存。本章既讨论了内核与相关硬件的交互,也讨论了内核内部通过伙伴系统和slab分配器来分配内存的方式。
继续对内存进行讨论,讲解了用户空间的进程如何访问虚拟内存,以及在内核层面实现虚拟内存视图所需要的详细的数据结构和相关机制。
介绍了保证内核能够在多处理器系统上正确运作所需的机制。此外,本章还介绍了进程如何相互通信。
引导读者理解如何编写设备驱动程序,使内核支持新的硬件。
阐述了模块机制,该机制能够向内核动态添加新的功能。
讨论了虚拟文件系统,这是内核中一个一般的间接层,能够支持各种各样的不同文件系统,包括物理文件系统和虚拟文件系统。
讲解了Ext文件系统族,包括Ext2和Ext3文件系统,这是很多Linux系统安装的标准选项。
继续讨论文件系统,包括procfs和sysfs。 这两个文件系统并非用来存储信息,而是向用户层提供关于内核的元信息。此外,本章阐述了一些减轻编写文件系统负担的方法。
给出了Ext文件系统属性和访问控制表的实现方式,这两者有助于提高系统的安全性。
讨论内核中网络的实现,内容集中于IPv4、TCP、UDP和netfilter。
介绍了系统调用的实现方式,系统调用是从用户层请求内核服务的标准机制。
对中断触发内核活动的方式进行了分析,并介绍了内核中将工作延迟至后续时间点执行的机制。
说明了内核对时间相关功能的处理,包括了高低两种分辨率的情形。
讨论了借助于页缓存和块缓存来加速内核操作。
讨论了如何对内存中缓存的数据与持久存储设备上的数据源进行同步。
介绍了页面回收和页交换的相关机制。
介绍了审计的实现,审计负责详细记录内核的活动。
讨论了内核所支持的各种计算机体系结构的特点。
简述了有效使用内核源代码的各种工具和方法。
提供了关于C语言的一些技术札记,并讨论了GNU C编译器的结构。
给出了内核的启动过程。
介绍了ELF二进制格式。
讨论了内核开发的许多社会性的方面,以及Linux内核社区。
希望分享的知识都可以帮助到大家,也希望大家学了都能有收获~