《操作系统设计与实现 上 第3版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)ANDREW S.TANENBAUM ALBERT S.WOODHULL著;陈渝 谌卫军译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2007
  • ISBN:712103381X
  • 页数:453 页
图书介绍:《操作系统设计与实现》(上册)(第3版)是关于操作系统的权威教材。大多数关于操作系统的图书均重理论而轻实践,而《操作系统设计与实现》(上册)(第3版)则在这两者之间进行了较好的折中。本册详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入、输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等;此外,还详细讨论了一个特殊的操作系统MINIX 3(一个与UNIX兼容的操作系统),并提供了该系统的源代码(见《操作系统设计与实现》(上册)(第3版)下册),以便于读者仔细研究。这种安排不仅可让读者了解操作系统的基本原理,而且可让读者了解到这些基本原理是如何应用到真实的操作系统中去的。

第1章 引言 1

1.1 什么是操作系统 3

1.1.1 操作系统作为扩展机 3

1.1.2 操作系统作为资源管理器 3

1.2 操作系统的发展历史 4

1.2.1 第一代计算机(1945-1955):真空管和插接板 5

1.2.2 第二代计算机(1955-1965):晶体管和批处理系统 5

1.2.3 第三代计算机(1965-1980):集成电路和多道程序 6

1.2.4 第四代计算机(1980-):个人计算机 10

1.2.5 MINIX 3的历史 11

1.3 操作系统概念 13

1.3.1 进程 14

1.3.2 文件 15

1.3.3 命令解释器 17

1.4 系统调用 18

1.4.1 进程管理的系统调用 20

1.4.2 信号管理的系统调用 22

1.4.3 文件管理的系统调用 24

1.4.4 目录管理的系统调用 27

1.4.5 保护的系统调用 29

1.4.6 时间管理的系统调用 30

1.5 操作系统结构 30

1.5.1 整体结构 31

1.5.2 分层结构 33

1.5.3 虚拟机 33

1.5.4 外核 35

1.5.5 客户-服务器模型 36

1.6 剩余各章内容简介 37

1.7 小结 37

习题 37

第2章 进程 39

2.1 进程介绍 39

2.1.1 进程模型 39

2.1.2 进程的创建 40

2.1.3 进程的终止 41

2.1.4 进程的层次结构 42

2.1.5 进程的状态 43

2.1.6 进程的实现 44

2.1.7 线程 45

2.2 进程间通信 48

2.2.1 竞争条件 48

2.2.2 临界区 49

2.2.3 忙等待形式的互斥 50

2.2.4 睡眠和唤醒 53

2.2.5 信号量 55

2.2.6 互斥 57

2.2.7 管程 57

2.2.8 消息传递 60

2.3 经典IPC问题 62

2.3.1 哲学家进餐问题 62

2.3.2 读者-写者问题 65

2.4 进程调度 66

2.4.1 调度介绍 66

2.4.2 批处理系统中的调度 69

2.4.3 交互式系统中的调度 72

2.4.4 实时系统调度 76

2.4.5 策略与机制 76

2.4.6 线程调度 77

2.5 MINIX 3进程概述 78

2.5.1 MINIX 3的内部结构 78

2.5.2 MINIX 3中的进程管理 80

2.5.3 MINIX 3中的进程间通信 83

2.5.4 MINIX 3中的进程调度 85

2.6 MINIX 3中进程的实现 86

2.6.1 MINIX 3源代码的组织 86

2.6.2 编译及运行MINIX 3 88

2.6.3 公共头文件 90

2.6.4 MINIX 3头文件 95

2.6.5 进程数据结构和头文件 101

2.6.6 引导MINIX 3 107

2.6.7 系统初始化 110

2.6.8 MINIX的中断处理 114

2.6.9 MINIX 3的进程间通信 121

2.6.10 MINIX的进程调度 124

2.6.11 与硬件相关的内核支持 126

2.6.12 实用程序和内核库 129

2.7 MINIX 3的系统任务 131

2.7.1 系统任务综述 132

2.7.2 系统任务的实现 134

2.7.3 系统库的实现 136

2.8 MINIX 3的时钟任务 138

2.8.1 时钟硬件 139

2.8.2 计时程序 140

2.8.3 MINIX 3中的时钟驱动程序总览 142

2.8.4 MINIX 3中的时钟驱动程序的应用 144

2.9 小结 145

习题 146

第3章 输入/输出系统 150

3.1 I/O硬件原理 150

3.1.1 I/O设备 150

3.1.2 设备控制器 151

3.1.3 内存映射I/O 152

3.1.4 中断 153

3.1.5 直接存储器存取 154

3.2 I/O软件的原理 155

3.2.1 I/O软件的目标 155

3.2.2 中断处理器 156

3.2.3 设备驱动程序 157

3.2.4 与设备无关的I/O软件 158

3.2.5 用户空间的I/O软件 160

3.3 死锁 161

3.3.1 资源 161

3.3.2 死锁的原理 162

3.3.3 鸵鸟算法 165

3.3.4 死锁的检测和恢复 166

3.3.5 死锁的预防 166

3.3.6 避免死锁 168

3.4 MINIX 3中的I/O概述 171

3.4.1 MINIX 3中的中断处理器和I/O访问 171

3.4.2 MINIX 3的设备驱动程序 173

3.4.3 MINIX 3中与设备无关的I/O软件 176

3.4.4 MINIX 3中的用户级I/O软件 176

3.4.5 MINIX 3的死锁处理 177

3.5 MINIX 3中的块设备 177

3.5.1 MINIX 3中的块设备驱动程序概述 177

3.5.2 通用块设备驱动程序软件 180

3.5.3 驱动程序库 182

3.6 RAM盘 183

3.6.1 RAM盘硬件和软件 184

3.6.2 MINIX 3中的RAM盘驱动程序概述 185

3.6.3 MINIX 3中RAM盘驱动程序的实现 186

3.7 磁盘 188

3.7.1 磁盘硬件 188

3.7.2 RAID 189

3.7.3 磁盘软件 190

3.7.4 MINIX 3中的硬盘驱动程序简介 194

3.7.5 MINIX 3中硬盘驱动程序的实现 196

3.7.6 软盘处理 203

3.8 终端 204

3.8.1 终端硬件 205

3.8.2 终端软件 208

3.8.3 MINIX 3中的终端驱动程序简介 213

3.8.4 设备无关终端驱动程序的实现 224

3.8.5 键盘驱动程序的实现 236

3.8.6 显示驱动程序的实现 241

3.9 小结 246

习题 247

第4章 存储管理 251

4.1 基本的存储管理 251

4.1.1 单道程序存储管理 252

4.1.2 固定分区的多道程序系统 252

4.1.3 重定位和存储保护 254

4.2 交换技术 255

4.2.1 基于位图的存储管理 257

4.2.2 基于链表的存储管理 257

4.3 虚拟存储管理 259

4.3.1 虚拟页式存储管理 260

4.3.2 页表 263

4.3.3 关联存储器TLB 266

4.3.4 反置页表 268

4.4 页面置换算法 269

4.4.1 最优页面置换算法 270

4.4.2 最近未使用页面置换算法 270

4.4.3 先进先出页面置换算法 271

4.4.4 第二次机会页面置换算法 271

4.4.5 时钟页面置换算法 272

4.4.6 最近最久未使用页面置换算法 273

4.4.7 LRU算法的软件模拟 273

4.5 页式存储管理中的设计问题 275

4.5.1 工作集模型 275

4.5.2 局部与全局分配策略 277

4.5.3 页面大小 279

4.5.4 虚拟存储器接口 280

4.6 段式存储管理 281

4.6.1 纯分段系统的实现 283

4.6.2 段页式存储管理:Intel Pentium 284

4.7 MINIX 3进程管理器概述 287

4.7.1 内存布局 288

4.7.2 消息处理 291

4.7.3 进程管理的数据结构和算法 292

4.7.4 FORK,EXIT和WAIT系统调用 296

4.7.5 EXEC系统调用 297

4.7.6 BRK系统调用 300

4.7.7 信号处理 300

4.7.8 其他的系统调用 306

4.8 MINIX 3进程管理器的实现 306

4.8.1 头文件和数据结构 306

4.8.2 主程序 309

4.8.3 FORK,EXIT和WAIT的实现 312

4.8.4 EXEC的实现 314

4.8.5 BRK的实现 317

4.8.6 信号处理的实现 317

4.8.7 其他系统调用的实现 323

4.8.8 内存管理工具 326

4.9 小结 327

习题 327

第5章 文件系统 331

5.1 文件 331

5.1.1 文件的命名 332

5.1.2 文件的结构 333

5.1.3 文件的类型 334

5.1.4 文件的访问 336

5.1.5 文件的属性 336

5.1.6 文件的操作 337

5.2 目录 338

5.2.1 简单的目录系统 338

5.2.2 层状目录系统 339

5.2.3 路径名 340

5.2.4 目录的操作 342

5.3 文件系统的实现 342

5.3.1 文件系统的布局 342

5.3.2 文件的实现 344

5.3.3 目录的实现 347

5.3.4 磁盘空间管理 351

5.3.5 文件系统的可靠性 354

5.3.6 文件系统的性能 359

5.3.7 日志结构的文件系统 362

5.4 文件系统的安全性 363

5.4.1 安全环境 364

5.4.2 通常的安全攻击 367

5.4.3 安全性的设计原则 368

5.4.4 用户认证 368

5.5 保护机制 371

5.5.1 保护域 371

5.5.2 访问控制列表 373

5.5.3 权能 375

5.5.4 秘密通道 377

5.6 MINIX 3文件系统概述 379

5.6.1 消息 380

5.6.2 文件系统的布局 381

5.6.3 位图 383

5.6.4 i节点 384

5.6.5 块高速缓存 386

5.6.6 目录和路径 387

5.6.7 文件描述符 389

5.6.8 文件锁 390

5.6.9 管道和设备文件 391

5.6.10 一个例子:READ系统调用 392

5.7 MINIX 3文件系统的实现 392

5.7.1 头文件和全局数据结构 393

5.7.2 表格管理 395

5.7.3 主程序 401

5.7.4 对单个文件的操作 404

5.7.5 目录和路径 410

5.7.6 其他的系统调用 412

5.7.7 I/O设备接口 414

5.7.8 附加的系统调用支持 418

5.7.9 文件系统的实用程序 419

5.7.10 其他的MINIX 3组件 420

5.8 小结 420

习题 421

第6章 阅读材料和参考文献 424

6.1 推荐的进一步阅读材料 424

6.1.1 介绍和概论 424

6.1.2 进程 426

6.1.3 输入/输出 426

6.1.4 存储管理 427

6.1.5 文件系统 427

6.2 按字母顺序排列的参考文献 428

索引 436