第一篇 操作系统原理 2
第1章 绪论 2
1.1操作系统与计算机系统的关系 2
1.1.1计算机系统的组成 2
1.1.2操作系统在计算机系统中的位置 4
1.1.3操作系统与计算机体系结构的关系 5
1.2操作系统的发展历程 7
1.2.1操作系统的发展阶段 7
1.2.2多道程序设计技术与分时技术 8
1.3操作系统的基本概念 10
1.3.1操作系统的定义和特性 10
1.3.2操作系统的资源管理功能 12
1.4操作系统的基本类型 14
1.4.1批量操作系统 14
1.4.2分时操作系统 14
1.4.3实时操作系统 15
1.4.4个人计算机操作系统 16
1.4.5网络操作系统 16
1.4.6分布式操作系统 17
1.5操作系统采用的关键技术 19
1.5.1操作系统采用的并行处理技术 19
1.5.2操作系统采用的虚拟技术 20
习题1 20
第2章 操作系统的运行基础与结构 22
2.1操作系统的运行基础 22
2.1.1处理机的态 22
2.1.2特权指令 23
2.1.3中断概念及类型 23
2.1.4中断进人 24
2.1.5软件中断处理过程 26
2.1.6向量中断 27
2.2操作系统虚拟机 28
2.3操作系统的逻辑结构 29
2.3.1操作系统的四种组织结构 29
2.3.2 Linux操作系统的逻辑结构 31
2.4操作系统运行时的调用方式 32
习题2 33
第3章 操作系统的用户界面 34
3.1操作系统提供的环境 34
3.1.1操作系统的生成和系统引导 34
3.1.2应用程序的处理 37
3.2用户界面 39
3.2.1用户界面概述 39
3.2.2操作系统提供的用户界面 39
3.3系统功能调用 41
3.3.1系统功能调用的定义 41
3.3.2系统功能调用的实现 42
3.3.3应用编程接口 43
习题3 43
第4章进程及进程管理 44
4.1进程的引入 44
4.1.1程序的顺序执行 44
4.1.2程序的并发执行 45
4.2进程的相关概念 48
4.2.1进程的定义 48
4.2.2进程的状态与变迁 49
4.2.3进程描述 50
4.2.4线程的定义与状态 52
4.3进程控制 54
4.3.1进程控制的概念 54
4.3.2进程创建与撤销 54
4.3.3进程等待与唤醒 55
4.4进程协作与系统的支持 56
4.4.1进程竞争与合作 57
4.4.2进程互斥的概念 57
4.4.3进程同步的概念 59
4.4.4锁和上锁、开锁操作 60
4.4.5信号灯和P、 V操作 61
4.5进程互斥与同步的实现 62
4.5.1用锁机制实现进程互斥 62
4.5.2用信号灯机制实现进程互斥 62
4.5.3进程同步的实现 63
4.5.4生产者-消费者问题 66
4.6进程通信 67
4.6.1进程通信的概念 67
4.6.2进程通信方式 67
习题4 69
第5章 操作系统的资源管理 71
5.1资源管理的机制与策略 71
5.1.1资源管理任务 71
5.1.2虚拟资源 72
5.1.3资源分配机制 73
5.1.4资源分配策略 74
5.2死锁及其解决方法 76
5.2.1死锁的定义与例子 76
5.2.2产生死锁的原因和必要条件 77
5.2.3解决死锁问题的策略 78
5.2.4死锁的预防 79
5.2.5死锁的避免 79
5.3处理机管理 80
5.3.1处理机的多级调度 80
5.3.2作业调度 81
5.3.3进程调度的功能 84
5.3.4调度方式 84
5.3.5进程调度算法 85
5.3.6调度用的进程状态变迁图 86
5.4主存管理 87
5.4.1主存管理的功能 87
5.4.2分区存储管理及其存在的问题 91
5.4.3分页存储管理的基本概念 95
5.4.4页式地址变换 97
5.4.5请求页面的机制 98
5.4.6淘汰机制与策略 100
5.4.7段页式存储管理 104
5.5设备管理 107
5.5.1设备管理的功能 107
5.5.2设备独立性与设备控制块 108
5.5.3缓冲技术 110
5.5.4设备分配技术 112
5.5.5输入/输出控制 114
5.6文件系统 118
5.6.1文件与文件系统 118
5.6.2文件的逻辑结构和存取方法 120
5.6.3文件的物理结构 121
5.6.4文件目录 125
5.6.5文件共享与安全 127
5.6.6文件操作与文件备份 130
习题5 132
第6章Linux系统简介 136
6.1 Linux的发展历程 136
6.2 Linux的基本特性 137
6.3 Linux的发行版本 138
6.4 Linux内核版本 141
6.5学习Linux的几点建议 142
第二篇Linux系统实验 144
实验一Linux系统的使用 144
<一>预备知识 144
(一)Linux系统的安装 144
(二)Linux系统的组成 148
(三)Linux系统的用户界面 148
<二>实验指导 150
(一)屏幕编辑程序vi 150
(二)Shell脚本编程 152
(三)编译器gcc 155
<三>实验目的、内容和范例 156
(一)实验目的 156
(二)实验内容 156
(三)实验范例 156
实验二Linux文件系统 158
<一>预备知识 158
(一)Linux文件系统简介 158
(二)Linux系统的目录结构 159
(三)Linux文件属性 161
<二>实验指导 163
(一)文件系统的生成和加载 163
(二)文件系统操作命令 165
(三)文件操作函数 166
<三>实验目的、内容和范例 169
(一)实验目的 169
(二)实验内容 169
(三)实验范例 169
实验三 服务器的配置与应用 170
<一>预备知识 170
(一)Linux配置文件 170
(二)Linux网络配置 171
(三)Linux远程控制 174
<二>实验指导 175
(一)架设Web服务器 175
(二)架设FTP服务器 178
(三)架设Email服务器 178
<三>实验目的和内容 181
(一)实验目的 181
(二)实验内容 181
实验四proc文件系统 182
<一>预备知识 182
(一)proc文件系统功能 182
(二)proc文件描述 183
(三)proc进程目录结构 184
<二>实验指导 185
(一)proc信息获取 185
(二)终端图形编程curses库 186
(三)图形界面编程GTK和Qt工具包 188
<三>实验目的、内容和范例 190
(一)实验目的 190
(二)实验内容 190
(三)实验范例 190
实验五 进程(线程)控制 192
<一>预备知识 192
(一)Linux进程及其属性 192
(二)Linux进程派生关系 193
(三)Linux线程 194
<二>实验指导 196
(一)Linux进程管理命令 196
(二)Linux进程控制函数 198
(三)Linux守护进程 199
<三>实验目的、内容和范例 200
(一)实验目的 200
(二)实验内容 200
(三)实验范例 201
实验六 进程间通信 202
<一>预备知识 202
(一)Linux进程间通信 202
(二)进程软中断通信 204
(三)管道和消息队列 205
<二>实验指导 208
(一)软中断通信函数 208
(二)管道通信的使用 210
(三)消息队列的应用 211
<三>实验目的、内容和范例 213
(一)实验目的 213
(二)实验内容 213
(三)实验范例 213
实验七 增加新的系统调用 216
<一>预备知识 216
(一)Linux内核结构 216
(二)Linux内核源代码 218
(三)Linux系统调用 219
<二>实验指导 220
(一)系统调用的添加 220
(二)Linux内核编译 221
<三>实验目的和内容 222
(一)实验目的 222
(二)实验内容 222
实验八 增加新的设备驱动程序 223
<一>预备知识 223
(一)Linux设备分类 223
(二)Linux设备文件 224
(三)Linux设备驱动 225
<二>实验指导 226
(一)设备驱动函数 226
(二)模块方式动态加载 227
(三)编译时静态加载 228
<三>实验目的、内容和范例 229
(一)实验目的 229
(二)实验内容 229
(三)实验范例 230
实验九Linux主存管理 235
<一>预备知识 235
(一)Linux主存管理简介 235
(二)Linux主存分配 236
(三)Linux主存回收 238
<二>实验指导 239
(一)主存信息的监视 239
(二)主存的申请和释放 241
<三>实验目的、内容和范例 242
(一)实验目的 242
(二)实验内容 242
(三)实验范例 242
参考文献 243