|
作者简介 |
[美] 亚伯拉罕·西尔伯沙茨(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.3 I/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.4 I/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.2 Linux 31 1.12.3 BSD UNIX 32 1.12.4 Solaris 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.3 DTrace 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.5 IPC系统例子 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.1 Pthreads 118 4.4.2 Windows线程 119 4.4.3 Java线程 121 4.5 隐式多线程 122 4.5.1 线程池 123 4.5.2 OpenMP 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.1 Windows线程 129 4.7.2 Linux线程 130 4.8 小结 131 习题 131 编程题 133 编程项目 134 推荐读物 136 参考文献 136 第5章 进程调度 138 5.1 基本概念 138 5.1.1 CPU-I/O执行周期 138 5.1.2 CPU调度程序 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.2 Pthreads调度 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.6 POSIX实时调度 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.3 Peterson解决方案 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.1 Windows同步 193 6.9.2 Linux同步 194 6.9.3 Solaris同步 195 6.9.4 Pthreads同步 196 6.10 替代方法 197 6.10.1 事务内存 198 6.10.2 OpenMP 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.4 Oracle SPARC Solaris 255 8.7 例子:Intel 32位与64位体系结构 256 8.7.1 IA-32架构 256 8.7.2 x86-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.2 FIFO页面置换 275 9.4.3 最优页面置换 276 9.4.4 LRU页面置换 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.2 slab分配 292 9.9 其他注意事项 293 9.9.1 预调页面 293 9.9.2 页面大小 293 9.9.3 TLB范围 294 9.9.4 倒置页表 295 9.9.5 程序结构 295 9.9.6 I/O联锁与页面锁定 296 9.10 操作系统例子 297 9.10.1 Windows 297 9.10.2 Solaris 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.8 NFS 356 11.8.1 概述 357 11.8.2 安装协议 358 11.8.3 NFS协议 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.1 FCFS调度 371 12.4.2 SSTF调度 371 12.4.3 SCAN调度 372 12.4.4 C-SCAN调度 373 12.4.5 LOOK调度 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.7 RAID结构 378 12.7.1 通过冗余提高可靠性 379 12.7.2 通过并行处理提高性能 380 12.7.3 RAID级别 380 12.7.4 RAID级别的选择 383 12.7.5 扩展 384 12.7.6 RAID的问题 384 12.8 稳定存储实现 385 12.9 小结 386 习题 387 编程题 388 推荐读物 388 参考文献 389 第13章 I/O系统 390 13.1 概述 390 13.2 I/O硬件 390 13.2.1 轮询 392 13.2.2 中断 393 13.2.3 直接内存访问 396 13.2.4 I/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.1 I/O调度 402 13.4.2 缓冲 403 13.4.3 缓存 404 13.4.4 假脱机与设备预留 405 13.4.5 错误处理 405 13.4.6 I/O保护 405 13.4.7 内核数据结构 406 13.4.8 内核I/O子系统小结 406 13.5 I/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.2 Java的保护 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.1 Linux历史 474 16.1.1 Linux内核 475 16.1.2 Linux系统 476 16.1.3 Linux发行 476 16.1.4 Linux许可 477 16.2 设计原则 477 16.3 内核模块 479 16.3.1 模块管理 480 16.3.2 驱动程序注册 480 16.3.3 冲突解决 481 16.4 进程管理 481 16.4.1 fork/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.2 Linux ext3文件系统 495 16.7.3 日志 497 16.7.4 Linux进程文件系统 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.3 Windows和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.1 NTFS内部布局 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.3 Atlas 555 18.4 XDS-940 556 18.5 THE 556 18.6 RC 4000 557 18.7 CTSS 558 18.8 MULTICS 558 18.9 IBM 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 |
操作系统是任何计算机系统的重要组成部分。同样,操作系统课程也是计算机科学教育的基本组成部分。随着计算机逐渐渗透到日常生活的每个方面,从汽车的嵌入设备到政府和跨国公司的先进规划工具,这个领域发展迅猛。然而,其中的基本概念仍然比较清晰,这些概念就是本书讨论的基础。 本书是面向操作系统导论课程的教科书,适用于大三、大四学生和一年级研究生,同时也可供工程技术人员参考。本书清晰地描述了操作系统的概念。作为先决条件,我们假设读者熟悉基本数据结构、计算机组成和一种高级语言(如C或Java)。本书第1章包括了学习操作系统所需的硬件知识,还包括大多数操作系统普遍使用的基础数据结构。代码示例主要使用C和Java,不过,即使读者不具有这些语言的全部知识也能理解这些算法。 本书不仅直观描述了概念,而且包括重要的理论结果,但是省略了大部分的形式化证明。每章结尾的推荐读物给出了相关研究论文,其中有的首次提出或证明了这些理论结果,有的提供深入阅读的最新材料。本书通过图形和举例来代替证明,以说明为什么有关结果是真实有效的。 本书描述的基本概念和算法通常用于商用和开源的操作系统。我们的目标是,按照通用的(而非特定的)操作系统来描述这些概念和算法。另外,我们提供了最受欢迎和最具创新的操作系统的大量例子,包括Linux、Microsoft Windows、Apple Mac OS X和Solaris。我们还给出了两个主要移动操作系统(Android和iOS)的示例。 本书的编写综合了我们从事操作系统教学的多年经验以及IEEE计算机协会和ACM共同出版的课程指南。另外,还考虑了多位审稿人员提供的反馈意见,以及以前版本读者和学生的许多意见和建议。 本书内容 本书包括六大部分: 概论。第1章和第2章解释了操作系统是什么,它们能做什么,以及它们是如何设计与构造的。这一部分讨论了操作系统的常见功能是什么,以及操作系统能为用户提供什么。我们不仅讨论PC和服务器的传统操作系统,而且讨论移动设备的操作系统。描述主要以启发和解释为主,避免讨论内部实现细节。因此,这部分适合低年级学生或类似读者,以便了解操作系统是什么而无需关注内部算法细节。 进程管理。第3~7章描述了进程概念和并发,这是现代操作系统的核心。进程是系统内的工作单元。这种系统包括一组并发执行进程,其中一些是操作系统进程(执行系统代码的进程),其余的是用户进程(执行用户代码的进程)。这一部分包括进程调度、进程间通信、进程同步及死锁处理等的方法,还包括线程分析以及多核系统和并行编程的有关分析。 内存管理。第8章和第9章是关于进程执行期间的内存管理的。为了改进CPU的使用率及其对用户的响应速度,计算机必须在内存中同时保存多个进程。内存管理具有很多不同方案,反映了内存管理的各种方法;而特定算法的有效性取决于应用情形。 存储管理。第10~13章描述了现代计算机系统如何处理文件系统、大容量存储和I/O。文件系统提供了一种机制,以对数据和程序进行在线存储与访问。这一部分描述了存储管理的经典内部算法和结构,并且深入讨论了这些算法,比如它们的特性、优点和缺点。由于连到计算机的I/O设备种类如此之多,操作系统需要为应用程序提供大量的功能,以控制这些设备的方方面面。这一部分深入讨论了I/O系统,包括I/O系统设计、接口及系统内部的结构和功能。在许多方面,I/O设备也是计算机中最慢的主要组件。因为设备通常是性能瓶颈,所以这一部分也讨论了I/O设备的性能问题。 保护与安全。第14章和第15章讨论了计算机系统保护与安全的必需机制。操作系统的进程活动必须互相保护,为此,我们必须确保只有获得操作系统适当授权的进程才能使用系统的文件、内存、CPU和其他资源。保护是一种机制,用于控制程序、进程和用户对计算机系统资源的访问,这种机制必须提供指定控制和实施控制的手段。安全机制保护系统存储的信息(数据和代码)的完整性和计算机的物理资源,从而避免未经授权的访问、恶意破坏或修改以及意外引入的不一致。 案例研究。本书的第16章和第17章以及附录A和附录B(见www.wiley.com/college/silberschatz),详细研究了操作系统的实际案例,包括Linux、Windows 7、FreeBSD和Mach。虽然本书前面章节也有Linux和Windows 7的讨论,但是案例研究提供了更多细节。比较这两个非常不同的系统的设计是特别有意义的。最后的第18章简要地描述了其他一些有影响的操作系统。 第9版 在编写本书第9版时,我们考虑了影响操作系统的两个重要领域的新发展: 多核系统 移动计算 为了强调这两个重要领域的新发展,我们在新版本中融入了相关讨论。另外,我们几乎重写了每章内容以反映最新变化,并且删除不再有趣或有关的材料。 我们也做了大量调整,例如删除了实时系统一章,但在其他章节中整合了对这些系统的适.. |
本店所售图书均为正版书籍
1906073972发货方式
自动:在特色服务中标有自动发货的商品,拍下后,源码类 软件类 商品会在订单详情页显示来自卖家的商品下载链接,点卡类 商品会在订单详情直接显示卡号密码。
手动:未标有自动发货的的商品,付款后,商品卖家会收到平台的手机短信、邮件提醒,卖家会尽快为您发货,如卖家长时间未发货,买家也可通过订单上的QQ或电话主动联系卖家。
退款说明
1、源码类:商品详情(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、功能不能正常使用等)!有演示站时,与实际源码不一致的(但描述中有"不保证完全一样、可能有少许偏差"类似显著公告的除外);
2、营销推广类:未达到卖家描述标准的;
3、点卡软件类:所售点卡软件无法使用的;
3、发货:手动发货商品,在卖家未发货前就申请了退款的;
4、服务:卖家不提供承诺的售后服务的;(双方提前有商定和描述中有显著声明的除外)
5、其他:如商品或服务有质量方面的硬性常规问题的。未符合详情及卖家承诺的。
注:符合上述任一情况的,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法修改描述!
注意事项
1、在付款前,双方在QQ上所商定的内容,也是纠纷评判依据(商定与商品描述冲突时,以商定为准);
2、源码商品,同时有网站演示与商品详情图片演示,且网站演示与商品详情图片演示不一致的,默认按商品详情图片演示作为纠纷评判依据(卖家有特别声明或有额外商定的除外);
3、点卡软件商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
4、营销推广商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
5、在有"正当退款原因和依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;
6、虽然交易产生纠纷的几率很小,卖家也肯定会给买家最完善的服务!但请买卖双方尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于送码网快速介入处理。
送码声明
1、送码网作为第三方中介平台,依据双方交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;
2、非平台线上交易的项目,出现任何后果均与送码网无关;无论卖家以何理由要求线下交易的(如:要求买家支付宝转账付款的,微信转账付款的等),请联系管理举报,本平台将清退卖家处理。
正版 steam 原子之心 Atomic Heart 国区激活码 cd...
steam 英雄连3 国区激活码CDKEY PC游戏正版 Compan...
M,日朋礼送男友老公创意实人用星人际机器蓝牙音箱走心情节生礼...
zippo之宝官方正品打火机古银双面贴章机器人煤油机送男友礼物女...
秋季圆领卫衣套头男友风秋天长袖时尚潮流印花卡通机器派大星上衣...
机器猫情侣衬衫小叮当落肩短袖衬衣男友外套大码潮流套装上衣薄款...
PDPAOLA小机器人情侣手链女男生日礼物520送男友男士款闺蜜Rob...
兼容乐高复仇者联盟4战争机器积木人仔钢铁侠救援机甲玩具WM723...
兼容乐高复联4钢铁侠X0252灭霸MK50 MK1战争机器拼装积木人仔...
XBOX ONE SERIES X|S 中文 战争机器4与光环5守护...