当前位置:首页 > 工业技术
Linux操作系统分析教程
Linux操作系统分析教程

Linux操作系统分析教程PDF电子书下载

工业技术

  • 电子书积分:12 积分如何计算积分?
  • 作 者:骆耀祖主编
  • 出 版 社:清华大学出版社;北京交通大学出版社
  • 出版年份:2004
  • ISBN:7810822411
  • 页数:309 页
图书介绍:本书是以Linux作为实例的操作系统分析教程。本书对Linux内核2.4版的源代码进行了较全面的分析,既包括对中断机制、进程调度、内存管理、进程间通信、虚拟文件系统、设备驱动程序及网络子系统的分析,也包括对Linux整体结构的把握、Linux的启动过程的分析及Linux独具特色的模块机制的分析与应用等。其中,重点剖析了Linux内核中最基础的部分:进程管理、内存管理及文件管理。本书可以作为高校计算机、电子工程和自动控制等相关学科的高年级本科学生“操作系统分析”、“操作系统设计与实现”或“嵌欠式系统设计”等课程的教材,也可作为系统程序员、Linux应用开发及嵌入式系统开发人员、系统管理员及对Linux感兴趣的用户的参考书。本书对于那些准备进入Linux操作系统内部,阅读Linux内核源代码及在内核进行程序开发的读者具有非常高的参考价值。
《Linux操作系统分析教程》目录

目录 1

第1章 Linux系统概述 1

1.1 Linux的特征及组成 1

1.1.1 Linux的主要特性 1

1.1.2 Linux的组成 3

1.2 Linux内核的主要组成部分 6

1.2.1 内存管理 7

1.2.2 进程调度 8

1.2.3 设备驱动程序 9

1.2.4 文件系统 9

1.2.5 网络 10

1.2.6 其他 10

1.3 Linux内核分析 11

1.3.1 核心源码的组织 12

1.3.2 Linux内核源代码的组成 12

1.3.3 Linux内核分析方法 14

练习与思考 16

第2章 Linux系统的启动 17

2.1 操作系统的启动 17

2.1.1 系统引导过程简介 17

2.1.2 硬盘结构 18

2.1.3 引导扇区 18

2.2 Linux的引导过程 20

2.2.1 Linux系统引导过程分析 21

2.2.2 实模式下的初始化 22

2.2.3 保护模式下的初始化 26

2.2.4 系统初始化 31

练习与思考 33

第3章 中断和中断处理 34

3.1 硬件提供的中断机制和约定 34

3.1.1 中断产生的过程 35

3.1.2 中断请求 36

3.1.3 置中断标志位 36

3.1.4 中断处理程序的不可重入性 36

3.1.5 时钟和定时器中断 37

3.2 Linux的中断处理 39

3.2.1 Linux中断处理程序的特色 39

3.2.2 中断的相关数据结构 40

3.2.3 中断向量表IDT的初始化 42

3.2.4 中断请求队列的初始化 46

3.3.1 底半处理 48

3.3 Linux 2.4的软中断处理机制 48

3.3.2 与底半处理相关的数据结构 49

3.3.3 任务队列 51

3.3.4 tasklet 52

3.3.5 软中断 53

3.3.6 使用示例 54

3.3.7 讨论 57

3.4 中断处理全过程 60

3.4.1 异常的处理全过程 61

3.4.2 外部设备中断处理的全过程 61

3.4.3 后续处理 62

练习与思考 63

4.1 存储层次结构和x86存储管理硬件 64

4.1.1 内存管理基本框架 64

第4章 内存管理 64

4.1.2 地址映射的全过程 65

4.1.3 地址映射的效率分析 68

4.1.4 连续物理区域管理 71

4.2 Linux虚存系统 73

4.2.1 使用虚存的优点 73

4.2.2 Linux虚存的“分页”机制 74

4.3 Linux的内存页表 75

4.3.1 内存页的分配和释放 75

4.3.2 内存映射和需求分页 77

4.3.3 Linux页缓存 78

4.4 内存交换与高速缓存 79

4.4.1 内存交换 79

4.5 相关系统工具 81

4.4.2 高速缓存 81

4.5.1 建立交换空间 82

4.5.2 使用交换空间 82

4.5.3 分配交换空间 83

4.5.4 缓冲区高速缓存的守护进程 83

练习与思考 84

第5章 进程管理及进程间通信 85

5.1 Linux进程和线程 85

5.1.1 Linux进程管理的数据结构 85

5.1.2 标识符信息 87

5.1.3 进程状态信息 87

5.1.4 文件信息 88

5.1.5 虚拟内存 89

5.1.7 关于线程 90

5.1.6 时间和定时器 90

5.1.8 会话和进程组 91

5.2 进程的创建和进程调度 91

5.2.1 进程的创建 91

5.2.2 进程的管理和调度 92

5.2.3 进程的切换 96

5.3 可执行程序 98

5.3.1 可执行可连接格式 98

5.3.2 脚本文件 100

5.4 Linux下进程间通信的主要手段 100

5.4.1 信号 101

5.4.2 管道和套接字 102

5.5 System V的IPC机制 104

5.5.1 消息队列 104

5.5.2 信号量 105

5.5.3 共享内存 107

5.5.4 相关系统工具 108

5.6 内核同步机制 108

5.6.1 原子操作和信号量 108

5.6.2 任务队列 110

5.6.3 等待队列和异步信号 111

5.6.4 Buzz锁 115

5.6.5 信号灯 117

练习与思考 118

第6章 硬件和设备驱动程序 120

6.1 总线 120

6.1.1 总线概述 120

6.1.2 Linux对PCI总线的支持 121

6.2.1 查询与中断 122

6.2 设备访问方式 122

6.2.2 直接内存访问 124

6.2.3 内存 124

6.3 设备驱动程序 125

6.3.1 设备驱动程序的概念 125

6.3.2 设备驱动程序的内存分配 126

6.3.3 设备驱动程序和内核的接口 127

6.4 编写Linux下的设备驱动程序 131

6.4.1 Linux下设备驱动程序的基本结构 131

6.4.2 Linux系统下的设备驱动程序 133

练习与思考 137

7.1 虚拟文件系统 139

7.1.1 虚拟文件系统概述 139

第7章 文件系统 139

7.1.2 基本对象与方法 140

7.1.3 文件系统的注册、安装与卸载 141

7.1.4 虚拟文件系统的实现函数和数据结构 144

7.2 高速缓存 146

7.2.1 文件系统分配机制 147

7.2.2 块高速缓存 148

7.2.3 索引节点高速缓存 149

7.2.4 目录高速缓存 149

7.3 /proc文件系统 150

7.3.1 概述 150

7.3.2 /proc文件系统的注册 150

7.3.3 建立/proc文件系统的超级块 151

7.3.4 /proc文件系统超级块的操作函数集 153

7.3.5 /proc文件的管理 155

7.3.6 /proc文件的默认操作 160

7.4 EXT2文件系统 169

7.4.1 EXT2索引节点 170

7.4.2 EXT2超块 171

7.4.3 EXT2块组描述符 172

7.4.4 EXT2目录 172

7.4.5 EXT2文件系统中数据块的分配和释放 173

7.4.6 日志文件系统 174

练习与思考 175

第8章 网络 177

8.1 网络协议 177

8.1.1 TCP/IP协议概述 177

8.1.2 TCP/IP协议工作原理及数据流 178

8.2.1 套接字的类型 180

8.2 套接字 180

8.2.2 套接字的基本结构和工作原理 181

8.2.3 套接字的初始化 183

8.2.4 套接字的通信过程 193

8.3 套接字缓冲区 198

8.3.1 套接字缓冲区操作基本原理 199

8.3.2 套接字缓冲区的数据结构 199

8.3.3 套接字缓冲区提供的函数 200

8.3.4 套接字缓冲区的上层支持例程 202

8.4 网络设备接口源码 203

8.4.1 Linux网络接口源码结构 203

8.4.2 网络设备接口 205

8.4.3 网络接口核心 207

8.4.4 网络协议接口 208

8.5.1 接收IP数据包 212

8.4.5 Socket层和用户的衔接 212

8.5 IP层 212

8.5.2 发送IP数据包 213

8.5.3 数据包的分段和重组 213

8.5.4 地址解析协议 214

8.5.5 IP路由 215

练习与思考 217

第9章 模块的动态加载和系统配置 219

9.1 模块的动态加载 219

9.1.1 模块的加载 220

9.1.2 模块的卸载 221

9.1.3 内核模块的管理 222

9.2.1 配置系统的基本结构 223

9.2.2 Makefile 223

9.2 Linux内核配置系统 223

9.2.3 配置文件 228

9.2.4 配置实例 231

练习与思考 233

第10章 系统调用 235

10.1 系统调用概述 235

10.1.1 系统调用过程 235

10.1.2 系统调用的进入 236

10.1.3 系统调用总控程序 237

10.1.4 一个简单的系统调用例子 238

10.2 与进程管理相关的系统调用 242

10.2.1 getpid 242

10.2.2 fork 243

10.2.3 exit 244

10.2.4 exit和exit 245

10.2.5 其他一些常见的系统调用 247

10.3 僵尸进程 247

10.3.1 wait 248

10.3.2 waitpid 250

10.3.3 exec系统调用 252

10.3.4 稍稍深入 252

10.4 与进程管理相关的系统调用实战 256

10.4.1 Mini Shell 256

10.4.2 Daemon进程 259

10.5 为内核增加系统调用实战 261

10.5.1 增加系统调用的两种方法 261

10.5.2 相关内核源代码分析 262

10.5.3 对内核源码的修改 263

练习与思考 265

第11章 课程设计指导书 266

11.1 Linux启动代码的分析 267

11.2 Linux的fork,exec,wait函数的分析 269

11.3 Linux的消息函数的分析 273

11.4 Linux的调度和时钟中断处理代码的分析 276

11.5 自选课题 279

11.5.1 Linux的文件系统 279

11.5.2 Linux的存储管理 279

11.5.3 Linux的设备管理 279

11.5.4 Linux进程间通信 280

附录A Linux核心数据结构 281

附录B Linux系统调用列表 302

参考文献 309

返回顶部