第0章 读者与教师指南
0.1 本书概述
0.2 实例系统
0.3 读者和教师的学习路线图
0.4 互联网和网站资源
第一部分 背景知识
第1章 计算机系统概述
1.1 基本构成
1.2 微处理器的发展演化
1.3 指令的执行
1.4 中断
1.4.1 中断和指令周期
1.4.2 中断处理
1.4.3 多个中断
1.5 存储器的层次结构
1.6 高速缓存
1.6.1 动机
1.6.2 高速缓存原理
1.6.3 高速缓存设计
1.7 直接内存存取
1.8 多处理器和多核计算机组织结构
1.8.1 对称多处理器
1.8.2 多核计算机
1.9 推荐读物和网站
1.10 关键术语、复习题和习题
1.10.1 关键术语
1.10.2 复习题
1.10.3 习题
附录1A 两级存储器的性能特征
第2章 操作系统概述
2.1 操作系统的目标和功能
2.1.1 作为用户/计算机接口的操作系统
2.1.2 作为资源管理器的操作系统
2.1.3 操作系统的易扩展性
2.2 操作系统的发展
2.2.1 串行处理
2.2.2 简单批处理系统
2.2.3 多道批处理系统
2.2.4 分时系统
2.3 主要的成就
2.3.1 进程
2.3.2 内存管理
2.3.3 信息保护和安全
2.3.4 调度和资源管理
2.4 现代操作系统的特征
2.5 虚拟机
2.5.1 虚拟机和虚拟化
2.5.2 虚拟机架构
2.6 针对多处理器和多核的操作系统设计考虑因素
2.6.1 对称多处理器计算机的操作系统设计考虑因素
2.6.2 多核计算机的操作系统设计考虑因素
2.7 微软Windows系统简介
2.7.1 历史
2.7.2 现代操作系统
2.7.3 体系结构
2.7.4 客户/服务器模型
2.7.5 线程和SMP
2.7.6 Windows对象
2.7.7 Windows 7中的新特性
2.8 传统的UNIX系统
2.8.1 历史
2.8.2 描述
2.9 现代UNIX系统
2.9.1 System V版本4(简称SVR4)
2.9.2 BSD
2.9.3 Solaris 10
2.10 Linux操作系统
2.10.1 历史
2.10.2 模块结构
2.10.3 内核组件
2.11 Linux Vserver虚机器结构
2.12 推荐读物和网站
2.13 关键术语、复习题和习题
2.13.1 关键术语
2.13.2 复习题
2.13.3 习题
第二部分 进程
第3章 进程描述和控制
3.1 什么是进程
3.1.1 背景
3.1.2 进程和进程控制块
3.2 进程状态
3.2.1 两状态进程模型
3.2.2 进程的创建和终止
3.2.3 五状态模型
3.2.4 被挂起的进程
3.3 进程描述
3.3.1 操作系统的控制结构
3.3.2 进程控制结构
3.4 进程控制
3.4.1 执行模式
3.4.2 进程创建
3.4.3 进程切换
3.5 操作系统的执行
3.5.1 无进程的内核
3.5.2 在用户进程中执行
3.5.3 基于进程的操作系统
3.6 安全问题
3.6.1 系统访问威胁
3.6.2 对抗措施
3.7 UNIX SVR4进程管理
3.7.1 进程状态
3.7.2 进程描述
3.7.3 进程控制
3.8 小结
3.9 推荐读物
3.10 关键术语、复习题和习题
3.10.1 关键术语
3.10.2 复习题
3.10.3 习题
第4章 线程
4.1 进程和线程
4.1.1 多线程
4.1.2 线程功能特性
4.2 线程分类
4.2.1 用户级和内核级线程
4.2.2 其他方案
4.3 多核和多线程
4.3.1 多核系统上的软件性能
4.3.2 应用示例:Valve游戏软件
4.4 Windows 7线程和SMP管理
4.4.1 进程对象和线程对象
4.4.2 多线程
4.4.3 线程状态
4.4.4 对OS子系统的支持
4.4.5 对称多处理的支持
4.5 Solaris的线程和SMP管理
4.5.1 多线程体系结构
4.5.2 动机
4.5.3 进程结构
4.5.4 线程的执行
4.5.5 把中断当做线程
4.6 Linux的进程和线程管理
4.6.1 Linux任务
4.6.2 Linux线程
4.7 Mac OS X的GCD技术
4.8 小结
4.9 推荐读物
4.10 关键术语、复习题和习题
4.10.1 关键术语
4.10.2 复习题
4.10.3 习题
第5章 并发性:互斥和同步
5.1 并发的原理
5.1.1 一个简单的例子
5.1.2 竞争条件
5.1.3 操作系统关注的问题
5.1.4 进程的交互
5.1.5 互斥的要求
5.2 互斥:硬件的支持
5.2.1 中断禁用
5.2.2 专用机器指令
5.3 信号量
5.3.1 互斥
5.3.2 生产者/消费者问题
5.3.3 信号量的实现
5.4 管程
5.4.1 使用信号的管程
5.4.2 使用通知和广播的管程
5.5 消息传递
5.5.1 同步
5.5.2 寻址
5.5.3 消息格式
5.5.4 排队原则
5.5.5 互斥
5.6 读者/写者问题
5.6.1 读者优先
5.6.2 写者优先
5.7 小结
5.8 推荐读物
5.9 关键术语、复习题和习题
5.9.1 关键术语
5.9.2 复习题
5.9.3 习题
第6章 并发:死锁和饥饿
6.1 死锁原理
6.1.1 可重用资源
6.1.2 可消耗资源
6.1.3 资源分配图
6.1.4 死锁的条件
6.2 死锁预防
6.2.1 互斥
6.2.2 占有且等待
6.2.3 不可抢占
6.2.4 循环等待
6.3 死锁避免
6.3.1 进程启动拒绝
6.3.2 资源分配拒绝
6.4 死锁检测
6.4.1 死锁检测算法
6.4.2 恢复
6.5 一种综合的死锁策略
6.6 哲学家就餐问题
6.6.1 基于信号量解决方案
6.6.2 基于管程解决方案
6.7 UNIX的并发机制
6.7.1 管道
6.7.2 消息
6.7.3 共享内存
6.7.4 信号量
6.7.5 信号
6.8 Linux内核并发机制
6.8.1 原子操作
6.8.2 自旋锁
6.8.3 信号量
6.8.4 屏障
6.9 Solaris线程同步原语
6.9.1 互斥锁
6.9.2 信号量
6.9.3 多读者/单写者锁
6.9.4 条件变量
6.10 Windows 7并发机制
6.10.1 等待函数
6.10.2 分派器对象
6.10.3 临界区
6.10.4 轻量级读者-写者锁和条件变量
6.10.5 锁无关同步机制
6.11 小结
6.12 推荐读物
6.13 关键术语、复习题和习题
6.13.1 关键术语
6.13.2 复习题
6.13.3 习题
第三部分 内存
第7章 内存管理
7.1 内存管理的需求
7.1.1 重定位
7.1.2 保护
7.1.3 共享
7.1.4 逻辑组织
7.1.5 物理组织
7.2 内存分区
7.2.1 固定分区
7.2.2 动态分区
7.2.3 伙伴系统
7.2.4 重定位
7.3 分页
7.4 分段
7.5 安全问题
7.5.1 缓冲区溢出攻击
……
^ 收 起