商家名称 | 信用等级 | 购买信息 | 订购本书 |
Linux内核修炼之道 [平装] | |||
Linux内核修炼之道 [平装] |
《Linux内核修炼之道》是一本揭秘Linux内核学习方法的图书。
内核修炼秘籍大揭秘,每天万余人争相阅读。
十余位Linux内核专家联合推荐
Chris DiBona (谷歌开源程序经理开源软件大师)
吴雄昂 (ARM中国区总经理)
栾跃 (谷歌开发技术推广部中国市场主管经理)
郭淳学 (中国软件行业协会嵌入式系统分会副理事长兼秘书长)
何小庆 (北京麦克泰软件技术有限公司董事长)
马忠梅 (北京理工大学副教授)
史应生 (红帽专家服务团队资深咨询顾问,RHCA、RHCSS中国第一人)
陈莉君 (西安邮电学院教授)
向农 (电子工程世界总编)
陈渝 (清华大学副教授)
伍朋 9(Linux Kernel Developer)
李泽帆 (富士通南大软件技术有限公司)
博主内功扎实、文笔幽默,国内具备这两个条件的作者不多,难得!期待《Linux内核修炼之道》早日发行。
——网友hust_tulip
仁者见仁,智者见智,看问题的角度不同,当然认同点也不尽相同,总的来说仁兄的文章我很认同,不过最让我共鸣的还是“看懂内核中自Kconfig和Makefile文件是重中之重”。
——网友yunsongice
期待博主的书早日出版,感觉嵌入式Linux的工作很好找,希望大家一起努力,深入学习L1nux内核。
——CSDN网友
时光如逝,07年看到Fudan_abc兄的文章,深深地被吸引住了,文笔与技术都是如此精彩,如今吾也由学生变成工程师,再次看到fudan_abc兄的文章,再次感叹时光如梭!
——网友EndAI
我对阁下的敬仰犹如滔滔江水连绵不绝,一发而不可收。小弟我做了两年多的Linux/C应用级编程,却始终徘徊在Linux内核之外,不是不感兴趣,而是实在太难。屡战屡败,屡败屡战,始终入不了门,希望阁下的《Linux内核修炼之道》能带领我进入Linux内核的大门。
——CSDN网友
写得很严谨,又不失幽默,真的,挺好的,继续关注
——网友qianniu2meiyi
能找到这种无私而有用的资料不简单呐,极少发评论的我也不得不感概一下,以表支持。
——CSDN网友
Fudan_abc兄乃是我国不能缺的才人!请教下Fudan_abc兄,你是如何进入Linux内核源码的世界7具体点说就是你是怎样入门的7你的文章写得实在太好了,我不否定ULK是神书,但我更认可你写的文章!Fudan_abc兄的新书我一定在第一时间买!
——网友trlkgrelgk
太精辟了,设备模型这块我看了很长时间也没搞明白,看君的文章,如醍醐灌页,让我豁然开朗。
——网友shxflg
任桥伟,华清远见资深讲师,6年嵌入式系统软硬件开发经验,资深研发工程师、项目经理、CSDN专家。熟悉嵌入式系统软硬件设计的全过程,多年来始终专注于嵌入式Linux内核研究和设备驱动的开发,精通嵌入式Linux操作系统,尤其擅长Linux系统内核及设备驱动开发。作为资深PM,曾指导完成多个大型嵌入式项目的软硬件设计,涉及通信、网络、控制等领域。著有《Linux内核修炼之道》、《Linux那些事》等备受网友关注的专业图书,目前致力于嵌入式Linux内核技术的普及推广和人才培养。
第1章 初识Linux
1.1 Linux史记
1.1.1 Linux诞生记
1.1.2 泰坦尼克的狂潮
1.1.3 提前发生的革命
1.1.4 和平、爱情和Linux
1.1.5 Ubuntu4.1 0
1.1.6 Richard Stallman的征婚启事
1.1.7 一封公开信
1.1.8 首款Android手机
1.1.9 Linux信用卡
1.2 内核的版本
1.3 获取内核源码
1.4 Linux发行版
1.4.1 软件包管理器
1.4.2 流行的发行版
1.4.3 选择Linux发行版
第2章 配置与编译内核
2.1 配置内核
2.1.1 几种配置方式
2.1.2.config文件
2.1.3 配置选项详解
2.2 编译内核
2.2.1 准备工作
2.2.2 如何为内核打补丁
2.2.3 编译步骤
2.2.4 文档的编译
2.2.5 编译小技巧
2.3 自由软件的编译与安装
2.3.1 发布时的组织结构
2.3.2 配置
2.3.3 编译
2.3.4 安装
第3章 浏览内核源代码
3.1 内核学习的技术基础
3.2 内核体系结构
3.3 内核源码目录结构
3.4 浏览代码的工具
3.4.1 Source Insight
3.4.2 Vim+Cscope
3.4.3 LXR
3.5 内核代码的特点
3.5.1 GCC扩展
3.5.2 内嵌汇编
3.6 内核中的链表
3.7 Kconfig和Makefile
3.7.1 Kconfig结构
3.7.2 利用Kconfig和Makefile寻找目标代码
3.8 代码分析示例
3.8.1 分析README
3.8.2 分析Kconfig和Makefile
3.8.3 寻找初始化函数
第4章 系统初始化
4.1 引导过程
4.2 内核初始化
4.2.1 start_kernel函数
4.2.2 reset_init函数
4.2.3 kernel_init函数
4.2.4 init_post函数
4.3 init进程
4.4 内核选项解析
4.4.1 内核选项
4.4.2 注册内核选项
4.4.3 两次解析
4.5 子系统的初始化
4.5.1 do_initcalls()函数
4.5.2.initcall.init节
4.5.3 分析示例
第5章 系统调用
5.1 系统调用概述
5.1.1 系统调用、POSIX、C库、系统命令和内核函数
5.1.2 系统调用表
5.1.3 系统调用号
5.1.4 系统调用服务例程
5.1.5 如何使用系统调用
5.1.6 为什么需要系统调用
5.2 系统调用执行过程
5.3 系统调用示例
5.3.1 sys_dup
5.3.2 sys_reboot
5.4 系统调用的实现
5.4.1 如何实现一个新的系统调用
5.4.2 什么时候需要添加新的系统调用
第6章 中断与中断处理
6.1 概述
6.1.1 中断分类
6.1.2 PIC vs APIC
6.1.3 中断号vs中断向量
6.1.4 中断描述符表
6.1.5 门
6.1.6 中断服务程序
6.2 重要数据结构
6.2.1 中断描述符irq_desc
6.2.2 中断控制器描述符ir_chip
6.2.3 中断服务程序描述符irqaction
6.3 中断子系统初始化
6.3.1 中断描述符表的初始化
6.3.2 中断请求队列的初始化
6.4 中断或异常处理
6.4.1 中断控制器的工作
6.4.2 CPU的工作
6.4.3 内核对中断的处理
6.4.4 内核对异常的处理
6.5 中断API
6.5.1 注册和释放
6.5.2 激活和禁止
6.5.3 其他API函数
6.6 通用IRQ层
6.6.1 GenIRQ的起源及发展
6.6.2 GenlRQ的抽象层次
6.7 多处理器系统中的中断处理
6.7.1 处理器间中断
6.7.2 中断亲和力
6.7.3 中断负载均衡
6.8 中断的下半部
6.8.1 下半部的实现机制
6.8.2 下半部机制的选择
第7章 进程管理
7.1 概述
7.1.1 进程vs程序
7.1.2 进程vs线程
7.1.3 进程描述符
7.1.4 进程状态
7.1.5 进程标识符
7.1.6 进程间关系
7.1.7 进程0与进程1
7.1.8 进程的内核栈
7.1.9 获取当前进程
’7.2 进程创建
7.2.1 fork()、vfork()与clone()
7.2.2 do_fork()
7.2.3 copy-process()
7.2.4 内核线程
7.3 进程退出
7.3.1 do-exit()
7.3.2 僵死进程
7.3.3 孤儿进程
7.4 后台进程
第8章 调度
8.1 概述
8.1.1 调度策略
8.1.2 进程调度的目标
8.1.3 进程的nice值
8.1.4 优先级
8.1.5 时间片
8.2 进程调度器的发展历史
8.2.1 Linux2.4.的调度器
8.2.2 O(1)调度器
8.2.3 SD调度器
8.2.4 RSDL调度器
8.2.5 CFS调度器
8.3 O(1)调度器
8.3.1 运行队列
8.3.2 优先级数组
8.3.3 计算时间片
8.3.4 平均休眠时间
8.3.5 判断交互性
8.3.6 计算优先级
8.3.7 休眠和唤醒
8.3.8 schedule()
8.3.9 负载均衡
8.3.1 O软实时调度
8.4.CF’S调度器
8.4.1 完全公平与进程的权重
8.4.2 模块化
8.4.3 调度实体
8.4.4 CFS运行队列
8.4.5 虚拟运行时间
8.4.6 CFS调度类
8.4.7 schedule
8.4.8 组调度
8.5 进程抢占与切换
8.5.1 用户抢占
8.5.2 内核抢占
8.5.3 进程切换
第9章 内存管理
9.1 内存概述
9.1.1 地址空间
9.1.2 分页
9.2 内核的内存分配
9.2.1 内存结构
9.2.2 BUDDY页面管理
9.2.3 SLAB内存管理
9.2.4. SLUB/SLOB内存管理
9.2.5 vmalloc内存分配
9.2.6 高端内存映射
9.3 进程地址空间
9.3.1 内存描述符
9.3.2 内存映射
9.3.3 多级页表结构
9.3.4 缺页错误处理
9.4 页面缓存
9.4.1 页面缓存管理
9.4.2 Swap内存交换
9.4.3 kswapd和pdflush
9.5 内存工具汇总
9.5.1 用proc接口查看内存信息
9.5.2 系统命令工具
第10章 文件系统
10.1 概述
10.1.1 文件
10.1.2 文件系统
10.1.3 虚拟文件系统
10.2 VFS的数据结构
10.2.1 超级块
10.2.2 索引节点
10.2.3 目录项
10.2.4 文件
10.2.5 与文件系统相关的数据结构
10.2.6 与进程相关的数据结构
10.2.7 路径查找辅助结构
10.3 VFS的缓存机制
10.3.1 索引节点缓存
10.3.2 目录项缓存
10.3.3 缓冲区缓存
10.4 文件系统的注册与安装
10.4.1 文件系统的注册
10.4.2 文件系统的安装
10.4.3 inotify的注册和安装
10.5 inotify机制
10.5.1 inotify数据结构
10.5.2 inotify矽钩子函数
10.5.3 inotify用户接口
10.5.4 应用示例
10.5.5 inotify玲工具
第11章 设备驱动
11.1 概述
11.2 模块机制与“Hello”World!
11.3 设备模型
11.3.1 设备模型的经济基础
11.3.2 设备模型的上层建筑
11.3.3 类(Class)与类设备(class_device)
11.4 sysfs文件系统
11.4.1 sysfs与/sys
11.4.2 sysfs目录项sysfs_dirent
11.4.3 sysfs目录和属性
11.5 spec、datasheet与内核源代码
11.6 USB子系统与IJSB驱动
11.6.1 USBB简史
11.6.2 USB协议基础
11.6.3 USB子系统与sysfs
11.6.4 内核中的USB
11.6.5 USB设备某础
11.6.6 USBurb
11.6.7 OTG简介
11.6.8 USB驱动程序
第12章 内核开发基础
12.1 相关资源
12.1.1 内核文档
12.1.2 经典书籍
12.1 _3内核社区
12.1.4 其他网络资源
12.2 编码风格
12.3 内核API
12.4 内核中的Makefile
12.5 如何添加自己的驱动程序
12.6 如何提交补丁
12.7 学会使用Git
第13章 调试
13.1 内核调试配置选项
13.2 二分法与printk()
13.2.1 二分查找法的基本原理
13.2.2 printk()
13.3 获取内核信息
13.3.1 syslog和dmesg
13.3.2 /proc
13.3.3 /sys
13.3.4 ioctl
13.4 oops
13.5 调试工具
13.5.1 gdb
13.5.2 kgdb
13.5.3 kdb
13.5.4 kprobes
13.5.5 systemtap
13.5.6 kdump
13.5.7 硬件工具
13.6 “神奇”的SysRq
13.7 使用模拟器与虚拟机
至此落笔之际,恰至Linux问世18周年,18年的成长,如梦似幻,风雨颇多,感慨颇多。
犹自忆起多年以前一位前辈训导时的箴言:今天的必然正是由之前一系列的偶然所决定的。过去的某年某月,我偶然初识Linux就身陷其中,至今仍找不到出去的路。那么,当你偶然地拿起这本书,偶然地看到这段话,你是否会问自己:这样的偶然又会导致什么样的必然?
如果你依然决定继续这次的偶然之旅,那么首先请认识一个人和一只企鹅。这个人自然就是Linux Torvalds,我们称他为Linux或李纳斯,正是这位来自芬兰的天才,在1991年1月2日,攥着在圣诞节和生日得到的钱,偶然地做出了一个重大的财政决定,分期3年买一台价格为3500美元的相貌平平的计算机,从而Linux开始了。
企鹅则是Linux的标志,很多人可能不知道Linux,但是却可能知道这只企鹅,这是一个奇怪的现象,就像很多人知道微软,却不知道比尔盖茨。不管怎么说,是Linux塑造了这只企鹅,并让它有一副爽透了的样子,就像刚刚吞下一扎啤酒。除此之外,这只企鹅还要很特别,其他的企鹅都是黑嘴巴黑脚蹼,但它却是黄嘴巴黄脚蹼。
在继续阅读之前,我还想问一个问题:你在强迫自己学习内核吗?我很希望你能回答不是,但希望与现实往往都有段不小的距离,因为很多时候,我会发现身边的人是因为觉得内核很高深而强迫自己喜欢的。强迫自己去喜欢一个人是多么痛苦的事情。或许,针对这个问题,最让人愉悦的回答是“说实话,我学习的热情从来都没有低落过”。正如Linux在自己的自传《Just for Fun》中希望的那样。本书的组织形式
本书将Linux内核的学习分为4个层次:全面了解,掌握基本功;兴趣导向,选择重点深度钻研;融入社区,参与开发做贡献;坚持,坚持,再坚持。总结起来,就是“全面了解抓基本,兴趣导向深钻研;融入社区做贡献,坚持坚持再坚持。”(如果你是一个修真小说爱好者,可以将其与炼气、筑基、结丹和元婴等层次相对应)。
第一层次修炼的内容包括了前3章,目的是希望你能够对Linux以及内核有个全面的认识和了解,掌握分析Linux内核源代码的分析方法。
第l章主要介绍了Linux的18年成长史,或许你会乐意陪我一起缅怀这过去的18年。
第2章介绍内核的配置和编译过程,和任何大型软件源码的学习一样,学会编译和配置是第一步。
插图:
喜欢Linux内核修炼之道 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务