当前位置:首页 > 工业技术
操作系统原理、设计与应用
操作系统原理、设计与应用

操作系统原理、设计与应用PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:(美)斯图尔特著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302223184
  • 页数:457 页
图书介绍:操作系统是计算机科学课程中的核心课程。本书内容全面,实践性强。作者经过多年的构思与讲授操作系统的课程,才完成了这部内容详实、充满启迪的教科书。
《操作系统原理、设计与应用》目录

第1章 操作系统简介 1

1.1 什么是操作系统 1

1.1.1 资源管理者 2

1.1.2 服务提供者 2

1.1.3 虚拟机 2

1.2 操作系统的功能 3

1.2.1 进程 3

1.2.2 存储器 4

1.2.3 I/O设备 4

1.2.4 文件系统 4

1.2.5 安全性 5

1.2.6 联网 5

1.2.7 用户接口 6

1.3 操作系统的历史 6

1.3.1 裸机 7

1.3.2 批处理操作系统 7

1.3.3 分时操作系统 8

1.3.4 分布式操作系统 9

1.4 组织操作系统的技术 9

1.4.1 单块设计 10

1.4.2 分层设计 10

1.4.3 微内核设计 10

1.4.4 虚拟机设计 11

1.5 引导 12

1.6 系统调用 13

1.6.1 系统调用示例 13

1.6.2 系统调用机制 14

1.7 本章小结 14

1.8 练习 15

第2章 操作系统示例 16

2.1 兼容分时系统 16

2.1.1 组织结构 16

2.1.2 引导 17

2.2 多路信息和计算服务 17

2.2.1 组织结构 17

2.2.2 系统调用 19

2.3 RT-11 19

2.3.1 组织结构 19

2.4 第6版UNIX 20

2.4.1 组织结构 20

2.4.2 系统调用 21

2.5 虚拟内存系统 21

2.5.1 组织结构 21

2.5.2 引导 22

2.5.3 系统调用 22

2.6 4.3BSD 22

2.6.1 组织结构 23

2.6.2 系统调用 23

2.7 Windows NT 23

2.7.1 组织结构 24

2.8 TinyOS 24

2.8.1 组织结构 25

2.9 Xen 25

2.9.1 组织结构 25

2.10 本章小结 26

2.11 练习 26

第3章 Inferno的结构与初始化 27

3.1 Inferno的起源 27

3.2 基本概念 28

3.3 组织结构 30

3.3.1 基本体系结构 30

3.3.2 源代码组织结构 31

3.4 初始化 32

3.4.1 启动Inferno 33

3.4.2 宿主操作系统的特定初始化 34

3.4.3 与宿主操作系统无关的初始化 37

3.4.4 启动分时 39

3.5 系统调用 40

3.6 本章小结 41

3.7 练习 41

第4章 Linux的结构与初始化 42

4.1 Linux的起源 42

4.2 组织结构 43

4.2.1 基本体系结构 43

4.2.2 模块 44

4.2.3 源代码组织结构 45

4.3 初始化 46

4.3.1 引导 47

4.3.2 特定处理器初始化 49

4.3.3 与处理器无关的初始化 52

4.3.4 启动分时 56

4.3.5 初始化管理级的初始化 56

4.4 系统调用 58

4.4.1 处理应用方的系统调用 59

4.4.2 处理内核方的系统调用 60

4.5 本章小结 60

4.6 练习 61

第5章 进程管理原理 62

5.1 进程的概念 62

5.2 实现进程 62

5.2.1 进程操作 63

5.2.2 进程状态 64

5.2.3 进程表 64

5.3 线程 65

5.4 调度 66

5.4.1 先来先服务 66

5.4.2 最短作业优先 66

5.4.3 轮转法 68

5.4.4 优先级调度 69

5.4.5 调整调度参数 71

5.4.6 两级调度 71

5.4.7 实时调度 72

5.4.8 嵌入式系统的调度 74

5.5 上下文切换 74

5.6 进程的创建与终止 76

5.7 临界区 77

5.7.1 中断控制 78

5.7.2 原子操作指令 78

5.7.3 Peterson算法 79

5.7.4 信号量 80

5.7.5 管程 81

5.7.6 消息传递 82

5.7.7 示例 82

5.8 死锁 85

5.8.1 充分必要条件 86

5.8.2 处理死锁 86

5.9 本章小结 91

5.10 练习 91

第6章 进程管理示例 93

6.1 CTSS 93

6.1.1 进程状态 93

6.1.2 系统调用 94

6.1.3 调度 94

6.2 Multics 95

6.2.1 系统调用 95

6.2.2 进程状态 95

6.2.3 调度 95

6.3 RT-11 96

6.3.1 系统调用 96

6.3.2 进程状态 97

6.3.3 进程表 97

6.3.4 调度 97

6.4 第6版UNIX 97

6.4.1 系统调用 97

6.4.2 进程状态 98

6.4.3 进程表 98

6.4.4 调度 99

6.5 4.3BSD 99

6.5.1 系统调用 99

6.5.2 进程状态与进程表 100

6.5.3 调度 100

6.6 VMS 101

6.6.1 系统调用 101

6.6.2 线程状态 101

6.6.3 调度 102

6.7 Windows NT 102

6.7.1 系统调用 103

6.7.2 线程状态 103

6.7.3 进程表与线程表 103

6.7.4 调度 104

6.8 TinyOS 105

6.9 Xen 105

6.10 本章小结 106

6.11 练习 106

第7章 Inferno中的进程管理 108

7.1 Inferno中的进程 108

7.2 进程的状态 109

7.2.1 内核进程 109

7.2.2 用户进程 110

7.3 进程的数据结构 111

7.3.1 内核进程表 111

7.3.2 内核进程表项 112

7.3.3 用户进程表 113

7.3.4 用户进程表项 113

7.4 进程的创建 115

7.4.1 解释进程创建指令 116

7.4.2 实现进程创建 116

7.5 进程的终止 119

7.6 进程调度 121

7.6.1 插入就绪表 121

7.6.2 从就绪表中删除 122

7.6.3 分时 122

7.6.4 运行时间片 124

7.7 本章小结 126

7.8 练习 126

第8章 Linux中的进程管理 128

8.1 进程与线程 128

8.1.1 Linux中的内核线程 128

8.1.2 进程间的关系 128

8.2 系统调用 129

8.3 进程状态 130

8.4 进程表 131

8.5 进程的创建 134

8.5.1 处理系统调用 134

8.5.2 创建进程 137

8.5.3 特定体系结构的步骤 139

8.6 进程调度 141

8.6.1 优先级 141

8.6.2 队列结构 142

8.6.3 时钟计时单元 143

8.6.4 调度程序 146

8.7 本章小结 151

8.8 练习 152

第9章 存储管理原理 153

9.1 存储层次结构 153

9.2 地址变换 154

9.2.1 基址/上下界寄存器 155

9.2.2 分段存储 155

9.2.3 分页存储 156

9.3 存储相关的服务 158

9.4 存储布局 159

9.5 内存分配技术 160

9.5.1 空闲空间管理 161

9.5.2 碎片 162

9.5.3 分区 162

9.5.4 选择策略 163

9.5.5 伙伴系统管理 165

9.6 过度分配技术 166

9.6.1 交换 167

9.6.2 段交换 168

9.6.3 分页 168

9.6.4 段页式 175

9.6.5 内存映射文件 175

9.6.6 写时复制 176

9.6.7 性能问题 176

9.7 嵌入式系统的存储管理 178

9.8 本章小结 178

9.9 练习 179

第10章 存储管理示例 181

10.1 CTSS 181

10.2 Multics 181

10.2.1 存储相关的系统调用 182

10.2.2 存储布局 182

10.2.3 段式管理与页式管理 182

10.3 RT-11 183

10.3.1 存储相关的系统调用 183

10.3.2 存储布局 183

10.3.3 USR与KMON交换 184

10.4 第6版UNIX 184

10.4.1 存储相关的系统调用 185

10.4.2 存储布局 185

10.4.3 空闲空间管理 186

10.4.4 分配 186

10.4.5 交换 187

10.5 4.3BSD 187

10.5.1 存储相关的系统调用 187

10.5.2 存储布局 187

10.5.3 空闲空间管理 188

10.5.4 交换与页替换 189

10.6 VMS 190

10.6.1 页表 190

10.6.2 存储布局 190

10.6.3 空闲空间管理 190

10.6.4 交换与页替换 191

10.6.5 存储相关的系统调用 192

10.7 Windows NT 192

10.7.1 系统调用 192

10.7.2 存储布局 192

10.7.3 页式管理 193

10.8 TinyOS 194

10.9 Xen 194

10.9.1 超级调用 194

10.9.2 存储布局 194

10.9.3 页式管理 195

10.10 本章小结 195

10.11 练习 195

第11章 Inferno中的存储管理 197

11.1 概述 197

11.2 存储布局 198

11.3 存储管理的数据结构 199

11.3.1 存储池 199

11.3.2 存储块 201

11.4 存储管理的实现 203

11.4.1 分配内存 203

11.4.2 从树中删除空闲块 208

11.4.3 释放内存 210

11.4.4 把空闲块插入树中 212

11.5 垃圾收集 213

11.5.1 堆结构 213

11.5.2 引用计数 213

11.5.3 并发垃圾收集器 214

11.5.4 实现并发垃圾收集 215

11.6 本章小结 218

11.7 练习 219

第12章 Linux中的存储管理 220

12.1 存储布局 220

12.2 系统调用 221

12.3 分配机制 222

12.3.1 管理区页的分配 222

12.3.2 slab分配器 223

12.3.3 内核的内存分配 223

12.4 页管理 223

12.4.1 页表 223

12.4.2 页替换 224

12.5 存储管理的数据结构 225

12.5.1 进程分配的表示 225

12.5.2 虚拟内存区表示 227

12.6 存储管理的实现 228

12.6.1 处理分配系统调用 228

12.6.2 增加区域 230

12.6.3 处理缺页 233

12.6.4 解决缺页错误 235

12.6.5 处理新页面 237

12.7 本章小结 239

12.8 练习 239

第13章 I/O设备管理原理 241

13.1 I/O子系统的要素 241

13.2 I/O设备的硬件特性 242

13.2.1 磁盘驱动器 242

13.2.2 串口通信 245

13.2.3 控制器接口技术 246

13.3 I/O设备类型 248

13.3.1 通信设备与存储设备 249

13.3.2 流设备与块设备 250

13.4 I/O子系统设计的目标 250

13.5 I/O设备服务 251

13.6 设备驱动器的结构 251

13.7 设备管理技术 253

13.7.1 缓冲区 253

13.7.2 交叉存取 253

13.7.3 电梯算法 254

13.7.4 RAID 256

13.7.5 水位标志 258

13.7.6 人工输入处理 259

13.7.7 伪设备 260

13.8 本章小结 260

13.9 练习 260

第14章 I/O设备管理示例 262

14.1 CTSS 262

14.2 Multics 263

14.3 RT-11 264

14.4 第6版UNIX 265

14.5 4.3BSD 266

14.6 VMS 267

14.7 Windows NT 268

14.8 TinyOS 269

14.9 Xen 269

14.10 本章小结 269

14.11 练习 270

第15章 Inferno中的I/O设备 271

15.1 设备驱动程序结构 271

15.2 并行端口支持 272

15.2.1 为写请求服务 273

15.2.2 写入单字节 274

15.3 键盘支持 275

15.3.1 初始化键盘控制器 277

15.3.2 处理键盘中断 278

15.4 IDE磁盘支持 282

15.4.1 处理I/O请求 283

15.4.2 初始化IDE控制器操作 285

15.4.3 处理IDE控制器中断 289

15.5 本章小结 291

15.6 练习 291

第16章 Linux中的I/O设备 293

16.1 块请求支持 293

16.2 两半中断处理程序结构 294

16.3 并行端口驱动程序 295

16.3.1 处理系统调用 295

16.3.2 选择适合的低层写入 298

16.3.3 从缓冲区写入字节 300

16.3.4 配置控制器 303

16.4 软盘驱动程序 304

16.4.1 处理请求 305

16.4.2 调度软盘操作 306

16.4.3 执行软盘操作 306

16.4.4 启动命令 309

16.4.5 准备数据传输 310

16.4.6 控制器编程 311

16.4.7 处理软盘中断 313

16.4.8 完成软盘操作 314

16.5 本章小结 315

16.6 练习 315

第17章 文件系统原理 317

17.1 文件系统服务 317

17.1.1 共享与独占访问 318

17.1.2 访问模式 318

17.1.3 文件结构 319

17.1.4 元数据 320

17.1.5 内存映射文件 320

17.2 总体文件系统设计 321

17.2.1 文件系统形式 321

17.2.2 主要数据结构 322

17.3 名称空间 323

17.3.1 驱动器指示符 324

17.3.2 账户说明符 324

17.3.3 分层命名 325

17.3.4 文件扩展名 326

17.3.5 文件版本 327

17.3.6 特殊文件与目录 327

17.3.7 相对路径名与绝对路径名 328

17.4 管理存储空间 328

17.4.1 文件系统元数据 328

17.4.2 数据单位 329

17.4.3 空闲空间管理 329

17.4.4 普通文件 330

17.4.5 稀疏文件 332

17.4.6 分支 332

17.4.7 目录 333

17.4.8 别名 333

17.5 一致性检测 334

17.6 日志与日志结构的文件系统 335

17.7 块高速缓存 336

17.8 本章小结 337

17.9 练习 337

第18章 文件系统示例 339

18.1 CTSS 339

18.1.1 第一个CTSS文件系统 339

18.1.2 第二个CTSS文件系统 340

18.2 Multics 340

18.3 RT-11 342

18.4 第6版UNIX 342

18.5 4.3BSD 344

18.6 VMS 345

18.7 Windows NT 346

18.8 本章小结 347

18.9 练习 347

第19章 Inferno中的文件系统 349

19.1 文件服务器的作用 349

19.1.1 Styx协议 349

19.1.2 内置内核文件服务器 352

19.1.3 用户空间文件服务器 352

19.2 根设备服务器 352

19.2.1 提供命名服务 353

19.2.2 遍历根服务器树 355

19.2.3 从根服务器读取 355

19.3 通用Styx消息处理程序 356

19.3.1 创建目录项 356

19.3.2 生成命名 356

19.3.3 遍历目录树 357

19.4 本地Inferno文件系统 360

19.4.1 初始化 361

19.4.2 主服务进程 365

19.4.3 处理Styx请求 365

19.4.4 遍历目录树 366

19.4.5 搜索目录 369

19.4.6 读文件 372

19.4.7 磁盘上的数据结构 374

19.4.8 读取目录项 378

19.4.9 读取文件块 379

19.4.10 查找文件块 379

19.4.11 处理间接块 381

19.4.12 从缓冲区高速缓存中获取 382

19.5 本章小结 384

19.6 练习 384

第20章 Linux中的文件系统 386

20.1 虚拟文件系统 386

20.1.1 超级块 387

20.1.2 i-节点 387

20.1.3 目录项 387

20.1.4 文件 387

20.2 EXT3文件系统 388

20.3 EXT3的磁盘结构 388

20.3.1 EXT3超级块 390

20.3.2 EXT3-I节点 391

20.3.3 EXT3目录项 393

20.4 EXT3命名查找 393

20.4.1 遍历路径 394

20.4.2 通用目录查找(第一部分) 399

20.4.3 通用目录查找(第二部分) 400

20.4.4 EXT3目录查找 401

20.4.5 EXT3目录搜索 402

20.4.6 EXT3目录块搜索 405

20.5 写入文件 406

20.5.1 Linux的写入系统调用 406

20.5.2 写入通用文件 407

20.5.3 写入EXT3文件 408

20.6 在EXT3中定位文件块 409

20.6.1 标识间接块 409

20.6.2 读取间接块 411

20.7 本章小结 412

20.8 练习 412

第21章 操作系统安全原理 413

21.1 用户认证 413

21.1.1 用户名与密码 413

21.1.2 散列函数加密 414

21.1.3 回调 414

21.1.4 挑战/响应认证 415

21.1.5 一次性密码 415

21.1.6 生物认证 416

21.2 基本资源保护 416

21.2.1 特权用户 416

21.2.2 访问CPU特性 417

21.2.3 内存访问 418

21.2.4 简单的保护代码 418

21.2.5 访问控制列表 419

21.2.6 权能 420

21.3 威胁类型 421

21.3.1 中间人攻击 421

21.3.2 特洛伊木马 421

21.3.3 陷阱门 421

21.3.4 逻辑/时间炸弹 422

21.3.5 病毒 422

21.3.6 蠕虫 423

21.3.7 隐蔽通道 423

21.3.8 拒绝服务 424

21.4 橙皮书分级 424

21.4.1 D组 424

21.4.2 C组 425

21.4.3 B组 425

21.4.4 A组 426

21.5 加密 426

21.5.1 对称加密 427

21.5.2 公钥加密学 428

21.6 Multics的保护环 430

21.7 Inferno的安全 431

21.8 Linux的安全 431

21.9 本章小结 433

21.10 练习 433

第22章 分布式系统原理 435

22.1 基本概念 435

22.1.1 资源共享 435

22.1.2 同步操作 438

22.1.3 一致性 438

22.1.4 分布式互斥 438

22.1.5 容错 439

22.1.6 自稳定 440

22.2 处理器共享 440

22.2.1 对称多处理 440

22.2.2 集群 441

22.2.3 网格 442

22.3 分布式时钟 442

22.3.1 逻辑时钟 443

22.3.2 物理时钟 443

22.4 选举算法 444

22.4.1 欺负算法 444

22.4.2 环算法 446

22.5 本章小结 447

22.6 练习 447

附录A 编译宿主Inferno 449

A.1 建立配置 449

A.2 编译器与开发工具 450

A.3 PATH环境变量 450

A.4 其他环境变量 451

A.5 编译系统 452

A.6 运行新版本 452

A.7 小结 452

附录B 编译本地Inferno 454

B.1 建立配置 454

B.2 创建工具链 454

B.3 创建引导程序代码 455

B.4 建立内核配置 455

B.5 生成加载程序配置 455

B.6 创建内核镜像 455

B.7 生成软盘镜像 456

B.8 运行新内核 456

B.9 小结 456

返回顶部