《Linux 操作系统原理与应用》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:陈莉君编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302278368
  • 页数:256 页
图书介绍:本书从原理、设计思想的角度对Linux操作系统的核心内容进行全面的阐述。

第1章 概述 1

1.1认识操作系统 1

1.1.1从使用者角度看 1

1.1.2从程序开发者的角度看 2

1.1.3从操作系统在整个计算机系统所处位置看 2

1.1.4从操作系统设计者的角度看 3

1.1.5操作系统组成 4

1.2开放源代码的UNIX/Linux操作系统 5

1.2.1 UNIX诞生和发展 5

1.2.2 Linux诞生 6

1.2.3操作系统标准POSIX 6

1.2.4 GNU和Linux 6

1.2.5 Linux的开发模式 7

1.3 Linux内核 7

1.3.1 Linux内核的技术特点 7

1.3.2 Linux内核的位置 8

1.3.3 Linux内核体系结构 9

1.4 Linux内核源代码 10

1.4.1 Linux内核版本 10

1.4.2 Linux内核源代码的结构 11

1.4.3 Linux内核源代码分析工具 12

1.5 Linux内核模块编程入门 12

1.5.1模块的定义 13

1.5.2编写一个简单的模块 13

1.5.3应用程序与内核模块的比较 15

1.6 Linux内核中链表的实现及应用 15

1.6.1链表的演化 15

1.6.2链表的定义和操作 16

1.6.3链表的应用 19

1.7小结 21

习题 21

第2章 内存寻址 22

2.1内存寻址 22

2.1.1 Intel x86 CPU寻址的演变 22

2.1.2 80x86寄存器简介 24

2.1.3物理地址、虚拟地址及线性地址 26

2.2段机制 27

2.2.1段描述符 27

2.2.2地址转换及保护 29

2.2.3 Linux中的段 29

2.3分页机制 31

2.3.1页与页表 31

2.3.2线性地址到物理地址的转换 34

2.3.3分页举例 34

2.3.4页面高速缓存 35

2.4 Linux中的分页机制 36

2.5 Linux中的汇编语言 38

2.5.1 AT&T与Intel汇编语言的比较 38

2.5.2 AT&T汇编语言的相关知识 39

2.5.3 GCC嵌入式汇编 40

2.6 Linux系统地址映射举例 43

2.7小结 45

习题 45

第3章 进程 47

3.1进程介绍 47

3.1.1程序和进程 47

3.1.2进程的层次结构 49

3.1.3进程状态 50

3.1.4进程举例 50

3.2 Linux系统中的进程控制块 52

3.2.1进程状态 53

3.2.2进程标识符 55

3.2.3进程之间的亲属关系 56

3.2.4进程控制块的存放 56

3.2.5当前进程 57

3.3 Linux系统中进程的组织方式 58

3.3.1进程链表 58

3.3.2哈希表 59

3.3.3就绪队列 60

3.3.4等待队列 61

3.4进程调度 63

3.4.1基本原理 64

3.4.2时间片 65

3.4.3 Linux进程调度时机 65

3.4.4进程调度的依据 66

3.4.5调度函数schedule()的实现 67

3.4.6 Linux2.6调度程序的改进 70

3.5进程的创建 73

3.5.1创建进程 73

3.5.2线程及其创建 74

3.6与进程相关的系统调用及其应用 76

3.6.1 fork系统调用 76

3.6.2 exec系统调用 77

3.6.3 wait系统调用 78

3.6.4 exit系统调用 79

3.6.5进程的一生 80

3.7系统调用及应用 81

3.8小结 82

习题 82

第4章 内存管理 84

4.1 Linux的内存管理概述 84

4.1.1虚拟内存、内核空间和用户空间 84

4.1.2虚拟内存实现机制间的关系 87

4.2进程的用户空间管理 87

4.2.1进程用户空间的描述 89

4.2.2进程用户空间的创建 93

4.2.3虚存映射 94

4.2.4进程的虚存区举例 95

4.2.5与用户空间相关的系统调用 97

4.3请页机制 98

4.3.1缺页异常处理程序 99

4.3.2请求调页 101

4.3.3写时复制 102

4.4物理内存分配与回收 102

4.4.1页描述符 102

4.4.2伙伴算法 104

4.4.3物理页面的分配 104

4.4.4物理页面的回收 106

4.4.5 Slab分配机制 107

4.4.6内核空间非连续内存区的分配 111

4.4.7物理内存分配举例 113

4.5交换机制 115

4.5.1交换的基本原理 115

4.5.2页面交换守护进程kswapd 118

4.6内存管理实例 119

4.6.1相关背景知识 119

4.6.2代码体系结构介绍 120

4.6.3实现过程 122

4.6.4程序代码 122

4.7小结 128

习题 128

第5章 中断和异常 130

5.1中断是什么 130

5.1.1中断向量 130

5.1.2外设可屏蔽中断 131

5.1.3异常及非屏蔽中断 131

5.1.4中断描述符表 132

5.1.5相关汇编指令 133

5.2中断描述符表的初始化 134

5.2.1 IDT表项的设置 134

5.2.2对陷阱门和系统门的初始化 135

5.2.3中断门的设置 135

5.2.4中断处理程序的形成 136

5.3中断处理 137

5.3.1中断和异常的硬件处理 137

5.3.2中断请求队列的建立 138

5.3.3中断处理程序的执行 141

5.3.4从中断返回 142

5.3.5中断的简单应用 142

5.4中断的下半部处理机制 144

5.4.1为什么把中断分为两部分来处理 144

5.4.2小任务机制 145

5.4.3工作队列 147

5.5中断应用——时钟中断 150

5.5.1时钟硬件 150

5.5.2时钟运作机制 151

5.5.3 Linux时间系统 152

5.5.4时钟中断 153

5.5.5定时器及应用 156

5.6小结 159

习题 159

第6章 系统调用 161

6.1系统调用与应用编程接口、系统命令以及内核函数的关系 161

6.1.1系统调用与API 161

6.1.2系统调用与系统命令 162

6.1.3系统调用与内核函数 162

6.2系统调用基本概念 163

6.2.1系统调用号 163

6.2.2系统调用表 163

6.2.3系统调用服务例程和系统调用处理程序 164

6.3系统调用实现 164

6.3.1初始化系统调用 165

6.3.2 system_call()函数 165

6.3.3参数传递 166

6.3.4跟踪系统调用的执行 167

6.4封装例程 168

6.5添加新系统调用 169

6.5.1添加系统调用的步骤 170

6.5.2系统调用的调试 171

6.6实例-系统调用日志收集系统 172

6.6.1代码结构体系介绍 172

6.6.2把代码集成到内核中 176

6.7小结 179

习题 179

第7章 内核中的同步 180

7.1临界区和竞争状态 180

7.1.1临界区举例 180

7.1.2共享队列和加锁 181

7.1.3确定保护对象 182

7.1.4死锁 182

7.1.5并发执行的原因 183

7.2内核同步措施 184

7.2.1原子操作 184

7.2.2自旋锁 186

7.2.3信号量 187

7.3生产者-消费者并发实例 191

7.3.1问题分析 191

7.3.2实现机制 191

7.3.3具体实现 193

7.4内核多任务并发实例 193

7.4.1内核任务及其并发关系 193

7.4.2问题描述 194

7.4.3实现机制 194

7.5小结 197

习题 198

第8章 文件系统 199

8.1 Linux文件系统基础 199

8.1.1 Linux文件结构 199

8.1.2文件类型 200

8.1.3存取权限和文件模式 201

8.1.4 Linux文件系统 201

8.2虚拟文件系统 204

8.2.1虚拟文件系统的引入 204

8.2.2 VFS中对象的演绎 206

8.2.3 VFS的超级块 207

8.2.4 VFS的索引结点 208

8.2.5目录项对象 210

8.2.6与进程相关的文件结构 212

8.2.7主要数据结构间的关系 214

8.2.8实例——观察数据结构中的数据 215

8.3文件系统的注册、安装与卸载 217

8.3.1文件系统的注册和注销 217

8.3.2文件系统的安装 218

8.3.3文件系统的卸载 219

8.4文件的打开与读写 219

8.4.1文件打开 219

8.4.2文件读写 220

8.5编写一个文件系统 222

8.5.1 Linux文件系统的实现要素 222

8.5.2什么是Romfs文件系统 224

8.5.3 Romfs文件系统布局与文件结构 224

8.5.4具体实现的对象 225

8.6小结 228

习题 228

第9章 设备驱动 230

9.1概述 230

9.2设备驱动程序框架 232

9.3 I/O空间的管理 237

9.3.1 I/O端口和I/O内存 237

9.3.2 I/O资源管理 237

9.3.3访问I/O端口空间 239

9.3.4访问I/O内存资源 240

9.4字符设备驱动程序 241

9.4.1字符设备的数据结构 241

9.4.2分配和释放设备号 242

9.4.3字符设备驱动的组成 243

9.4.4加载和卸载函数 243

9.4.5实现file_operaions中定义的函数 246

9.5块驱动程序 248

9.5.1块驱动程序的注册 249

9.5.2块设备请求 252

9.6小结 254

习题 255

参考文献 256