前言 1
第1章 操作系统导论 1
1.1 操作系统简介 1
1.1.1 操作系统概述 1
1.1.2 操作系统的作用 1
目录 1
1.1.3 操作系统的发展历史 2
1.2 操作系统的功能及特征 4
1.2.1 操作系统的功能 4
1.3 常见操作系统介绍 5
1.2.2 操作系统的特征 5
1.3.1 UNIX 6
1.3.2 DOS 6
1.3.3 Windows 7
1.3.4 Linux 8
1.3.5 其他 9
1.4 本章小结 9
习题 9
2.1.3 Linux的特性 11
2.1.2 Linux的发展历程 11
第2章 Linux操作系统的基本操作 11
2.1 Linux概况 11
2.1.1 什么是Linux 11
2.1.4 Linux的优势 13
2.1.5 Linux的各种发行套件版本 13
2.2 Linux系统的启动、登录、退出和关闭 13
2.2.1 Linux的启动 13
2.2.2 Linux的登录 14
2.2.3 Linux的退出和关闭 14
2.3.1 ls 15
2.3 目录操作命令 15
2.3.2 pwd 17
2.3.3 cd 17
2.3.4 mkdir 18
2.3.5 rmdir 18
2.4 文件操作命令 19
2.4.1 ls 19
2.4.2 cp 19
2.4.3 rm 20
2.4.4 my 23
2.4.5 cat 23
2.4.6 chmod 24
2.4.7 chown 25
2.4.8 chgrp 26
2.4.9 ln 26
2.4.10 find 28
2.4.11 grep 28
2.4.12 sort 29
2.5 X-Window 30
2.5.1 安装、配置X-Window 31
2.5.2 启动X-Window桌面 31
2.5.3 使用GNOME桌面 32
2.6 本章小结 35
习题 35
第3章 进程及线程 37
3.1 进程的描述 37
3.1.1 进程的概念 37
3.1.2 进程的特性 37
3.1.4 进程的组成 38
3.1.3 进程的状态及其转换 38
3.1.5 Linux中的PCB和PCB表 39
3.2 进程的控制 46
3.2.1 操作系统内核 46
3.2.2 进程的创建 47
3.2.3 进程的终止 49
3.2.4 进程的阻塞和唤醒 50
3.4.1 进程的同步 51
3.4 进程的同步与通信 51
3.3.2 线程的概念 51
3.3.1 线程的引入 51
3.3 线程 51
3.4.2 经典进程同步问题 56
3.4.3 进程的通信 59
3.4.4 System Ⅴ的进程间通信 60
3.5 Linux中的线程 66
3.6 本章小结 69
习题 69
4.1 调度的类型和模型 71
4.1.1 调度的类型 71
第4章 调度与死锁 71
4.1.2 调度队列模型 72
4.2 调度算法 73
4.2.1 调度算法的选择 73
4.2.2 各种调度算法 74
4.3 死锁及其预防和避免 78
4.3.1 死锁 78
4.3.3 死锁的避免 80
4.3.2 死锁的预防 80
4.4 死锁的检测和解除 84
4.4.1 死锁的检测 84
4.4.2 死锁的解除 85
4.5 Linux中的调度与死锁技术 86
4.5.1 Linux中的调度 86
4.5.2 Linux中的死锁技术 88
4.6 本章小结 89
习题 89
5.2.1 逻辑地址和物理地址 91
5.2 程序的装入和地址重定位 91
5.1 概述 91
第5章 存储管理 91
5.2.2 程序装入和地址重定位 92
5.3 分区存储管理方式 94
5.3.1 单一分区 95
5.3.2 固定式分区 95
5.3.3 可变式分区 97
5.4 分页存储管理方式 102
5.4.1 基本原理 102
5.4.2 页表与地址变换 102
5.4.3 分配与回收算法 104
5.4.4 存储共享与保护 105
5.4.5 分页存储管理的优缺点 106
5.5 分段存储管理 106
5.5.1 基本原理 107
5.5.2 段表与地址变换 107
5.6 Linux中的存储器管理 109
5.6.1 80386的保护模式与地址变换 109
5.6.2 Linux中的存储管理 111
5.7 本章小结 114
习题 115
第6章 虚拟存储器概述 117
6.1 分区存储管理中的内存扩充 118
6.1.1 覆盖技术 118
6.1.2 交换技术 119
6.2 页式虚拟存储管理 119
6.2.1 基本原理 119
6.2.2 淘汰算法 121
6.3 段式虚拟存储管理 122
6.3.1 基本原理 122
6.3.2 段的动态连接 123
6.3.3 段的共享与保护 125
6.4 段页式虚拟存储管理 126
6.4.1 基本原理 127
6.4.2 段表、页表和地址变换 127
6.4.3 中断处理 128
6.4.4 段页式虚拟存储管理的优缺点 129
6.5 Linux中的虚拟存储管理技术 129
6.5.1 80386对虚拟存储管理的支持 129
6.5.2 Linux虚拟地址空间的管理 130
6.5.3 缺页中断处理 131
6.5.4 交换空间与页面换出 132
6.5.5 存储管理系统的缓存机制 134
6.6 本章小结 136
习题 136
第7章 文件管理 139
7.1 文件管理的任务和功能 139
7.2 文件的组织与结构 139
7.3 文件分类 140
7.3.1 按文件性质与用途分类 140
7.3.4 按用户观点分类 141
7.3.3 按使用情况分类 141
7.3.2 按操作保护分类 141
7.3.5 按存取的物理结构分类 142
7.3.6 按文件的逻辑存储结构分类 142
7.3.7 按文件中的数据形式分类 142
7.4 文件的结构和文件的存取 142
7.4.1 连续文件结构 143
7.4.2 链表结构 143
7.4.3 索引结构 144
7.5.2 直接存取法 146
7.5.1 顺序存取法 146
7.5 文件的存取方法 146
7.4.4 散列结构 146
7.5.3 按键存取法 147
7.5.4 文件结构、文件存储设备和存取法的关系 147
7.6 文件目录与目录文件 147
7.6.1 文件目录 147
7.6.2 文件目录的查找 150
7.7 文件的共享 150
7.7.3 文件共享的实现 151
7.7.2 文件共享的模式 151
7.7.1 文件共享的目的 151
7.7.4 管道文件 152
7.8 文件的保护、保密与安全 154
7.8.1 文件的保护 154
7.8.2 文件的保密 155
7.8.3 文件的安全 155
7.9 文件系统的实现 156
7.9.1 文件系统管理所需的表目 156
7.9.2 文件存储空间的管理 158
7.10 文件系统和用户间的接口 159
7.10.1 文件的建立和删除 160
7.10.2 文件的打开和关闭 161
7.10.3 文件的读写 161
7.11 Linux文件系统 162
7.11.1 Linux文件系统的特点 162
7.11.2 EXT2文件系统物理结构 163
7.11.3 EXT2索引节点 163
7.11.4 EXT2超块 164
7.11.7 EXT2文件的查找 165
7.11.6 EXT2目录 165
7.11.5 EXT2组描述符 165
7.11.8 EXT2文件扩展策略 166
7.11.9 虚拟文件系统概述 166
7.11.10 VFS超块 167
7.11.11 VFS索引节点 167
7.11.12 文件系统的注册 168
7.11.13 文件系统的挂接与卸载 168
7.11.14 文件系统管理的缓存机制 169
7.11.17 /proc文件系统 170
7.11.16 Update进程 170
7.11.15 Bdflush内核监护进程 170
7.11.18 设备特殊文件 171
7.12 本章小结 171
习题 171
第8章 设备管理 173
8.1 I/O设备的硬件结构 173
8.1.1 设备的类型 173
8.1.2 I/O设备的物理特性 174
8.2 外设与主机的I/O控制方式 177
8.3 通道技术 179
8.3.1 设备 179
8.3.2 控制器 179
8.3.3 通道 180
8.4 设备的分配与释放 181
8.4.1 相关的数据结构 182
8.4.2 独占型设备的分配与释放 183
8.4.3 共享型设备的分配与释放 183
8.5.3 设备调度 184
8.5.2 中断处理 184
8.5.1 设备启动 184
8.5 设备驱动 184
8.6 缓冲技术 186
8.6.1 缓冲技术的引入 186
8.6.2 硬缓冲与软缓冲 186
8.6.3 缓冲池及其管理 186
8.6.4 缓冲技术的实现 187
8.7 虚拟设备 188
8.7.1 虚拟设备的引入 188
8.7.2 虚拟设备的实现 189
8.7.3 虚拟设备的实例 190
8.8 I/O系统的软件组织 190
8.8.1 I/O软件设计的目标 190
8.8.2 中断处理程序 191
8.8.3 设备驱动程序 191
8.8.4 与设备无关的I/O软件 191
8.8.5 用户空间的I/O软件 192
8.9 Linux设备管理 192
8.9.1 设备文件 193
8.9.2 设备驱动程序概述 194
8.9.3 设备驱动程序的结构 196
8.9.4 Linux系统中光盘的使用 199
8.10 本章小结 200
习题 200
第9章 Linux系统内核及性能调整 203
9.1 内核简介 203
9.1.1 内核的实现结构 203
9.1.2 内核的版本与升级 203
9.1.3 内核源代码的结构 204
9.2 内核配置 205
9.3.3 更换内核的方法 212
9.4 可载入模块 212
9.3 编译内核 212
9.3.2 编译内核的方法 212
9.3.1 清理环境的方法 212
9.4.1 安装模块工具 213
9.4.2 生成和安装模块 213
9.5 内核补丁 214
9.6 本章小结 214
习题 214
10.1.2 Linux文件系统安全 215
10.1.1 Linux安全管理和超级用户 215
第10章 Linux安全管理及高级应用 215
10.1 Linux安全管理 215
10.1.3 作为root运行的程序 219
10.1.4 校验用户口令/etc/passwd文件 221
10.1.5 查找同组用户/etc/group文件 222
10.1.6 增加、删除用户 223
10.1.7 安全检查 224
10.18 加限制的环境 225
10.2.1 全屏幕文本编辑器Ⅵ 227
10.2 常用应用软件 227
10.1.9 物理安全 227
10.2.2 DOSEMU仿真器 235
10.2.3 HOST域名查找 238
10.2.4 Linux定时处理 238
10.2.5 Linux硬盘提速 238
10.3 本章小结 238
习题 238
11.1.2 TCP/IP数据通信模型 239
11.1.1 TCP/IP的历史 239
11.1 TCP/IP概述 239
第11章 Linux的网络应用 239
11.1.3 IP地址 241
11.1.4 子网 243
11.1.5 路由 243
11.2 Linux与Windows的互访——Samba 243
11.2.1 Samba简介 243
11.2.2 Samba的安装 244
11.2.3 Samba的配置 244
11.3.1 WWW服务及Apache服务器 255
11.3 Linux作为Web服务器 255
11.3.2 Apache服务器的安装 256
11.3.3 Apache服务器的配置 257
11.4 Linux作为DNS服务器 263
11.4.1 简介 263
11.4.2 所需资源 264
11.4.3 配置方案 264
11.4.4 测试及管理办法 266
11.5.2 wu-ftp的组成 267
11.5.1 选择和安装FTP服务器软件 267
11.5 用Linux建立FTP服务器 267
11.5.3 wu-ftp的配置 268
11.5.4 与wu-ftp相关的其他一些命令的使用 273
11.6 用Linux建立邮件服务器 274
11.6.1 了解电子邮件 274
11.6.2 Sendmail简介 274
11.6.3 所需系统资源 274
11.6.4 Sendmail配置 274
11.7 本章小结 278
习题 279
附录 281
实验1 Linux的安装 281
实验2 Linux操作基础和文本编辑 284
实验3 Linux文件系统 286
实验4 Linux的进程和作业控制 296
实验5 Linux内存管理 306
实验6 Linux中DNS的设定 310
实验7 进程间的通信 314
实验8 Linux系统管理实验 318