本书以理论结合实践、注重应用为原则,全面系统地讲述操作系统的基本原理,并将其与Linux的实现和应用技术紧密结合。全书内容分为三个部分:第一部分为基础篇,包括Linux系统概述、Linux系统的操作基础以及vi文本编辑器的使用;第二部分为原理篇,介绍操作系统的基本原理和Linux内核实现技术,包括进程管理、存储管理、文件管理、设备管理和操作系统接口;第三部分为应用篇,包括Shell程序设计、Linux系统管理和网络与通信应用。
本书文字通俗易懂、举例充分、内容循序渐进,书中配有难度适中、实用性强的示例和习题,以帮助读者加深对操作系统原理的理解,同时掌握Linux系统的应用技术和基本开发技能。本书适合作为高等院校信息类和计算机应用类专业本科生操作系统课程的教材,也可作为Linux应用开发人员的自学教材。
第1章 操作系统概述 2
1.1 认识操作系统 2
1.1.1 操作系统的概念 2
1.1.2 操作系统的功能 3
1.2 操作系统的发展 4
1.2.1 操作系统的发展 4
1.2.2 操作系统的分类 6
1.3 Linux操作系统概述 9
1.3.1 Linux操作系统的发展背景与历史 9
1.3.2 Linux操作系统的特点 11
1.3.3 Linux操作系统的组成 12
1.3.4 Linux操作系统的版本 12
1.3.5 Linux操作系统的应用与发展 14
习题 14
第2章 Linux操作基础 15
2.1 Linux基本操作 15
2.1.1 登录 15
2.1.2 修改口令 16
2.1.3 退出 17
2.1.4 系统的关闭与重启 17
2.2 Linux命令 17
2.2.1 命令的格式 18
2.2.2 命令的输入与修改 18
2.2.3 命令的执行 18
2.2.4 命令的分类 19
2.2.5 简单命令 19
2.2.6 联机帮助 22
2.3 Linux文件操作 22
2.3.1 Linux系统的文件 23
2.3.2 Linux系统的目录 28
2.3.3 常用的目录操作命令 29
2.3.4 常用的文件操作命令 33
2.4 输入/输出重定向 50
2.4.1 命令的输入与输出 50
2.4.2 输入重定向 51
2.4.3 输出重定向 52
2.4.4 管道 55
习题 57
第3章 vi文本编辑器 59
3.1 vi文本编辑器概述 59
3.1.1 vi文本编辑器介绍 59
3.1.2 v i的工作模式 60
3.1.3 vi的启动与退出 60
3.2 vi基本命令 61
3.2.1 屏幕翻滚 62
3.2.2 光标定位与移动 63
3.2.3 文本输入与删除 63
3.2.4 文本修改与替换 65
3.2.5 文本拷贝与粘贴 67
3.2.6 撤销与重做 68
3.3 vi常用末行命令 69
3.3.1 搜索与替换命令 69
3.3.2 文件操作与退出命令 70
3.3.3 其他常用命令 71
习题 72
第4章 进程管理 74
4.1 进程 74
4.1.1 程序的顺序执行与并发执行 74
4.1.2 进程的概念 76
4.1.3 进程控制块 78
4.1.4 进程的组织 78
4.1.5 Linux系统中的进程 79
4.2 进程的运行模式 83
4.2.1 操作系统内核 83
4.2.2 中断与系统调用 84
4.2.3 进程的运行模式 85
4.3 进程控制 86
4.3.1 进程控制的功能 86
4.3.2 Linux系统的进程控制 87
4.3.3 Shell命令的执行过程 92
4.4 进程调度 93
4.4.1 进程调度的基本原理 94
4.4.2 Linux系统的进程调度 94
4.5 进程的互斥与同步 97
4.5.1 进程的互斥与同步 97
4.5.2 信号量与P、V操作 98
4.5.3 Linux的信号量机制 100
4.5.4 死锁问题 101
4.6 进程通信 102
4.6.1 进程通信的方式 102
4.6.2 Linux信号通信原理 104
4.6.3 Linux管道通信原理 105
4.7 线程 106
4.7.1 线程的概念 106
4.7.2 线程和进程的区别 106
4.7.3 内核级线程与用户级线程 107
4.7.4 Linux中的线程 107
习题 107
第5章 存储管理 109
5.1 存储管理概述 109
5.1.1 内存的分配与回收 109
5.1.2 地址变换 109
5.1.3 内存的保护 112
5.1.4 内存的扩充 112
5.2 存储管理方案 113
5.2.1 单一连续存储管理 113
5.2.2 分区存储管理 114
5.2.3 页式存储管理 116
5.2.4 段式存储管理 118
5.2.5 段页式存储管理 120
5.3 虚拟存储管理 121
5.3.1 虚拟存储技术 121
5.3.2 页式虚拟存储器原理 121
5.4 Linux的存储管理 124
5.4.1 Linux的内存管理概述 124
5.4.2 Linux存储空间的描述 125
5.4.3 Linux多级分页机制 127
5.4.4 空闲内存的管理 128
5.4.5 内存的分配与回收 129
5.4.6 页面的交换 130
习题 131
第6章 文件管理 132
6.1 文件管理概述 132
6.1.1 文件与文件系统 132
6.1.2 文件的逻辑结构与存取方式 134
6.1.3 文件的物理结构与存储方式 135
6.1.4 文件的共享与保护 139
6.1.5 文件存储空间的管理 140
6.2 Linux文件系统 141
6.2.1 Linux文件系统的特点 141
6.2.2 Linux文件系统的结构 141
6.3 Ext2文件系统 143
6.3.1 Ext2文件的结构 143
6.3.2 Ext2文件系统的格式 147
6.3.3 Ext2文件存储分配策略 148
6.4 虚拟文件系统 148
6.4.1 VFS的文件对象 149
6.4.2 VFS缓存 151
6.4.3 VFS与进程的接口 151
6.4.4 文件系统的注册、挂装与卸载 152
6.4.5 文件系统的操作 152
习题 153
第7章 设备管理 154
7.1 设备管理概述 154
7.1.1 设备的分类 154
7.1.2 设备管理的功能 155
7.1.3 设备与系统的接口 155
7.1.4 I/O系统的硬件结构 158
7.1.5 I/O系统的软件结构 159
7.2 设备管理的相关技术 160
7.2.1 中断技术 160
7.2.2 缓冲与缓存技术 162
7.2.3 DMA技术 163
7.3 I/O控制方式 165
7.3.1 程序I/O方式 165
7.3.2 中断I/O方式 165
7.3.3 DMA方式 166
7.3.4 通道方式 166
7.4 设备的分配 167
7.4.1 设备分配策略 167
7.4.2 虚拟设备技术 168
7.5 设备的驱动 169
7.5.1 设备驱动程序 169
7.5.2 设备中断处理程序 169
7.6 Linux设备管理 170
7.6.1 Linux设备管理的特点 170
7.6.2 Linux系统的I/O软件结构 170
7.6.3 Linux的设备文件 171
7.6.4 Linux设备驱动程序 172
7.6.5 字符与块设备的驱动技术 173
7.6.6 Linux的中断处理 175
习题 177
第8章 操作系统接口 178
8.1 操作系统接口概述 178
8.1.1 作业与作业调度 178
8.1.2 操作系统的接口 179
8.1.3 Linux系统的接口 180
8.2 Shell命令接口 180
8.2.1 Shell界面的组成 180
8.2.2 Shell的功能 180
8.2.3 Shell的版本 181
8.2.4 Shell的工作流程与原理 182
8.3 X图形窗口接口 184
8.3.1 X Window系统概述 184
8.3.2 X系统的体系结构与工作原理 184
8.3.3 X图形界面的组成 186
8.3.4 X系统的启动与停止 191
8.3.5 Linux桌面系统简介 194
8.4 系统调用接口 196
8.4.1 系统调用接口概述 196
8.4.2 Linux系统调用接口的组成 196
8.4.3 Linux系统调用 198
8.4.4 Linux系统调用的执行过程 199
习题 200
第9章 Shell程序设计 202
9.1 Shell语言概述 202
9.1.1 Shell语言的特点 202
9.1.2 Shell程序 202
9.1.3 Shell程序的建立与执行 203
9.2 Shell特殊字符 204
9.2.1 通配符 204
9.2.2 输入/输出重定向与管道符 204
9.2.3 命令执行控制符 206
9.2.4 命令组合符 207
9.2.5 命令替换符 208
9.2.6 其他元字符 208
9.2.7 元字符的引用 209
9.3 Shell变量 209
9.3.1 变量的定义与使用 209
9.3.2 变量的作用域 211
9.3.3 变量的分类 213
9.3.4 环境变量 214
9.3.5 特殊变量 216
9.4 Shell表达式 220
9.4.1 数字运算表达式 220
9.4.2 逻辑测试表达式 222
9.5 Shell控制结构 224
9.5.1 条件与条件命令 225
9.5.2 分支控制命令 225
9.5.3 循环控制命令 227
9.5.4 退出循环命令 229
9.5.5 退出命令 230
9.6 Shell程序综合举例 230
习题 234
第10章 Linux系统管理 236
10.1 系统管理概述 236
10.1.1 系统管理工作的内容 236
10.1.2 系统管理工具 236
10.1.3 root的权威性与危险性 237
10.2 启动与关闭系统 237
10.2.1 系统的运行级别 237
10.2.2 系统的启动 238
10.2.3 系统的关闭与重启 238
10.3 用户管理 239
10.3.1 用户管理概述 239
10.3.2 用户管理的相关文件 240
10.3.3 用户管理 242
10.3.4 用户组管理 245
10.4 文件系统维护 245
10.4.1 文件系统的目录结构 245
10.4.2 存储设备命名规则 247
10.4.3 划分磁盘分区 247
10.4.4 建立文件系统 248
10.4.5 挂装文件系统 249
10.4.6 拆卸文件系统 251
10.4.7 修复文件系统 251
10.5 系统备份 251
10.5.1 备份策略 251
10.5.2 备份命令 252
10.6 系统监控 255
10.6.1 监视用户的登录 255
10.6.2 监控进程的运行 256
10.6.3 监视内存的使用 260
10.6.4 监视文件系统的使用 261
10.7 软件安装 262
10.7.1 软件的打包与安装 262
10.7.2 RPM软件包管理工具 263
10.7.3 安装与升级RPM包 263
10.7.4 查询RPM包 264
10.7.5 校验RPM包 265
10.7.6 卸载RPM包 265
习题 266
第11章 网络与通信应用 267
11.1 TCP/IP网络相关概念 267
11.1.1 TCP/IP协议概述 267
11.1.2 IP地址与域名 268
11.1.3 协议端口 269
11.1.4 客户/服务器软件模型 270
11.2 Linux网络应用技术 270
11.2.1 网络测试 271
11.2.2 网络查询 273
11.2.3 远程执行命令 274
11.2.4 文件传输 276
11.2.5 即时通信 277
11.3 电子邮件 278
11.3.1 电子邮件的结构 278
11.3.2 电子邮件系统的工作原理 279
11.3.3 在Linux中使用邮件 281
习题 283
附录A Linunx系统的安装 284
A.1 安装准备 284
A.1.1 获得安装介质 284
A.1.2 了解硬件需求 284
A.1.3 确定安装方式 284
A.2 在硬盘分区中安装Linux系统 285
A.2.1 启动安装程序 285
A.2.2 安装过程 285
A.3 在虚拟机中安装Linux系统 289
A.3.1 安装虚拟机软件 289
A.3.2 创建虚拟机 290
A.3.3 在虚拟机中安装Linux 292
A.3.4 在虚拟机中运行Linux 292
A.3.5 配置虚拟机网络 293
A.3.6 安装虚拟机工具 295
附录B Linux C开发工具简介 297
B.1 Linux C开发工具 297
B.2 GCC简介 299
B.2.1 gcc编译过程 299
B.2.2 gcc命令 300
B.2.3 gcc应用举例 302
B.3 Make简介 305
B.3.1 makefile文件 305
B.3.2 make命令 308
参考文献 310