操作系统是计算机系统的核心系统软件,负责控制和管理整个系统,使之协调工作。本书不仅全面系统地讲述了操作系统的基本概念、原理和方法,而且以当代最流行的两个操作系统——Windows2000和UNIX为例,全面清楚地展现了当代操作系统的本质和特点,使本书的内容具有先进性和适应性。\r\n\r\n 本书既注重对操作系统的经典内容的论述,又紧密联系当代流行的设计问题以及当前操作系统的发展方向,可作为大学计算机专业或计算机应用相关专业的本科生教材和参考书,也可供从事计算机方向研究的专业技术人员使用。\r\n
\r\n
读者指南 \r\n\r\n 第一部分 背景 \r\n\r\n 第1章 计算机系统概述 \r\n\r\n 1. 1 基本构成 \r\n\r\n 1. 2 处理器寄存器 \r\n\r\n 1. 2. 1 用户可见寄存器 \r\n\r\n 1. 2. 2 控制和状态寄存器 \r\n\r\n 1. 3 指令的执行 \r\n\r\n 1. 3. 1 取指令和执行指令 \r\n\r\n 1. 3. 2 I/O函数 \r\n\r\n 1. 4 中断 \r\n\r\n 1. 4. 1 中断和指令周期 \r\n\r\n 1. 4. 2 中断处理 \r\n\r\n 1. 4. 3 多个中断 \r\n\r\n 1. 4. 4 多道程序 \r\n\r\n 1. 5 存储器的层次结构 \r\n\r\n 1. 6 高速缓冲存储器 \r\n\r\n 1. 6. 1 动机 \r\n\r\n 1. 6. 2 cache原理 \r\n\r\n 1. 6. 3 cache设计 \r\n\r\n 1. 7 I/O通信技术 \r\n\r\n 1. 7. 1 程序控制I/O \r\n\r\n 1. 7. 2 中断驱动I/O \r\n\r\n 1. 7. 3 直接存储器存取 \r\n\r\n 1. 8 推荐读物 \r\n\r\n 1. 9 习题 \r\n\r\n 附录1A 两级存储器的性能特征 \r\n\r\n 附录1B 过程控制 \r\n\r\n 第2章 操作系统概述 \r\n\r\n 2. 1 操作系统的目标和功能 \r\n\r\n 2. 1. 1 操作系统作为用户/计算机接口 \r\n\r\n 2. 1. 2 操作系统作为资源管理器 \r\n\r\n 2. 1. 3 操作系统的易扩展性 \r\n\r\n 2. 2 操作系统的发展 \r\n\r\n 2. 2. 1 串行处理 \r\n\r\n 2. 2. 2 简单批处理系统 \r\n\r\n 2. 2. 3 多道程序批处理系统 \r\n\r\n 2. 2. 4 分时系统 \r\n\r\n 2. 3 主要的成就 \r\n\r\n 2. 3. 1 进程 \r\n\r\n 2. 3. 2 存储器管理 \r\n\r\n 2. 3. 3 信息保护和安全 \r\n\r\n 2. 3. 4 调度和资源管理 \r\n\r\n 2. 3. 5 系统结构 \r\n\r\n 2. 4 现代操作系统的特征 \r\n\r\n 2. 5 Windows 2000概述 \r\n\r\n 2. 5. 1 历史 \r\n\r\n 2. 5. 2 单用户多任务 \r\n\r\n 2. 5. 3 客户/服务器模型 \r\n\r\n 2. 5. 4 线程和SMP \r\n\r\n 2. 5. 5 Windows 2000对象 \r\n\r\n 2. 6 传统的UNIX系统 \r\n\r\n 2. 6. 1 历史 \r\n\r\n 2. 6. 2 描述 \r\n\r\n 2. 7 现代UNIX系统 \r\n\r\n 2. 7. 1 系统V版本4(SVR4) \r\n\r\n 2. 7. 2 Solaris 2. x \r\n\r\n 2. 7. 3 4.4BSD \r\n\r\n 2. 7. 4 Linux \r\n\r\n 2. 8 推荐读物 \r\n\r\n 2. 9 习题 \r\n\r\n 第二部分 进程 \r\n\r\n 第3章 进程描述和控制 \r\n\r\n 3. 1 进程状态 \r\n\r\n 3. 1. 1 两状态进程模型 \r\n\r\n 3. 1. 2 进程的创建和终止 \r\n\r\n 3. 1. 3 五状态模型 \r\n\r\n 3. 1. 4 被挂起的进程 \r\n\r\n 3. 2 进程描述 \r\n\r\n 3. 2. 1 操作系统的控制结构 \r\n\r\n 3. 2. 2 进程控制结构 \r\n\r\n 3. 3 进程控制 \r\n\r\n 3. 3. 1 执行模式 \r\n\r\n 3. 3. 2 进程创建 \r\n\r\n 3. 3. 3 进程切换 \r\n\r\n 3. 3. 4 操作系统的执行 \r\n\r\n 3. 4 UNIX SVR4进程管理 \r\n\r\n 3. 4. 1 进程状态 \r\n\r\n 3. 4. 2 进程描述 \r\n\r\n 3. 4. 3 进程控制 \r\n\r\n 3. 5 小结. 关键术语和复习题 \r\n\r\n 3. 5. 1 关键术语 \r\n\r\n 3. 5. 2 复习题 \r\n\r\n 3. 6 推荐读物 \r\n\r\n 3. 7 习题 \r\n\r\n 第4章 线程. 对称多处理(SMP)和微内核 \r\n\r\n 4. 1 进程和线程 \r\n\r\n 4. 1. 1 多线程 \r\n\r\n 4. 1. 2 线程功能特性 \r\n\r\n 4. 1. 3 例子——Adobe PageMaker \r\n\r\n 4. 1. 4 用户级和内核级线程 \r\n\r\n 4. 1. 5 其他方案 \r\n\r\n 4. 2 对称多处理 \r\n\r\n 4. 2. 1 SMP体系结构 \r\n\r\n 4. 2. 2 SMP组织结构 \r\n\r\n 4. 2. 3 多处理器操作系统的设计 \r\n\r\n 4. 3 微内核 \r\n\r\n 4. 3. 1 微内核体系结构 \r\n\r\n 4. 3. 2 微内核组织结构的优点 \r\n\r\n 4. 3. 3 微内核性能 \r\n\r\n 4. 3. 4 微内核设计 \r\n\r\n 4. 4 Windows 2000的线程和SMP管理 \r\n\r\n 4. 4. 1 进程对象和线程对象 \r\n\r\n 4. 4. 2 多线程 \r\n\r\n 4. 4. 3 线程状态 \r\n\r\n 4. 4. 4 OS子系统的支持 \r\n\r\n 4. 4. 5 对称多处理的支持 \r\n\r\n 4. 5 So1aris的线程和SMP管理 \r\n\r\n 4. 5. 1 多线程体系结构 \r\n\r\n 4. 5. 2 动机 \r\n\r\n 4. 5. 3 进程结构 \r\n\r\n 4. 5. 4 线程的执行 \r\n\r\n 4. 5. 5 把中断当作线程 \r\n\r\n 4. 6 Linux的进程和线程管理 \r\n\r\n 4. 6. 1 Linux进程 \r\n\r\n 4. 6. 2 Linux线程 \r\n\r\n 4. 7 小结 \r\n\r\n 4. 7. 1 关键术语 \r\n\r\n 4. 7. 2 复习题 \r\n\r\n 4. 8 推荐读物 \r\n\r\n 4. 9 习题 \r\n\r\n 第5章 并发性:互斥和同步 \r\n\r\n 5. 1 并发的原理 \r\n\r\n 5. 1. 1 一个简单的例子 \r\n\r\n 5. 1. 2 操作系统关注的问题 \r\n\r\n 5. 1. 3 进程的交互 \r\n\r\n 5. 1. 4 互斥的要求 \r\n\r\n 5. 2 互斥:软件的方法 \r\n\r\n 5. 2. 1 Dekker算法 \r\n\r\n 5. 2. 2 Peterson算法 \r\n\r\n 5. 3 互斥:硬件的支持 \r\n\r\n 5. 3. 1 中断禁用 \r\n\r\n 5. 3. 2 专门的机器指令 \r\n\r\n 5. 4 信号量 \r\n\r\n 5. 4. 1 互斥 \r\n\r\n 5. 4. 2 生产者/消费者问题 \r\n\r\n 5. 4. 3 信号量的实现 \r\n\r\n 5. 4. 4 理发店问题 \r\n\r\n 5. 5 管程 \r\n\r\n 5. 5. 1 使用信号的管程 \r\n\r\n 5. 5. 2 使用通知和广播的管程 \r\n\r\n 5. 6 消息传递 \r\n\r\n 5. 6. 1 同步 \r\n\r\n 5. 6. 2 寻址 \r\n\r\n 5. 6. 3 消息格式 \r\n\r\n 5. 6. 4 排队原则 \r\n\r\n 5. 6. 5 互斥 \r\n\r\n 5. 7 读/写问题 \r\n\r\n 5. 7. 1 读进程具有优先权 \r\n\r\n 5. 7. 2 写进程具有优先权 \r\n\r\n 5. 8 小结. 关键术语和复习题 \r\n\r\n 5. 8. 1 关键术语 \r\n\r\n 3. 5. 2 复习题 \r\n\r\n 5. 9 推荐读物 \r\n\r\n 5. 10 习题 \r\n\r\n 第6章 并发性:死锁和饿死 \r\n\r\n 6. 1 死锁原理 \r\n\r\n 6. 1. 1 可重用资源 \r\n\r\n 6. 1. 2 可消费资源 \r\n\r\n 6. 1. 3 死锁的条件 \r\n\r\n 6. 2 死锁预防 \r\n\r\n 6. 2. 1 互斥 \r\n\r\n 6. 2. 2 占有和等待 \r\n\r\n 6. 2. 3 非剥夺 \r\n\r\n 6. 2. 4 循环等待 \r\n\r\n 6. 3 死锁避免 \r\n\r\n 6. 3. 1 进程启动拒绝 \r\n\r\n 6. 3. 2 资源分配拒绝 \r\n\r\n 6. 4 死锁检测 \r\n\r\n 6. 4. 1 死锁检测算法 \r\n\r\n 6. 4. 2 恢复 \r\n\r\n 6. 5 一种综合的死锁策略 \r\n\r\n 6. 6 哲学家就餐问题 \r\n\r\n 6. 7 UNIX的并发机制 \r\n\r\n 6. 7. 1 管道 \r\n\r\n 6. 7. 2 消息 \r\n\r\n 6. 7. 3 共享存储区 \r\n\r\n 6. 7. 4 信号量 \r\n\r\n 6. 7. 5 信号 \r\n\r\n 6. 8 So1aris线程同步原语 \r\n\r\n 6. 8. 1 互斥锁 \r\n\r\n 6. 8. 2 信号量 \r\n\r\n 6. 8. 3 Reader/Writer锁 \r\n\r\n 6. 8. 4 条件变量 \r\n\r\n 6. 9 Windows 2000的并发机制 \r\n\r\n 6. 10 小结. 关键术语和复习题 \r\n\r\n 6. 10. 1 关键术语 \r\n\r\n 6. 10. 2 复习题 \r\n\r\n 6. 11 推荐读物 \r\n\r\n 6. 12 习题 第三部分 存储器 \r\n\r\n 第7章 存储器管理 \r\n\r\n 7. 1 存储器管理需求 \r\n\r\n 7. 1. 1 重定位 \r\n\r\n 7. 1. 2 保护 \r\n\r\n 7. 1. 3 共享 \r\n\r\n 7. 1. 4 逻辑组织 \r\n\r\n 7. 1. 5 物理组织 \r\n\r\n 7. 2 存储器分区 \r\n\r\n 7. 2. 1 固定分区 \r\n\r\n 7. 2. 2 动态分区 \r\n\r\n 7. 2. 3 伙伴系统 \r\n\r\n 7. 2. 4 重定位 \r\n\r\n 7. 3 分页 \r\n\r\n 7. 4 分段 \r\n\r\n 7. 5 小结. 关键术语和复习题 \r\n\r\n 7. 5. 1 关键术语 \r\n\r\n 7. 5. 2 复习题 \r\n\r\n 7. 6 推荐读物 \r\n\r\n 7. 7 习题 \r\n\r\n 附录7A 加载和链接 \r\n\r\n 第8章 虚拟存储器 \r\n\r\n 8. 1 硬件和控制结构 \r\n\r\n 8. 1. 1 局部性和虚拟存储器 \r\n\r\n 8. 1. 2 分页 \r\n\r\n 8. 1. 3 分段 \r\n\r\n 8. 1. 4 分段和分页的组合 \r\n\r\n 8. 1. 5 保护和共享 \r\n\r\n 8. 2 操作系统软件 \r\n\r\n 8. 2. 1 取策略 \r\n\r\n 8. 2. 2 放置策略 \r\n\r\n 8. 2. 3 替换策略 \r\n\r\n 8. 2. 4 驻留集管理 \r\n\r\n 8. 2. 5 清除策略 \r\n\r\n 8. 2. 6 加载控制 \r\n\r\n 8. 3 UNIX和Solaris存储器管理 \r\n\r\n 8. 3. 1 分页系统 \r\n\r\n 8. 3. 2 内核存储分配器 \r\n\r\n 8. 4 Linux存储器管理 \r\n\r\n 8. 4. 1 Linux虚存 \r\n\r\n 8. 4. 2 内核存储器分配 \r\n\r\n 8. 5 Windows 2000存储器管理 \r\n\r\n 8. 5. 1 W2K虚地址映射 \r\n\r\n 8. 5. 2 W2K页面调度 \r\n\r\n 8. 6 小结. 关键术语和复习题 \r\n\r\n 8. 6. 1 关键术语 \r\n\r\n 8. 6. 2 复习题 \r\n\r\n 8. 7 推荐读物 \r\n\r\n 8. 8 习题 \r\n\r\n 附录8A 散列表 \r\n\r\n 第四部分 调度 \r\n\r\n 第9章 单处理器调度 \r\n\r\n 9. 1 处理器调度的类型 \r\n\r\n 9. 1. 1 长程调度 \r\n\r\n 9. 1. 2 中程调度 \r\n\r\n 9. 1. 3 短程调度 \r\n\r\n 9. 2 调度算法 \r\n\r\n 9. 2. 1 短程调度准则 \r\n\r\n 9. 2. 2 优先级的使用 \r\n\r\n 9. 2. 3 选择调度策略 \r\n\r\n 9. 2. 4 性能比较 \r\n\r\n 9. 2. 5 公平共享调度 \r\n\r\n 9. 3 传统的UNIX调度 \r\n\r\n 9. 4 小结. 关键术语和复习题 \r\n\r\n 9. 4. 1 关键术语 \r\n\r\n 9. 4. 2 复习题 \r\n\r\n 9. 5 推荐读物 \r\n\r\n 9. 6 习题 \r\n\r\n 附录9A 响应时间 \r\n\r\n 附录9B 排队系统 \r\n\r\n 第10章 多处理器和实时调度 \r\n\r\n 10. 1 多处理器调度 \r\n\r\n 10. 1. 1 粒度 \r\n\r\n 10. 1. 2 设计问题 \r\n\r\n 10. 1. 3 进程调度 \r\n\r\n 10. 1. 4 线程调度 \r\n\r\n 10. 2 实时调度 \r\n\r\n 10. 2. 1 背景 \r\n\r\n 12. 7 UNIX文件管理 \r\n\r\n 12. 7. 1 索引节点 \r\n\r\n 12. 7. 2 文件分配 \r\n\r\n 12. 8 Windows2000的文件系统 \r\n\r\n 12. 8. 1 NTFS的重要特征 \r\n\r\n 12. 8. 2 NTFS卷和文件结构 \r\n\r\n 12. 8. 3 可恢复性 \r\n\r\n 12. 9 小结. 关键术语和复习题 \r\n\r\n 12. 9. 1 关键术语 \r\n\r\n 12. 9. 2 复习题 \r\n\r\n 12. 10 推荐读物 \r\n\r\n 12. 11 习题 \r\n\r\n 第六部分 分布式系统 \r\n\r\n 第13章 分布式处理. 客户/服务器和集群 \r\n\r\n 13. 1 客户/服务器计算 \r\n\r\n 13. 1. 1 什么是客户/服务器计算 \r\n\r\n 13. 1. 2 客户/服务器应用 \r\n\r\n 13. 1. 3 中间件 \r\n\r\n 13. 2 分布式消息传递 \r\n\r\n 13. 2. 1 可靠性与不可靠性 \r\n\r\n 13. 2. 2 阻塞与无阻塞 \r\n\r\n 13. 3 远程过程调用 \r\n\r\n 13. 3. 1 参数传递 \r\n\r\n 13. 3. 2 参数表示 \r\n\r\n 13. 3. 3 客户/服务器绑定 \r\n\r\n 13. 3. 4 同步和异步 \r\n\r\n 13. 3. 5 面向对象机制 \r\n\r\n 13. 4 集 群 \r\n\r\n 13. 4. 1 集群的配置 \r\n\r\n 13. 4. 2 操作系统的设计问题 \r\n\r\n 13. 4. 3 集群计算机的体系结构 \r\n\r\n 13. 4. 4 集群与SMP \r\n\r\n 13. 5 Windows 2000集群服务器 \r\n\r\n 13. 6 Sun集群 \r\n\r\n 13. 6. 1 对象和通信支持 \r\n\r\n 13. 6. 2 进程管理 \r\n\r\n 13. 6. 3 网络连接 \r\n\r\n 13. 6. 4 全局文件系统 \r\n\r\n 13. 7 Beowulf和Linux集群 \r\n\r\n 13. 7. 1 Beowulf特征 \r\n\r\n 13. 7. 2 Beowulf软件 \r\n\r\n 13. 8 小结. 关键术语和复习题 \r\n\r\n 13. 8. 1 关键术语 \r\n\r\n 13. 8. 2 复习题 \r\n\r\n 13. 9 推荐读物 \r\n\r\n 13. 10 习题 \r\n\r\n 第14章 分布式进程管理 \r\n\r\n 14. 1 进程迁移 \r\n\r\n 14. 1. 1 动机 \r\n\r\n 14. 1. 2 进程迁移机制 \r\n\r\n 14. 1. 3 迁移协商 \r\n\r\n 14. 1. 4 赶出 \r\n\r\n 14. 1. 5 剥夺式转移和非剥夺式转移 \r\n\r\n 14. 2 分布式全局状态 \r\n\r\n 14. 2. 1 全局状态和分布式瞬像 \r\n\r\n 14. 2. 2 分布式瞬像算法 \r\n\r\n 14. 3 分布式互斥 \r\n\r\n 14. 3. 1 分布式互斥概念 \r\n\r\n 14. 3. 2 分布式系统中的事件排序 \r\n\r\n 14. 3. 3 分布式队列 \r\n\r\n 14. 3. 4 令牌传递方法 \r\n\r\n 14. 4 分布式死锁 \r\n\r\n 14. 4. 1 资源分配中的死锁 \r\n\r\n 14. 4. 2 消息通信中的死锁 \r\n\r\n 14. 5 小结. 关键术语和复习题 \r\n\r\n 14. 5. 1 关键术语 \r\n\r\n 14. 5. 2 复习题 \r\n\r\n 14. 6 推荐读物 \r\n\r\n 14. 7 习题 \r\n\r\n 第七部分 安全 \r\n\r\n 第15章 安全 \r\n\r\n 15. 1 安全威胁 \r\n\r\n 15. 1. 1 威胁的类型 \r\n\r\n 15. 1. 2 计算机系统资产 \r\n\r\n 15. 2 保护 \r\n\r\n 15. 2. 1 存储器的保护 \r\n\r\n 15. 2. 2 面向用户的访问控制 \r\n\r\n 15. 2. 3 面向数据的访问控制 \r\n\r\n 15. 3 人侵者 \r\n\r\n 15. 3. 1 人侵技术 \r\n\r\n 15. 3. 2 口令保护 \r\n\r\n 15. 3. 3 口令选择策略 \r\n\r\n 15. 3. 4 入侵检测 \r\n\r\n 15. 4 恶意软件 \r\n\r\n 15. 4. 1 恶意程序 \r\n\r\n 15. 4. 2 病毒的本质 \r\n\r\n 15. 4. 3 病毒的类型 \r\n\r\n 15. 4. 4 宏病毒 \r\n\r\n 15. 4. 5 反病毒方法 \r\n\r\n 15. 4. 6 电子邮件病毒 \r\n\r\n 15. 5 可信系统 \r\n\r\n 15. 5. 1 特洛伊木马的防范 \r\n\r\n 15. 6 Windows 2000的安全机制 \r\n\r\n 15. 6. 1 访问控制方案 \r\n\r\n 15. 6. 2 访问令牌 \r\n\r\n 15. 6. 3 安全描述符 \r\n\r\n 15. 7 小结. 关键术语和复习题 \r\n\r\n 15. 7. 1 关键术语 \r\n\r\n 15. 7. 2 复习题 \r\n\r\n 15. 8 推荐读物 \r\n\r\n 15. 9 习题 \r\n\r\n 附录15A 加密 \r\n\r\n 附录A TCP/IP \r\n\r\n 附录B 面向对象设计 \r\n\r\n 附录C 程序设计与操作系统项目 \r\n\r\n 附录D OSP:一个操作系统项目的环境 \r\n\r\n 附录E BAC 3:Ben—Ari并发程序设计系统 \r\n\r\n 术语表 \r\n\r\n 参考文献 \r\n\r\n 缩暗语 \r\n
\r\n
操作系统是控制应用程序执行的核心系统程序, 它是应用程序和计算机硬件之间的接口, 负责控制和管理整个系统, 使之协调工作. 操作系统的基本原理是计算机专业学生必须学习和掌握的基本课程, 也是计算机应用人员深入了解和使用计算机的必备知识. 随着计算机系统日新月异的发展变化, 操作系统的结构和能力也在逐步发展. 近年来, 许多新的设计要素引入到新操作系统以及现有操作系统的新版本中, 使操作系统产生了本质性的变化.
本书不仅全面系统地讲述了操作系统的基本概念. 原理和方法, 而且以当代最流行的两个操作系统——Windows 2000和UNIX为例, 全面清楚地展现了当代操作系统的本质和特点, 并且与当代流行的设计问题以及当前操作系统的发展方向联系起来, 使本书的内容具有先进性和适应性.
本书分为7大部分, 共15章. 第一部分综述了计算机系统和操作系统的一些基本概念, 第二部分详细讲述进程. 多线程. 对称多处理(SMP)和微内核, 并分析了单一系统中的并发机制, 重点讲述了互斥和死锁问题第三部分全面讲述了内存管理技术第四部分对多种进程调度方法进行了分析比较, 同时还讨论了线程调度. SMP调度和实时调度, 第五部分讲述了操作系统中有关I/O功能和文件系统的管理问题, 第六部分分析了计算机联网技术的主要趋势, 包括TCP/IP. 客户/服务器计算和集群, 同时还介绍了分布式系统开发中的一些主要设计领域, 第七部分概述了线程以及计算机和网络的安全机制.
本书具有许多适用于教学和自学的特点, 书中使用了大量的图和表来阐明容易混淆的概念, 并提供了易于查找的词汇表. 常用的缩略语表和参考文献, 每一章还包括进一步学习的难点和建议, 并提供了便于复习的关键术语列表, 每章之后均配有习题, 不仅可以加深和巩固对概念的理解, 而且有助于培养创造性思维能力. 全书内容深入浅出, 实例丰富, 结构清晰, 是学习和掌握操作系统基本原理的一本优秀书籍.
本书的翻译主要由魏迎梅和王涌负责, 参加翻译的还有彭伟. 刘越. 王晓光. 曾毅强等. 最后特别感谢邹鹏教授, 他在百忙之中抽出宝贵时间认真审校了全书的译稿, 并提出了一些很有价值的修改意见.
目标
本书是一本关于操作系统的概念. 结构和机制的教材, 其目的是尽可能清楚和全面地展现当代操作系统的本质和特点.
这是一项具有挑战性的任务. 首先, 需要为各种各样的计算机系统设计操作系统, 包括单用户工作站和个人计算机. 中等规模的共享系统. 大型计算机和超级计算机以及诸如实时系统之类的专门机器. 多样性不仅表现在机器的容量和速度上, 而且表现在具体应用和系统支持的需求上, 第二, 计算机系统正以日新月异的速度发展变化, 操作系统设计中的许多重要领域都是新近开始研究的, 而关于这些领域以及其他新领域的研究工作仍然在继续着.
尽管存在着多样性和变化快等问题, 一些基本概念仍然贯穿始终, 当然, 这些概念的应用依赖于当前的技术状况和特定的应用需求. 本书的目的是对操作系统设计的基本原理提供全面的讨论, 并且与当代流行的设计问题以及当前操作系统的发展方向联系起来.
示例系统
本书试图使读者熟悉当代操作系统的设计原理和实现问题, 因此单纯讲述概念和理论是远远不够的, 必须与现实世界中的设计选择相联系, 通过具体的例子来说明这些概念. 本书选择了两个操作系统作为运行实例:
●Windows 2000:用于个人计算机. 工作站和服务器的多任务操作系统. 作为一种新的操作系统, 它融入了操作系统发展的最新技术, 此外, Windows 2000是首先采用面向对象设计原理设计的商业操作系统之一.
●UNIX:多用户操作系统最初是为小型计算机而设计的, 但后来广泛用于从微机到超级计算机的各种机器中. 有三种版本的UNIX:UNIX SVR4是一个广泛使用的系统, 包括许多最新的特征, Solaris是用得最多的UNIX商业版本, 包括多线程和一些其他特征, 这在SVR4和大多数其他的UNIX版本中是没有的最后, Linux是一个非常普及且源码开放的UNIX版本.
选择这些系统是由于它们的相关性和代表性, 关于这些示例系统的讨论将贯穿于本书的全部内容, 而不是集中在某一章或附录部分. 这样, 在讨论并发性的过程中, 将讲述每个示例系统的并发机制, 并讨论各个设计选择的动机, 使用这种方法可以通过真实的例子加深对某一特定章节中的设计概念的理解.
适合对象
本书是为高等院校师生和专业人员编写的. 作为教材, 本书对应于计算机科学. 计算机工程和电子工程专业一个学期的操作系统课程, 书中包括IEEE Model Program Computer Science and Engineering的Subject Area 5中的主题, 还包括ACM Recommendations for the Undergraduate Program in Computer Science的CS6和CSl0中与操作系统相关的主题. 本书还是一本适合自学人员的基础参考书.
本书具有许多适用于教学的特征, 包括使用大量的图和表来阐明容易混淆的内容. 此外, 本书还包括术语表. 常用的缩略语和参考文献. 每一章还包括进一步学习的难点和建议. 用于复习的关键术语列表和复习题.
为教师和学生提供的Internet服务
本书的Web站点为教师和学生提供支持, 该站点包括与其他相关站点的链接. 书中所有图表的PDf(Adobe Acrobat)格式文档和Internet邮件列表, 其Web页位于WilliamStallings. com/OS4e. html, 更多信息请参阅前面的“本书的Web站点”. 建立Internet邮件列表使得使用本书的教师可以相互之间或与作者交流信息. 建议和问题.
操作系统项目
对许多教师而言, 操作系统课程的一个重要内容是, 通过一个项目或一组项目使得学生能够获得身临其境的体验, 以加深对课本中概念的理解. 本书为课程提供了一个项目部分, 提供了关于三个软件包的信息, 这三个软件包可用作实现项目的框架:用于开发操作系统部件的OSP和Nachos以及用于学习并发机制的BACI. 此外, 教师手册包括一系列小的程序设计项目, 每个项目需要一两周的时间, 它们覆盖了很宽的主题范围, 可以在任何平台上用任何合适的语言实现, 还有一些研究项目和阅读/报告任务. 详细信息请参阅附录.
第四版中的新内容
自从本书第三版出版以来的三年时间里, 操作系统领域不断发展创新, 在这个新的版本中, 笔者试图捕获这些变化, 以保证本书能够宽广全面地覆盖整个领域. 在修订过程时, 有很多从事操作系统课程教学工作的教授和相关领域的专业人员对本书进行了审阅, 使得许多地方的叙述更加清楚和严密, 图解也得到了进一步的改进, 同时, 还增加了一些新的“实施现场试验”的问题.
除了这些改进教学方法. 加强用户之间友谊的地方外, 本书的技术内容也进行了彻底的更新, 以反映该领域中的最新变化.
致谢
新版本得益于很多花费了大量的时间和精力进行审阅的专家和教授. Boleslaw Syzmanski. Atul Prakash(U. of Michigan). Deborah Frinke(University of Idaho). Karen Lent(Tufts University). Scott Sto11er(Indiana U. )和Stephen Murrell(University of Miami)审阅了全部或部分原稿, Stephen Krebsbach (South Dakota State). Carolym Crouch(U. of Minnesota, Duluth)和Thomas Skinner(Boston University审阅了本书的提案.
还要感谢很多为本书的单章进行审阅的人:Nicole Kaiyan(两章). Greg Law. Marc Bumble. Sunil Kittur. Kasper Verdich Lund. Jochen Hollmann. Paul Lu. Vijay Gupta. Marisa Gil. KevinE. Fu. Aushn Donnelly. FrankAdelstein. SamehElnikety. Chris Colohan. A1ex Petrescu. MichaelHunter. Tim Harris. Steven Wadsworth. Johan Rydberg. Zhihui zhang. Dave Mitchell. Manoj Pillai. Jim Johnson. Thorsten Kramp. Gary. Dr.Amr El一Kadi. Jon Tidswell. HolgerPeine. Thierry Cornilleau. Isabel Munoz和Christopher Wood. 此外, Microsoft的Narayanan Ganapathy和Dave Probert对有关Windows 2000的资料进行了审阅.
我还要感谢David Stockton将所有伪代码翻译成C和Java, 感谢Michael Kifer和Scott A. Smolka(SUNY—Stony Brook)对附录D的贡献, 感谢Bill Bynu(College of William and Mary)和Tracy Camp(Colorado Schoo1 of Mines)对附录E的贡献, 感谢Steve Taylor(Worcester Po1ytechnic Institute)对教师手册中程序设计项目和阅读/报告任务的贡献, 感谢Tan N. Nguyen教授(George Mason University)对教学手册中研究项目的贡献.
最后, 我要感谢负责出版本书的人们, 感谢他们出色的工作, 这包括Pentice Hall的全体职员, 特别是我的编辑Toni Ho1m和A1an Apt以及产品经理Rose Kernan. 此外, Warde Publishers的Jake Warde负责补遗和审阅, V&M Graphics的Joanna V. Pomeranz负责本书的印刷, Pat Daly负责副本编辑, 在此一并表示感谢.