适用于天津师范大学
屠立德
书籍介绍:
图书简介:
本书是一本全面详尽地介绍Windows NT和近代UNIX,并以该系统作为范例的教科书。本书也是一本力求把现代操作系统的典型特征--多线程、微内核、SMP多处理器第应届生、分布式系统、客户/服务器模式与经典的操作系统原理紧密结合的教科书。本书共分6部分(14章)。第1部分介绍操作系统的基本概念和运行。第2部分分别以一章讨论进程和多线程机制以及并行性。第3部分主要讨论以SMP多处理器调度为中心的处理器管理与死锁。第4部分讨论存储管理技术,着重研究了内核主存管理和虚拟存储技术新发展。第5部分是设备和文件管理,着重介绍了流和虚拟(多重)文件系统机制。第6部分探讨了分布式计算机系统、微内核、操作系统结构和范例。本书作为计算机专业教材,内容丰富,通俗易懂,便于自学,可作为大专院校计算机专业以及研究生的教科书和参考书,也可作为电视大学的教材。
前言:
首先我们衷心感谢广大读者的厚爱和支持,本书出版十几年来,已印刷二十多次,发行数十万册。广大读者把他们积累的经验和体会无私地贡献给我们,为本书的改进和提高作出了贡献,在此我们向广大读者表示深深的敬意和感谢。
在世纪之交、千禧年之际,我们迎接着新世纪的到来,更期待着我国信息产业的巨大发展。还记得今年仲夏之时,我国计算机界人士一致强烈呼吁“必须迅速发展我国自己的操作系统,它是我国信息产业的坚实基础”。此时,我们修订出版本书第三版,就是本着为推动和发展我国操作系统事业尽我们微薄之力。因此本书宗旨是: 致力于经典的操作系统基本原理和概念的深入研讨和阐述;着眼于现代操作系统最新技术的发展和应用。
这次修订的第三版围绕经典操作系统基本原理和概念为框架和基线,以密切反映现代操作系统技术的新发展和新特征为重点。因为几十年来操作系统经历着日新月异的变化,尽管现代操作系统以多线程、微内核、SMP多处理器系统、客户/服务器模式和分布式、网络系统为特征,但操作系统的基本原理和概念不但没有什么变化,而且更趋成熟,它依然是操作系统课程的基本骨架。但是操作系统在骨架未变的基础上确实有着惊人的变化。那就是:
多线程机制: 它已构成了现代操作系统最主要的活动实体。不讲解多线程机制就等于失去操作系统的灵魂。所以本书抽出一章专门介绍多线程,并把多线程概念有机地融合在全书之中,贯穿全书各个章节。
微内核与客户/服务器模式: 这两者看似两个不同的概念,但它们一起共同地反映了现代操作系统结构设计的主要趋势。对操作系统的安全性、灵活性、可扩充性等带来强烈而深远的影响。在操作系统课程中不可不加以仔细深入的研究。本书既在专门章节中加以研讨,更将其融合并贯穿全书始终。
多处理器系统: 已被广泛使用于工作站和服务器之中,计算机从业人员不可不熟悉它,尤其是对称多处理器(SMP)系统更被广泛使用。本书用专门一章来研究多处理器系统及其调度算法,这也是本次修订的一个重要方面。
分布式系统: 它不但是当前发展热点,而且被各团体、单位广为使用,本书也以专门章节对其进行研讨。
对第二版中的许多章节我们也引入了许多新的内容,例如增加了内核主存管理、多重页表和反向页表、流的机制、虚拟或多重文件系统框架等等,可以说每个章节均有较大改动。
本书对国内读者熟悉的P.V操作的名称决定在本书中放弃不用,改为Wait和Signal操作。其原因是这两个操作在程序语言中往往不用P.V这种称呼,在国外教科书中也早已不用P.V名称。本书中的这种改变,也许会在一开始使教师和读者感到不便,但从长远来说是有好处的。
本书目录中画有“*”号部分,授课教师可以根据教学计划进行变动。但作者以为本书中许多内容也许是“新”的,但在一二年内,这些内容将会是计算机中普遍应该了解掌握的内容,作者鼓励读者通过自学(课内学时有限)来掌握它。本书内容阐述深入浅出,适合自学。
本书中以现代操作系统的典型系统Windows NT和近代UNIX这两个系统作为全书的范例。对于近代UNIX系统如Mach、Solaris、SVR4等,是将它们中的先进技术和机制分散到各章中作为该章的典型范例来使用,以收到与全书内容紧密结合的效果,便于读者领会、理解和加深该章所述的内容。而Windows NT则作为一个完整的系统范例自成一章,便于读者从系统整体角度来认识和理解一个操作系统。建议读者在阅读各章时也参考Windows NT的相关内容。
本书第1、8、13章由屠祁编写,第7、9章由范群英编写,第2、3、5章由屠郑编写,第12、14章由郭茵编写,其余部分由屠立德编写。屠祁与屠立德教授负责全书的审阅、校核和定稿。由于时间仓促以及作者水平所限,错误和不妥之处在所难免,恳请读者批评指正。
目录:
第1部分概论
第1章引论1
11系统概述1
111计算机的硬件组织1
112软件的层次与虚拟机的概念3
12操作系统的形成和发展4
121什么是操作系统4
122操作系统的形成和发展4
13多道程序设计的概念6
131多道程序设计的引入6
132多道程序设计的概念6
14操作系统的功能和特性8
141操作系统的功能8
142操作系统的特性10
15操作系统的类型10
151多道批处理操作系统11
152分时系统11
153实时系统12
154网络操作系统13
16现代操作系统15
161现代操作系统特点15
162Windows NT简介16
习题17
第2章操作系统的运行环境19
21硬件环境19
211中央处理器(CPU)19
212主存储器21
213缓冲技术23
214中断技术24
215时钟、时钟队列28
22操作系统与其他系统软件的关系29
221作业、作业步和进程的关系29
222重定位的概念30
223绝对装入程序和相对装入程序31
23操作系统与人的接口33
231作业控制语言34
232联机作业控制——终端命令和图形用户接口(GUI)35
24固件——微程序设计概念37
241微程序设计的概念37
242微程序设计和操作系统38
习题39
第2部分进程、多线程和并行性
第3章进程管理41
31进程的概念41
311进程的引入41
312进程的定义42
32进程的状态43
321进程的状态及其变化43
322进程的挂起和解除挂起的状态44
33进程的描述和管理45
331进程的描述45
332进程管理46
34进程控制47
341进程的控制原语47
342操作系统与进程控制的执行52
35UNIX SVR4的进程管理54
习题57
第4章多线程58
41线程的概念58
411线程的引入58
412线程的概念59
42线程的状态和线程管理61
421线程的状态61
*422线程的描述62
*423线程的管理、线程组66
*43多线程的实现67
431概说67
432用户级线程68
433内核级线程70
434KLT和ULT结合的方法71
435线程库71
*44Solaris操作系统的线程机制72
441Solaris的多线程结构72
442轻质进程73
443内核线程74
444用户线程75
445线程的执行75
446内核中断线程76
*45Mach操作系统的线程机制77
习题78
第5章并行性:互斥和同步79
51概论79
52临界段80
521临界段的提出80
522临界段的互斥要求82
53互斥82
531互斥的软件方法83
532互斥的硬件方法87
54信号量90
541信号量90
542信号量及同步原语90
543同步原语的不可分割性92
544用信号量实现进程间互斥93
545生产者和消费者问题94
546阅读者和写入者问题96
55管程97
551管程的定义97
552用管程实现同步98
56进程间的通信100
561进程通信的实现101
562间接通信模式102
563其他通信模式102
57UNIX的进程同步和通信103
571管道(pipes)103
572消息104
573共享主存段105
574信号量106
575信号或软中断108
58Solaris线程同步原语108
习题109
第3部分处理器管理、死锁
第6章多处理器管理系统和处理器管理112
61多处理器系统112
611多处理器系统的优点112
*612多处理器系统并行性的提高113
*613多处理器的硬件组织115
614多处理器系统的分类117
615主/从式多处理器系统117
62对称式多处理器系统(SMP)118
621对称式多处理器系统概念118
622多处理器操作系统118
63调度的层次和作业调度120
631调度的层次120
632作业状态121
633作业的调度121
64单处理器系统的处理器调度122
641选择调度算法时应考虑的问题123
642调度算法124
*65多处理器系统的处理器管理和调度128
651多处理器调度的概念128
652负载共享调度130
653专用处理器式调度131
654群调度131
655调度类和多模式调度器132
656实时调度133
*66UNIX类系统的处理器调度135
习题136
第7章死锁138
71死锁问题的提出138
72死锁的必要条件140
721资源的概念140
722死锁的必要条件140
73死锁的预防141
731预先静态分配法141
732有序资源使用法142
74死锁的避免和银行家算法142
741单资源的银行家算法143
742多资源的银行家算法144
75死锁检测与恢复145
751死锁的检测145
752死锁的恢复146
习题146
第4部分主存储器管理
第8章实存储器管理技术148
81引言148
811主存储器的物理组织、多级存储器148
812主存储器管理功能149
82固定分区149
83可变分区多道管理技术151
831可变分区存储管理的概念151
832存储分配算法152
833存储器的紧缩和程序的浮动154
834动态重定位的可变分区多道管理155
84多重分区(多对界地址)管理157
85简单分页157
86简单分段160
87内核主存管理161
871内核主存管理概述161
8722次幂空闲表分配器162
873伙伴系统162
874SVR4的延迟伙伴算法164
习题165
第9章虚拟存储管理166
91虚拟存储系统的基本概念166
92分页存储管理167
921分页系统中的地址转换167
922硬件支持171
93分段存储管理173
931分段概述173
932分段的实现174
94段页式存储管理175
941段页式存储管理的基本概念175
942段页式存储管理中的地址转换175
943段页式存储管理算法176
944段页式存储管理的优缺点177
945Intel Pentium的段页式机制178
946保护环和调用门180
95页的置换算法181
951页面访问失效及处理181
952页面置换算法182
953交换区186
96页架的分配策略186
961物理主存186
962空闲页面链表187
963页架分配中的有关策略188
964分页环境中程序的行为特性191
97主存共享、快表一致性问题193
971主存共享193
972快表一致性问题194
98SVR4 UNIX的存储管理197
习题199
第5部分设备和文件管理
第10章设备管理201
101概述201
102I/O子系统的层次模型202
1021I/O子系统的设计目标202
1022I/O子系统的层次模型203
103I/O硬件组成204
1031设备和设备控制器204
1032直接存储器访问205
1033通道方式和输入输出处理器206
104设备驱动程序207
1041设备和驱动程序分类207
1042设备开关表208
1043设备驱动程序框架209
105I/O子系统211
1051设备命名211
1052输入输出缓冲区212
1053I/O子系统独立于设备的工作215
*106流216
1061流的概念216
1062消息和队列218
1063流I/O220
107磁盘调度221
1071磁盘的硬件特性221
1072磁盘调度算法223
108虚拟设备和SPOOL系统226
习题227
第11章文件系统229
111文件230
1111文件的命名230
1112文件的结构231
1113文件的类型232
1114文件的属性234
1115文件的操作235
1116文件加锁235
112目录236
1121目录内容236
1122文件目录的结构237
1123路径名241
1124符号连接242
1125目录操作242
113文件系统的实现243
1131文件空间的分配和管理243
1132UNIX系统的目录实现246
1133磁盘空间的管理248
1134文件系统在主存的数据结构和打开操作249
1135文件系统安装251
*114虚拟文件系统——多重文件系统框架和接口251
1141vnode/vfs体系结构的目标和设计思想252
1142虚拟文件系统接口概述253
1143安装一个文件系统,虚拟文件系统开关表255
115安全性和保护256
1151用户确认技术257
1152保护机制——数据安全性258
1153其他259
1154文件的转储和恢复260
习题261
第6部分分布式计算机系统、操作系统结构和范例
*第12章分布式计算机系统262
121概述262
1211什么是分布式计算机系统262
1212分布式系统的优点263
122分布式操作系统特点264
1221进程通信264
1222资源管理265
1223系统结构265
123进程通信266
1231进程通信概述266
1232TCP/IP通信协议267
1233分布式环境的客户/服务器模式270
1234分布式进程通信272
124分布式文件系统277
1241分布式文件系统概述277
1242分布式文件系统的组成278
1243分布式文件系统的体系结构279
1244客户端高速缓存和一致性282
125分布式系统中的互斥与死锁283
1251逻辑钟和逻辑时283
1252时间戳算法(Lamport算法)284
1253令牌传送算法285
126进程迁移287
1261进程迁移的原因287
1262进程迁移机制288
习题289
第13章微内核、操作系统的结构和设计290
131微内核290
1311使用微内核结构的优点290
1312微内核结构292
1313微内核的实现293
132操作系统的设计294
1321设计的目标和原则294
1322操作系统的设计296
133操作系统的结构298
1331模块接口法(单块式)298
1332层次结构设计法299
1333客户/服务器方式300
习题301
*第14章Windows NT操作系统303
141Windows NT操作系统概述303
142Windows NT的设计目标304
143Windows NT的系统模型305
144Windows NT的结构307
1441NT的保护子系统307
1442NT执行体308
1443客户/服务器模型实现的例子309
1444关于NT的结构310
145Windows NT的基元成分——对象、进程和线程310
1451对象310
1452进程313
1453线程315
1454进程管理程序317
146微内核和对称多处理器系统318
1461微内核和对称多处理器系统(SMP)318
1462NT的线程状态转换318
1463内核调度程序319
1464进程和线程的优先级322
147NT的同步对象323
1471线程同步概述323
1472用NT对象进行同步324
148虚拟存储管理326
1481进程的虚拟地址空间326
1482NT的虚拟分页327
1483页面调度策略和工作集330
1484页架状态和页架数据结构331
1485主存映射文件和视图332
149输入输出系统334
1491输入输出(I/O)系统的结构335
1492统一的驱动程序模型336
1493异步I/O操作和I/O请求处理过程337
1494映射文件I/O337
1410Windows NT的内装网络337
14101Windows NT的内装网络的特色338
14102Windows NT网络的体系结构339
1411对象管理程序340
1412进程通信——本地过程调用(LPC)341
1413Windows NT的安全性341
14131NT安全性341
14132存取令牌和安全描体342
1414综述344
习题344
参考文献346