第一部分 基础知识 2
第1章 虚拟机及其使用概述 2
1.1 虚拟机软件VMware概述 2
1.2 搭建实践环境 2
1.3 在Windows下安装VMware 2
1.4 VMware下Ubuntu的安装配置 6
1.5 虚拟机下的Linux与宿主机Windows的文件访问 14
1.5.1 虚拟机下Ubuntu的网络配置及FTP使用 14
1.5.2 Ubuntu虚拟机下开启Telnet服务 15
1.5.3 Ubuntu虚拟机下开启Samba服务 16
本章小结 17
第2章 Linux与Windows的分析与比较 18
2.1 Linux系统特性 18
2.1.1 Linux内核 18
2.1.2 Linux系统软硬件资源的组织 19
2.1.3 Linux文件系统 19
2.2 Windows下的cmd与Linux下的shell 20
2.2.1 终端和控制台的概念 20
2.2.2 Windows下cmd与Linux下shell的比较 20
2.3 Linux和Windows基本命令与格式 20
2.3.1 Windows与Linux基本命令 20
2.3.2 命令格式介绍和帮助查询 21
2.4 Linux和Windows下C语言编程环境及编译器 22
本章小结 22
第3章 C语言知识 23
3.1 C语言基本语法回顾 23
3.1.1 分析一个简单的C程序 23
3.1.2 数据类型 23
3.1.3 变量与常量 25
3.1.4 运算符 26
3.1.5 函数 27
3.2 指针 29
3.2.1 指针基础 29
3.2.2 指针变量的操作 29
3.2.3 指针与函数 30
3.2.4 数组与指针 31
3.3 C标准库 31
本章小结 32
第4章 文件I/O 33
4.1 系统调用与C语言标准库 33
4.2 Linux文件系统调用函数 34
4.3 C语言标准库中的文件I/O函数 37
本章小结 40
第5章 系统进程编程基础 41
5.1 main函数与命令行参数 41
5.2 进程终止 41
5.3 Linux中的进程控制函数 42
5.3.1 fork函数 42
5.3.2 wait和waitpid函数 42
5.3.3 exec函数 43
5.4 进程创建及终止函数 44
5.4.1 CreateProcess函数 44
5.4.2 ExitProcess函数 45
本章小结 46
第6章 C程序调试技术 47
6.1 Windows下基于VC 6.0和VS 2005的调试 47
6.2 GDB简介及Linux下的命令行调试 53
6.3 Linux下可视化界面调试范例 55
本章小结 58
第二部分 核心实验 60
第7章 Linux编程基础实验 60
7.1 实验目的 60
7.2 实验准备 60
7.3 实验基本知识及原理 60
7.4 实验说明 62
7.5 实验内容 62
7.6 实验总结 64
7.7 实验报告及小组任务 64
7.8 参考代码 65
第8章 作业调度实验 66
8.1 实验目的 66
8.2 实验准备 66
8.3 实验基本知识及原理 66
8.4 实验说明 67
8.5 实验内容 68
8.6 实验总结 69
8.7 实验报告及小组任务 69
8.8 参考代码 70
第9章 系统调用及进程控制实验 74
9.1 实验目的 74
9.2 实验准备 74
9.3 实验基本知识及原理 74
9.4 实验说明 77
9.5 实验内容 80
9.6 实验总结 80
9.7 实验报告及小组任务 80
9.8 参考代码 81
第10章 同步与互斥实验 85
10.1 实验目的 85
10.2 实验准备 85
10.3 实验基本知识及原理 85
10.4 实验说明 86
10.5 实验内容 88
10.6 实验总结 89
10.7 实验报告及小组任务 89
10.8 参考代码 89
第11章 银行家算法实验 101
11.1 实验目的 101
11.2 实验准备 101
11.3 实验基本知识及原理 101
11.4 实验说明 102
11.5 实验内容 103
11.6 实验总结 104
11.7 实验报告及小组任务 104
11.8 参考代码 105
第12章 内存管理实验 111
12.1 实验目的 111
12.2 实验准备 111
12.3 实验知识及基本原理 111
12.4 实验说明 114
12.5 实验内容 117
12.6 实验总结 117
12.7 实验报告及小组任务 117
12.8 参考代码 117
第13章 磁盘调度实验 124
13.1 实验目的 124
13.2 实验准备 124
13.3 实验知识及基本原理 124
13.4 实验说明 126
13.5 实验内容 127
13.6 实验总结 128
13.7 实验报告及小组任务 128
13.8 参考代码 128
第14章 文件系统实验 132
14.1 实验目的 132
14.2 实验准备 132
14.3 实验原理 132
14.4 实验说明 135
14.5 实验内容 137
14.6 实验总结 137
14.7 实验报告及小组任务 137
14.8 参考代码 137
第三部分 Nachos源码分析 146
第15章 Nachos系统简介 146
15.1 Nachos简介 146
15.2 Nachos的运行原理 146
15.3 系统源码 146
15.4 系统的编译与测试 147
第16章 Nachos系统调用 149
16.1 以Add为例分析系统调用 149
16.2 系统调用流程及相关源文件分析 153
第17章 Nachos系统的同步与互斥 156
17.1 同步与互斥机制 156
17.2 信号量 156
17.3 锁 157
17.4 条件变量 158
17.5 案例分析:同步磁盘的实现 159
第18章 Nachos线程调度 161
18.1 线程结构分析 161
18.2 线程调度类分析 164
18.3 线程调度作业 166
18.4 测试结果 167
第19章 Nachos文件系统 168
19.1 Nachos文件系统相关源码说明 168
19.2 Nachos文件系统类分析 168
19.3 文件系统其他相关类 172
附录A 实验报告模板 175
参考文献 193