操作系统是现代计算机系统中必不可少的基本系统软件,也是计算机专业的必修课程和从事计算机应用人员必不可少的知识。 本书是编著者在清华大学计算机系多年教学和科研的基础上对第3版改编而成的,全书共12章,主要内容包括操作系统用户界面、进程与线程管理、处理机管理、内存管理、文件系统与设备管理等基本原理及Linux和Windows两个主流操作系统的内核介绍。 与第3版相比,本书进一步深入浅出地对操作系统的基本原理进行了描述,而且,本书更进一步强调了学生对当前主流操作系统的应有了解。因此,本书在第3版Linux 2.4和Windows NT操作系统实例的基础上,补充了有关Linux 2.6、Windows NT 6.0以及嵌入式操作系统的相关知识。 本书可作为高等院校计算机专业或相关专业操作系统课程的教材,也可供有关科技人员自学或参考。
目录
- 第1章绪论1
- 1.1操作系统概念1
- 1.2操作系统的历史2
- 1.2.1手工操作阶段2
- 1.2.2早期批处理3
- 1.2.3多道程序系统5
- 1.2.4分时操作系统6
- 1.2.5实时操作系统6
- 1.2.6通用操作系统7
- 1.2.7操作系统的进一步发展7
- 1.3操作系统的基本类型8
- 1.3.1批处理操作系统8
- 1.3.2分时系统9
- 1.3.3实时系统9
- 1.3.4通用操作系统10
- 1.3.5个人计算机上的操作系统10
- 1.3.6网络操作系统10
- 1.3.7分布式操作系统11
- 1.4操作系统功能11
- 1.4.1处理机管理12
- 1.4.2存储管理12
- 1.4.3设备管理12
- 1.4.4信息管理(文件系统管理)12
- 1.4.5用户接口13
- 1.5计算机硬件简介13
- 1.5.1计算机的基本硬件元素13
- 1.5.2与操作系统相关的几种主要寄存器14
- 1.5.3存储器的访问速度15
- 1.5.4指令的执行与中断15
- 1.5.5操作系统的启动16
- 1.6算法的描述16
- 1.7研究操作系统的几种观点17
- 1.7.1计算机资源管理者的观点18
- 1.7.2用户界面的观点18
- 1.7.3进程管理的观点18
- 本章小结18
- 习题19
- 第2章操作系统用户界面20
- 2.1简介20
- 2.2一般用户的输入输出界面21
- 2.2.1作业的定义21
- 2.2.2作业组织21
- 2.2.3一般用户的输入输出方式22
- 2.3命令控制界面24
- 2.4Linux与Windows的命令控制界面25
- 2.4.1Linux的命令控制界面25
- 2.4.2Windows的命令控制界面27
- 2.5系统调用29
- 2.6Linux和Windows的系统调用31
- 2.6.1Linux系统调用31
- 2.6.2Windows系统调用32
- 本章小结33
- 习题34
- 第3章进程管理35
- 3.1进程的概念35
- 3.1.1程序的并发执行35
- 3.1.2进程的定义39
- 3.2进程的描述39
- 3.2.1进程控制块40
- 3.2.2进程上下文41
- 3.2.3进程上下文切换43
- 3.2.4进程空间与大小43
- 3.3进程状态及其转换44
- 3.3.1进程状态44
- 3.3.2进程状态转换44
- 3.4进程控制45
- 3.4.1进程创建与撤销45
- 3.4.2进程的阻塞与唤醒47
- 3.5进程互斥47
- 3.5.1资源共享所引起的制约47
- 3.5.2互斥的加锁实现50
- 3.5.3信号量和P、V原语51
- 3.5.4用P、V原语实现进程互斥54
- 3.6进程同步55
- 3.6.1同步的概念55
- 3.6.2私用信号量56
- 3.6.3用P、V原语操作实现同步57
- 3.6.4生产者消费者问题58
- 3.7进程通信59
- 3.7.1进程的通信方式59
- 3.7.2消息缓冲机制60
- 3.7.3邮箱通信61
- 3.7.4进程通信的实例——和控制台的通信62
- 3.7.5进程通信的实例——管道66
- 3.8死锁问题69
- 3.8.1死锁的概念69
- 3.8.2死锁的消除方法70
- 3.9线程的概念71
- 3.9.1为什么要引入线程71
- 3.9.2线程的基本概念72
- 3.9.3线程与进程的区别72
- 3.9.4线程的适用范围73
- 3.10线程分类与执行74
- 3.10.1线程的分类74
- 3.10.2线程的执行特性76
- 本章小结77
- 习题77
- 第4章处理机调度79
- 4.1分级调度79
- 4.1.1作业的状态及其转换79
- 4.1.2调度的层次80
- 4.1.3作业与进程的关系81
- 4.2作业调度81
- 4.2.1作业调度功能81
- 4.2.2作业调度目标与性能衡量82
- 4.3进程调度84
- 4.3.1进程调度的功能84
- 4.3.2进程调度的时机85
- 4.3.3进程调度性能评价86
- 4.4调度算法86
- 4.5算法评价90
- 4.5.1FCFS方式的调度性能分析90
- 4.5.2轮转法调度性能评价93
- 4.5.3线性优先级法的调度性能94
- 4.6实时系统调度方法95
- 4.6.1实时系统的特点95
- 4.6.2实时调度算法的分类97
- 4.6.3时限调度算法与频率单调调度算法97
- 本章小结99
- 习题99
- 第5章存储管理101
- 5.1存储管理的功能101
- 5.1.1虚拟存储器101
- 5.1.2地址变换102
- 5.1.3内外存数据传输的控制104
- 5.1.4内存的分配与回收104
- 5.1.5内存信息的共享与保护105
- 5.2分区存储管理106
- 5.2.1分区管理基本原理106
- 5.2.2分区的分配与回收108
- 5.2.3有关分区管理其他问题的讨论111
- 5.3覆盖与交换技术112
- 5.3.1覆盖技术112
- 5.3.2交换技术113
- 5.4页式管理115
- 5.4.1页式管理的基本原理115
- 5.4.2静态页面管理115
- 5.4.3动态页式管理118
- 5.4.4请求页式管理中的置换算法120
- 5.4.5存储保护123
- 5.4.6页式管理的优缺点123
- 5.5段式与段页式管理124
- 5.5.1段式管理的基本思想124
- 5.5.2段式管理的实现原理124
- 5.5.3段式管理的优缺点128
- 5.5.4段页式管理的基本思想129
- 5.5.5段页式管理的实现原理129
- 5.6局部性原理和抖动问题131
- 本章小结134
- 习题134第6章进程与存储管理示例136
- 6.1Linux进程和存储管理简介136
- 6.2Linux进程结构139
- 6.2.1进程的概念139
- 6.2.2进程的虚拟地址结构140
- 6.2.3进程上下文141
- 6.2.4进程的状态和状态转换143
- 6.2.5小结145
- 6.3Linux进程控制145
- 6.3.1Linux启动及进程树的形成145
- 6.3.2进程控制146
- 6.4Linux进程调度149
- 6.5Linux进程通信152
- 6.5.1Linux的低级通信152
- 6.5.2进程间通信153
- 6.6Linux存储管理161
- 6.6.1虚存空间和管理161
- 6.6.2请求调页技术163
- 本章小结165
- 习题166
- 第7章Windows的进程与内存管理167
- 7.1Windows NT的特点及相关的概念167
- 7.1.1Windows NT体系结构的特点167
- 7.1.2Windows的管理机制168
- 7.2Windows进程和线程169
- 7.2.1Windows的进程和线程的定义170
- 7.2.2进程和线程的关联170
- 7.2.3Windows进程的结构170
- 7.2.4Windows线程的结构171
- 7.2.5Windows进程和线程的创建172
- 7.3Windows处理器调度机制173
- 7.3.1调度优先级174
- 7.3.2线程状态174
- 7.3.3线程调度机制175
- 7.4Windows的内存管理176
- 7.4.1内存管理器177
- 7.4.2内存管理的机制177
- 7.5虚拟地址空间178
- 7.5.1虚拟地址空间布局178
- 7.5.2虚拟地址转换179
- 7.6页面调度181
- 7.6.1缺页处理181
- 7.6.2工作集及页面调度策略182
- 7.6.3页框号和物理内存管理182
- 本章小结183
- 习题184
- 第8章文件系统185
- 8.1文件系统的概念185
- 8.2文件的逻辑结构与存取方法187
- 8.2.1逻辑结构187
- 8.2.2存取方法189
- 8.3文件的物理结构与存储设备191
- 8.3.1文件的物理结构192
- 8.3.2文件存储设备194
- 8.4文件存储空间管理195
- 8.5文件目录管理197
- 8.5.1文件的组成198
- 8.5.2文件目录198
- 8.5.3便于共享的文件目录200
- 8.5.4目录管理201
- 8.6文件存取控制203
- 8.7文件的使用205
- 8.8文件系统的层次模型205
- 本章小结207
- 习题208
- 第9章设备管理210
- 9.1引言210
- 9.1.1设备的类别210
- 9.1.2设备管理的功能和任务211
- 9.2数据传送控制方式212
- 9.2.1程序直接控制方式212
- 9.2.2中断方式213
- 9.2.3DMA方式215
- 9.2.4通道控制方式217
- 9.3中断技术219
- 9.3.1中断的基本概念219
- 9.3.2中断的分类与优先级219
- 9.3.3软中断220
- 9.3.4中断处理过程220
- 9.4缓冲技术222
- 9.4.1缓冲的引入222
- 9.4.2缓冲的种类222
- 9.4.3缓冲池的管理223
- 9.5设备分配225
- 9.5.1设备分配用数据结构225
- 9.5.2设备分配的原则227
- 9.5.3设备分配算法228
- 9.6I/O进程控制228
- 9.6.1I/O控制的引入228
- 9.6.2I/O控制的功能228
- 9.6.3I/O控制的实现229
- 9.7设备驱动程序230
- 本章小结230
- 习题231
- 第10章Linux文件系统233
- 10.1Linux文件系统的特点与文件类别233
- 10.1.1特点233
- 10.1.2文件类型234
- 10.2Linux的虚拟文件系统235
- 10.2.1虚拟文件系统框架235
- 10.2.2Linux虚拟文件系统的数据结构235
- 10.2.3VFS的系统调用241
- 10.3文件系统的注册和挂装242
- 10.3.1文件系统注册242
- 10.3.2已挂装文件系统描述符链表243
- 10.3.3挂装根文件系统244
- 10.3.4挂装一般文件系统245
- 10.3.5卸载文件系统246
- 10.4进程与文件系统的联系246
- 10.4.1系统打开文件表246
- 10.4.2用户打开文件表246
- 10.4.3进程的当前目录和根目录247
- 10.5ext2文件系统247
- 10.5.1ext2文件系统的存储结构247
- 10.5.2ext2文件系统主要的磁盘数据结构248
- 10.5.3ext2文件系统的内存数据结构251
- 10.5.4数据块寻址252
- 10.6块设备驱动253
- 10.6.1设备配置253
- 10.6.2设备驱动程序的接口254
- 10.7字符设备驱动255
- 本章小结256
- 习题257
- 第11章Windows的设备管理和文件系统258
- 11.1Windows I/O系统的结构258
- 11.1.1设计目标258
- 11.1.2设备管理服务258
- 11.2设备驱动程序和I/O处理259
- 11.2.1设备驱动类型和结构260
- 11.2.2Windows的I/O处理260
- 11.3Windows的文件系统262
- 11.3.1Windows磁盘管理263
- 11.3.2Windows文件系统格式263
- 11.3.3Windows文件系统驱动264
- 11.4NTFS文件系统264
- 11.4.1NTFS的特点264
- 11.4.2NTFS的磁盘结构265
- 11.4.3NTFS的文件系统恢复266
- 本章小结267
- 习题268
- 第12章嵌入式操作系统简介269
- 12.1嵌入式操作系统的总体架构269
- 12.1.1嵌入式操作系统特点及分类269
- 12.1.2嵌入式操作系统的总体架构270
- 12.2嵌入式操作系统的任务管理273
- 12.2.1多任务机制273
- 12.2.2任务状态和任务状态迁移274
- 12.2.3任务调度275
- 12.2.4任务间通信276
- 12.2.5VxWorks任务管理278
- 12.3内存管理281
- 12.3.1动态内存管理机制282
- 12.3.2VxWorks动态内存管理函数282
- 12.3.3虚拟内存管理机制283
- 12.3.4VxWorks虚拟内存管理284
- 12.4设备管理与文件系统285
- 12.4.1I/O系统内部结构285
- 12.4.2实时内核的中断管理286
- 12.4.3基本I/O操作流程287
- 12.4.4VxWorks的I/O接口287
- 12.4.5文件系统架构及操作288
- 12.4.6VxWorks文件系统289
- 12.5嵌入式操作系统的开发290
- 12.5.1集成开发环境Tornado291
- 12.5.2VxWorks的交叉编译开发环境294
- 12.5.3实例开发的设计与实现过程296
- 本章小结297
- 习题298
- 参考文献299