内容简介
第0章 读者指南
0.1 本书概述
0.2 主题顺序
0.3 因特网和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.6 高速缓冲存储器
1.6.1 动机
1.6.2 高速缓冲存储器原理
1.6.3 高速缓冲存储器设计
1.7 I/O通信技术
1.7.1 可编程I/O
1.7.2 中断驱动I/O
1.7.3 直接存储器访问
1.8 推荐读物和网站
1.9 关键术语、复习题和习题
附录1A 两级存储器的性能特征
附录1B 过程控制
第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.3.5 系统结构
2.4 现代操作系统的特征
2.5 Microsoft Windows概述
2.5.1 历史
2.5.2 单用户多任务
2.5.3 体系结构
2.5.4 客户/服务器模型
2.5.5 线程和SMP
2.5.6 Windows对象
2.6 传统的UNIX系统
2.6.1 历史
2.6.2 描述
2.7 现代UNIX系统
2.7.1 系统V版本4(简称SVR4)
2.8.1 历史
2.8 Linux操作系统
2.7.3 4.4BSD
2.7.2 Solaris 9
2.8.2 模块结构
2.8.3 内核组件
2.9 推荐读物和网站
2.10 关键术语、复习题和习题
第二部分 进程
第3章 进程描述和控制
3.1 什么是进程
3.1.1 背景
3.2 进程和进程控制块
3.3 进程状态
3.3.1 两状态进程模型
3.3.2 进程的创建和终止
3.3.3 五状态模型
3.3.4 被挂起的进程
3.4 进程描述
3.4.1 操作系统的控制结构
3.4.2 进程控制结构
3.5 进程控制
3.5.1 执行模式
3.5.2 进程创建
3.5.3 进程切换
3.5.4 操作系统的执行
3.6 UNIX SVR4进程管理
3.6.1 进程状态
3.6.2 进程描述
3.6.3 进程控制
3.7 小结
3.8 推荐读物
3.9 关键术语、复习题和习题
编程项目1:开发一个shell程序
第4章 线程、对称多处理和微内核
4.1 进程和线程
4.1.1 多线程
4.1.2 线程功能特性
4.1.3 例子——Adobe PageMaker
4.1.4 用户级和内核级线程
4.1.5 其他方案
4.2 对称多处理
4.2.1 SMP系统的体系结构
4.2.2 SMP系统的组织结构
4.2.3 多处理器操作系统的设计思考
4.3 微内核
4.3.1 微内核体系结构
4.3.2 微内核组织结构的优点
4.3.3 微内核性能
4.3.4 微内核设计
4.4 Windows线程和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.8 推荐读物
4.7 小结
4.9 关键术语、复习题和习题
第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.1 使用信号的管程
5.4 管程
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 关键术语、复习题和习题
6.1 死锁原理
第6章 并发性:死锁和饥饿
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.5 一种综合的死锁策略
6.4.2 恢复
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并发机制
6.10.1 等待函数
6.10.2 同步对象
6.10.3 临界区对象
6.11 小结
6.12 推荐读物
6.13 关键术语、复习题和习题
第三部分 内存
7.1.1 重定位
7.1 内存管理的需求
第7章 内存管理
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.6 推荐读物
7.7 关键术语、复习题和习题
附录7A 加载和链接
第8章 虚拟内存
8.1 硬件和控制结构
8.1.1 局部性和虚拟内存
8.1.2 分页
8.1.3 分段
8.1.4 分段和分页的结合
8.1.5 保护和共享
8.2 操作系统软件
8.2.1 读取策略
8.2.2 放置策略
8.2.3 替换策略
8.2.4 驻留集管理
8.2.5 清除策略
8.2.6 加载控制
8.3.1 分页系统
8.3 UNIX和Solaris内存管理
8.3.2 内核内存分配器
8.4 Linux内存管理
8.4.1 Linux虚拟内存
8.4.2 内核内存分配
8.5 Windows内存管理
8.5.1 Windows虚拟地址映射
8.5.2 Windows分页
8.6 小结
8.7 推荐读物和网站
8.8 关键术语、复习题和习题
附录8A 哈希表
第四部分 调度
第9章 单处理器调度
9.1 处理器调度的类型
9.1.1 长程调度
9.1.2 中程调度
9.2 调度算法
9.2.1 短程调度准则
9.1.3 短程调度
9.2.2 优先级的使用
9.2.3 选择调度策略
9.2.4 性能比较
9.2.5 公平共享调度
9.3 传统的UNIX调度
9.4 小结
9.5 推荐读物
9.6 关键术语、复习题和习题
附录9A 响应时间
附录9B 排队系统
编程项目2:主机调度shell程序
10.1.1 粒度
第10章 多处理器和实时调度
10.1 多处理器调度
10.1.2 设计问题
10.1.3 进程调度
10.1.4 线程调度
10.2 实时调度
10.2.1 背景
10.2.2 实时操作系统的特点
10.2.3 实时调度
10.2.4 时限调度
10.2.5 速率单调调度
10.2.6 优先级逆转
10.3 Linux调度
10.3.1 实时调度
10.3.2 非实时调度
10.4 UNIX SVR4调度
10.5.1 进程和线程优先级
10.5 Windows调度
10.5.2 多处理器调度
10.6 小结
10.7 推荐读物
10.8 关键术语、复习题和习题
第五部分 输入/输出和文件
第11章 I/O管理和磁盘调度
11.1 I/O设备
11.2 I/O功能的组织
11.2.1 I/O功能的发展
11.2.2 直接存储器访问
11.3.1 设计目标
11.3.2 I/O功能的逻辑结构
11.3 操作系统设计问题
11.4 I/O缓冲
11.4.1 单缓冲区
11.4.2 双缓冲
11.4.3 循环缓冲
11.4.4 缓冲的用途
11.5 磁盘调度
11.5.1 磁盘性能参数
11.5.2 磁盘调度策略
11.6 RAID
11.6.1 RAID第0层
11.6.2 RAID第1层
11.6.3 RAID第2层
11.6.4 RAID第3层
11.6.5 RAID第4层
11.6.7 RAID第6层
11.7 磁盘高速缓冲
11.6.6 RAID第5层
11.7.1 设计考虑
11.7.2 性能考虑
11.8 UNIX SVR4 I/O
11.8.1 缓冲区高速缓存
11.8.2 字符队列
11.8.2 无缓冲I/O
11.8.3 UNIX设备
11.9 LINUX I/O
11.9.1 磁盘调度
11.9.2 Linux页面缓存
11.10 Windows I/O
11.10.1 基本I/O模块
11.11 小结
11.10.3 软件RAID
11.10.2 异步I/O和同步I/O
11.12 推荐读物和网站
11.13 关键术语、复习题和习题
附录11A 磁盘存储设备
第12章 文件管理
12.1 概述
12.1.1 文件和文件系统
12.1.2 文件结构
12.1.3 文件管理系统
12.2 文件组织和访问
12.2.1 堆
12.2.2 顺序文件
12.2.3 索引顺序文件
12.2.4 索引文件
12.3.2 结构
12.3.1 内容
12.3 文件目录
12.2.5 直接文件或散列文件
12.3.3 命名
12.4 文件共享
12.4.1 访问权限
12.4.2 同时访问
12.5 记录组块
12.6 二级存储管理
12.6.1 文件分配
12.6.2 空闲空间的管理
12.6.3 可靠性
12.7 UNIX文件管理
12.7.1 索引节点
12.7.2 文件分配
12.7.3 目录
12.8 Linux虚拟文件系统
12.7.4 卷结构
12.8.1 超级块对象
12.8.2 索引节点对象
12.8.3 目录项对象
12.8.4 文件对象
12.9 Windows文件系统
12.9.1 NTFS的重要特征
12.9.2 NTFS卷和文件结构
12.9.3 可恢复性
12.10 小结
12.11 推荐读物
12.12 关键术语、复习题和习题
第六部分 分布式系统和安全
第13章 网络
13.1 为什么需要网络体系结构
13.2 TCP/IP协议体系结构
13.2.2 TCP与UDP
13.2.1 TCP/IP层
13.2.3 IP和IPv6
13.2.3 TCP/IP操作过程
13.2.4 TCP/IP应用程序
13.3 套接字
13.3.1 套接字
13.3.2 套接字接口调用
13.4 Linux网络
13.4.1 发送数据
13.4.2 接收数据
13.5 小结
13.6 推荐读物和网站
13.7 关键术语、复习题和习题
附录13A 简单文件传输协议
14.1 客户/服务器计算模型
14.1.1 什么是客户/服务器计算模型
第14章 分布式处理、客户/服务器和集群
14.1.2 客户/服务模型的应用
14.1.3 中间件
14.2 分布式消息传递
14.2.1 可靠性与不可靠性
14.2.2 阻塞与无阻塞
14.3 远程过程调用
14.3.2 参数表示
14.3.1 参数传递
14.3.3 客户/服务器绑定
14.3.4 同步和异步
14.3.5 面向对象机制
14.4 集群
14.4.1 集群的配置
14.4.2 操作系统的设计问题
14.4.3 集群计算机的体系结构
14.5 Windows集群服务器
14.4.4 集群与SMP
14.6 Sun集群
14.6.1 对象和通信支持
14.6.2 进程管理
14.6.3 网络连接
14.6.4 全局文件系统
14.7 Beowulf和Linux集群
14.7.1 Beowulf特征
14.7.2 Beowulf软件
14.8 小结
14.9 推荐读物和网站
14.10 关键术语、复习题和习题
15.1.1 动机
15.1.2 进程迁移机制
第15章 分布式进程管理
15.1 进程迁移
15.1.3 迁移协商
15.1.4 移出
15.1.5 抢占式转移和非抢占式转移
15.2 分布式全局状态
15.2.1 全局状态和分布式快照
15.2.2 分布式快照算法
15.3.1 分布式互斥概念
15.3 分布式互斥
15.3.2 分布式系统中的事件排序
15.3.3 分布式队列
15.3.4 令牌传递方法
15.4 分布式死锁
15.4.1 资源分配中的死锁
15.4.2 消息通信中的死锁
15.6 推荐读物
15.5 小结
15.7 关键术语、复习题和习题
第16章 安全
16.1 安全威胁
16.1.1 威胁的类型
16.1.2 计算机系统资产
16.2 保护
16.2.1 内存的保护
16.2.2 面向用户的访问控制
16.2.3 面向数据的访问控制
16.3 入侵者
16.3.1 入侵技术
16.3.2 口令保护
16.3.3 口令选择策略
16.3.4 入侵检测
16.4.1 恶意程序
16.4 恶意软件
16.4.2 病毒的本质
16.4.3 病毒的类型
16.4.4 宏病毒
16.4.5 反病毒方法
16.4.6 电子邮件病毒
16.5 可信系统
16.5.1 特洛伊木马的防范
16.6 Windows安全
16.6.1 访问控制方案
16.6.2 访问令牌
16.6.3 安全描述符
16.7 小结
16.8 推荐读物和网站
16.9 关键术语、复习题和习题
附录16A 加密
A.1 互斥:软件方法
附录A 并发主题
A.2 竞争条件和信号量
A.3 理发店问题
A.4 习题
附录B 面向对象设计
B.1 动机
B.2 面向对象的概念
B.3 面向对象设计的优点
B.4 CORBA
B.5 推荐读物和网站
附录C 程序设计和操作系统项目
C.1 用于教学的操作系统项目
C.2 Nachos
C.4 程序设计项目
C.3 研究项目
C.5 阅读/报告作业
附录D OSP:一个操作系统项目环境
D.1 概述
D.2 OSP的创新
D.3 和其他操作系统课件的比较
附录E BACI:BEN-ARI并发程序设计系统
E.1 引言
E.2 BACI
E.3 BACI程序例子
E.4 BACI项目
E.5 BACI系统的增强
术语表
参考文献
索引