本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
书名: | 操作系统概念(原书第9版)|8049683 |
图书定价: | 99元 |
图书作者: | (美)亚伯拉罕·西尔伯沙茨(Abraham Silberschatz);(美)彼得·B.高尔文(Peter B. Galvin);(美)格雷格·加涅(Greg Gagne) |
出版社: | 机械工业出版社 |
出版日期: | 2018/7/1 0:00:00 |
ISBN号: | 9787111604365 |
开本: | 16开 |
页数: | 0 |
版次: | 1-1 |
作者简介 |
[美] 亚伯拉罕·西尔伯沙茨(Abraham Silberschatz) 彼得·B. 高尔文(Peter B. Galvin) 格雷格·加涅(Greg Gagne) 著:---作者简介--- 亚伯拉罕·西尔伯沙茨(Abraham Silberschatz) 著名计算机科学家,ACM、IEEE和AAAS会士。现任耶鲁大学计算机科学系教授,之前曾任贝尔实验室信息科学研究中心副主管。除本书外,他还是知名教材《数据库系统概念》的作者之一。 彼得·B. 高尔文(Peter B. Galvin) 现任Pluribus Networks首席解决方案架构师,之前曾任系统集成商Corporate Technologies的首席技术官,还曾在波士顿大学担任讲师。 格雷格·加涅(Greg Gagne) 威斯敏斯特学院计算机科学系主任,操作系统、计算机网络、并行编程和软件工程方面的资深专家。 ---译者简介--- 郑扣根,浙江大学计算机学院教授、博士生导师。1994年起于浙江大学任教至今,长期从事操作系统、计算理论、形式化方法、计算机网络等方面的教学和科研工作。 |
内容简介 |
本书是面向操作系统导论课程的经典书籍,从第1版至今被国内外众多高校选作教材。全书共六部分,不仅详细讲解了进程管理、内存管理、存储管理、保护与安全等概念,而且涵盖重要的理论结果和案例研究,并且给出了供读者深入学习的推荐读物。这一版新增了多核系统和移动计算的内容,每一章都融入了新的技术进展,并且更新了习题和编程项目。 本书既适合高等院校计算机相关专业的学生学习,也是专业技术人员的有益参考。 |
目录 |
出版者的话 译者序 前言 第一部分 概论 第1章导论 2 1.1操作系统的功能 2 1.1.1用户视角 2 1.1.2系统视角 3 1.1.3操作系统的定义 4 1.2计算机系统的组成 4 1.2.1计算机系统的运行 5 1.2.2存储结构 6 1.2.3I/O结构 8 1.3计算机系统的体系结构 9 1.3.1单处理器系统 9 1.3.2多处理器系统 10 1.3.3集群系统 12 1.4操作系统的结构 13 1.5操作系统的执行 14 1.5.1双重模式与多重模式的执行 15 1.5.2定时器 16 1.6进程管理 17 1.7内存管理 18 1.8存储管理 18 1.8.1文件系统管理 18 1.8.2大容量存储器管理 19 1.8.3高速缓存 19 1.8.4I/O系统 21 1.9保护与安全 21 1.10内核数据结构 22 1.10.1列表、堆栈及队列 22 1.10.2树 23 1.10.3哈希函数与哈希表 23 1.10.4位图 24 1.11计算环境 24 1.11.1传统计算 24 1.11.2移动计算 25 1.11.3分布计算 26 1.11.4客户机-服务器计算 26 1.11.5对等计算 27 1.11.6虚拟化 28 1.11.7云计算 29 1.11.8实时嵌入式系统 30 1.12开源操作系统 31 1.12.1历史 31 1.12.2Linux 31 1.12.3BSD UNIX 32 1.12.4Solaris 32 1.12.5用作学习的开源操作系统 33 1.13小结 33 习题 35 推荐读物 36 参考文献 36 第2章操作系统结构 38 2.1操作系统的服务 38 2.2用户与操作系统的界面 40 2.2.1命令解释程序 40 2.2.2图形用户界面 41 2.2.3界面的选择 42 2.3系统调用 43 2.4系统调用的类型 46 2.4.1进程控制 46 2.4.2文件管理 49 2.4.3设备管理 50 2.4.4信息维护 50 2.4.5通信 50 2.4.6保护 51 2.5系统程序 51 2.6操作系统的设计与实现 52 2.6.1设计目标 52 2.6.2机制与策略 53 2.6.3实现 53 2.7操作系统的结构 54 2.7.1简单结构 54 2.7.2分层方法 55 2.7.3微内核 56 2.7.4模块 57 2.7.5混合系统 58 2.8操作系统的调试 60 2.8.1故障分析 60 2.8.2性能优化 60 2.8.3DTrace 61 2.9操作系统的生成 63 2.10系统引导 64 2.11小结 64 习题 65 编程题 66 编程项目 66 推荐读物 69 参考文献 69 第二部分 进程管理 第3章 进程 72 3.1进程概念 72 3.1.1进程 72 3.1.2进程状态 73 3.1.3进程控制块 73 3.1.4线程 74 3.2进程调度 75 3.2.1调度队列 75 3.2.2调度程序 77 3.2.3上下文切换 78 3.3进程运行 79 3.3.1进程创建 79 3.3.2进程终止 82 3.4进程间通信 83 3.4.1共享内存系统 85 3.4.2消息传递系统 86 3.5IPC系统例子 89 3.5.1例子:POSIX共享内存 89 3.5.2例子:Mach 91 3.5.3例子:Windows 92 3.6客户机/服务器通信 93 3.6.1套接字 93 3.6.2远程过程调用 96 3.6.3管道 98 3.7小结 102 习题 103 编程题 105 编程项目 107 推荐读物 110 参考文献 110 第4章 多线程编程 112 4.1概述 112 4.1.1动机 112 4.1.2优点 113 4.2多核编程 114 4.2.1编程挑战 115 4.2.2并行类型 115 4.3多线程模型 116 4.3.1多对一模型 116 4.3.2一对一模型 116 4.3.3多对多模型 116 4.4线程库 117 4.4.1Pthreads 118 4.4.2Windows线程 119 4.4.3Java线程 121 4.5隐式多线程 122 4.5.1线程池 123 4.5.2OpenMP 124 4.5.3大中央调度 125 4.5.4其他方法 125 4.6多线程问题 125 4.6.1系统调用fork()和exec() 125 4.6.2信号处理 126 4.6.3线程撤销 127 4.6.4线程本地存储 128 4.6.5调度程序激活 128 4.7操作系统例子 129 4.7.1Windows线程 129 4.7.2Linux线程 130 4.8小结 131 习题 131 编程题 133 编程项目 134 推荐读物 136 参考文献 136 第5章 进程调度 138 5.1基本概念 138 5.1.1CPU-I/O执行周期 138 5.1.2CPU调度程序 139 5.1.3抢占调度 139 5.1.4调度程序 140 5.2调度准则 140 5.3调度算法 141 5.3.1先到先服务调度 141 5.3.2 *短作业优先调度 142 5.3.3优先级调度 144 5.3.4轮转调度 145 5.3.5多级队列调度 147 5.3.6多级反馈队列调度 148 5.4线程调度 149 5.4.1竞争范围 149 5.4.2Pthreads调度 149 5.5多处理器调度 151 5.5.1多处理器调度的方法 151 5.5.2处理器亲和性 151 5.5.3负载平衡 152 5.5.4多核处理器 152 5.6实时CPU调度 154 5.6.1 *小化延迟 154 5.6.2优先权调度 155 5.6.3单调速率调度 156 5.6.4 *早截止期限优先调度 157 5.6.5比例分享调度 158 5.6.6POSIX实时调度 158 5.7操作系统例子 160 5.7.1例子:Linux调度 160 5.7.2例子:Windows调度 162 5.7.3例子:Solaris调度 164 5.8算法评估 165 5.8.1确定性模型 166 5.8.2排队模型 167 5.8.3仿真 167 5.8.4实现 168 5.9小结 169 习题 170 推荐读物 172 参考文献 173 第6章 同步 175 6.1背景 175 6.2临界区问题 177 6.3Peterson解决方案 178 6.4硬件同步 179 6.5互斥锁 181 6.6信号量 181 6.6.1信号量的使用 182 6.6.2信号量的实现 182 6.6.3死锁与饥饿 184 6.6.4优先级的反转 184 6.7经典同步问题 185 6.7.1有界缓冲问题 185 6.7.2读者-作者问题 186 6.7.3哲学家就餐问题 187 6.8管程 188 6.8.1使用方法 189 6.8.2哲学家就餐问题的管程解决方案 190 6.8.3采用信号量的管程实现 191 6.8.4管程内的进程重启 192 6.9同步例子 193 6.9.1Windows同步 193 6.9.2Linux同步 194 6.9.3Solaris同步 195 6.9.4Pthreads同步 196 6.10替代方法 197 6.10.1事务内存 198 6.10.2OpenMP 199 6.10.3函数式编程语言 199 6.11小结 200 习题 200 编程题 204 编程项目 205 推荐读物 209 参考文献 210 第7章 死锁 212 7.1系统模型 212 7.2死锁特征 213 7.2.1必要条件 214 7.2.2资源分配图 215 7.3死锁处理方法 216 7.4死锁预防 217 7.4.1互斥 217 7.4.2持有且等待 217 7.4.3无抢占 218 7.4.4循环等待 218 7.5死锁避免 220 7.5.1安全状态 220 7.5.2资源分配图算法 221 7.5.3银行家算法 222 7.6死锁检测 224 7.6.1每种资源类型只有单个实例 224 7.6.2每种资源类型可有多个实例 225 7.6.3应用检测算法 226 7.7死锁恢复 227 7.7.1进程终止 227 7.7.2资源抢占 227 7.8小结 228 习题 228 编程题 230 编程项目 230 推荐读物 231 参考文献 232 第三部分 内存管理 第8章 内存管理策略 234 8.1背景 234 8.1.1基本硬件 234 8.1.2地址绑定 236 8.1.3逻辑地址空间与物理地址空间 236 8.1.4动态加载 237 8.1.5动态链接与共享库 238 8.2交换 238 8.2.1标准交换 238 8.2.2移动系统的交换 239 8.3连续内存分配 240 8.3.1内存保护 240 8.3.2内存分配 241 8.3.3碎片 242 8.4分段 242 8.4.1基本方法 243 8.4.2分段硬件 243 8.5分页 244 8.5.1基本方法 245 8.5.2硬件支持 247 8.5.3保护 250 8.5.4共享页 251 8.6页表结构 252 8.6.1分层分页 252 8.6.2哈希页表 254 8.6.3倒置页表 254 8.6.4Oracle SPARC Solaris 255 8.7例子:Intel 32位与64位体系结构 256 8.7.1IA-32架构 256 8.7.2x86-64 258 8.8例子:ARM架构 259 8.9小结 259 习题 260 编程题 262 推荐读物 262 参考文献 263 第9章 虚拟内存管理 264 9.1背景 264 9.2请求调页 266 9.2.1基本概念 266 9.2.2请求调页的性能 269 9.3写时复制 271 9.4页面置换 272 9.4.1基本页面置换 273 9.4.2FIFO页面置换 275 9.4.3 *优页面置换 276 9.4.4LRU页面置换 276 9.4.5近似LRU页面置换 278 9.4.6基于计数的页面置换 279 9.4.7页面缓冲算法 280 9.4.8应用程序与页面置换 280 9.5帧分配 280 9.5.1帧的 *小数 281 9.5.2分配算法 282 9.5.3全局分配与局部分配 282 9.5.4非均匀内存访问 283 9.6系统抖动 283 9.6.1系统抖动的原因 284 9.6.2工作集模型 285 9.6.3缺页错误频率 286 9.6.4结束语 287 9.7内存映射文件 287 9.7.1基本机制 287 9.7.2共享内存Windows API 288 9.7.3内存映射I/O 290 9.8分配内核内存 291 9.8.1伙伴系统 291 9.8.2slab分配 292 9.9其他注意事项 293 9.9.1预调页面 293 9.9.2页面大小 293 9.9.3TLB范围 294 9.9.4倒置页表 295 9.9.5程序结构 295 9.9.6I/O联锁与页面锁定 296 9.10操作系统例子 297 9.10.1Windows 297 9.10.2Solaris 298 9.11小结 299 习题 300 编程题 303 编程项目 304 推荐读物 306 参考文献 306 第四部分 存储管理 第10章 文件系统 310 10.1文件概念 310 10.1.1文件属性 310 10.1.2文件操作 311 10.1.3文件类型 315 10.1.4文件结构 316 10.1.5内部文件结构 316 10.2访问方法 316 10.2.1顺序访问 317 10.2.2直接访问 317 10.2.3其他访问方法 318 10.3目录与磁盘的结构 319 10.3.1存储结构 319 10.3.2目录概述 320 10.3.3单级目录 320 10.3.4两级目录 321 10.3.5树形目录 322 10.3.6无环图目录 323 10.3.7通用图目录 325 10.4文件系统安装 326 10.5文件共享 327 10.5.1多用户 327 10.5.2远程文件系统 328 10.5.3一致性语义 330 10.6保护 331 10.6.1访问类型 331 10.6.2访问控制 331 10.6.3其他保护方式 333 10.7小结 334 习题 334 推荐读物 335 参考文献 335 第11章 文件系统实现 337 11.1文件系统结构 337 11.2文件系统实现 338 11.2.1概述 338 11.2.2分区与安装 341 11.2.3虚拟文件系统 341 11.3目录实现 343 11.3.1线性列表 343 11.3.2哈希表 343 11.4分配方法 344 11.4.1连续分配 344 11.4.2链接分配 345 11.4.3索引分配 347 11.4.4性能 348 11.5空闲空间管理 349 11.5.1位向量 349 11.5.2链表 350 11.5.3组 350 11.5.4计数 350 11.5.5空间图 351 11.6效率与性能 351 11.6.1效率 351 11.6.2性能 352 11.7恢复 354 11.7.1一致性检查 354 11.7.2基于日志的文件系统 354 11.7.3其他解决方法 355 11.7.4备份和恢复 356 11.8NFS 356 11.8.1概述 357 11.8.2安装协议 358 11.8.3NFS协议 358 11.8.4路径名称转换 359 11.8.5远程操作 360 11.9例子:WAFL文件系统 360 11.10 小结 362 习题 363 编程题 364 推荐读物 365 参考文献 365 第12章 大容量存储结构 367 12.1大容量存储结构概述 367 12.1.1磁盘 367 12.1.2固态磁盘 368 12.1.3磁带 368 12.2磁盘结构 369 12.3磁盘连接 369 12.3.1主机连接存储 369 12.3.2网络连接存储 370 12.3.3存储区域网络 370 12.4磁盘调度 371 12.4.1FCFS调度 371 12.4.2SSTF调度 371 12.4.3SCAN调度 372 12.4.4C-SCAN调度 373 12.4.5LOOK调度 373 12.4.6磁盘调度算法的选择 373 12.5磁盘管理 374 12.5.1磁盘格式化 374 12.5.2引导块 375 12.5.3坏块 376 12.6交换空间管理 377 12.6.1交换空间的使用 377 12.6.2交换空间位置 377 12.6.3交换空间管理:例子 378 12.7RAID结构 378 12.7.1通过冗余提高可靠性 379 12.7.2通过并行处理提高性能 380 12.7.3RAID级别 380 12.7.4RAID级别的选择 383 12.7.5扩展 384 12.7.6RAID的问题 384 12.8稳定存储实现 385 12.9小结 386 习题 387 编程题 388 推荐读物 388 参考文献 389 第13章 I/O系统 390 13.1概述 390 13.2I/O硬件 390 13.2.1轮询 392 13.2.2中断 393 13.2.3直接内存访问 396 13.2.4I/O硬件小结 397 13.3应用程序I/O接口 397 13.3.1块与字符设备 399 13.3.2网络设备 400 13.3.3时钟与定时器 400 13.3.4非阻塞与异步I/O 401 13.3.5向量I/O 402 13.4内核I/O子系统 402 13.4.1I/O调度 402 13.4.2缓冲 403 13.4.3缓存 404 13.4.4假脱机与设备预留 405 13.4.5错误处理 405 13.4.6I/O保护 405 13.4.7内核数据结构 406 13.4.8内核I/O子系统小结 406 13.5I/O请求转成硬件操作 407 13.6流 409 13.7性能 410 13.8小结 412 习题 413 推荐读物 414 参考文献 414 第五部分 保护与安全 第14章 系统保护 416 14.1保护目标 416 14.2保护原则 417 14.3保护域 417 14.3.1域结构 418 14.3.2例子:UNIX 419 14.3.3例子:MULTICS 420 14.4访问矩阵 421 14.5访问矩阵的实现 423 14.5.1全局表 423 14.5.2对象的访问列表 423 14.5.3域的能力列表 424 14.5.4锁-钥匙机制 424 14.5.5比较 424 14.6访问控制 425 14.7访问权限的撤回 426 14.8基于能力的系统 427 14.8.1例子:Hydra 427 14.8.2例子:剑桥CAP系统 428 14.9基于语言的保护 428 14.9.1基于编译程序的实现 429 14.9.2Java的保护 430 14.10 小结 432 习题 432 推荐读物 433 参考文献 433 第15章 系统安全 436 15.1安全问题 436 15.2程序威胁 438 15.2.1特洛伊木马 438 15.2.2后门 439 15.2.3逻辑炸弹 440 15.2.4堆栈和缓冲区溢出 440 15.2.5病毒 442 15.3系统和网络的威胁 444 15.3.1蠕虫 445 15.3.2端口扫描 447 15.3.3拒绝服务 448 15.4作为安全工具的密码术 448 15.4.1加密 449 15.4.2密码术的实现 454 15.4.3例子:SSL 454 15.5用户认证 456 15.5.1密码 456 15.5.2密码漏洞 456 15.5.3密码安全 457 15.5.4一次性密码 458 15.5.5生物识别技术 458 15.6实现安全防御 459 15.6.1安全策略 459 15.6.2漏洞评估 459 15.6.3入侵检测 460 15.6.4病毒防护 462 15.6.5审计、记账和日志 464 15.7保护系统和网络的防火墙 464 15.8计算机安全等级 465 15.9例子:Windows 7 466 15.10 小结 468 习题 468 推荐读物 469 参考文献 470 第六部分 案例研究 第16章 Linux系统 474 16.1Linux历史 474 16.1.1Linux内核 475 16.1.2Linux系统 476 16.1.3Linux发行 476 16.1.4Linux许可 477 16.2设计原则 477 16.3内核模块 479 16.3.1模块管理 480 16.3.2驱动程序注册 480 16.3.3冲突解决 481 16.4进程管理 481 16.4.1fork()/exec()进程模型 481 16.4.2进程与线程 483 16.5调度 484 16.5.1进程调度 484 16.5.2实时调度 485 16.5.3内核同步 486 16.5.4对称多处理 487 16.6内存管理 488 16.6.1物理内存管理 488 16.6.2虚拟内存 490 16.6.3执行与加载用户程序 492 16.7文件系统 494 16.7.1虚拟文件系统 494 16.7.2Linux ext3文件系统 495 16.7.3日志 497 16.7.4Linux程文件系统 497 16.8输入与输出 498 16.8.1块设备 499 16.8.2字符设备 500 16.9进程间通信 500 16.9.1同步与信号 500 16.9.2进程间的数据传递 501 16.10 网络结构 501 16.11 安全 503 16.11.1 认证 503 16.11.2 访问控制 503 16.12 小结 504 习题 505 推荐读物 506 参考文献 506 第17章 Windows 7 507 17.1历史 507 17.2设计原则 509 17.2.1安全性 509 17.2.2可靠性 509 17.2.3Windows和POSIX应用程序兼容性 510 17.2.4高性能 511 17.2.5可扩展性 512 17.2.6可移植性 512 17.2.7国际化支持 513 17.2.8电源效率 513 17.2.9动态设备支持 513 17.3系统组件 513 17.3.1硬件抽象层 514 17.3.2内核 514 17.3.3执行体 518 17.4终端服务与快速用户切换 531 17.5文件系统 532 17.5.1NTFS内部布局 532 17.5.2恢复 534 17.5.3安全 535 17.5.4卷管理和容错 535 17.5.5压缩 536 17.5.6安装点、符号链接和硬链接 536 17.5.7变更日志 537 17.5.8卷的影子副本 537 17.6网络 537 17.6.1网络接口 537 17.6.2协议 537 17.6.3重定向器与服务器 539 17.6.4域 540 17.6.5活动目录 540 17.7程序员接口 540 17.7.1访问内核对象 541 17.7.2进程间共享对象 541 17.7.3进程管理 542 17.7.4使用Windows消息传递的进程间通信 545 17.7.5内存管理 546 17.8小结 547 习题 548 推荐读物 548 参考文献 549 第18章有影响的操作系统 550 18.1特征迁移 550 18.2早期系统 551 18.2.1专用计算机系统 551 18.2.2共享计算机系统 552 18.2.3重叠I/O 554 18.3Atlas 555 18.4XDS-940 556 18.5THE 556 18.6RC 4000 557 18.7CTSS 558 18.8MULTICS 558 18.9IBM OS/360 558 18.10 TOPS-20 559 18.11 CP/M与MS/DOS 560 18.12 Macintosh OS与Windows 560 18.13 Mach 561 18.14 其他系统 562 习题 562 推荐读物 562 参考文献 563 索引 565 |