书籍详情
Linux内核2.4版源代码分析大全
作者:李善平[等]编著
出版社:机械工业出版社
出版时间:2002-01-01
ISBN:9787111093442
定价:¥79.00
内容简介
本书对Linux 2.4内核源代码进行了详细的介绍,它有效地解决了Linux操作系统长期以来“抽象”的现象,将Linux操作系统的概念、算法、原理等与实际操作统一起来。书中源代码与注释相对应,是大专院校师生与Linux操作系统管理人员及编程人员不可缺少的参考书。
作者简介
暂缺《Linux内核2.4版源代码分析大全》作者简介
目录
第1章 Linux进程管理
1.1 进程和进程控制块
1.1.1 调度数据成员
1.1.2 信号处理
1.1.3 进程队列指针
1.1.4 进程标识
1.1.5 时间数据成员
1.1.6 信号量数据成员
1.1.7 文件系统数据成员
1.1.8 内存数据成员
1.1.9 页面管理
1.1.10 支持对称多处理器方式时的数据成员
1.1.11 其他数据成员
1.1.12 进程队列的全局变量
1.2 进程状态和进程标志
1.3 list_head链表
1.4 进程调度
1.5 等待队列及其操作
1.6 中断与定时服务
1.6.1 中断机制
1.6.2 定时服务
1.7 bottom half
1.8 tasklet与softirq
1.9 任务队列
1.10 原于操作
1.11 自旋锁
1.12 信号量
1.13 系统调用
1.13.1 与系统调用有关的数据结构和函数
1.13.2 进程的系统调用命令是如何转换为INT0x80中断请求的
1.13.3 系统调用功能模块的初始化
1.13.4 Linux内部是如何分别为各种系统调用服务的
1.13.5 ret_from_sys_call
1.14 进程的创建和终止
1.15 程序的装入和执行
第2章 Linux存储管理
2.1 I386体系结构对存储管理的硬件支持
2.1.1 80386分段机制及在Linux中的应用
2.1.2 80386分页机制
2.2 Linux的分页管理
2.3 虚存段的组织和管理
2.3.1 建立映射
2.3.2 撤销映射
2.3.3 修改映射
2.4 内存的加钡和保护
2.4.1 内存加锁
2.4.2 内存保护
2.5 Linux的AVL树
2.6 物理空间管理
2.7 空闲物理内存管理
2.7.1 申请分配物理页面的操作
2.7.2 释放物理页面的操作
2.8 slab
2.8.1 缓存区的创建与销毁操作
2.8.2 缓存区的收缩与增长操作
2.8.3 对象的分配与释放操作
2.9 内核态内存的申请与释放kmalloc/kfree
2.9.1 内核态内存的申请
2.9.2 内核态内存的释放
2.10 用户态内存的申请与释放vmalloc/vfree
2.10.1 用户态内存的申请
2.10.2 用户态内存的释放
2.11 交换空间
2.12 页交换进程和页面换出
2.13 缺页中断和页面换人
2.14 存储管理系统的缓冲机制
2.14.1 Swap缓冲
2.14.2 页缓冲
第3章 Linux文件系统管理
3.1 文件系统管理
3.1.1 register/unregister操作
3.1.2 mount操作
3.2 虚拟文件系统
3.2.1 VFS超级块
3.2.2 超级块的操作函数
3.2.3 read_super操作
3.2.4 VFSinode
3.2.5 inode的操作函数
3.2.6 VFSinode缓存
3.2.7 iget/iput操作
3.3 路径定位
3.3.1 定位操作
3.3.2 VFSdirectory缓存
3.4 打开文件表
3.4.1 系统打开文件表
3.4.2 进程打开文件表
3.4.3 操作已打开的文件
3.5 文件共享与文件锁
3.6 EXT2文件系统
3.6.1 EXT2的超级块
3.6.2 EXT2的组描述符
3.6.3 EXT2的inode
3.6.4 文件扩展时的数据块分配策略
3.7 open操作和close操作
3.8 缓冲区缓存
3.8.1 缓冲区相关数据结构
3.8.2 缓冲区操作函数
3.8.3 寻找缓冲区
第4章 Linux设备管理
4.1 概述
4.1.1 设备管理概述
4.1.2 与外设的数据交流方式
4.1.3 字符设备与块设备
4.1.4 主设备号和次设备号
4.1.5 本章内容分配
4.2 设备文件
4.2.1 基本设备文件的设备访问流程
4.2.2 设备驱动程序接口
4.2.3 块设备文件接口
4.2.4 def_blk_fops中的函数分析
4.3 传统方式下的设备注册与管理
4.3.1 字符设备管理
4.3.2 块设备管理的相关结构与变量
4.3.3 blkdevs[]的设置
4.3.4 blk_dev[]的设置
4.4 devfs注册与管理
4.4.1 设备文件系统的基本概念
4.4.2 采用devfs的原因
4.4.3 启用设备文件系统
4.4.4 如何使传统管理方式依然有效
4.4.5 内核实现综述
4.4.6 核心结构与变量
4.4.7 devfs节点注册函数
4.4.8 编写采用devfs的设备驱动程序
4,5 块设备的请求队列
4.5.1 相关结构及请求队列的初始化
4.5.2 block_read()提交请求的过程
4.5.3 ll_rw_block()函数分析
4.5.4 submit_bh()与generic_make_re-quest()
4.5.5 _make_request()函数分析
4.6 ioctl
4.6.1 构造ioctl命令字
4.6.2 ioctl的实现过程
4.6.3 ioctl的上层处理函数
4.6.4 ioctl的底层处理函数
4.7 I/O端口的资源分配与操作
4.7.1 I/O端口概述
4.7.2 Linux系统中的I/O空间分配
4.7.3 端口操作函数
4.8 其他辅助管理功能
4.8.1 中断处理
4.8.2 电源管理
4.8.3 缓冲区管理
4.9 字符设备驱动程序的实现
4.9.1 分析设备功能
4.9.2 编写file_operations结构中的操控函数
4.9.3 字符设备注册及初始化
4.9.4 设备的使用
4.9.5 驱动程序编写实例
4.10 块设备驱动程序的实现
4.10.1 设备功能
4.10.2 编写块设备的函数接口fops
4.10.3 设备接口注册与初始化
第5章 Linux系统初始化
5.1 系统引导
5.2 其他引导方法
5.3 实模式下的系统初始化
5.4 保护模式下的系统初始化
5.4.1 初始化寄存器与数据区
5.4.2 核心代码解压缩
5.4.3 页表初始化
5.4.4 初始化idt、gdt和ldt
5.4.5 启动核心
5.5 启动核心(init/main.c)
5.6 init进程及系统配置(init/main.c)
5.6.1 init进程的执行流程
5.6.2 可执行文件init
5.7 Linux源程序的目录分布
5.7.1 kernel目录
5.7.2 mm目录
5.7.3 fs目录
5.7.4 arch目录
5.7.5 include目录
5.7.6 net目录
第6章 Linux网络实现
6.1 概述
6.2 基本数据结构
6.2.1 数据包结构
6.2.2 连接
6.2.3 协议操作集合
6.2.4 网络设备接口数据结构
6.2.5 路由
6.2.6 地址结构
6.3 网络系统初始化
6.3.1 整个网络系统启动
6.3.2 协议初始化
6.3.3 路由初始化
6.3.4 网络接口设备初始化
6.4 网络设备驱动程序
6.4.1 网络设备接口初始化函数
6.4.2 设备打开和关闭
6.4.3 接收数据分析
6.4.4 发送数据分析
6.5 网络连接
6.5.1 连接的建立和关闭
6.5.2 数据发送
6.5.3 数据接收
6.6 路由过程
6.6.1 发送路由
6.6.2 接收路由
第7章 Linux的模块
7.1 模块编程
7.1.1 模块编程基本接口
7.1.2 内核空间和用户空间
7.1.3 内核符号表
7.1.4 模块的使用
7.2 模块机制内核分析
7.2.1 数据结构
7.2.2 模块实现分析
7.3 模块和/proc文件系统
7.3.1 初始化
7.3.2 支持函数
7.4 modutils介绍
7.4.1 insmod
7.4.2 rmmod
7.4.3 lsmod
7.4.4 modprlbe
7.5 kmod
7.5.1 从kerneld到Kmod
7.5.2 kmod的实现
第8章 Linux内核源代码的调试
8.1 调试机制
8.1.1 断点
8.1.2 信号
8.1.3 单步运行
8.1.4 系统调用的调试
8.1.5 暂时中断后的继续处理
8.2 i386提供的调试机制
8.2.1 调试断点的分类
8.2.2 调试寄存器的结构
8.2.3 断点地址
8.2.4 Linux调试处理
8.3 ptrace()系统调用
8.3.1 数据结构
8.3.2 用户空间ptrace()系统调用的使用
8.3.3 ptrace调用分析
8.3.4 ptrace()调用机制及流程
8.4 /proc文件系统
8.4.1 /proc文件系统在调试中的作用
8.4.2 /proc文件系统实现分析
8.5 内核参数动态更改
8.5.1 数据结构
8.5.2 /proc/sys方式
8.5.3 sysctl系统调用方式
8.6 内核调试环境
8.6.1 内核调试的手段
8.6.2 远程方式在内核调试中的地位
8.6.3 Kgdb的使用
8.6.4 Kgdb的实现分析
1.1 进程和进程控制块
1.1.1 调度数据成员
1.1.2 信号处理
1.1.3 进程队列指针
1.1.4 进程标识
1.1.5 时间数据成员
1.1.6 信号量数据成员
1.1.7 文件系统数据成员
1.1.8 内存数据成员
1.1.9 页面管理
1.1.10 支持对称多处理器方式时的数据成员
1.1.11 其他数据成员
1.1.12 进程队列的全局变量
1.2 进程状态和进程标志
1.3 list_head链表
1.4 进程调度
1.5 等待队列及其操作
1.6 中断与定时服务
1.6.1 中断机制
1.6.2 定时服务
1.7 bottom half
1.8 tasklet与softirq
1.9 任务队列
1.10 原于操作
1.11 自旋锁
1.12 信号量
1.13 系统调用
1.13.1 与系统调用有关的数据结构和函数
1.13.2 进程的系统调用命令是如何转换为INT0x80中断请求的
1.13.3 系统调用功能模块的初始化
1.13.4 Linux内部是如何分别为各种系统调用服务的
1.13.5 ret_from_sys_call
1.14 进程的创建和终止
1.15 程序的装入和执行
第2章 Linux存储管理
2.1 I386体系结构对存储管理的硬件支持
2.1.1 80386分段机制及在Linux中的应用
2.1.2 80386分页机制
2.2 Linux的分页管理
2.3 虚存段的组织和管理
2.3.1 建立映射
2.3.2 撤销映射
2.3.3 修改映射
2.4 内存的加钡和保护
2.4.1 内存加锁
2.4.2 内存保护
2.5 Linux的AVL树
2.6 物理空间管理
2.7 空闲物理内存管理
2.7.1 申请分配物理页面的操作
2.7.2 释放物理页面的操作
2.8 slab
2.8.1 缓存区的创建与销毁操作
2.8.2 缓存区的收缩与增长操作
2.8.3 对象的分配与释放操作
2.9 内核态内存的申请与释放kmalloc/kfree
2.9.1 内核态内存的申请
2.9.2 内核态内存的释放
2.10 用户态内存的申请与释放vmalloc/vfree
2.10.1 用户态内存的申请
2.10.2 用户态内存的释放
2.11 交换空间
2.12 页交换进程和页面换出
2.13 缺页中断和页面换人
2.14 存储管理系统的缓冲机制
2.14.1 Swap缓冲
2.14.2 页缓冲
第3章 Linux文件系统管理
3.1 文件系统管理
3.1.1 register/unregister操作
3.1.2 mount操作
3.2 虚拟文件系统
3.2.1 VFS超级块
3.2.2 超级块的操作函数
3.2.3 read_super操作
3.2.4 VFSinode
3.2.5 inode的操作函数
3.2.6 VFSinode缓存
3.2.7 iget/iput操作
3.3 路径定位
3.3.1 定位操作
3.3.2 VFSdirectory缓存
3.4 打开文件表
3.4.1 系统打开文件表
3.4.2 进程打开文件表
3.4.3 操作已打开的文件
3.5 文件共享与文件锁
3.6 EXT2文件系统
3.6.1 EXT2的超级块
3.6.2 EXT2的组描述符
3.6.3 EXT2的inode
3.6.4 文件扩展时的数据块分配策略
3.7 open操作和close操作
3.8 缓冲区缓存
3.8.1 缓冲区相关数据结构
3.8.2 缓冲区操作函数
3.8.3 寻找缓冲区
第4章 Linux设备管理
4.1 概述
4.1.1 设备管理概述
4.1.2 与外设的数据交流方式
4.1.3 字符设备与块设备
4.1.4 主设备号和次设备号
4.1.5 本章内容分配
4.2 设备文件
4.2.1 基本设备文件的设备访问流程
4.2.2 设备驱动程序接口
4.2.3 块设备文件接口
4.2.4 def_blk_fops中的函数分析
4.3 传统方式下的设备注册与管理
4.3.1 字符设备管理
4.3.2 块设备管理的相关结构与变量
4.3.3 blkdevs[]的设置
4.3.4 blk_dev[]的设置
4.4 devfs注册与管理
4.4.1 设备文件系统的基本概念
4.4.2 采用devfs的原因
4.4.3 启用设备文件系统
4.4.4 如何使传统管理方式依然有效
4.4.5 内核实现综述
4.4.6 核心结构与变量
4.4.7 devfs节点注册函数
4.4.8 编写采用devfs的设备驱动程序
4,5 块设备的请求队列
4.5.1 相关结构及请求队列的初始化
4.5.2 block_read()提交请求的过程
4.5.3 ll_rw_block()函数分析
4.5.4 submit_bh()与generic_make_re-quest()
4.5.5 _make_request()函数分析
4.6 ioctl
4.6.1 构造ioctl命令字
4.6.2 ioctl的实现过程
4.6.3 ioctl的上层处理函数
4.6.4 ioctl的底层处理函数
4.7 I/O端口的资源分配与操作
4.7.1 I/O端口概述
4.7.2 Linux系统中的I/O空间分配
4.7.3 端口操作函数
4.8 其他辅助管理功能
4.8.1 中断处理
4.8.2 电源管理
4.8.3 缓冲区管理
4.9 字符设备驱动程序的实现
4.9.1 分析设备功能
4.9.2 编写file_operations结构中的操控函数
4.9.3 字符设备注册及初始化
4.9.4 设备的使用
4.9.5 驱动程序编写实例
4.10 块设备驱动程序的实现
4.10.1 设备功能
4.10.2 编写块设备的函数接口fops
4.10.3 设备接口注册与初始化
第5章 Linux系统初始化
5.1 系统引导
5.2 其他引导方法
5.3 实模式下的系统初始化
5.4 保护模式下的系统初始化
5.4.1 初始化寄存器与数据区
5.4.2 核心代码解压缩
5.4.3 页表初始化
5.4.4 初始化idt、gdt和ldt
5.4.5 启动核心
5.5 启动核心(init/main.c)
5.6 init进程及系统配置(init/main.c)
5.6.1 init进程的执行流程
5.6.2 可执行文件init
5.7 Linux源程序的目录分布
5.7.1 kernel目录
5.7.2 mm目录
5.7.3 fs目录
5.7.4 arch目录
5.7.5 include目录
5.7.6 net目录
第6章 Linux网络实现
6.1 概述
6.2 基本数据结构
6.2.1 数据包结构
6.2.2 连接
6.2.3 协议操作集合
6.2.4 网络设备接口数据结构
6.2.5 路由
6.2.6 地址结构
6.3 网络系统初始化
6.3.1 整个网络系统启动
6.3.2 协议初始化
6.3.3 路由初始化
6.3.4 网络接口设备初始化
6.4 网络设备驱动程序
6.4.1 网络设备接口初始化函数
6.4.2 设备打开和关闭
6.4.3 接收数据分析
6.4.4 发送数据分析
6.5 网络连接
6.5.1 连接的建立和关闭
6.5.2 数据发送
6.5.3 数据接收
6.6 路由过程
6.6.1 发送路由
6.6.2 接收路由
第7章 Linux的模块
7.1 模块编程
7.1.1 模块编程基本接口
7.1.2 内核空间和用户空间
7.1.3 内核符号表
7.1.4 模块的使用
7.2 模块机制内核分析
7.2.1 数据结构
7.2.2 模块实现分析
7.3 模块和/proc文件系统
7.3.1 初始化
7.3.2 支持函数
7.4 modutils介绍
7.4.1 insmod
7.4.2 rmmod
7.4.3 lsmod
7.4.4 modprlbe
7.5 kmod
7.5.1 从kerneld到Kmod
7.5.2 kmod的实现
第8章 Linux内核源代码的调试
8.1 调试机制
8.1.1 断点
8.1.2 信号
8.1.3 单步运行
8.1.4 系统调用的调试
8.1.5 暂时中断后的继续处理
8.2 i386提供的调试机制
8.2.1 调试断点的分类
8.2.2 调试寄存器的结构
8.2.3 断点地址
8.2.4 Linux调试处理
8.3 ptrace()系统调用
8.3.1 数据结构
8.3.2 用户空间ptrace()系统调用的使用
8.3.3 ptrace调用分析
8.3.4 ptrace()调用机制及流程
8.4 /proc文件系统
8.4.1 /proc文件系统在调试中的作用
8.4.2 /proc文件系统实现分析
8.5 内核参数动态更改
8.5.1 数据结构
8.5.2 /proc/sys方式
8.5.3 sysctl系统调用方式
8.6 内核调试环境
8.6.1 内核调试的手段
8.6.2 远程方式在内核调试中的地位
8.6.3 Kgdb的使用
8.6.4 Kgdb的实现分析
猜您喜欢