本书从教学的角度出发,全面、系统地讲述了嵌入式系统及各组成部分的基本知识、技术原理和设计方法,使读者可以了解嵌入式系统的结构组成,掌握嵌入式系统开发的思路方法,具备嵌入式系统开发的初步分析问题和解决问题的能力。本书上篇是原理部分,内容包括:嵌入式系统概述,ARM处理器和指令集,嵌入式Linux操作系统,嵌入式软件编程技术,开发环境和调试技术,Boot Loader技术,ARMLinux内核,文件系统,设备驱动程序设计基础,字符设备驱动程序设计,块设备驱动程序设计,网络设备驱动程序开发和嵌入式GUI及应用程序设计;本书下篇是实验部分,内容包括: 实验基础,开发环境建立,内核和模块构建,文件系统
操作系统――精髓与设计原理(第九版)
✍ Scribed by William Stallings
- Publisher
- 电子工业出版社
- Year
- 2020
- Tongue
- Chinese
- Leaves
- 478
- Series
- 国外计算机科学教材系列
- Edition
- 9
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
本书既是关于操作系统概念、结构和机制的教材,目的是尽可能清楚和全面地展示现代操作系统的本质和特点;也是讲解操作系统的经典教材,不仅系统地讲述了操作系统的基本概念、原理和方法,而且以当代最流行的操作系统 Windows10、UNIX、Android、Linux 为例,展现了当代操作系统的本质和特点。全书共分背景知识、进程、内存、调度、输入输出和文件、嵌入式系统六部分,内容包括计算机系统概述、操作系统概述、进程描述和控制、线程、并发性:互斥和同步、并发:死锁和饥饿、内存管理、虚拟内存、单处理器调度、多处理器和实时调度、IO 管理和磁盘调度、文件管理、嵌入式操作系统、虚拟机、计算机安全技术、云操作系统和 IoT 操作系统等。此外,本书配套网站提供了及时、生动的材料。
✦ Table of Contents
第一部分 背景知识
第 1 章 计算机系统概述 2
1.1 基本构成 2
1.2 微处理器的发展 3
1.3 指令的执行 4
1.4 中断 6
1.4.1 中断和指令周期 7
1.4.2 中断处理 8
1.4.3 多个中断 10
1.5 存储器的层次结构 11
1.6 高速缓存 13
1.6.1 动机 13
1.6.2 高速缓存原理 13
1.6.3 高速缓存设计 15
1.7 直接内存存取 15
1.8 多处理器和多核计算机组织结构 16
1.8.1 对称多处理器 16
1.8.2 多核计算机 17
1.9 关键术语、复习题和习题 19
1.9.1 关键术语 19
1.9.2 复习题 19
1.9.3 习题 19
附录 1A 两级存储器的性能特征 21
第 2 章 操作系统概述 26
2.1 操作系统的目标和功能 26
2.1.1 作为用户/计算机接口的操作系统 26
2.1.2 作为资源管理器的操作系统 27
2.1.3 操作系统的易扩展性 28
2.2 操作系统的演化 29
2.2.1 串行处理 29
2.2.2 简单批处理系统 29
2.2.3 多道批处理系统 31
2.2.4 分时系统 33
2.3 主要成就 34
2.3.1 进程 34
2.3.2 内存管理 36
2.3.3 信息保护和安全 37
2.3.4 调度和资源管理 38
2.4 现代操作系统的特征 39
2.5 容错性 40
2.5.1 基本概念 41
2.5.2 错误 41
2.5.3 操作系统机制 42
2.6 多处理器和多核操作系统设计考虑因素 42
2.6.1 对称多处理器操作系统设计考虑因素 42
2.6.2 多核操作系统设计考虑因素 43
2.7 微软 Windows 系统简介 44
2.7.1 背景 44
2.7.2 体系结构 44
2.7.3 客户-服务器模型 46
2.7.4 线程和 SMP 47
2.7.5 Windows 对象 47
2.8 传统的 UNIX 系统 48
2.8.1 历史 48
2.8.2 描述 49
2.9 现代 UNIX 系统 50
2.9.1 System V Release 4(SVR4) 51
2.9.2 BSD 51
2.9.3 Solaris 11 51
2.10 Linux 操作系统 51
2.10.1 历史 51
2.10.2 模块结构 52
2.10.3 内核组件 53
2.11 Android 55
2.11.1 Android 软件体系结构 56
2.11.2 Android 运行时 57
2.11.3 Android 系统体系结构 59
2.11.4 活动 60
2.11.5 电源管理 60
2.12 关键术语、复习题和习题 60
2.12.1 关键术语 60
2.12.2 复习题 61
2.12.3 习题 61
第二部分 进程
第 3 章 进程描述和控制 64
3.1 什么是进程 64
3.1.1 背景 64
3.1.2 进程和进程控制块 65
3.2 进程状态 66
3.2.1 两状态进程模型 67
3.2.2 进程的创建和终止 68
3.2.3 五状态模型 69
3.2.4 被挂起的进程 71
3.3 进程描述 74
3.3.1 操作系统的控制结构 75
3.3.2 进程控制结构 75
3.4 进程控制 79
3.4.1 执行模式 79
3.4.2 进程创建 80
3.4.3 进程切换 81
3.5 操作系统的执行 82
3.5.1 无进程内核 82
3.5.2 在用户进程内运行 83
3.5.3 基于进程的操作系统 84
3.6 UNIX SVR4 进程管理 84
3.6.1 进程状态 84
3.6.2 进程描述 85
3.6.3 进程控制 87
3.7 小结 87
3.8 关键术语、复习题和习题 88
3.8.1 关键术语 88
3.8.2 复习题 88
3.8.3 习题 88
第 4 章 线程 91
4.1 进程和线程 91
4.1.1 多线程 91
4.1.2 线程的功能 93
4.2 线程分类 95
4.2.1 用户级和内核级线程 95
4.2.2 其他方案 97
4.3 多核和多线程 99
4.3.1 多核系统上的软件性能 99
4.3.2 应用示例:Valve 游戏软件 100
4.4 Windows 的进程和线程管理 101
4.4.1 后台任务管理和应用生命周期 102
4.4.2 Windows 进程 103
4.4.3 进程对象和线程对象 103
4.4.4 多线程 104
4.4.5 线程状态 104
4.4.6 对操作系统子系统的支持 105
4.5 Solaris 的线程和 SMP 管理 106
4.5.1 多线程体系结构 106
4.5.2 动机 106
4.5.3 进程结构 107
4.5.4 线程的执行 108
4.5.5 把中断当作线程 108
4.6 Linux 的进程和线程管理 109
4.6.1 Linux 任务 109
4.6.2 Linux 线程 110
4.6.3 Linux 命名空间 111
4.7 Android 的进程和线程管理 112
4.7.1 安卓应用 112
4.7.2 活动 113
4.7.3 进程和线程 114
4.8 Mac OS X 的 GCD 技术 114
4.9 小结 116
4.10 关键术语、复习题和习题 116
4.10.1 关键术语 116
4.10.2 复习题 116
4.10.3 习题 117
第 5 章 并发:互斥和同步 121
5.1 互斥:软件解决方法 122
5.1.1 Dekker 算法 122
5.1.2 Peterson 算法 125
5.2 并发的原理 126
5.2.1 一个简单的例子 127
5.2.2 竞争条件 128
5.2.3 操作系统关注的问题 128
5.2.4 进程的交互 128
5.2.5 互斥的要求 131
5.3 互斥:硬件的支持 131
5.3.1 中断禁用 131
5.3.2 专用机器指令 132
5.4 信号量 133
5.4.1 互斥 136
5.4.2 生产者/消费者问题 137
5.4.3 信号量的实现 142
5.5 管程 142
5.5.1 使用信号的管程 142
5.5.2 使用通知和广播的管程 145
5.6 消息传递 146
5.6.1 同步 147
5.6.2 寻址 148
5.6.3 消息格式 149
5.6.4 排队原则 149
5.6.5 互斥 149
5.7 读者/写者问题 150
5.7.1 读者优先 151
5.7.2 写者优先 152
5.8 小结 154
5.9 关键术语、复习题和习题 154
5.9.1 关键术语 154
5.9.2 复习题 154
5.9.3 习题 155
第 6 章 并发:死锁和饥饿 164
6.1 死锁原理 164
6.1.1 可重用资源 167
6.1.2 可消耗资源 167
6.1.3 资源分配图 168
6.1.4 死锁的条件 169
6.2 死锁预防 169
6.2.1 互斥 170
6.2.2 占有且等待 170
6.2.3 不可抢占 170
6.2.4 循环等待 170
6.3 死锁避免 170
6.3.1 进程启动拒绝 171
6.3.2 资源分配拒绝 171
6.4 死锁检测 174
6.4.1 死锁检测算法 174
6.4.2 恢复 175
6.5 一种综合的死锁策略 175
6.6 哲学家就餐问题 176
6.6.1 基于信号量的解决方案 177
6.6.2 基于管程的解决方案 178
6.7 UNIX 并发机制 178
6.7.1 管道 179
6.7.2 消息 179
6.7.3 共享内存 179
6.7.4 信号量 179
6.7.5 信号 180
6.8 Linux 内核并发机制 180
6.8.1 原子操作 181
6.8.2 自旋锁 182
6.8.3 信号量 183
6.8.4 屏障 184
6.9 Solaris 线程同步原语 185
6.9.1 互斥锁 186
6.9.2 信号量 186
6.9.3 多读者/单写者锁 186
6.9.4 条件变量 187
6.10 Windows 的并发机制 187
6.10.1 等待函数 187
6.10.2 分派器对象 187
6.10.3 临界区 188
6.10.4 轻量级读写锁和条件变量 188
6.10.5 锁无关同步机制 189
6.11 Android 进程间通信 189
6.12 小结 190
6.13 关键术语、复习题和习题 190
6.13.1 关键术语 190
6.13.2 复习题 190
6.13.3 习题 191
第三部分 内存
第 7 章 内存管理 196
7.1 内存管理的需求 196
7.1.1 重定位 196
7.1.2 保护 197
7.1.3 共享 197
7.1.4 逻辑组织 197
7.1.5 物理组织 198
7.2 内存分区 198
7.2.1 固定分区 198
7.2.2 动态分区 200
7.2.3 伙伴系统 202
7.2.4 重定位 203
7.3 分页 204
7.4 分段 206
7.5 小结 207
7.6 关键术语、复习题和习题 207
7.6.1 关键术语 207
7.6.2 复习题 208
7.6.3 习题 208
附录 7A 加载和链接 210
第 8 章 虚拟内存 214
8.1 硬件和控制结构 214
8.1.1 局部性和虚拟内存 215
8.1.2 分页 216
8.1.3 分段 222
8.1.4 段页式 223
8.1.5 保护和共享 224
8.2 操作系统软件 224
8.2.1 读取策略 225
8.2.2 放置策略 226
8.2.3 置换策略 226
8.2.4 驻留集管理 230
8.2.5 清除策略 234
8.2.6 加载控制 234
8.3 UNIX 和 Solaris 内存管理 235
8.3.1 分页系统 235
8.3.2 内核内存分配器 237
8.4 Linux 内存管理 238
8.4.1 虚拟内存 239
8.4.2 内核内存分配 240
8.5 Windows 内存管理 240
8.5.1 Windows 虚拟地址映射 241
8.5.2 Windows 分页 241
8.5.3 Windows 交换 242
8.6 Android 内存管理 242
8.7 小结 242
8.8 关键术语、复习题和习题 243
8.8.1 关键术语 243
8.8.2 复习题 243
8.8.3 习题 243
第四部分 调度
第 9 章 单处理器调度 248
9.1 处理器调度的类型 248
9.1.1 长程调度 249
9.1.2 中程调度 250
9.1.3 短程调度 250
9.2 调度算法 250
9.2.1 短程调度规则 250
9.2.2 优先级的使用 251
9.2.3 选择调度策略 252
9.2.4 性能比较 258
9.2.5 公平共享调度 261
9.3 传统的 UNIX 调度 263
9.4 小结 264
9.5 关键术语、复习题和习题 264
9.5.1 关键术语 264
9.5.2 复习题 264
9.5.3 习题 265
第 10 章 多处理器、多核和实时调度 268
10.1 多处理器和多核调度 268
10.1.1 粒度 268
10.1.2 设计问题 269
10.1.3 进程调度 270
10.1.4 线程调度 271
10.1.5 多核线程调度 275
10.2 实时调度 276
10.2.1 背景 276
10.2.2 实时操作系统的特点 276
10.2.3 实时调度 278
10.2.4 限期调度 279
10.2.5 速率单调调度 282
10.2.6 优先级反转 284
10.3 Linux 调度 285
10.3.1 实时调度 285
10.3.2 非实时调度 286
10.4 UNIX SVR4 调度 287
10.5 FreeBSD 调度程序 288
10.5.1 优先级 288
10.5.2 对称多处理器与多核支持 289
10.6 Windows 调度 290
10.6.1 进程和线程优先级 290
10.6.2 多处理器调度 291
10.7 小结 291
10.8 关键术语、复习题和习题 292
10.8.1 关键术语 292
10.8.2 复习题 292
10.8.3 习题 292
第五部分 输入/输出和文件
第 11 章 I/O 管理和磁盘调度 296
11.1 I/O 设备 296
11.2 I/O 功能的组织 297
11.2.1 I/O 功能的发展 297
11.2.2 直接内存访问 298
11.3 操作系统设计问题 299
11.3.1 设计目标 299
11.3.2 I/O 功能的逻辑结构 300
11.4 I/O 缓冲 301
11.4.1 单缓冲 301
11.4.2 双缓冲 302
11.4.3 循环缓冲 302
11.4.4 缓冲的作用 302
11.5 磁盘调度 303
11.5.1 磁盘性能参数 303
11.5.2 磁盘调度策略 304
11.6 RAID 307
11.6.1 RAID 级别 0 310
11.6.2 RAID 级别 1 310
11.6.3 RAID 级别 2 311
11.6.4 RAID 级别 3 311
11.6.5 RAID 级别 4 312
11.6.6 RAID 级别 5 312
11.6.7 RAID 级别 6 312
11.7 磁盘高速缓存 313
11.7.1 设计考虑因素 313
11.7.2 性能考虑因素 314
11.8 UNIX SVR 4 I/O 315
11.8.1 缓冲区高速缓冲 315
11.8.2 字符队列 316
11.8.3 无缓冲 I/O 316
11.8.4 UNIX 设备 316
11.9 Linux I/O 317
11.9.1 磁盘调度 317
11.9.2 Linux 页面缓存 319
11.10 Windows I/O 320
11.10.1 基本 I/O 机制 320
11.10.2 异步 I/O 和同步 I/O 320
11.10.3 软件 RAID 321
11.10.4 卷影复制 321
11.10.5 卷加密 321
11.11 小结 321
11.12 关键术语、复习题和习题 322
11.12.1 关键术语 322
11.12.2 复习题 322
11.12.3 习题 322
第 12 章 文件管理 324
12.1 概述 324
12.1.1 文件和文件系统 324
12.1.2 文件结构 325
12.1.3 文件管理系统 326
12.2 文件组织和访问 327
12.2.1 堆 328
12.2.2 顺序文件 328
12.2.3 索引顺序文件 329
12.2.4 索引文件 329
12.2.5 直接文件或散列文件 330
12.3 B 树 330
12.4 文件目录 332
12.4.1 内容 332
12.4.2 结构 333
12.4.3 命名 334
12.5 文件共享 335
12.5.1 访问权限 335
12.5.2 同时访问 335
12.6 记录组块 336
12.7 辅存管理 337
12.7.1 文件分配 337
12.7.2 空闲空间管理 339
12.7.3 卷 341
12.7.4 可靠性 341
12.8 UNIX 文件管理 341
12.8.1 索引节点 342
12.8.2 文件分配 343
12.8.3 目录 344
12.8.4 卷结构 344
12.9 Linux 虚拟文件系统 344
12.9.1 超级块对象 345
12.9.2 索引节点对象 346
12.9.3 目录项对象 346
12.9.4 文件对象 346
12.9.5 缓存 346
12.10 Windows 文件系统 347
12.10.1 NTFS 的重要特征 347
12.10.2 NTFS 卷和文件结构 347
12.10.3 可恢复性 349
12.11 Android 文件系统 350
12.11.1 文件系统 350
12.11.2 SQLite 350
12.12 小结 351
12.13 关键术语、复习题和习题 351
12.13.1 关键术语 351
12.13.2 复习题 351
12.13.3 习题 352
第六部分 嵌入式系统
第 13 章 嵌入式操作系统 354
13.1 嵌入式系统 354
13.1.1 嵌入式系统概念 354
13.1.2 通用处理器和专用处理器 355
13.1.3 微处理器 355
13.1.4 微控制器 356
13.1.5 深度嵌入式系统 357
13.2 嵌入式操作系统的特性 357
13.2.1 主环境和目标环境 358
13.2.2 开发方法 359
13.2.3 适配现有的操作系统 359
13.2.4 根据目标建立的嵌入式操作系统 359
13.3 嵌入式 Linux 360
13.3.1 嵌入式 Linux 系统的特性 360
13.3.2 嵌入式 Linux 文件系统 361
13.3.3 嵌入式 Linux 的优势 361
13.3.4 μClinux 362
13.3.5 Android 363
13.4 TinyOS 364
13.4.1 无线传感器网络 364
13.4.2 TinyOS 的目标 365
13.4.3 TinyOS 的组件 365
13.4.4 TinyOS 的调度程序 367
13.4.5 配置示例 367
13.4.6 TinyOS 的资源接口 369
13.5 关键术语、复习题和习题 370
13.5.1 关键术语 370
13.5.2 复习题 370
13.5.3 习题 370
第 14 章 虚拟机 372
14.1 虚拟机概念 372
14.2 虚拟机管理程序 374
14.2.1 虚拟机管理程序 374
14.2.2 半虚拟化 375
14.2.3 硬件辅助虚拟化 376
14.2.4 虚拟设备 376
14.3 容器虚拟化 377
14.3.1 内核控制组 377
14.3.2 容器的概念 377
14.3.3 容器文件系统 379
14.3.4 微服务 380
14.3.5 Docker 380
14.4 处理器问题 381
14.5 内存管理 382
14.6 输入/输出管理 383
14.7 VMware ESXi 384
14.8 微软 Hyper-V 与 Xen 系列 385
14.9 Java 虚拟机 386
14.10 Linux VServer 虚拟机架构 386
14.10.1 架构 387
14.10.2 进程调度 387
14.11 小结 388
14.12 关键术语、复习题和习题 388
14.12.1 关键术语 388
14.12.2 复习题 389
14.12.3 习题 389
第 15 章 操作系统安全技术 390
15.1 入侵者与恶意软件 390
15.1.1 系统访问威胁 390
15.1.2 应对措施 391
15.2 缓冲区溢出 392
15.2.1 缓冲区溢出攻击 392
15.2.2 编译时防御 394
15.2.3 运行时防御 396
15.3 访问控制 397
15.3.1 文件系统访问控制 397
15.3.2 访问控制策略 399
15.4 UNIX 访问控制 402
15.4.1 传统 UNIX 文件访问控制 402
15.4.2 UNIX 中的访问控制列表 403
15.5 操作系统加固 404
15.5.1 操作系统安装:初始安装与后续更新 404
15.5.2 删除不必要的服务、应用与协议 405
15.5.3 对用户、组和认证过程进行配置 405
15.5.4 对资源控制进行配置 405
15.5.5 安装额外的安全控制工具 406
15.5.6 对系统安全进行测试 406
15.6 安全性维护 406
15.6.1 记录日志 406
15.6.2 数据备份和存档 407
15.7 Windows 安全性 407
15.7.1 访问控制方案 407
15.7.2 访问令牌 408
15.7.3 安全描述符 408
15.8 小结 410
15.9 关键术语、复习题和习题 411
15.9.1 关键术语 411
15.9.2 复习题 411
15.9.3 习题 411
第 16 章 云与物联网操作系统 413
16.1 云计算 413
16.1.1 云计算要素 413
16.1.2 云服务模型 414
16.1.3 云部署模型 415
16.1.4 云计算参考架构 416
16.2 云操作系统 418
16.2.1 基础设施即服务 419
16.2.2 云操作系统的需求 420
16.2.3 云操作系统的基本架构 420
16.2.4 OpenStack 424
16.3 物联网 428
16.3.1 物联网中的物 429
16.3.2 升级换代 429
16.3.3 物联网支持设备的组件 429
16.3.4 物联网和云环境 429
16.4 物联网操作系统 431
16.4.1 受限设备 431
16.4.2 物联网操作系统的要求 432
16.4.3 物联网操作系统架构 433
16.4.4 RIOT 434
16.5 关键术语和复习题 435
16.5.1 关键术语 435
16.5.2 复习题 436
附录 A 并发主题 437
附录 B 编程和操作系统项目 446
参考文献 450
📜 SIMILAR VOLUMES
书签已装载, 书签制作方法请找 [email protected] 完全免费 封面 书名 版权 前言 目录 第0章 读者指南 0.1 本书概述 0.2 读者和教师的学习路线图 0.3 Internet和Web资源 第一部分 背景 第1章 计算机系统概述 1.1 基本构成 1.2 处理器寄存器 1.2.1 用户可见寄存器 1.2.2 控制和状态寄存器 1.3 指令的执行 1.3.1 取指令和执行指令 1.3.2 I/O函数 1.4 中断 1.4.1 中断和指令周期 1.4.2 中断处理 1.4.3 多个中断 1.4.4 多道程序设计 1.5 存储器的层次结构 1
本书以理论结合实践,注重应用为原则,全面、系统地讲述操作系统的基本原理,并将其与Linux的实现和应用技术紧密结合。全书内容分为3部分:第1部分为基础篇,包括Linux系统概述、Linux系统的操作基础、vi文本编辑器的使用以及Linux C编程基础;第2部分为原理篇,介绍操作系统的基本原理和Linux内核实现技术,包括进程管理、存储管理、文件管理、设备管理和操作系统接口;第3部分为应用篇,包括Shell程序设计、Linux系统管理和网络与通信应用。
本书是一本为高等学校师生编写的教材,讲述了当代操作系统的基本原理,全书由7章组成,详细介绍了进程的概念、进程间通信、线程、信号量、消息传递、处理机调度、存储管理、输入/输出设备管理、文件系统等。考虑到实验教学的要求,本书安排了Linux操作系统的一些实例,还配有丰富的习题以及习题答案。本书可作为高等学校计算机技术、软件工程、网络工程专业学生的教材,也可供相关技术人员参考。
本书根据作者多年的实际教学经验,在内容选择、理论深度等方面进行了深入的分析和研讨,使学生易于理解,注重对学生的启发。在本书编写过程中,力求做到准确性、系统性、通俗性、实用性,结构清晰,注重基础理论的阐述,强调理论与实践的结合。每一章的内容从一个问题开始,让学生带着问题开始知识的学习,促进学生的思考和参与。 全书共分为9章,主要内容包括: 操作系统引论、进程与线程、进程并发控制、内存管理、页式和段式内存管理、I/O管理、文件管理、死锁、多处理机系统介绍。本书可作为高等院校计算机相关专业的教材,也可供从事计算机工作的科技人员进行参考,对报考研究生的学生也具有一定的参考价值。