实验一 命令解释程序 1
1.1 实验目的 1
1.2 实验要求 1
1.2.1 基本要求 1
1.2.2 进一步要求 2
1.2.3 实验步骤建议 3
1.3 相关基础知识 3
1.3.1 命令解释程序与内核的关系 3
1.3.2 系统调用 4
1.3.3 重要API的使用说明 10
1.4 实验设计 12
1.4.1 重要的数据结构 12
1.4.2 程序实现 14
1.5 实验总结 15
1.6 源程序与运行结果 16
1.6.1 程序源代码 16
1.6.2 程序运行结果 29
1.6.3 实验报告模板 29
实验二 虚存管理(Windows) 31
2.1 实验目的 31
2.2 实验要求 31
2.2.1 基本要求 31
2.2.2 进一步要求 31
2.3 相关基础知识 32
2.3.1 虚拟存储器 32
2.3.2 页式存储管理方式 32
2.3.3 Windows中的虚拟存储技术 35
2.4 实验设计 38
2.4.1 重要的数据结构 38
2.4.2 程序实现 40
2.5 实验总结 45
2.6 源程序与运行结果 45
2.6.1 程序源代码 45
2.6.2 程序运行结果 57
实验三 进程调度 58
3.1 实验目的 58
3.2 实验要求 58
3.2.1 基本要求 58
3.2.2 进一步要求 59
3.3 相关基础知识 59
3.3.1 进程调度 59
3.3.2 Windows中的进程和线程 61
3.3.3 相关Win32 API介绍 62
3.4 实验设计 64
3.4.1 重要的数据结构 64
3.4.2 程序实现 65
3.5 实验总结 68
3.6 源程序与运行结果 68
3.6.1 程序源代码 68
3.6.2 程序运行结果 83
实验四 文件系统 85
4.1 实验目的 85
4.2 实验要求 85
4.2.1 基本要求 85
4.2.2 进一步要求 86
4.3 相关基础知识 87
4.3.1 Windows的文件系统 87
4.3.2 FAT16文件系统 88
4.3.3 相关API函数说明 92
4.4 实验设计 95
4.4.1 重要的数据结构 95
4.4.2 程序实现 97
4.4.3 编译及运行 102
4.5 实验总结 103
4.6 源程序与运行结果 103
4.6.1 程序源代码 103
4.6.2 程序运行结果 119
实验五 shell程序 120
5.1 实验目的 120
5.2 实验要求 120
5.2.1 基本要求 120
5.2.2 进一步要求 122
5.2.3 实验步骤建议 122
5.3 相关基础知识 123
5.3.1 shell与内核的关系 123
5.3.2 系统调用 123
5.3.3 Lex和YACC介绍 133
5.4 实验设计 134
5.4.1 重要的数据结构 135
5.4.2 程序实现 136
5.5 实验总结 143
5.6 源程序与运行结果 143
5.6.1 程序源代码 143
5.6.2 程序运行结果 160
实验六 虚存管理(Linux) 162
6.1 实验目的 162
6.2 实验要求 162
6.2.1 基本要求 162
6.2.2 进一步要求 162
6.3 相关基础知识 163
6.3.1 存储管理 163
6.3.2 虚拟存储的功能 163
6.3.3 虚拟存储的抽象模型 163
6.3.4 按需装入页面 164
6.3.5 页面交换 165
6.3.6 共享内存 166
6.3.7 存取控制 166
6.3.8 系统页表 167
6.3.9 页面的分配和释放 168
6.3.10 内存映射 169
6.3.11 缺页中断 170
6.4 实验设计 171
6.4.1 重要的数据结构 171
6.4.2 虚存管理程序的实现 172
6.5 实验总结 178
6.6 源程序与运行结果 178
6.6.1 程序源代码 178
6.6.2 程序运行结果 190
实验七 作业调度 192
7.1 实验目的 192
7.2 实验要求 192
7.2.1 基本要求 192
7.2.2 进一步要求 193
7.3 相关基础知识 194
7.3.1 进程及作业的概念 194
7.3.2 作业调度 195
7.3.3 进程间通信 196
7.4 实验设计 198
7.4.1 重要数据结构 198
7.4.2 程序实现 199
7.5 实验总结 201
7.6 源程序与运行结果 202
7.6.1 程序源代码 202
7.6.2 程序运行结果 218
实验八 文件系统 219
8.1 实验目的 219
8.2 实验要求 219
8.2.1 基本要求 219
8.2.2 进一步要求 220
8.3 相关基础知识 220
8.3.1 虚拟文件系统 220
8.3.2 FAT文件系统结构 224
8.4 实验设计 229
8.4.1 重要的数据结构 229
8.4.2 程序实现 230
8.5 实验总结 234
8.6 源程序与运行结果 235
8.6.1 程序源代码 235
8.6.2 程序运行结果 253
附录A 存储管理应用实例 254
A.1 概述 254
A.2 存储管理对内存硬件的抽象 255
A.3 用户编程中申请与释放内存实例分析 258
A.3.1 Malloc.h文件 258
A.3.2 Malloc.c文件 259
A.3.3 Test.c文件 262
A.3.4 Makefile文件 263
A.4 小结 263
A.5 习题 264
附录B 操作系统接口 265
B.1 操作系统接口 265
B.1.1 系统调用 265
B.1.2 shell命令及其解释程序 274
B.2 Linux的安装 283
B.2.1 安装前的准备 283
B.2.2 建立硬盘分区 284
B.2.3 安装类型 285
B.2.4 安装过程 286
B.2.5 操作系统的安装概念 286
B.3 Linux的使用 287
B.3.1 使用常识 287
13.3.2 文件操作命令 288
B.3.3 文本编辑命令 294
B.3.4 shell的特殊字符 296
B.3.5 进程控制命令 300
B.3.6 网络应用工具 303
B.3.7 联机帮助 305
B.4 系统管理 305
B.4.1 超级用户 305
B.4.2 用户和用户组管理 306
B.4.3 文件系统管理 308
B.4.4 Linux源代码文件安放结构 312
B.5 小结 313
B.6 习题 313
参考文献 314