《嵌入式Linux系统设计与应用》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:王学龙编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7900635998
  • 页数:401 页
图书介绍:

第1部分 Linux内核源代码分析 3

第1章 Linux进程管理代码分析 3

1.1 基本概念 3

1.2 进程的状态和标志 4

1.3 Linux中进程间的状态转换 9

1.3.1 进程的创建 9

1.3.2 进程的调度 10

1.3.3 进程间通信 12

1.3.4 进程从运行态到停止态的转换 24

1.3.5 进程从停止态到运行态的转换 25

1.3.6 进程的终止 26

1.4 小结 27

第2章 内存管理分析 29

2.1 概述 29

2.1.1 Linux内存管理的基本特点 29

2.1.2 Linux内存管理的主要实现技术 29

2.1.3 虚拟内存模型 31

2.1.4 页面管理 31

2.2 Linux内存管理数据结构 35

2.2.1 32位虚拟地址 35

2.2.2 Linux的多级页表结构 35

2.2.3 页表项的格式 36

2.2.4 动态地址映射 37

2.2.5 用户进程的虚拟内存结构 38

2.3 进程内存管理数据结构的建立、维护及其系统调用 39

2.3.1 进程载入、创建及内存管理数据结构和链接建立 39

2.3.2 缺页中断服务 42

2.4 主要函数分析 44

2.4.1 内存管理的主要文件 44

2.4.2 内存映射文件 48

2.5 小结 55

第3章 虚拟文件系统 56

3.1 基本概念 56

3.2 VFS的数据结构 57

3.2.1 VFS的超级块结构 57

3.2.2 VFSinode及其相关数据结构 59

3.3 高速缓存的管理 60

3.3.1 缓冲区高速缓存 60

3.3.2 VFSinode高速缓存 66

3.3.3 VFS目录高速缓存 67

3.4 VFS inode资源链 69

3.4.1 资源链的组织及主要操作 69

3.4.2 VFS inode的主要操作 70

3.5 文件系统的管理 73

3.6 文件系统的系统调用 74

3.6.1 sys_open系统调用 74

3.6.2 sys_close()系统调用 75

3.7 小结 76

第4章 EXT2文件系统 77

4.1 概述 77

4.2 EXT2文件系统的数据结构 78

4.2.1 EXT2文件系统的物理布局 78

4.2.2 EXT2文件系统的超级块结构 78

4.2.3 EXT2文件系统的inode结构 81

4.2.4 EXT2文件系统的组描述符 83

4.3 文件管理 84

4.3.1 系统打开文件表 84

4.3.2 EXT2的目录项 85

4.3.3 文件的访问 85

4.3.4 数据块的管理 86

4.4 EXT2文件系统的系统调用 88

4.4.1 sys_mkdir系统调用 88

4.4.2 sys_rmdir系统调用 90

4.5 小结 91

第5章 Linux的网络设备接口 93

5.1 网络设备概述 93

5.2 网络设备的数据结构 95

5.3 网络设备的初始化 99

5.3.1 模块初始化模式的分析 99

5.3.2 启动初始化模式的分析 105

5.4 网络设备的打开和关闭 111

5.5 数据包的传输和接收 113

5.5.1 Socket缓冲区及相关操作 114

5.5.2 数据包的传输 115

5.5.3 数据包的接收 117

5.6 网络设备驱动程序的开发 120

5.6.1 网络设备驱动程序的开发步骤 120

5.6.2 设备驱动程序的开发实例 120

5.7 小结 126

第6章 系统调用的原理 127

6.1 系统调用概述 127

6.2 Linux系统调用流程 127

6.2.1 Linux系统调用的中断机制 127

6.2.2 相关的数据结构及函数 128

6.2.3 Linux系统调用的流程 136

6.3 系统调用的实例分析 141

6.3.1 mlock系统调用简介 141

6.3.2 mlock所用到的主要数据结构和重要常量 142

6.3.3 mlock系统调用代码分析 145

6.4 系统调用的创建 155

6.4.1 系统调用编程 155

6.4.2 系统调用的连接和使用 156

6.5 小结 157

第2部分 Linux系统编程 161

第7章 Bash编程 161

7.1 Bash的编程步骤 161

7.2 Bash中的变量 162

7.2.1 特殊变量 163

7.2.2 Bash中的引号 164

7.3 Bash中的数值运算 164

7.4 Bash中的特殊语句 166

7.4.1 条件语句 166

7.4.2 循环语句 168

7.4.3 移位语句 170

7.5 在Bash中使用函数 170

7.6 正则表达式 171

7.6.1 句点的单字符匹配 171

7.6.2 行首和行尾的匹配 172

7.6.3 星号和反斜杠的使用 172

7.6.4 括号匹配和指定次数匹配 173

7.6.5 Bash脚本中常用的正则表达式 174

7.7 Bash编程实例 175

7.7.1 网络检测脚本 175

7.7.2 备份脚本 175

7.7.3 限制访问脚本 181

7.7.4 清除日志脚本 183

7.8 小结 184

第8章 GNU make管理项目与Gcc编程 185

8.1 make管理项目简介 185

8.2 编写Makefile的规则 186

8.2.1 虚拟目标 187

8.2.2 Makefile的变量 187

8.2.3 make的变量 188

8.2.4 隐式规则 189

8.2.5 模式规则 190

8.3 make命令 190

8.4 Makefile实例分析 191

8.5 Gcc的基本概念 197

8.6 Gcc命令 199

8.7 Gcc扩展简介 202

8.8 Gcc编程实例分析 203

8.8.1 串行口通信程序 203

8.8.2 网络通信程序 205

8.9 小结 207

第9章 GNU C++编程 208

9.1 Gcc与GNU C++的比较 208

9.2 GNU C++程序概述 209

9.3 GNU C++的编译和调试 211

9.3.1 警告与错误 211

9.3.2 编译选项 212

9.3.3 调试技术 217

9.4 GNU C++编程特点 221

9.4.1 内存管理的特点 221

9.4.2 指针使用的特点 222

9.4.3 异常处理的特点 223

9.4.4 类对象复制的特点 226

9.5 GNU C++程序实例分析 227

9.5.1 接收变元的程序示例 227

9.5.2 类对象复制程序示例 229

9.5.3 多重继承程序示例 230

9.5.4 异常处理程序示例 233

9.6 小结 235

第10章 多线程编程 236

10.1 Linux线程简介 236

10.1.1 线程的基本概念 236

10.1.2 线程的实现和创建 236

10.1.3 线程创建源代码 237

10.2 LinuxThreads线程库 242

10.2.1 pthread_create() 243

10.2.2 pthread_join() 243

10.2.3 pthread_self() 243

10.2.4 pthread_detach() 244

10.2.5 pthread_exit() 244

10.2.6 pthread_cancel() 244

10.3 线程间通信 244

10.3.1 pthread_once() 245

10.3.2 pthread_key_create() 245

10.3.3 pthread_getspecific() 246

10.3.4 pthread_setspecific() 246

10.3.5 pthread_mutex_lock() 246

10.3.6 pthread_mutex_unlock() 246

10.3.7 pthread_cond_init() 246

10.3.8 pthread_cond_wait() 247

10.4 守护线程分析 247

10.5 多线程编程实例分析 249

10.5.1 X Window GUI示例程序 249

10.5.2 TCP/IP服务器示例程序 252

10.5.3 生产者和消费者模型示例程序 257

10.5.4 同步线程测试示例程序 258

10.5.5 同步线程读写缓冲区示例程序 259

10.6 小结 260

第3部分 建立嵌入式Linux系统 263

第11章 修改和编译Linux内核 263

11.1 概述 263

11.2 修改Linux内核示例 264

11.2.1 虚拟内存 264

11.2.2 实时调度 304

11.3 编译Linux内核 307

11.3.1 初始化环境 307

11.3.2 配置核心 307

11.3.3 编译内核 307

11.3.4 应用内核 307

11.4 小结 308

第12章 嵌入式Linux系统中的脚本控制 309

12.1 Linux启动和退出过程简介 309

12.2 自定义决定运行级别的脚本 311

12.3 特定运行级别脚本 314

12.4 自定义公共启动脚本 316

12.5 自定义退出脚本 330

12.6 小结 334

第13章 组建嵌入式Linux系统的文件系统 335

13.1 概述 335

13.2 组建嵌入式Linux系统的文件系统脚本 335

13.3 分析嵌入式Linux系统的文件系统 337

13.4 小结 340

第4部分 嵌入式Linux系统的应用 343

第14章 IP电话的实现原理 343

14.1 IP电话应用结构 343

14.2 H.323协议栈结构及应用 344

14.3 H.323系统的组成 346

14.4 H.323协议实体的功能 348

14.4.1 终端功能 348

14.4.2 网关功能 349

14.4.3 网守功能 350

14.4.4 多点通信端点的功能 351

14.5 相关协议简介 352

14.5.1 RAS协议 352

14.5.2 H.255.0 353

14.5.3 H.245 355

14.5.4 RTP 356

14.5.5 RTCP 356

14.5.6 RSVP 357

14.6 小结 358

第15章 利用PPCBOOT引导系统 359

15.1 开发步骤简介 359

15.2 开发模型 360

15.3 修改PPCBOOT源代码 361

15.3.1 与主板有关的文件 361

15.3.2 与CPU有关的文件 362

15.3.3 头文件 364

15.3.4 公共函数文件 368

15.3.5 网络传输代码文件 371

15.3.6 Makefile文件 375

15.4 PPCBoot的监视界面 376

15.5 小结 377

第16章 建立开发平台 378

16.1 安装CDK1.2 378

16.2 设置目标系统 379

16.3 设置开发主机 379

16.3.1 设置DHCP 380

16.3.2 设置TFTP 380

16.3.3 设置NFS 381

16.4 测试目标系统的内核装载与引导 381

16.5 开发平台的调试模型 383

16.5.1 开发应用 383

16.5.2 调试应用 384

16.6 小结 385

第17章 应用软件开发实例 386

17.1 需求分析 386

17.2 使用的协议栈和函数库 386

17.3 应用软件源代码 388

17.3.1 main.cxx 388

17.3.2 main.h 398

17.3.3 version.h 399

17.3.4 Makefile 399

17.4 小结 400

参考文献 401