深入分析Linux内核源代码
全店商品实物拍摄!标题不精确,以实物图为准!品相请书友自行鉴别!看好下单不退货!
¥
36.4
6.7折
¥
54
八五品
仅1件
作者陈莉君
出版社人民邮电出版社
出版时间2002-08
版次1
装帧平装
上书时间2023-12-27
商品详情
- 品相描述:八五品
- 商品描述
-
第一章 走进Linux 11.1 GNU与Linux的成长 11.2 Linux的开发模式和运作机制 21.3 走进Linux内核 41.3.1 Linux内核的特征 41.3.2 Linux内核版本的变化 51.4 分析Linux内核的意义 71.4.1 开发适合自己的操作系统 81.4.2 开发高水平软件 91.4.3 有助于计算机科学的教学和科研 91.5 Linux内核结构 91.5.1 Linux内核在整个操作系统中的位置 101.5.2 Linux内核的作用 111.5.3 Linux内核的抽象结构 111.6 Linux内核源代码 121.6.1 多版本的内核源代码 131.6.2 Linux内核源代码的结构 131.6.3 从何处开始阅读源代码 141.7 Linux内核源代码分析工具 161.7.1 Linux超文本交叉代码检索工具 161.7.2 Windows平台下的源代码阅读工具(Source Insight) 17第二章 Linux运行的硬件基础 192.1 i386的寄存器 192.1.1 通用寄存器 192.1.2 段寄存器 202.1.3 状态和控制寄存器 202.1.4 系统地址寄存器 232.1.5 调试寄存器和测试寄存器 242.2 内存地址 252.3 段机制和描述符 262.3.1 段机制 262.3.2 描述符的概念 272.3.3 系统段描述符 292.3.4 描述符表 302.3.5 选择符与描述符表寄存器 302.3.6 描述符投影寄存器 322.3.7 Linux中的段 322.4 分页机制 342.4.1 分页机构 362.4.2 页面高速缓存 392.5 Linux中的分页机制 402.5.1 与页相关的数据结构及宏的定义 412.5.2 对页目录及页表的处理 422.6 Linux中的汇编语言 442.6.1 AT&T与Intel汇编语言的比较 442.6.2 AT&T汇编语言的相关知识 462.6.3 gcc嵌入式汇编 492.6.4 Intel386汇编指令摘要 52第三章 中断机制 553.1 中断基本知识 553.1.1 中断向量 553.1.2 外设可屏蔽中断 563.1.3 异常及非屏蔽中断 573.1.4 中断描述符表 593.1.5 相关汇编指令 603.2 中断描述符表的初始化 613.2.1 外部中断向量的设置 613.2.2 中断描述符表IDT的预初始化 633.2.3 中断向量表的最终初始化 653.3 异常处理 683.3.1 在内核栈中保存寄存器的值 683.3.2 中断请求队列的初始化 703.3.3 中断请求队列的数据结构 703.4 中断处理 773.4.1 中断和异常处理的硬件处理。 773.4.2 Linux对中断的处理 783.4.3 与堆栈有关的常量、数据结构及宏 793.4.4 中断处理程序的执行 813.4.5 从中断返回 853.5 中断的后半部分处理机制 863.5.1 为什么把中断分为两部分来处理 863.5.2 实现机制 873.5.3 数据结构的定义 893.5.4 软中断、bh及tasklet的初始化 913.5.5 后半部分的执行 923.5.6 把bh移植到tasklet 96第四章 进程描述 974.1 进程和程序(Process and Program) 974.2 Linux中的进程概述 994.3 task_struct结构描述 1004.4 task_struct结构在内存中的存放 1074.4.1 进程内核栈 1074.4.2 当前进程(current宏) 1084.5 进程组织方式 1094.5.1 哈希表 1094.5.2 双向循环链表 1104.5.3 运行队列 1114.5.4 进程的运行队列链表 1114.5.5 等待队列 1124.6 内核线程 1154.7 进程的权能 1164.8 内核同步 1174.8.1 信号量 1184.8.2 原子操作 1184.8.3 自旋锁、读写自旋锁和大读者自旋锁 119第五章 进程调度与切换 1235.1 Linux时间系统 1235.1.1 时钟硬件 1235.1.2 时钟运作机制 1245.1.3 Linux时间基准 1255.1.4 Linux的时间系统 1265.2 时钟中断 1265.2.1 时钟中断的产生 1265.2.2 Linux实现时钟中断的全过程 1275.3 Linux的调度程序-Schedule( ) 1315.3.1 基本原理 1325.3.2 Linux进程调度时机 1335.3.3 进程调度的依据 1355.3.4 进程可运行程度的衡量 1365.3.5 进程调度的实现 1375.4 进程切换 1395.4.1 硬件支持 1395.4.2 进程切换 142第六章 Linux内存管理 1476.1 Linux的内存管理概述 1476.1.1 Linux虚拟内存的实现结构 1486.1.2 内核空间和用户空间 1496.1.3 虚拟内存实现机制间的关系 1516.2 Linux 内存管理的初始化 1526.2.1 启用分页机制 1526.2.2 物理内存的探测 1576.2.3 物理内存的描述 1636.2.4 页面管理机制的初步建立 1666.2.5 页表的建立 1736.2.6 内存管理区 1776.3 内存的分配和回收 1856.3.1 伙伴算法 1866.3.2 物理页面的分配和释放 1876.3.3 Slab分配机制 1946.3.4 内核空间非连续内存区的管理 2016.4 地址映射机制 2046.4.1 描述虚拟空间的数据结构 2056.4.2 进程的虚拟空间 2096.4.3 内存映射 2126.5 请页机制 2186.5.1 页故障的产生 2186.5.2 页错误的定位 2196.5.3 进程地址空间中的缺页异常处理 2206.5.4 请求调页 2216.5.5 写时复制 2236.5.6 对本节的几点说明 2256.6 交换机制 2256.6.1 交换的基本原理 2256.6.2 页面交换守护进程kswapd 2296.6.3 交换空间的数据结构 2336.6.4 交换空间的应用 2346.7 缓存和刷新机制 2366.7.1 Linux使用的缓存 2366.7.2 缓冲区高速缓存 2376.7.3 翻译后援存储器(TLB) 2406.7.4 刷新机制 2426.8 进程的创建和执行 2456.8.1 进程的创建 2456.8.2 程序执行 2526.8.3 执行函数 255第七章 进程间通信 2637.1 管道 2637.1.1 Linux管道的实现机制 2647.1.2 管道的应用 2657.1.3 命名管道CFIFOC 2677.2 信号(signal) 2677.2.1 信号种类 2687.2.2 信号掩码 2707.2.3 系统调用 2717.2.4 典型系统调用的实现 2727.2.5 进程与信号的关系 2747.2.6 信号举例 2757.3 System V 的IPC机制 2767.3.1 信号量 2767.3.2 消息队列 2827.3.3 共享内存 285第八章 虚拟文件系统 2898.1 概述 2898.2 VFS中的数据结构 2928.2.1 超级块 2928.2.2 VFS的索引节点 2958.2.3 目录项对象 2978.2.4 与进程相关的文件结构 2988.2.5 主要数据结构间的关系 3028.2.6 有关操作的数据结构 3028.3 高速缓存 3088.3.1 块高速缓存 3088.3.2 索引节点高速缓存 3128.3.3 目录高速缓存 3158.4 文件系统的注册、安装与卸载 3168.4.1 文件系统的注册 3168.4.2 文件系统的安装 3198.4.3 文件系统的卸载 3268.5 限额机制 3268.6 具体文件系统举例 3288.6.1 管道文件系统pipefs 3298.6.2 磁盘文件系统BFS 3328.7 文件系统的系统调用 3338.7.1 open 系统调用 3338.7.2 read系统调用 3358.7.3 fcntl 系统调用 3368.8 Linux 2.4文件系统的移植问题 337第九章 Ext2文件系统 3439.1 基本概念 3439.2 Ext2的磁盘布局和数据结构 3459.2.1 Ext2的磁盘布局 3459.2.2 Ext2的超级块 3469.2.3 Ext2的索引节点 3499.2.4 组描述符 3529.2.5 位图 3539.2.6 索引节点表及实例分析 3539.2.7 Ext2的目录项及文件的定位 3589.3 文件的访问权限和安全 3619.4 链接文件 3639.5 分配策略 3669.5.1 数据块寻址 3679.5.2 文件的洞 3689.5.3 分配一个数据块 369第十章 模块机制 37310.1 概述 37310.1.1 什么是模块 37310.1.2 为什么要使用模块? 37410.1.3 Linux 内核模块的优缺点 37410.2 实现机制 37510.2.1 数据结构 37510.2.2 实现机制的分析 37910.3 模块的装入和卸载 38510.3.1 实现机制 38510.3.2 如何插入和卸载模块 38610.4 内核版本 38710.4.1 内核版本与模块版本的兼容性 38710.4.2 从版本2.0到2.2内核API的变化 38810.4.3 把内核2.2移植到内核2.4 39210.5 编写内核模块 40010.5.1 简单内核模块的编写 40110.5.2 内核模块的Makefiles文件 40110.5.3 内核模块的多个文件 402第十一章 设备驱动程序 40511.1 概述 40511.1.1 I/O软件 40511.1.2 设备驱动程序 40711.2 设备驱动基础 40911.2.1 I/O端口 40911.2.2 I/O接口及设备控制器 41011.2.3 设备文件 41111.2.4 VFS对设备文件的处理 41311.2.5 中断处理 41311.2.6 驱动DMA工作 41611.2.7 I/O空间的映射 41711.2.8 设备驱动程序框架 41911.3 块设备驱动程序 42011.3.1 块设备驱动程序的注册 42011.3.2 块设备基于缓冲区的数据交换 42211.3.3 块设备驱动程序的几个函数 42811.3.4 RAM 盘驱动程序的实现 43211.3.5 硬盘驱动程序的实现 43311.4 字符设备驱动程序 43711.4.1 简单字符设备驱动程序 43711.4.2 字符设备驱动程序的注册 43811.4.3 一个字符设备驱动程序的实例 44011.4.4 驱动程序的编译与装载 445第十二章 网络 44712.1 概述 44712.2 网络协议 44812.2.1 网络参考模型 44812.2.2 TCP/IP 协议工作原理及数据流 44912.2.3 Internet 协议 44912.2.4 TCP协议 45012.3 套接字(socket) 45212.3.1 套接字在网络中的地位和作用 45212.3.2 套接字接口的种类 45312.3.3 套接字的工作原理 45412.3.4 socket 的通信过程 45612.3.5 socket为用户提供的系统调用 46012.4 套接字缓冲区(sk_buff) 46112.4.1 套接字缓冲区的特点 46112.4.2 套接字缓冲区操作基本原理 46112.4.3 sk_buff数据结构的核心内容 46312.4.4 &
图书标准信息
-
作者
陈莉君
-
出版社
人民邮电出版社
-
出版时间
2002-08
-
版次
1
-
ISBN
9787115105257
-
定价
54.00元
-
装帧
平装
-
开本
其他
-
纸张
胶版纸
-
页数
531页
- 【内容简介】
-
自由软件Linux 操作系统源代码的开放,为我们掌握操作系统核心技术提供了良好的条件。本书共分13章,对Linux 内核2.4版的源代码进行了较全面的分析,既包括对中断机制、进程调度、内存管理、进程间通信、虚拟文件系统、设备驱动程序及网络子系统的分析,也包括对Linux 整体结构的把握、Linux的启动过程的分析及Linux独具特色的模块机制的分析与应用等。其中重点剖析了Linux内核中最基础的部分:进程管理、内存管理及文件管理。本书对于那些准备进入Linux 操作系统内部,阅读Linux 内核源代码以及在内核级进行程序开发的读者具有非常高的参考价值。同时,操作系统实现者、系统程序员、Linux应用开发人员、嵌入式系统开发人员、系统管理员、在校的大学生和研究生及对Linux感兴趣的用户均可在阅读本书中受益。
- 【目录】
-
第一章 走进Linux 11.1 GNU与Linux的成长 11.2 Linux的开发模式和运作机制 21.3 走进Linux内核 41.3.1 Linux内核的特征 41.3.2 Linux内核版本的变化 51.4 分析Linux内核的意义 71.4.1 开发适合自己的操作系统 81.4.2 开发高水平软件 91.4.3 有助于计算机科学的教学和科研 91.5 Linux内核结构 91.5.1 Linux内核在整个操作系统中的位置 101.5.2 Linux内核的作用 111.5.3 Linux内核的抽象结构 111.6 Linux内核源代码 121.6.1 多版本的内核源代码 131.6.2 Linux内核源代码的结构 131.6.3 从何处开始阅读源代码 141.7 Linux内核源代码分析工具 161.7.1 Linux超文本交叉代码检索工具 161.7.2 Windows平台下的源代码阅读工具(Source Insight) 17第二章 Linux运行的硬件基础 192.1 i386的寄存器 192.1.1 通用寄存器 192.1.2 段寄存器 202.1.3 状态和控制寄存器 202.1.4 系统地址寄存器 232.1.5 调试寄存器和测试寄存器 242.2 内存地址 252.3 段机制和描述符 262.3.1 段机制 262.3.2 描述符的概念 272.3.3 系统段描述符 292.3.4 描述符表 302.3.5 选择符与描述符表寄存器 302.3.6 描述符投影寄存器 322.3.7 Linux中的段 322.4 分页机制 342.4.1 分页机构 362.4.2 页面高速缓存 392.5 Linux中的分页机制 402.5.1 与页相关的数据结构及宏的定义 412.5.2 对页目录及页表的处理 422.6 Linux中的汇编语言 442.6.1 AT&T与Intel汇编语言的比较 442.6.2 AT&T汇编语言的相关知识 462.6.3 gcc嵌入式汇编 492.6.4 Intel386汇编指令摘要 52第三章 中断机制 553.1 中断基本知识 553.1.1 中断向量 553.1.2 外设可屏蔽中断 563.1.3 异常及非屏蔽中断 573.1.4 中断描述符表 593.1.5 相关汇编指令 603.2 中断描述符表的初始化 613.2.1 外部中断向量的设置 613.2.2 中断描述符表IDT的预初始化 633.2.3 中断向量表的最终初始化 653.3 异常处理 683.3.1 在内核栈中保存寄存器的值 683.3.2 中断请求队列的初始化 703.3.3 中断请求队列的数据结构 703.4 中断处理 773.4.1 中断和异常处理的硬件处理。 773.4.2 Linux对中断的处理 783.4.3 与堆栈有关的常量、数据结构及宏 793.4.4 中断处理程序的执行 813.4.5 从中断返回 853.5 中断的后半部分处理机制 863.5.1 为什么把中断分为两部分来处理 863.5.2 实现机制 873.5.3 数据结构的定义 893.5.4 软中断、bh及tasklet的初始化 913.5.5 后半部分的执行 923.5.6 把bh移植到tasklet 96第四章 进程描述 974.1 进程和程序(Process and Program) 974.2 Linux中的进程概述 994.3 task_struct结构描述 1004.4 task_struct结构在内存中的存放 1074.4.1 进程内核栈 1074.4.2 当前进程(current宏) 1084.5 进程组织方式 1094.5.1 哈希表 1094.5.2 双向循环链表 1104.5.3 运行队列 1114.5.4 进程的运行队列链表 1114.5.5 等待队列 1124.6 内核线程 1154.7 进程的权能 1164.8 内核同步 1174.8.1 信号量 1184.8.2 原子操作 1184.8.3 自旋锁、读写自旋锁和大读者自旋锁 119第五章 进程调度与切换 1235.1 Linux时间系统 1235.1.1 时钟硬件 1235.1.2 时钟运作机制 1245.1.3 Linux时间基准 1255.1.4 Linux的时间系统 1265.2 时钟中断 1265.2.1 时钟中断的产生 1265.2.2 Linux实现时钟中断的全过程 1275.3 Linux的调度程序-Schedule( ) 1315.3.1 基本原理 1325.3.2 Linux进程调度时机 1335.3.3 进程调度的依据 1355.3.4 进程可运行程度的衡量 1365.3.5 进程调度的实现 1375.4 进程切换 1395.4.1 硬件支持 1395.4.2 进程切换 142第六章 Linux内存管理 1476.1 Linux的内存管理概述 1476.1.1 Linux虚拟内存的实现结构 1486.1.2 内核空间和用户空间 1496.1.3 虚拟内存实现机制间的关系 1516.2 Linux 内存管理的初始化 1526.2.1 启用分页机制 1526.2.2 物理内存的探测 1576.2.3 物理内存的描述 1636.2.4 页面管理机制的初步建立 1666.2.5 页表的建立 1736.2.6 内存管理区 1776.3 内存的分配和回收 1856.3.1 伙伴算法 1866.3.2 物理页面的分配和释放 1876.3.3 Slab分配机制 1946.3.4 内核空间非连续内存区的管理 2016.4 地址映射机制 2046.4.1 描述虚拟空间的数据结构 2056.4.2 进程的虚拟空间 2096.4.3 内存映射 2126.5 请页机制 2186.5.1 页故障的产生 2186.5.2 页错误的定位 2196.5.3 进程地址空间中的缺页异常处理 2206.5.4 请求调页 2216.5.5 写时复制 2236.5.6 对本节的几点说明 2256.6 交换机制 2256.6.1 交换的基本原理 2256.6.2 页面交换守护进程kswapd 2296.6.3 交换空间的数据结构 2336.6.4 交换空间的应用 2346.7 缓存和刷新机制 2366.7.1 Linux使用的缓存 2366.7.2 缓冲区高速缓存 2376.7.3 翻译后援存储器(TLB) 2406.7.4 刷新机制 2426.8 进程的创建和执行 2456.8.1 进程的创建 2456.8.2 程序执行 2526.8.3 执行函数 255第七章 进程间通信 2637.1 管道 2637.1.1 Linux管道的实现机制 2647.1.2 管道的应用 2657.1.3 命名管道CFIFOC 2677.2 信号(signal) 2677.2.1 信号种类 2687.2.2 信号掩码 2707.2.3 系统调用 2717.2.4 典型系统调用的实现 2727.2.5 进程与信号的关系 2747.2.6 信号举例 2757.3 System V 的IPC机制 2767.3.1 信号量 2767.3.2 消息队列 2827.3.3 共享内存 285第八章 虚拟文件系统 2898.1 概述 2898.2 VFS中的数据结构 2928.2.1 超级块 2928.2.2 VFS的索引节点 2958.2.3 目录项对象 2978.2.4 与进程相关的文件结构 2988.2.5 主要数据结构间的关系 3028.2.6 有关操作的数据结构 3028.3 高速缓存 3088.3.1 块高速缓存 3088.3.2 索引节点高速缓存 3128.3.3 目录高速缓存 3158.4 文件系统的注册、安装与卸载 3168.4.1 文件系统的注册 3168.4.2 文件系统的安装 3198.4.3 文件系统的卸载 3268.5 限额机制 3268.6 具体文件系统举例 3288.6.1 管道文件系统pipefs 3298.6.2 磁盘文件系统BFS 3328.7 文件系统的系统调用 3338.7.1 open 系统调用 3338.7.2 read系统调用 3358.7.3 fcntl 系统调用 3368.8 Linux 2.4文件系统的移植问题 337第九章 Ext2文件系统 3439.1 基本概念 3439.2 Ext2的磁盘布局和数据结构 3459.2.1 Ext2的磁盘布局 3459.2.2 Ext2的超级块 3469.2.3 Ext2的索引节点 3499.2.4 组描述符 3529.2.5 位图 3539.2.6 索引节点表及实例分析 3539.2.7 Ext2的目录项及文件的定位 3589.3 文件的访问权限和安全 3619.4 链接文件 3639.5 分配策略 3669.5.1 数据块寻址 3679.5.2 文件的洞 3689.5.3 分配一个数据块 369第十章 模块机制 37310.1 概述 37310.1.1 什么是模块 37310.1.2 为什么要使用模块? 37410.1.3 Linux 内核模块的优缺点 37410.2 实现机制 37510.2.1 数据结构 37510.2.2 实现机制的分析 37910.3 模块的装入和卸载 38510.3.1 实现机制 38510.3.2 如何插入和卸载模块 38610.4 内核版本 38710.4.1 内核版本与模块版本的兼容性 38710.4.2 从版本2.0到2.2内核API的变化 38810.4.3 把内核2.2移植到内核2.4 39210.5 编写内核模块 40010.5.1 简单内核模块的编写 40110.5.2 内核模块的Makefiles文件 40110.5.3 内核模块的多个文件 402第十一章 设备驱动程序 40511.1 概述 40511.1.1 I/O软件 40511.1.2 设备驱动程序 40711.2 设备驱动基础 40911.2.1 I/O端口 40911.2.2 I/O接口及设备控制器 41011.2.3 设备文件 41111.2.4 VFS对设备文件的处理 41311.2.5 中断处理 41311.2.6 驱动DMA工作 41611.2.7 I/O空间的映射 41711.2.8 设备驱动程序框架 41911.3 块设备驱动程序 42011.3.1 块设备驱动程序的注册 42011.3.2 块设备基于缓冲区的数据交换 42211.3.3 块设备驱动程序的几个函数 42811.3.4 RAM 盘驱动程序的实现 43211.3.5 硬盘驱动程序的实现 43311.4 字符设备驱动程序 43711.4.1 简单字符设备驱动程序 43711.4.2 字符设备驱动程序的注册 43811.4.3 一个字符设备驱动程序的实例 44011.4.4 驱动程序的编译与装载 445第十二章 网络 44712.1 概述 44712.2 网络协议 44812.2.1 网络参考模型 44812.2.2 TCP/IP 协议工作原理及数据流 44912.2.3 Internet 协议 44912.2.4 TCP协议 45012.3 套接字(socket) 45212.3.1 套接字在网络中的地位和作用 45212.3.2 套接字接口的种类 45312.3.3 套接字的工作原理 45412.3.4 socket 的通信过程 45612.3.5 socket为用户提供的系统调用 46012.4 套接字缓冲区(sk_buff) 46112.4.1 套接字缓冲区的特点 46112.4.2 套接字缓冲区操作基本原理 46112.4.3 sk_buff数据结构的核心内容 46312.4.4 套接字缓冲区提供的函数 46512.4.5 套接字缓冲区的上层支持例程 46712.5 网络设备接口 46812.5.1 基本结构 46812.5.2 命名规则 46912.5.3 设备注册 46912.5.4 网络设备数据结构 47012.5.5 支持函数 473第十三章 Linux启动系统 47713.1 初始化流程 47713.1.1 系统加电或复位 47813.1.2 BIOS启动 47813.1.3 Boot Loader 47913.1.4 操作系统的初始化 47913.2 初始化的任务 47913.2.1 处理器对初始化的影响 47913.2.2 其他硬件设备对处理器的影响 48013.3 Linux的Boot Loader 48013.3.1 软盘的结构 48013.3.2 硬盘的结构 48113.3.3 Boot Loader 48113.3.4 LILO 48213.3.5 LILO的运行分析 48513.4 进入操作系统 48713.4.1 Setup.S 48713.4.2 Head.S 48813.5 main.c中的初始化 49113.6 建立init进程 49513.6.1 init进程的建立 49513.6.2 启动所需的Shell脚本文件 497附录A Linux内核API 501附录B 在线文档 529参考文献 531
点击展开
点击收起
— 没有更多了 —
以下为对购买帮助不大的评价