第1章 概述 1
1.1 什么是Linux 1
1.2 Linux内核的特征 1
1.3 Linux内核源代码 2
1.3.1 内核源代码分布结构 2
1.3.2 阅读内核源代码导引 2
1.4 Linux内核的抽象结构 4
1.4.1 系统数据结构 5
1.4.2 Linux的具体结构 6
1.5 进程管理子系统 6
1.5.1 子系统描述 6
1.5.2 子系统功能 7
1.5.3 子系统接口 7
1.5.4 子系统数据结构 7
1.6.1 子系统描述 8
1.6 内存管理子系统 8
1.6.2 子系统功能 9
1.6.3 子系统接口 9
1.6.4 子系统数据结构 10
1.6.5 子系统组成模块 10
1.7 虚拟文件子系统 10
1.7.1 子系统描述 10
1.7.3 子系统接口 12
1.7.2 子系统功能 12
1.7.4 数据结构 13
1.8 进程间通信(IPC)子系统 13
1.8.1 子系统描述 13
1.8.2 子系统功能 14
1.8.3 子系统接口 15
1.8.4 子系统数据结构 15
1.9.3 子系统描述 16
1.9.2 子系统接口 16
1.9.1 Linux的网络层 16
1.9 网络接口子系统 16
1.9.4 子系统数据结构 17
习题 18
第2章 Linux进程及其管理 19
2.1 进程的概念 19
2.1.1 为何要引入进程 19
2.1.2 进程及其特征 19
2.1.3 进程的状态 20
2.1.4 进程实体 21
2.1.5 进程调度 21
2.1.6 进程通信 22
2.2 Linux中的进程 22
2.3 Linux的进程控制块 task_struct 23
2.4 Linux中的进程状态及其转换 29
2.5 Linux中的进程调度 30
2.6 Linux的时钟 34
2.6.1 Linux中的时间控制 34
2.6.2 计时和定时器 35
2.7 Linux内核机制 36
2.7.1 底半处理 36
2.7.2 任务队列(Task Queue) 38
2.8 进程的创建与撤销 39
2.8.1 进程的建立 39
2.8.2 进程的撤销 42
2.9 程序的装入和执行 43
习题 47
第3章 进程通信 48
3.1 管道(pipe)通信方式 48
3.2 信号 50
3.3.1 消息队列 52
3.3 UNIX System V IPC 机制 52
3.3.2 信号量 54
3.3.3 共享内存 55
习题 57
第4章 Linux存储管理 58
4.1 存储管理的一般常识 58
4.2 请求页式存储管理的实现原理 59
4.3 80386内存管理机构和功能 60
4.3.1 80386的分段机制在Linux中的应用 61
4.3.2 80386的分页机制在Linux中的应用 65
4.4 控制转移和任务切换 70
4.4.1 控制转移 70
4.4.2 任务切换 70
4.5.1 Linux虚存管理的实现 71
4.5.2 Linux的内核空间和用户空间 71
4.5 Linux虚存管理 71
4.5.3 Linux虚存段的组织和管理 72
4.5.4 Linux虚存页的组织和管理 74
4.6 Linux虚存的保护 77
4.6.1 多任务及保护 77
4.6.2 同一任务内的保护 77
4.7 Linux物理内存的管理 78
4.7.1 空闲块管理 78
4.7.2 内核态内存的申请与释放 78
4.7.3 用户态内存的申请与释放 81
4.7.4 页交换进程和页面换出 84
4.8 缓冲机制 87
习题 88
第5章 Linux文件系统 89
5.1 EXT2(第二扩展文件系统) 89
5.1.1 EXT2的磁盘布局 89
5.1.2 EXT2的超级块 90
5.1.3 EXT2的索引节点inode 93
5.1.4 EXT2的组描述符 95
5.1.5 位示图 96
5.1.6 文件的安全 96
5.2 虚拟文件系统 98
5.3 VFS中的主要数据结构 99
5.3.1 VFS的超级块 99
5.3.2 VFS的索引节点 100
5.3.3 其他重要的数据结构 101
5.4 文件系统的注册、安装与卸载 103
5.4.1 文件系统的注册 103
5.4.2 文件系统的安装 104
5.4.3 文件系统的卸载 106
5.5 文件系统的系统调用 106
5.5.1 open系统调用 106
5.5.2 read系统调用 108
5.5.3 fcntl系统调用 109
习题 110
第6章 Linux的设备管理 111
6.1 设备驱动程序 111
6.1.1 设备驱动程序的框架 111
6.1.2 Linux驱动程序的几个通用函数 114
6.1.3 块设备驱动程序 115
6.2 字符设备驱动程序 118
6.2.1 字符设备的注册 119
6.2.2 工作内存 119
6.2.3 基本入口 120
6.2.4 一个字符设备驱动程序的实例 121
6.3 驱动程序的编译与装载 127
6.4 块高速缓存(buffer-cache) 128
6.5.1 Linux对中断的管理 129
6.5 Linux中的中断 129
6.5.2 Linux的中断处理 130
习题 131
第7章 Linux的使用基础 132
7.1 开始使用 132
7.1.1 登录 132
7.1.2 退出系统 132
7.1.3 关机 132
7.1.4 虚拟终端 132
7.1.5 获取帮助 132
7.2 文件操作 132
7.2.1 目录与文件的基本操作 132
7.2.2 常用的系统操作命令 133
7.3 vi编辑 135
7.3.1 编辑方式 136
7.3.3 正文替换 138
7.3.2 插入方式 138
7.3.4 命令方式 139
7.3.5 退出命令 139
7.3.6 文件的使用 139
7.3.7 行号 140
7.3.8 字符串搜索 140
7.3.9 规则表达式 140
7.3.10 正文替换 141
7.3.11 删除正文 141
7.3.12 编辑程序的选项 141
7.3.13 shell切换 142
7.4 shell 142
7.4.1 了解Linux的shell 142
7.4.2 shell命令的语法分析 143
7.4.3 shell编程 144
7.4.4 shell程序举例 149
7.5 X Windows 151
7.5.1 X Windows 的安装与配置 152
7.5.2 X Windows的使用 153
习题 155
第8章 Linux的安装 156
8.1 Linux的版本介绍 156
8.1.1 SLS(Softland Software)Linux 156
8.1.2 Slackware Linux 156
8.1.3 RedHat Linux 156
8.1.4 Debian Linux 157
8.1.5 Caldera Linux 157
8.2 Linux的获取 157
8.3 硬件支持 158
8.4 RedHat Linux安装指南 162
8.4.1 准备工作 162
8.4.3 安装系统 163
8.4.2 启动机器 163
8.5 常见问题解答 169
习题 170
第9章 系统管理 171
9.1 Root 账号与系统安全 171
9.2 引导系统 174
9.2.1 从软盘引导 174
9.2.2 从硬盘引导 175
9.2.3 用Loadin 程序引导 178
9.3 系统初始化程序和文件 178
9.3.1 初始化信息 178
9.3.2 初始化程序和文件 180
9.4 关闭系统 190
9.5 用户管理 190
9.5.1 用户账号的信息 191
9.5.2 创建账号 192
9.5.3 修改账号的属性 193
9.5.4 组账号的管理 194
9.6 管理文件系统 196
9.6.1 文件系统的基本概念和类型 196
9.6.2 创建文件系统 197
9.6.3 安装文件系统 198
9.6.4 检查、维护文件系统 199
9.7 交换空间 199
9.8 系统升级 200
9.8.1 内核的升级 200
9.8.2 库的升级 201
9.8.3 GCC的升级 201
9.8.4 其他软件的升级 201
习题 201
10.1.1 TCP/IP历史 202
10.1.2 TCP/IP通信基础 202
第10章 Linux与网络 202
10.1 Linux网络管理 202
10.1.3 TCP/IP网络配置 204
10.1.4 配置Linux的域名服务 205
10.1.5 获得Linux网络软件 206
10.2 建立Linux的普通站点 207
10.2.1 安装远程目录 207
10.2.2 设置网络其他设备 207
10.2.3 创建账户 208
10.3 建立Internet站点 209
10.3.1 准备工作 209
10.3.2 选择接入方式 210
10.3.3 安装E-mail软件 210
10.3.4 安装WWW服务 211
10.3.5 安装FTP服务器软件 213
10.4 网络常用术语及协议 214
习题 215
第11章 实验 216
11.1 安装Linux系统 216
11.1.1 实验目的 216
11.1.2 实验内容 216
11.1.3 思考题 217
11.2 用户界面实验 217
11.2.1 实验目的 217
11.2.2 实验内容 217
11.2.3 思考题 217
11.3 进程管理 218
11.3.1 实验目的 218
11.3.2 实验预备内容 218
11.3.3 实验内容 218
11.3.5 实验指导 219
11.3.4 思考题 219
11.4 进程间通信 226
11.4.1 实验目的 226
11.4.2 实验预备内容 226
11.4.3 实验内容 226
11.4.4 实验指导 226
11.5 内存管理 230
11.5.1 实验目的 230
11.5.2 实验内容 230
11.5.3 思考题 231
11.6 文件系统设计 231
11.6.1 设计目的 231
11.6.2 设计内容 231
11.6.3 设计提示 231
主要参考文献 232