第1章 引论 1
1.1 什么是操作系统 1
1.1.1 硬件与软件 1
1.1.2 计算机系统的资源 2
1.1.3 操作系统及其历史发展的演变 3
1.2 操作系统的分类 6
1.2.1 单用户操作系统 6
1.2.2 批处理操作系统 6
1.2.3 分时操作系统 8
1.2.4 实时操作系统 9
1.2.5 网络操作系统 10
1.2.6 分布式操作系统 11
1.3.2 处理机管理 12
1.3.1 存储管理 12
1.3 操作系统的功能 12
1.3.3 作业控制管理 13
1.3.4 设备管理 13
1.3.5 文件系统管理 13
第2章 存储管理 14
2.1 单一连续区存储管理 14
2.1.1 单一连续区模式的基本思想 14
2.1.2 硬件支撑 14
2.1.3 软件支撑 15
2.2 多分区的存储管理 17
2.2.1 多分区模式主存的组织 17
2.2.2 固定分区的存储管理 18
2.2.3 可变式分区及其运作过程 20
2.2.4 动态重定位 22
2.2.5 分区分配的策略 24
2.2.6 空闲分区——“洞”的管理 25
2.3 覆盖与交换技术 27
2.3.1 覆盖 27
2.3.2 交换 28
2.4 分页式存储管理 29
2.4.1 分页的实现原理 29
2.4.2 页式存储时的地址结构 31
2.4.3 地址映象的具体实现 31
2.4.4 空闲块的管理 33
2.5 虚拟存储与请求分页 34
2.5.1 虚拟存储器的概念 34
2.5.2 请求分页式存储管理 35
2.5.3 请求分页存储管理运作的全过程 37
2.5.4 主存页面的淘汰算法 39
2.5.5 对页面尺寸的概略讨论 42
2.6 段式与段页式虚拟存储管理 44
2.6.1 段式虚存的基本思想 45
2.6.2 段式地址转换 46
2.6.3 段的动态链接 47
2.6.4 段的共享与保护 47
2.6.5 段页式虚拟存储管理 48
习题 51
第3章 进程概念与处理机管理 53
3.1 程序与进程 53
3.1.1 单道程序系统 53
3.1.2 多道程序系统 54
3.1.3 进程的定义 55
3.2.2 进程状态的变迁 56
3.2.1 进程的3种基本状态 56
3.2 进程状态及状态的变迁 56
3.3 进程管理的数据结构——进程控制块 58
3.3.1 进程的3个组成部分 58
3.3.2 进程控制块的内容 59
3.3.3 进程控制块的组织——PCB队列 61
3.4 进程控制原语 62
3.4.1 创建进程原语 62
3.4.2 撤消进程原语 62
3.4.3 阻塞进程原语 63
3.4.4 唤醒进程原语 63
3.5 处理机调度 63
3.5.1 调度综述 64
3.5.2 先进先出(FIFO)调度算法 66
3.5.3 优先级调度算法 67
3.5.4 轮转(RR)调度算法 68
3.5.5 多级反馈队列(MFQ)调度算法 68
习题 70
第4章 作业管理 71
4.1 操作系统与用户的两种接口 71
4.1.1 程序级用户接口——系统调用 71
4.1.2 作业控制级用户接口 72
4.2 作业的控制方式 74
4.2.1 脱机控制方式 74
4.2.2 联机控制方式 76
4.3 作业的管理 76
4.3.1 作业管理的数据结构——作业控制块 76
4.3.2 作业的状态及状态变迁 77
4.4.1 作业调度综述 78
4.4 作业调度及调度算法 78
4.4.2 先来先服务(FCFS)调度算法 79
4.4.3 短作业优先(SJF)调度算法 80
4.4.4 响应比最高优先(HRN)调度算法 80
4.4.5 基于优先级的调度算法 81
习题 82
第5章 设备管理 83
5.1 概述 83
5.1.1 设备的分类 83
5.1.2 设备管理的任务 84
5.2 设备的4种控制方式 86
5.2.1 循环测试I/O方式 86
5.2.2 程序中断I/O方式 86
5.2.3 直接存储器访问(DMA)方式 87
5.2.4 通道I/O方式 88
5.3 设备管理的数据结构——设备控制块 90
5.3.1 设备分配中的数据结构 90
5.3.2 设备的分配 91
5.3.3 设备管理的一个实例 93
5.4 设备管理中的若干技术 95
5.4.1 I/O缓冲技术 95
5.4.2 磁盘调度技术 96
5.4.3 SPOOLing技术与虚拟设备 99
习题 100
第6章 文件管理 102
6.1 概述 102
6.1.1 文件和文件系统 102
6.1.2 文件的逻辑结构 103
6.1.3 文件的物理结构 104
6.2.2 位图法 108
6.2 磁盘空间的管理 108
6.2.1 空闲区表法 108
6.2.3 空闲块链接表法 109
6.3 文件的目录结构 109
6.3.1 文件管理的数据结构——文件控制块 109
6.3.2 一级目录结构 110
6.3.3 二级和多级目录结构 112
6.4 文件的共享、保护和保密以及使用 115
6.4.1 文件的共享 115
6.4.2 文件的保护和保密 116
6.4.3 文件的使用 117
习题 118
7.1 进程的并行执行 119
7.1.1 进程的并发性 119
第7章 进程间的相互制约关系 119
7.1.2 与时间有关的错误 120
7.2 进程间的互斥关系 125
7.2.1 互斥与临界段 125
7.2.2 进程互斥的实现 126
7.3 进程间的同步与信号量 129
7.3.1 进程间的同步关系 129
7.3.2 信号量与P、V操作 130
7.3.3 信号量在操作系统中的应用实例 133
7.4 进程间的通信 134
7.4.1 进程通信 134
7.4.2 消息缓冲通信 135
7.4.3 信箱通信 137
7.5 死锁 139
7.5.1 死锁产生的原因 139
7.5.2 预防死锁的策略 142
7.5.3 避免死锁的策略 144
7.5.4 死锁的检测与恢复 146
习题 147
第8章 操作系统结构简介 148
8.1 概述 148
8.2 模块接口结构 149
8.2.1 模块和接口 149
8.2.2 模块接口结构简介 149
8.2.3 对模块接口结构的分析 149
8.3 进程结构 150
8.3.1 内核 150
8.3.2 进程结构简介 151
8.3.3 对进程结构的分析 151
8.4.1 层次结构简介 152
8.4 层次结构 152
8.4.2 分层的原则 153
8.4.3 对层次结构的分析 154
第9章 WINDOWS的基本使用 155
9.1 WINDOWS的安装与运行 155
9.1.1 安装与运行 155
9.1.2 WINDOWS的屏幕 155
9.2 WINDOWS的对话框操作 158
9.2.1 移动整个对话框 158
9.2.2 对话框内的各种内容 158
9.2.3 对话框的关闭 161
9.3 程序管理器 161
9.3.1 “文件”菜单选择项 161
9.3.2 “任选项”菜单选择项 165
9.3.3 “窗口”菜单选择项 167
9.3.4 “求助说明”菜单选择项 168
9.4 WINDOWS主组 168
9.4.1 文件管理器 168
9.4.2 控制台 176
9.4.3 打印管理器 178
9.5 WINDOWS附件 179
9.5.1 书写器 180
9.5.2 调色板 181
第10章 MS-DOS操作系统 185
10.1 概述 185
10.1.1 MS-DOS的基本结构 185
10.1.2 MS-DOS系统的启动 189
10.2 MS-DOS的存储管理 192
10.2.1 IBM PC的一些知识 192
10.2.2 常规内存管理的数据结构——内存控制块(MCB) 194
10.2.3 常规内存的分配与释放 195
10.3 MS-DOS的处理机管理 196
10.3.1 程序段前缀(PSP) 196
10.3.2 环境块(EVB) 197
10.3.3 程序的执行与终止 198
10.3.4 关于作业管理 199
10.4 MS-DOS的设备管理 200
10.4.1 设备头与设备头链 200
10.4.2 块设备的管理 201
10.4.3 字符设备的管理 203
10.5 MS-DOS的文件管理 203
10.5.1 文件分配表—FAT 203
10.5.2 树型目录结构 205
10.5.4 句柄 206
10.5.3 系统文件表——SFT 206
第11章 UNIX操作系统 208
11.1 概述 208
11.1.1 UNIX系统的基本结构 208
11.1.2 UNIX系统的运行 209
11.2 UNIX的进程管理 210
11.2.1 图象的概念 210
11.2.2 UNIX的进程调度 213
11.2.3 UNIX的进程通信 215
11.3 UNIX的存储管理 219
11.3.1 存储管理部件 219
11.3.2 UNIX进程图象的虚、实地址空间 220
11.3.3 UNIX存储管理及分配释放策略 221
11.4.1 基本工作原理 222
11.4 UNIX的文件管理 222
11.4.2 数据结构 223
11.4.3 UNIX文件的物理结构 229
11.4.4 资源管理综述 229
11.4.5 子文件系统的装卸 232
11.5 UNIX的设备管理 234
11.5.1 块设备管理的数据结构 234
11.5.2 缓存控制块buf的各种队列 236
11.5.3 字符设备管理的数据结构 237
11.5.4 字符缓存的管理 239
11.6 UNIX命令语言shell 240
11.6.1 shell命令语言 240
11.6.2 shell程序设计语言 244
参考文献 245