Linux内核修炼之道

Linux内核修炼之道
8.3
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
出版社: 人民邮电出版社
2010-07
版次: 1
ISBN: 9787115225856
定价: 49.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 350页
字数: 537千字
正文语种: 简体中文
  •   《Linux内核修炼之道》重点介绍Linux内核工作原理以及学习方法。将Linux内核的修炼之道总结为四个层次:“全面了解抓基本,兴趣导向深钻研,融入社区做贡献,坚持坚持再坚持”。第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次讨论了内核中系统初始化、系统调用、中断处理、进程管理及调度、内存管理、文件系统以及设备驱动等主要部分,目的是希望读者以兴趣为导向,寻找一个子系统或模块,对其代码深入钻研和分析。第三个层次介绍了内核开发与调试的一些基本信息,目的是希望读者能够融入到内核的开发社区,做出自己的贡献。第四个层次浓缩为两个字——坚持。
      《Linux内核修炼之道》语言通俗易懂,内容覆盖了内核的学习方法到内核设计与实现等各方面内容,能够带领读者快速走入Linux内核的世界,适合对Linux内核学习茫然的初学者,也适合各类希望深入理解Linux内核的读者。   任桥伟,华清远见资深讲师,6年嵌入式系统软硬件开发经验,资深研发工程师、项目经理、CSDN专家。熟悉嵌入式系统软硬件设计的全过程,多年来始终专注于嵌入式Linux内核研究和设备驱动的开发,精通嵌入式Linux操作系统,尤其擅长Linux系统内核及设备驱动开发。作为资深PM,曾指导完成多个大型嵌入式项目的软硬件设计,涉及通信、网络、控制等领域。著有《Linux内核修炼之道》、《Linux那些事》等备受网友关注的专业图书,目前致力于嵌入式Linux内核技术的普及推广和人才培养。 第1章初识Linux
    1.1Linux史记
    1.1.1Linux诞生记
    1.1.2泰坦尼克的狂潮
    1.1.3提前发生的革命
    1.1.4和平、爱情和Linux
    1.1.5Ubuntu4.10
    1.1.6RichardStallman的征婚启事
    1.1.7一封公开信
    1.1.8首款Android手机
    1.1.9Linux信用卡
    1.2内核的版本
    1.3获取内核源码
    1.4Linux发行版
    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.1SourceInsight
    3.4.2Vim+Cscope
    3.4.3LXR
    3.5内核代码的特点
    3.5.1GCC扩展
    3.5.2内嵌汇编
    3.6内核中的链表
    3.7Kconfig和Makefile
    3.7.1Kconfig结构
    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.1start_kernel函数
    4.2.2reset_init函数
    4.2.3kernel_init函数
    4.2.4init_post函数
    4.3init进程
    4.4内核选项解析
    4.4.1内核选项
    4.4.2注册内核选项
    4.4.3两次解析
    4.5子系统的初始化
    4.5.1do_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.1sys_dup
    5.3.2sys_reboot
    5.4系统调用的实现
    5.4.1如何实现一个新的系统调用
    5.4.2什么时候需要添加新的系统调用

    第6章中断与中断处理
    6.1概述
    6.1.1中断分类
    6.1.2PICvsAPIC
    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.2CPU的工作
    6.4.3内核对中断的处理
    6.4.4内核对异常的处理
    6.5中断API
    6.5.1注册和释放
    6.5.2激活和禁止
    6.5.3其他API函数
    6.6通用IRQ层
    6.6.1GenIRQ的起源及发展
    6.6.2GenlRQ的抽象层次
    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.1fork()、vfork()与clone()
    7.2.2do_fork()
    7.2.3copy-process()
    7.2.4内核线程
    7.3进程退出
    7.3.1do-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.1Linux2.4.的调度器
    8.2.2O(1)调度器
    8.2.3SD调度器
    8.2.4RSDL调度器
    8.2.5CFS调度器
    8.3O(1)调度器
    8.3.1运行队列
    8.3.2优先级数组
    8.3.3计算时间片
    8.3.4平均休眠时间
    8.3.5判断交互性
    8.3.6计算优先级
    8.3.7休眠和唤醒
    8.3.8schedule()
    8.3.9负载均衡
    8.3.1O软实时调度
    8.4.CF’S调度器
    8.4.1完全公平与进程的权重
    8.4.2模块化
    8.4.3调度实体
    8.4.4CFS运行队列
    8.4.5虚拟运行时间
    8.4.6CFS调度类
    8.4.7schedule
    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.2BUDDY页面管理
    9.2.3SLAB内存管理
    9.2.4.SLUB/SLOB内存管理
    9.2.5vmalloc内存分配
    9.2.6高端内存映射
    9.3进程地址空间
    9.3.1内存描述符
    9.3.2内存映射
    9.3.3多级页表结构
    9.3.4缺页错误处理
    9.4页面缓存
    9.4.1页面缓存管理
    9.4.2Swap内存交换
    9.4.3kswapd和pdflush
    9.5内存工具汇总
    9.5.1用proc接口查看内存信息
    9.5.2系统命令工具

    第10章文件系统
    10.1概述
    10.1.1文件
    10.1.2文件系统
    10.1.3虚拟文件系统
    10.2VFS的数据结构
    10.2.1超级块
    10.2.2索引节点
    10.2.3目录项
    10.2.4文件
    10.2.5与文件系统相关的数据结构
    10.2.6与进程相关的数据结构
    10.2.7路径查找辅助结构
    10.3VFS的缓存机制
    10.3.1索引节点缓存
    10.3.2目录项缓存
    10.3.3缓冲区缓存
    10.4文件系统的注册与安装
    10.4.1文件系统的注册
    10.4.2文件系统的安装
    10.4.3inotify的注册和安装
    10.5inotify机制
    10.5.1inotify数据结构
    10.5.2inotify矽钩子函数
    10.5.3inotify用户接口
    10.5.4应用示例
    10.5.5inotify玲工具

    第11章设备驱动
    11.1概述
    11.2模块机制与“Hello”World!
    11.3设备模型
    11.3.1设备模型的经济基础
    11.3.2设备模型的上层建筑
    11.3.3类(Class)与类设备(class_device)
    11.4sysfs文件系统
    11.4.1sysfs与/sys
    11.4.2sysfs目录项sysfs_dirent
    11.4.3sysfs目录和属性
    11.5spec、datasheet与内核源代码
    11.6USB子系统与IJSB驱动
    11.6.1USBB简史
    11.6.2USB协议基础
    11.6.3USB子系统与sysfs
    11.6.4内核中的USB
    11.6.5USB设备某础
    11.6.6USBurb
    11.6.7OTG简介
    11.6.8USB驱动程序

    第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.2printk()
    13.3获取内核信息
    13.3.1syslog和dmesg
    13.3.2/proc
    13.3.3/sys
    13.3.4ioctl
    13.4oops
    13.5调试工具
    13.5.1gdb
    13.5.2kgdb
    13.5.3kdb
    13.5.4kprobes
    13.5.5systemtap
    13.5.6kdump
    13.5.7硬件工具
    13.6“神奇”的SysRq
    13.7使用模拟器与虚拟机
  • 内容简介:
      《Linux内核修炼之道》重点介绍Linux内核工作原理以及学习方法。将Linux内核的修炼之道总结为四个层次:“全面了解抓基本,兴趣导向深钻研,融入社区做贡献,坚持坚持再坚持”。第一层次目的是对Linux以及内核有个全面的认识和了解,掌握Linux内核源代码的分析方法。第二个层次讨论了内核中系统初始化、系统调用、中断处理、进程管理及调度、内存管理、文件系统以及设备驱动等主要部分,目的是希望读者以兴趣为导向,寻找一个子系统或模块,对其代码深入钻研和分析。第三个层次介绍了内核开发与调试的一些基本信息,目的是希望读者能够融入到内核的开发社区,做出自己的贡献。第四个层次浓缩为两个字——坚持。
      《Linux内核修炼之道》语言通俗易懂,内容覆盖了内核的学习方法到内核设计与实现等各方面内容,能够带领读者快速走入Linux内核的世界,适合对Linux内核学习茫然的初学者,也适合各类希望深入理解Linux内核的读者。
  • 作者简介:
      任桥伟,华清远见资深讲师,6年嵌入式系统软硬件开发经验,资深研发工程师、项目经理、CSDN专家。熟悉嵌入式系统软硬件设计的全过程,多年来始终专注于嵌入式Linux内核研究和设备驱动的开发,精通嵌入式Linux操作系统,尤其擅长Linux系统内核及设备驱动开发。作为资深PM,曾指导完成多个大型嵌入式项目的软硬件设计,涉及通信、网络、控制等领域。著有《Linux内核修炼之道》、《Linux那些事》等备受网友关注的专业图书,目前致力于嵌入式Linux内核技术的普及推广和人才培养。
  • 目录:
    第1章初识Linux
    1.1Linux史记
    1.1.1Linux诞生记
    1.1.2泰坦尼克的狂潮
    1.1.3提前发生的革命
    1.1.4和平、爱情和Linux
    1.1.5Ubuntu4.10
    1.1.6RichardStallman的征婚启事
    1.1.7一封公开信
    1.1.8首款Android手机
    1.1.9Linux信用卡
    1.2内核的版本
    1.3获取内核源码
    1.4Linux发行版
    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.1SourceInsight
    3.4.2Vim+Cscope
    3.4.3LXR
    3.5内核代码的特点
    3.5.1GCC扩展
    3.5.2内嵌汇编
    3.6内核中的链表
    3.7Kconfig和Makefile
    3.7.1Kconfig结构
    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.1start_kernel函数
    4.2.2reset_init函数
    4.2.3kernel_init函数
    4.2.4init_post函数
    4.3init进程
    4.4内核选项解析
    4.4.1内核选项
    4.4.2注册内核选项
    4.4.3两次解析
    4.5子系统的初始化
    4.5.1do_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.1sys_dup
    5.3.2sys_reboot
    5.4系统调用的实现
    5.4.1如何实现一个新的系统调用
    5.4.2什么时候需要添加新的系统调用

    第6章中断与中断处理
    6.1概述
    6.1.1中断分类
    6.1.2PICvsAPIC
    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.2CPU的工作
    6.4.3内核对中断的处理
    6.4.4内核对异常的处理
    6.5中断API
    6.5.1注册和释放
    6.5.2激活和禁止
    6.5.3其他API函数
    6.6通用IRQ层
    6.6.1GenIRQ的起源及发展
    6.6.2GenlRQ的抽象层次
    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.1fork()、vfork()与clone()
    7.2.2do_fork()
    7.2.3copy-process()
    7.2.4内核线程
    7.3进程退出
    7.3.1do-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.1Linux2.4.的调度器
    8.2.2O(1)调度器
    8.2.3SD调度器
    8.2.4RSDL调度器
    8.2.5CFS调度器
    8.3O(1)调度器
    8.3.1运行队列
    8.3.2优先级数组
    8.3.3计算时间片
    8.3.4平均休眠时间
    8.3.5判断交互性
    8.3.6计算优先级
    8.3.7休眠和唤醒
    8.3.8schedule()
    8.3.9负载均衡
    8.3.1O软实时调度
    8.4.CF’S调度器
    8.4.1完全公平与进程的权重
    8.4.2模块化
    8.4.3调度实体
    8.4.4CFS运行队列
    8.4.5虚拟运行时间
    8.4.6CFS调度类
    8.4.7schedule
    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.2BUDDY页面管理
    9.2.3SLAB内存管理
    9.2.4.SLUB/SLOB内存管理
    9.2.5vmalloc内存分配
    9.2.6高端内存映射
    9.3进程地址空间
    9.3.1内存描述符
    9.3.2内存映射
    9.3.3多级页表结构
    9.3.4缺页错误处理
    9.4页面缓存
    9.4.1页面缓存管理
    9.4.2Swap内存交换
    9.4.3kswapd和pdflush
    9.5内存工具汇总
    9.5.1用proc接口查看内存信息
    9.5.2系统命令工具

    第10章文件系统
    10.1概述
    10.1.1文件
    10.1.2文件系统
    10.1.3虚拟文件系统
    10.2VFS的数据结构
    10.2.1超级块
    10.2.2索引节点
    10.2.3目录项
    10.2.4文件
    10.2.5与文件系统相关的数据结构
    10.2.6与进程相关的数据结构
    10.2.7路径查找辅助结构
    10.3VFS的缓存机制
    10.3.1索引节点缓存
    10.3.2目录项缓存
    10.3.3缓冲区缓存
    10.4文件系统的注册与安装
    10.4.1文件系统的注册
    10.4.2文件系统的安装
    10.4.3inotify的注册和安装
    10.5inotify机制
    10.5.1inotify数据结构
    10.5.2inotify矽钩子函数
    10.5.3inotify用户接口
    10.5.4应用示例
    10.5.5inotify玲工具

    第11章设备驱动
    11.1概述
    11.2模块机制与“Hello”World!
    11.3设备模型
    11.3.1设备模型的经济基础
    11.3.2设备模型的上层建筑
    11.3.3类(Class)与类设备(class_device)
    11.4sysfs文件系统
    11.4.1sysfs与/sys
    11.4.2sysfs目录项sysfs_dirent
    11.4.3sysfs目录和属性
    11.5spec、datasheet与内核源代码
    11.6USB子系统与IJSB驱动
    11.6.1USBB简史
    11.6.2USB协议基础
    11.6.3USB子系统与sysfs
    11.6.4内核中的USB
    11.6.5USB设备某础
    11.6.6USBurb
    11.6.7OTG简介
    11.6.8USB驱动程序

    第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.2printk()
    13.3获取内核信息
    13.3.1syslog和dmesg
    13.3.2/proc
    13.3.3/sys
    13.3.4ioctl
    13.4oops
    13.5调试工具
    13.5.1gdb
    13.5.2kgdb
    13.5.3kdb
    13.5.4kprobes
    13.5.5systemtap
    13.5.6kdump
    13.5.7硬件工具
    13.6“神奇”的SysRq
    13.7使用模拟器与虚拟机
查看详情
好书推荐 / 更多
Linux内核修炼之道
传统十论:本土社会的制度、文化与其变革
秦晖 著
Linux内核修炼之道
翁达杰作品系列:英国病人(精装)
[加]迈克尔·翁达杰 著;丁骏 译
Linux内核修炼之道
软件体的生命周期:特德·姜科幻小说集
[美]特德·姜
Linux内核修炼之道
汉唐文学与文献论考
陈尚君 著
Linux内核修炼之道
中国佛学源流略讲
吕澂 著
Linux内核修炼之道
明清稿抄校本鉴定
陈先行、石菲 著
Linux内核修炼之道
瓦檐下的旧器物
黄孝纪
Linux内核修炼之道
索恩丛书·自由的流亡者:永失美国与大英帝国的东山再起(套装全2册)
马娅·亚桑诺夫(Maya Jasanoff) 著;马睿 译
Linux内核修炼之道
维米尔
北寺 译 者;[英]路德维希·戈德沙伊德(Ludwig Goldscheider)
Linux内核修炼之道
做工的人
林立青 著;赖小路 摄影
Linux内核修炼之道
与绝迹之鸟的短暂邂逅
[美]本·方登 著
Linux内核修炼之道
[日]吉田修一 Yoshida Shuichi 著;岳远坤 译