第1章 操作系统概述 1
什么是操作系统 1
操作系统的目标与功能 2
操作系统作为用户与计算机之间的接口 2
操作系统作为资源管理器 4
操作系统的扩展性 4
操作系统的发展历程 5
单道批处理系统 5
多道批处理系统 5
分时系统 7
实时系统 8
基本操作系统的特征 8
现代Linux系统演变过程 9
习题一 13
第2章 进程描述和控制 14
进程概念 14
程序的顺序执行 14
资源与共享 15
程序的并发执行 15
进程概念的引入 16
进程描述 17
进程映像 17
进程控制块 17
进程状态及转换 18
进程控制 20
进程创建 21
进程终止 21
进程挂起 22
线程 23
线程的引入 23
线程状态 24
线程与进程之间的关系 25
线程实现方式 26
Linux进程、线程创建与管理 29
Linux进程结构 29
进程表 30
系统进程 30
创建新进程 31
替换一个进程映像 32
复制一个进程映像 34
Linux线程创建 36
习题二 38
第3章 同步与互斥 40
基本概念 40
并发进程间的关系 41
竞争关系 41
协作关系 42
解决临界区互斥问题的准则 43
实现互斥的软件方法 43
实现互斥的硬件方法 46
中断禁用 46
测试并建立指令 47
交换指令 47
信号量 47
整型信号量 48
记录型信号量 49
用信号量实现互斥 49
用信号量实现同步 51
经典同步/互斥问题 52
管程 56
管程概念 56
管程应用 57
进程通信 58
信号通信机制 59
共享存储区通信机制 59
共享文件通信机制 60
消息传递通信机制 61
死锁与饥饿 63
死锁产生的原因 64
死锁产生的条件 65
死锁预防(deadlock prevention) 65
死锁避免(deadlock avoidance) 66
死锁检测(deadlock detection) 70
Linux进程通信机制及其应用 72
信号 73
管道 75
System V 77
System V消息队列 78
System V信号量 80
System V共享内存 82
习题三 86
第4章 存储器管理 91
存储器管理概述 91
地址重定位 91
内存的分配和回收 92
存储保护 93
存储共享 93
单一连续存储区管理 94
分区管理 94
固定分区 94
动态分区 96
可重定位动态分区管理 99
伙伴系统 100
简单分页技术 101
分页存储管理的基本概念 101
地址变换机构 102
简单分段技术 104
分段存储管理的基本概念 104
段的共享与保护 106
段页式存储管理 107
习题四 108
第5章 虚拟存储器管理 111
基础知识 111
分级存储体系 111
虚拟存储器的引入 112
虚拟分页存储管理 113
基本思想 113
硬件支持 113
两级页表和多级页表 115
反置页表 117
页面置换算法 117
页面置换过程 118
最佳置换算法(OPT) 118
先进先出页面置换算法(FIFO) 118
最近最久未使用算法(LRU) 119
时钟置换算法(Clock) 119
驻留集管理 121
虚拟分段存储管理 123
习题五 124
第6章 处理器调度 128
单处理器调度 128
调度类型 128
选择调度算法的准则 129
调度算法 130
先来先服务算法(First Come First-Served, FCFS) 130
最短进程优先算法(Shortest Process Next, SPN) 130
时间片轮转算法(Round Robin, RR) 131
最高优先级算法(Highest Priority First, HPF) 132
最高响应比优先算法(Highest Response Ratio Next, HRRN) 132
多级反馈队列算法(Multilevel Feedback Queue,MFQ) 133
各种调度算法的比较 133
实时调度 134
实时任务分类 134
实时任务调度算法 134
习题六 137
第7章 设备管理 140
概述 140
I/O设备分类 141
设备管理功能 144
缓冲技术 145
单缓冲 145
双缓冲 146
循环缓冲 146
中断技术 146
SPOOLing技术 147
SPOOLing技术概述 147
SPOOLing系统工作原理 147
磁盘特性及调度算法 148
磁盘结构与特性 148
磁盘性能参数 149
磁盘调度策略 150
习题七 152
第8章 文件系统 153
文件系统概述 153
记录、文件与数据库概念 154
文件管理功能 154
文件组织和访问 155
文件目录 157
目录 157
目录组成 157
目录操作 158
文件共享 158
记录组块 159
辅存管理 161
习题八 163
实验一Linux及其使用环境、内核查看 165
实验二Shell编程 168
实验三 进程的创建和简单控制 171
实验四 进程互斥 174
实验五 线程机制 176
实验六 进程通信——信号 181
实验七 进程通信——共享内存 185
实验八 进程通信——消息队列 187
实验九 进程通信——管道 189
实验十虚拟内存管理 194
实验十一 文件与目录 198
附录1 Linux环境下的程序设计预备知识 200
附录2 Linux环境下的常用系统调用简介 212
主要参考文献 214