基本信息
编辑推荐
本书作者在整理自己多年研发笔记的基础上,以精心挑选的典型开发实例,是一本集大成之作!
内容简介
计算机书籍
本书作者在整理自己多年研发笔记的基础上,以精心挑选的典型开发实例,向读者详细讲述了Linux内核源代码的各部分结构、原理及组成框架,主要分析了Linux最新版本(2.6.11)的内核源代码,帮助读者深入理解Linux内核,精通Linux内核编程。全书分为20章,内容包括进程管理、进程间通信、内存管理、文件系统、I/O接口及资源管理、内核的编译及调试原理、网络通信、内核安全、USB驱动程序等。
对于想了解Linux开发,以及从事Linux内核编程的开发人员来说,本书是一本集大成之作,它既有讲解透彻的原理,也有详细实用的示例,更有作者多年从事实际开发工作的心得。本书主要针对从事Linux内核编程的中高级读者及软件工程师,也很合适作为大学教材和参考书。
目录
1.1 数据类型所占空间 1
1.2 有关移植性的其他问题 3
1.2.1 时间间隔 3
1.2.2 页面大小 3
1.2.3 字节存储顺序 3
1.2.4 数据对齐 4
1.3 内核通用链表 4
1.3.1 hlist哈希链表 7
1.3.2 RCU操作保护的链表 8
1.4 AT&T的汇编格式 9
1.5 内核中的时间延迟 11
第2章 进程及进程调度 13
2.1 进程结构 13
2.2 进程创建 24
2.2.1 对象缓存的分配 24
2.2.2 系统调用sys_fork 25
2.3 内核线程 26
2.4 工作队列 27
2.4.1 工作队列的结构及宏定义 28
前言
为什么写作本书
如今,Linux内核代码几乎是每个软件工程师必读的,即便内核代码复杂难懂。作为一名Linux编程者,我一向颇为留意内核编程方面的图书,我一直期望能有一本实践性很强的书,是真正从事Linux内核开发的人士写作的。
由于我多年从事Linux内核开发工作,并一直记有相关笔记,后来,我便想到,如果我从一名研发者的角度来写作这样一本书,把自己的笔记加以整理,那么,对读者的实践应该会有不小的帮助。在整理自己的开发笔记的基础上,我还查阅了大量相关资料,加强研究,力求融会贯通,费时两年,写成这本书。
Linux 2.6版内核改写了以前版本内核的绝大部分,本书主要针对目前Linux的最新版本2.6.11版,对以后的新版本也具有普适性。本书的主要目的是帮助软件工程师读懂Linux 2.6.11版本内核,并能开发各种驱动程序、编写内核模块。
在这本书里,我将平常编程中遇到的重点、难点进行分析,并给予充分的论述,相信其中许多问题是其他内核编程者也会遇到的。对于软件工程师来说,本书有助于他们少走弯路,更快地掌握Linux 2.6.11内核源代码及编程技巧。
关于本书作者
笔者从在清华大学电子系读研究生起,就开始从事Linux内核编程,后又一直在外国著名公司从事Linux内核编程工作,先后从事过Linux内核的移植、USB驱动程序编写、内核安全程序的编写等。目前,Linux被广泛地应用于手机、PDA等高端嵌入设备,笔者在这方面有丰富的开发经验。
本书主要内容
本书共包括20章,每章的主要内容如下:
第1章“数据类型及链表”介绍了数据类型占用的空间及用户空间输出的数据类型,说明了内核通用链表的原理,以及行内汇编语言的语法。
第2章“进程及进程调度”分析了进程结构及进程调度算法。
第3章“内核同步机制”介绍了内核的互斥机制:自旋锁、原子操作和信号量。还说明了RCU读写机制,及内核与用户空间进行通信的机制。
第4章“内存管理”介绍了虚拟内存及映射,还分析了物理内存的管理(它包括缓存的分配及回收,请页机制,交换空间等),还说明了内存缓冲池和大块内存的管理机制。
第5章“虚拟文件系统”介绍了虚拟文件系统的结构和实现文件操作的机制,还介绍了底层各种缓存的管理。
第6章“EXT2文件系统”介绍了EXT2文件系统逻辑分区的结构、节点和dentry的管理,说明了读写系统调用的具体实现过程。
第7章“其他文件系统”介绍了常用的一些文件系统:ramfs、proc、vfat、devfs和sysfs。
第8章“I/O端口资源管理”介绍了中断处理、DMA及电源管理的实现机制。
第9章“模块机制”介绍了内核模块的实现机制,还分析了内核空间的保护机制。
第10章“设备驱动程序”介绍了字符设备及块设备驱动程序的工作原理,分析了通用硬盘及块层的机制,还说明了如何编写字符设备与块设备驱动程序。