目录 1
第一章 引论 1
一、设置操作系统的目的 1
(一)设置操作系统的两个目的 1
(二)软、硬件资源分类 1
二、操作系统分类 2
(一)实时系统 2
(二)作业处理系统 3
(一)从人工操操作到机器自动处理 6
三、操作系统的功能 6
(二)用快速输入、输出代替低速输入、输出 7
(三)从串行操作到并行操作 7
(四)从单道到多道程序 8
(五)分时操作系统的出现 8
(六)作业处理操作系统功能综合 9
四、操作系统的特性 9
(一)并发 9
(二)共享 9
(一)可靠性 10
五、操作系统的性能 10
(四)不确定性 10
(三)长期信息储存 10
(二)效率 11
(三)可维护性 11
六、UNIX系统的发展历史和特点 11
(一)UNIX系统的产生和发展 11
(二)UNIX系统的某些特点 12
七、UNIX的结构 14
(一)UNIX系统的基本结构 14
(二)UNIX内核源程序结构 14
习题 15
第二章 程序设计语言C 16
一、数据类型、运算符和表达式 16
(一)从一个简单程序开始 16
(二)华氏-摄氏温度对照表打印程序 17
(三)数据类型 19
(四)常数 19
(五)运算符 20
二、控制流 24
(一)语句和复合语句 24
(二)二路选择语句if-else 24
(三)多路选择语句switch 25
(四)循环语句while和for 26
(五)循环语句do-while 27
(六)break和continue语句 27
(七)goto语句 27
三、符号常数和预处理程序 28
(一)符号常数 28
(二)宏代换 28
(三)文件蕴含 29
(四)条件编译 29
(二)复制文件 30
四、两个输入、输出程序及其应用 30
(一)字符输入和输出 30
(三)文件字符、字和行计数 31
五、函数 31
(一)函数的一般形式 31
(二)一个例子 32
(三)返回语句和返回值 32
(四)参数传递方式 33
(五)变量存储类型 33
(一)指针和地址 35
六、指针 35
(六)递归调用 35
(二)指针和函数参数 36
(三)指针和数组 37
(四)指针运算 37
(五)二维数组和指针 38
(六)指针和函数 39
七、结构 40
(一)结构的基本形式 40
(三)结构数组和指针 41
(二)结构指针和函数 41
(四)结构的灵活应用 42
习题 43
第三章 并发进程 44
一、程序和进程 44
(一)程序的顺序执行 44
(二)资源共享和程序的并发运行 44
(三)各种程序活动的相互依赖和制约 45
(四)进程概念的引入和描述 45
(五)进程和程序的区别和联系 46
(六)对并发和不确定性的再说明 46
(一)进程的表示 47
二、进程的表示及调度状态 47
(二)进程的状态 48
三、进程通讯 49
(一)同步 49
(二)互斥和临界区 50
(三)实施临界区互斥的锁操作法 51
(四)信号量 53
(五)高级通讯机构 58
(二)UNIX进程的两种运行状态 60
(一)UNIX进程与图象 60
四、UNIX操作系统中的进程 60
(三)UNIX进程的存储器图象 61
(四)进程基本控制块 62
(五)进程扩充控制块 65
(六)共享正文段 67
习题 68
第四章 中断和陷入 69
一、概述 69
(一)中断及其一般处理过程 69
(三)中断源分类 70
(二)中断优先级和多重中断 70
(四)陷入和系统调用 71
二、PDP-11的中断机构 72
(一)处理机状态字ps 72
(二)中断的多线、多级结构 73
(三)中断矢量 74
三、UNIX中断处理 75
(一)中断隐指令 75
(二)现场保护和参数传递 75
(五)多重中断 79
四、时钟管理 79
(四)恢复现场和退出中断 79
(三)设备处理子程序 79
(一)时钟中断处理子程序 80
(二)时钟中断处理的特点 82
五、陷入处理 82
(一)陷入分类 82
(二)陷入处理子程序 84
六、系统调用处理 85
(一)参数传递 85
(二)系统调用处理程序入口表 86
(三)系统调用基本处理过程 87
七、小结 88
习题 89
第五章 存储管理 90
一、概述 90
(一)二级存储器及信息传送 90
(二)存储器分配 90
(三)地址重定位 91
(四)信息保护 93
二、PDP-11内存管理机构 93
(一)虚地址字 93
(二)内存管理寄存器 94
(三)虚地址到物理地址的转换 95
三、UNIX存储管理 96
(一)在虚、实地址空间中的UNIX进程图象 96
(二)虚、实地址映照 97
(三)存储资源管理 99
(四)UNIX存储管理中的保护 101
(五)UNIX存储管理小结 102
四、虚拟存储器 102
(一)虚拟存储器的基本思想 102
(二)用分页技术实施虚拟存储器 104
(三)段式虚拟存储器 107
(四)段页式虚拟存储器 109
(五)在段式系统中的存放位置选择算法 111
(六)页式系统中的淘汰算法 114
(七)段式系统中的淘汰算法 115
(八)调入算法 116
(九)工作集模型 116
习题 118
第六章 进程管理 120
一、UNIX中进程的各种调度状态 120
(一)运行状态 120
(二)睡眠状态 121
(三)其它状态 123
(四)进程调度状态转换图 124
二、进程切换调度 124
(一)进程调度的一般原理 124
(二)UNIX进程切换调度算法 126
(三)进程切换调度的条件和时机 130
(四)进程切换调度程序swtch 131
(五)UNIX进程调度小结 133
三、进程的睡眠和唤醒 133
(一)进程睡眠 134
(二)唤醒睡眠进程 135
(三)系统调用sleep(seconds) 136
四、进程图象在内存和盘交换区之间的传送 137
(一)进程图象传送和切换调度关系 137
(二)进程图象调入内存算法 137
(三)进程图象调出内存算法 137
(四)进程图象传送程序sched 138
(五)进程图象传送对系统性能的影响 138
五、进程的创建 139
(一)进程的树形体系 139
(二)创建进程的基本任务和方式 139
(三)创建进程的基本工作方式 140
(四)创建进程的系统调用fork 144
六、进程终止和父、子进程同步 145
(一)进程自我终止 145
(二)父进程等待子进程终止 146
七、数据段和栈段的扩大和缩小 147
(一)进程占用存储区的长度变更 147
(二)用户栈的扩充 148
(三)数据段长度的变更 149
习题 150
(一)信号类型 151
二、信号机构的工作原理 151
一、概述 151
第七章 信号和跟踪 151
(二)信号的产生、传送和同步 152
(三)信号处理方式 154
(四)信号检测和处理 155
(五)信号机构应用举例 157
三、跟踪机构的工作原理 158
(一)父、子进程基本跟踪过程 158
(二)跟踪要求和命令的提出及传送 159
(四)系统调用wait在跟踪机构中的应用 161
(三)跟踪处理过程的启动及stop程序 161
(五)跟踪命令的执行和procxmt程序 162
(六)跟踪机构工作综述 163
四、跟踪机构在断点调试中的应用 165
习题 167
第八章 字符块设备管理 168
一、概述 168
(一)设备分类 168
(二)设备管理的设计目标 168
(三)通道 170
(四)缓冲技术 173
二、PDP-11磁盘设备 174
三、UNIX块设备管理的主要数据结构 176
(一)缓冲存储区及缓存控制块 176
(二)块设备表 178
(三)块设备开关表 179
四、缓冲存储区管理 180
(一)两种缓冲存储区管理队列 180
(二)缓存管理算法 181
(三)缓存管理队列的初始状态及变化过程 182
(一)输入/输出请求块及其队列 187
五、块设备驱动 187
(二)块设备启动 188
(三)块设备中断处理和同步操作 189
六、块设备读、写技术 191
(一)字符块输入 191
(二)字符块输出 194
(三)不使用缓存的块设备读、写 195
七、UNIX块设备管理小结 196
习题 197
(一)小型字符缓存及其队列 199
二、字符缓冲技术 199
第九章 字符设备管理 199
一、概述 199
(二)字符缓存管理 200
三、字符设备开关、设备表和设备寄存器组 202
(一)字符设备开关 202
(二)终端机设备表 202
(三)设备寄存器组 204
四、终端机的I/O字符处理及设备驱动 205
(一)终端机I/O字符处理 205
(二)终端机驱动 209
(一)终端机读操作 210
五、终端读、写操作 210
(二)终端机写操作 211
(三)终端机读、写操作过程综合 212
六、终端机的打开和关闭 215
(一)终端机的打开 215
(二)终端机的关闭 215
七、spooling技术简介 215
习题 217
第十章 文件管理系统 219
一、概述 219
二、文件系统的用户界面 219
(一)文件的创建和取消、打开和关闭 220
(二)文件的读、写 221
(三)随机存取 223
三、目录结构 224
(一)一级目录结构 224
(二)二级目录结构 224
(三)多级目录结构 225
四、文件的结构和存取方法 227
(一)文件的逻辑结构和物理结构 227
(五)目录项 227
(四)目录和目录文件 227
(二)文件的三种物理组织方法 228
五、文件存储空间的管理 230
六、文件的共享、保护保密和文件系统的完整性 231
(一)文件的共享和保护保密 231
(二)文件系统的完整性 232
七、UNIX文件系统的主要结构和算法 233
(一)文件控制块inode 233
(二)文件索引结构 235
(三)文件目录结构和目录中的勾连 237
(四)内存打开文件结构 239
(五)文件系统存储资源管理 242
(六)子文件系统装卸和装配块表 245
(七)各主要数据结构之间的联系 247
八、UNIX文件系统的实施 247
(一)文件读、写和地址变换 247
(二)文件的创建、打开、取消和目录搜索 251
习题 255
(一)pipe机构的引入 257
(二)pipe的基本组成 257
一、UNIX进程通讯机构pipe 257
第十一章 进程通讯和死锁 257
(三)pipe文件读、写 259
(四)pipe应用示例 260
二、UNIX中的临界区互斥 262
三、死锁 263
(一)产生死锁的条件 263
(二)死锁的防止 264
(三)死锁的检测及解除 265
(四)死锁的避免 266
习题 268
一、系统初启 269
(一)系统初启的主要工作 269
第十二章 系统初启和再生 269
(二)系统初启程序 272
二、进程图象改换和文件的执行 273
(一)可执行目标程序文件的组成 273
(二)改换进程图象系统调用exec和参数传递 274
(三)exec的基本执行过程 275
(四)exec的两种用法 277
三、UNIX操作系统的再生 278
(一)操作系统再生的几种情况 278
(二)UNIX核源代码的组织 278
(三)UNIX核目标代码的组织 279
(四)系统再生的基本过程 280
习题 280
第十三章 命令控制语言及其解释程序 281
一、概述 281
二、UNIX命令语言shell 282
(一)简单命令 283
(二)后台命令 283
(三)输入、输出转向 284
(四)管道命令 284
(七)元字符的转义 285
(六)模式匹配和文件名参数 285
(五)命令表和命令行 285
(八)shell过程 286
三、shell解释程序的基本结构和工作原理 287
(一)shell解释程序的基本结构 287
(二)命令行的读入 288
(三)命令行的分析和命令行树的构成 289
(四)命令行树的执行 293
(五)命令树和进程族 298
习题 300
一、概述 302
第十四章 并发Pascal和Solo操作系统 302
二、一个并发程序的例子 304
(一)问题的提出 304
(二)抽象数据类型 307
(三)行李托运系统的完整程序 311
三、Solo操作系统简介 314
(一)系统基本性能 314
(二)系统程序结构 315
(三)系统的数据流 316
(四)系统的控制流 317
参考文献 318