E-BOOK 现代操作系统(原书第4版) Andrew S. Tanenbaum,Herbert Bos 现代操作系统(原书第4版)

现代操作系统(原书第4版)

👤 Andrew S. Tanenbaum,Herbert Bos 📖 机械工业出版社 📋 9787111573692 🌐 zh-CN
48
下载次数
4.8
用户评分

📦 下载本书

  • 理解操作系统核心概念:系统掌握进程、线程、内存管理、文件系统等基础原理,构建完整的知识体系。
  • 解决并发与同步问题:深入理解信号量、互斥量、管程等同步机制,应对多线程编程中的竞争条件和死锁。
  • 掌握内存管理策略:学习虚拟内存、分页、页面置换算法,优化程序内存使用效率。
  • 了解现代系统设计:涵盖虚拟化、云、多处理机等前沿主题,跟上操作系统发展潮流。
  • 实例研究提升实战能力:通过UNIX、Linux、Android和Windows案例,将理论与实际系统结合。
★★★
中级
入门初级中级进阶高级
  • 计算机专业学生:作为操作系统课程的权威教材,系统学习核心理论与设计。
  • 软件开发者:深入理解底层机制,提升系统编程和性能优化能力。
  • 系统管理员:掌握操作系统原理,更好地管理和维护服务器与云环境。
  • 考研与面试者:覆盖考点与常见问题,助力备考和职业发展。
  1. 循序渐进:建议按章节顺序阅读,先掌握基础概念再深入专题。
  2. 重点章节:第2章进程与线程、第3章内存管理是核心,需精读并理解。
  3. 结合实践:每章习题动手完成,并尝试在Linux环境中验证所学。
  4. 拓展阅读:关注第7章虚拟化与云,了解现代系统趋势。
  5. 复习巩固:阅读小结与习题,定期回顾,形成知识网络。
  • 理论体系:全面掌握操作系统五大功能模块的设计原理。
  • 问题分析:能够分析并发、死锁、内存碎片等经典问题并提出方案。
  • 工程视角:理解真实系统(如Linux、Windows)的架构与实现。
  • 前沿认知:了解虚拟化、云计算等现代技术对操作系统的影响。
  • 应试能力:覆盖考研核心考点,提升解题与论述能力。

📖 书籍简介

内容简介
本书是操作系统领域的经典教材,主要内容包括进程与线程、内存管理、文件系统、输入/输出、死锁、虚拟化和云、多处理机系统、安全,以及关于UNIX、Linux、Android和Windows的实例研究等。第4版对知识点进行了全面更新,反映了当代操作系统的发展与动向。本书适合作为高等院校计算机专业的操作系统课程教材,也适合相关技术人员参考。
目录
出版者的话
译者序
前言
作者简介
第1章 引论1
1.1 什么是操作系统2
1.1.1 作为扩展机器的操作系统2
1.1.2 作为资源管理者的操作系统3
1.2 操作系统的历史4
1.2.1 第一代(1945~1955):真空管和穿孔卡片4
1.2.2 第二代(1955~1965):晶体管和批处理系统4
1.2.3 第三代(1965~1980):集成电路和多道程序设计6
1.2.4 第四代(1980年至今):个人计算机8
1.2.5 第五代(1990年至今):移动计算机10
1.3 计算机硬件简介11
1.3.1 处理器12
1.3.2 存储器14
1.3.3 磁盘15
1.3.4 I/O设备16
1.3.5 总线18
1.3.6 启动计算机19
1.4 操作系统大观园20
1.4.1 大型机操作系统20
1.4.2 服务器操作系统20
1.4.3 多处理器操作系统20
1.4.4 个人计算机操作系统20
1.4.5 掌上计算机操作系统21
1.4.6 嵌入式操作系统21
1.4.7 传感器节点操作系统21
1.4.8 实时操作系统21
1.4.9 智能卡操作系统21
1.5 操作系统概念22
1.5.1 进程22
1.5.2 地址空间23
1.5.3 文件23
1.5.4 输入/输出25
1.5.5 保护25
1.5.6 shell25
1.5.7 个体重复系统发育26
1.6 系统调用28
1.6.1 用于进程管理的系统调用31
1.6.2 用于文件管理的系统调用32
1.6.3 用于目录管理的系统调用32
1.6.4 各种系统调用34
1.6.5 Windows Win32 API34
1.7 操作系统结构35
1.7.1 单体系统36
1.7.2 层次式系统36
1.7.3 微内核37
1.7.4 客户端–服务器模式38
1.7.5 虚拟机39
1.7.6 外核41
1.8 依靠C的世界41
1.8.1 C语言41
1.8.2 头文件41
1.8.3 大型编程项目43
1.8.4 运行模型43
1.9 有关操作系统的研究44
1.10 本书其他部分概要45
1.11 公制单位45
1.12 小结46
习题46
第2章 进程与线程48
2.1 进程48
2.1.1 进程模型48
2.1.2 进程的创建49
2.1.3 进程的终止51
2.1.4 进程的层次结构51
2.1.5 进程的状态51
2.1.6 进程的实现53
2.1.7 多道程序设计模型54
2.2 线程54
2.2.1 线程的使用54
2.2.2 经典的线程模型57
2.2.3 POSIX线程60
2.2.4 在用户空间中实现线程60
2.2.5 在内核中实现线程63
2.2.6 混合实现63
2.2.7 调度程序激活机制64
2.2.8 弹出式线程64
2.2.9 使单线程代码多线程化65
2.3 进程间通信67
2.3.1 竞争条件67
2.3.2 临界区68
2.3.3 忙等待的互斥68
2.3.4 睡眠与唤醒71
2.3.5 信号量73
2.3.6 互斥量74
2.3.7 管程78
2.3.8 消息传递81
2.3.9 屏障82
2.3.10 避免锁:读–复制–更新83
2.4 调度84
2.4.1 调度简介84
2.4.2 批处理系统中的调度88
2.4.3 交互式系统中的调度89
2.4.4 实时系统中的调度92
2.4.5 策略和机制93
2.4.6 线程调度93
2.5 经典的IPC问题94
2.5.1 哲学家就餐问题94
2.5.2 读者–写者问题96
2.6 有关进程与线程的研究97
2.7 小结97
习题98
第3章 内存管理102
3.1 无存储器抽象102
3.2 一种存储器抽象:地址空间104
3.2.1 地址空间的概念104
3.2.2 交换技术106
3.2.3 空闲内存管理107
3.3 虚拟内存109
3.3.1 分页110
3.3.2 页表112
3.3.3 加速分页过程112
3.3.4 针对大内存的页表114
3.4 页面置换算法117
3.4.1 最优页面置换算法117
3.4.2 最近未使用页面置换算法118
3.4.3 先进先出页面置换算法118
3.4.4 第二次机会页面置换算法118
3.4.5 时钟页面置换算法119
3.4.6 最近最少使用页面置换算法119
3.4.7 用软件模拟LRU120
3.4.8 工作集页面置换算法121
3.4.9 工作集时钟页面置换算法123
3.4.10 页面置换算法小结124
3.5 分页系统中的设计问题124
3.5.1 局部分配策略与全局分配策略124
3.5.2 负载控制126
3.5.3 页面大小126
3.5.4 分离的指令空间和数据空间127
3.5.5 共享页面128
3.5.6 共享库128
3.5.7 内存映射文件130
3.5.8 清除策略130
3.5.9 虚拟内存接口130
3.6 有关实现的问题131
3.6.1 与分页有关的工作131
3.6.2 缺页中断处理131
3.6.3 指令备份132
3.6.4 锁定内存中的页面132
3.6.5 后备存储133
3.6.6 策略和机制的分离134
3.7 分段134
3.7.1 纯分段的实现136
3.7.2 分段和分页结合:MULTICS136
3.7.3 分段和分页结合:Intel x86138
3.8 有关内存管理的研究141
3.9 小结141
习题142
第4章 文件系统147
4.1 文件148
4.1.1 文件命名148
4.1.2 文件结构149
4.1.3 文件类型149
4.1.4 文件访问151
4.1.5 文件属性151
4.1.6 文件操作152
4.1.7 使用文件系统调用的一个示例程序152
4.2 目录154
4.2.1 一级目录系统154
4.2.2 层次目录系统154
4.2.3 路径名154
4.2.4 目录操作156
4.3 文件系统的实现157
4.3.1 文件系统布局157
4.3.2 文件的实现157
4.3.3 目录的实现160
4.3.4 共享文件162
4.3.5 日志结构文件系统163
4.3.6 日志文件系统164
4.3.7 虚拟文件系统165
4.4 文件系统管理和优化167
4.4.1 磁盘空间管理167
4.4.2 文件系统备份171
4.4.3 文件系统的一致性174
前言/序言
本书的第4版与第3版有很大的不同。因为操作系统并非一成不变,所以书中随处可见许多为介绍新内容而做的细小改动。我们删除了有关多媒体操作系统的章节,主要是为了给新内容腾出空间,同时也避免此书的篇幅变得不可控。还删除了有关Windows Vista的章节,这是因为Vista的表现并没有达到微软公司的预期。同样被删除的还有Symbian章节,因为Symbian已不再被广泛使用。我们用Windows 8替换了Vista的内容,用Android替换了Symbian的内容。此外,我们还增加了关于虚拟化和云的章节。以下是有关各章节更改的概要。
第1章的很多地方都进行了大量的修改和更新,除增加了移动计算外,没有增加或删减主要章节。
第2章在删除一些过时内容的同时也增加了一些新内容。例如,增加了futex同步原语,还增加了一节介绍怎样通过读–复制–更新(Read-Copy-Update)的方式来避免锁定。
第3章更关注现代的硬件部件,而减少了对段和MULTICS的介绍。
第4章删除了有关CD-ROM的内容,因为它们已不常见。替代它们的是更加现代的解决方案(比如闪存盘)。不仅如此,我们还在讨论RAID时添加了6级RAID的内容。
第5章的内容做了很多改动,CRT和CD-ROM等过时设备的介绍被删掉了,同时加入了触摸屏等新技术。
第6章的内容基本没有改变,有关死锁的主题基本上是稳定的,并没有新的成果。
第7章是全新的,涵盖虚拟化和云等重要内容,并加入了一节有关VMware的内容作为案例。
第8章是对之前讨论的多处理机系统的更新。如今我们更加强调多核与众核系统,因为它们在过去的几年中变得愈发重要。高速缓存一致性近年来也已经成为一个重要问题,这里将会有所涉及。
第9章进行了大量修改和重新组织,增加了对缺陷代码、恶意软件进行探查和防御的新内容。对于空指针引用和缓冲区溢出等攻击行为提出了更详细的应对方法,并从攻击路径入手,详细论述了包含金丝雀(canary)保护、不执行(NX)位以及地址空间随机化在内的防御机制。
第10章有很大改变,除了对UNIX和Linux的内容进行更新外,还新增了有关Android操作系统的详细章节,该系统如今已广泛用于智能手机与平板电脑。
第11章在本书第3版中主要针对Windows Vista,然而这些内容已经被Windows 8尤其是Windows 8.1取代,本章介绍了有关Windows的最新内容。
第12章是对本书前一版本的第13章的修订。
第13章是一份全新的推荐阅读目录。此外,我们也对参考文献进行了更新,收录了本书第3版推出后发表的233篇新论文。
此外,每章末的相关研究部分完全重写了,以反映最新的操作系统研究成果。并且,所有章节都增加了新的习题。
本书提供了大量的教学辅助工具。针对教师的教学建议可以在如下网站上得到:www.pearsonhighered.com/tanenbaum。网站中包含幻灯片、学习操作系统的软件工具、学生实验、模拟程序以及许多有关操作系统课程的材料。
有很多人参与了本书第4版的编写工作。我要介绍的第一位同时也是最重要的一位,是来自阿姆斯特丹自由大学的Herbert Bos教授,他是本书的合著者。他是一名全方位的系统专家,尤其是在安全和UNIX方面,有他的帮助真是太好了。他编写了除以下所述内容之外的绝大部分新内容。
我们的编辑Tracy Johnson出色地完成了她的工作,像以往一样,她将所有零碎的东西整理在一起,解决了所有的麻烦,使得这项工作能够按时完成。我们同样为拥有一位长期合作的制作编辑而感到幸运,那就是Camille Trentacoste。多亏她在诸多方面的技巧,为我们节省了很多时间。我们很高兴在许多年之后又能有她的加入。Carole Snyder在本书编写过程中出色地完成了协调工作。
第7章中有关VMware的内容(7.12节)是由Edouard Bugnion完成的,他来自洛桑联邦理工学院(EPFL)。Edouard是VMware公司的创始人之一,他比其他人更了解VMware,我们感谢他所提供的巨大支持。
佐治亚理工学院的Ada Gavrilovska 是Linux内核专家,她帮忙更新了第10章的内容。第10章中有关Android的内容是由来自Google的Android系统核心工程师Dianne Hackborn编写的。Android现在是智能手机的主要操作系统,所以我们非常感谢Dianne所提供的帮助。如今第10章篇幅较长并且十分详细,UNIX、Linux和Android的粉丝们都能从中学到很多。值得一提的是,本书中最长并且最有技术含量的章节是由两位女士所写的,而我们只是完成了其余容易的工作。
.  然而,我们并没有忽略Windows。Microsoft的Dave Probert更新了上版中第11章的内容,这一版将详细讲解Windows 8.1。Dave拥有完备的Windows知识及足够的远见,可以辨别出微软正确的地方和错误的地方。Windows的粉丝们肯定会喜欢这一章。
这本书由于所有这些专家所做出的贡献而变得更好,所以再一次感谢他们的宝贵帮助。
同样令我们感到幸运的是,我们拥有那么多阅读过原稿并提出建议的评论者,他们是Trudy Levine、Shivakant Mishra、Krishna Sivalingam以及Ken Wong。

📑 章节目录

  1. 引论:操作系统概述与历史
  2. 进程与线程:进程模型、线程实现与调度
  3. 内存管理:地址空间、虚拟内存与页面置换
  4. 文件系统:文件、目录、实现与管理
  5. 输入/输出:I/O硬件原理、软件层次与死锁
  6. 死锁:资源分配、检测与避免
  7. 虚拟化和云:虚拟机、容器与云计算基础
  8. 多处理机系统:多处理器架构、同步与调度
  9. 安全:系统安全威胁、加密与防御机制
  10. UNIX、Linux和Android实例研究
  11. Windows实例研究
  12. 操作系统设计总结与未来展望