第一章 绪论 1
第一节 NACHOS概述 1
一、引言 1
二、Nachos教学用操作系统 1
第二节 NACHOS的实验环境 4
一、Nachos的安装 4
二、Nachos的目录结构 4
三、各个部分的编译运行 4
四、应用程序的编译 5
第二章 机器模拟 6
第一节 概述 6
第二节 机器模拟的实现 10
1. Sysdep模块分析(文件sysdep.cc sysdep.h) 10
1.1 PoolFile 函数 10
1.2 OpenForWrite 函数 10
1.3 OpenForReadWrite 函数 10
1.4 Read 函数 10
1.5 ReadPartial 函数 11
1.6 WriteFile 函数 11
1.7 Lseek 函数 11
1.8 Tell 函数 11
1.9 Close 函数 11
1.10 Unlink 函数 12
1.11 OpenSocket 函数 12
1.12 CloseSocket 函数 12
1.13 AssignNameToSocket 函数 12
1.14 DeAssignNameToSocket 函数 12
1.15 PoolSocket 函数 12
1.16 ReadFromSocket 函数 13
1.17 SendToSocket 函数 13
1.18 CallOnUserAbort 函数 13
1.19 Delay 函数 13
1.20 Abort 函数 13
1.21 Exit 函数 14
1.22 RandomInit 函数 14
1.23 Random 函数 14
1.24 AllocBoundedArray 函数 14
1.25 DeallocBoundedArray 函数 14
2. 中断模块分析(文件interrupt.cc interrupt.h) 14
2.1 PendingInterrupt类 16
2.2 Interrupt类 17
2.2.1 内部使用方法 17
2.2.2 内部使用函数 18
2.2.3 对外接口 18
3. 时钟中断模块分析(文件timer.cc timer.h) 20
4. 终端设备模块分析(文件console.cc console.h) 22
5. 磁盘设备模块分析(文件disk.cc disk.h) 23
6. Nachos运行情况统计(文件stats.cc stats.h) 24
第三章 线程管理系统 25
第一节 进程与线程 25
一、进程 25
1. 进程概念 25
2. 进程的状态及状态变化 25
3. 进程调度 26
4. 进程之间的同步和互斥 27
5. 进程的实施 28
6. 进程的创建 28
二、线程 29
1. 线程概念 29
2. 进程和线程的关系 30
第二节 NACHOS的线程管理 31
一、Nachos的线程管理 31
二、Nachos线程管理同实际进程管理的不同 33
第三节 NACHOS线程管理系统的初步实现 34
1. 工具模块分析(文件list.cc list.h utility.cc utility.h) 34
2. 线程启动和调度模块分析(文件switch.s switch.h) 34
2.1 ThreadRoot函数 34
2.2 SWITCH函数 35
3. 线程模块分析(文件thread.cc thread.h) 35
3.1 Fork 方法 37
3.2 StackAllocate 方法 38
3.3 Yield 方法 39
3.4 Sleep 方法 40
4. 线程调度算法模块分析(文件scheduler.cc scheduler.h) 40
4.1 Run方法 41
5. Nachos主控模块分析(文件main.cc system.cc system.h) 41
6. 同步机制模块分析(文件synch.cc synch.h) 42
6.1 信号量 ( Semaphore ) 42
6.2 锁机制 42
6.3 条件变量 43
第四节 线程管理系统作业 45
第五节 实现实例 47
4.1 对线程的改进 47
4.2 对线程调度的改进 48
第四章 文件管理系统 51
第一节 文件管理系统概述 51
一、文件 51
1. 文件结构 51
2. 文件访问 52
3. 文件类型 52
4. 文件属性 53
5. 文件操作 53
二、目录 54
1. 目录结构 54
2. 多级目录结构 55
3. 文件路径名 55
4. 工作目录 55
5. 目录结构的勾连 55
6. 目录项 56
三、UNIX文件系统的实现 56
1. UNIX文件系统中的主要结构 56
2. UNIX文件系统存储资源的分配和回收 58
第二节 NACHOS文件管理系统 61
第三节 NACHOS文件系统的实现 63
1. 同步磁盘分析(文件synchdisk.cc 、synchdisk.h) 63
2. 位图模块分析(文件bitmap.cc、bitmap.h) 64
3. 文件系统模块分析(文件filesys.cc、filesys.h) 64
3.1 生成方法 65
3.2 Create方法 65
3.3 Open方法 66
3.4 Remove方法 66
4. 文件头模块分析(文件filehdr.cc、filehdr.h) 66
5. 打开文件结构分析(文件openfile.cc、openfile.h) 67
5.1 ReadAt方法 67
5.2 WriteAt方法 68
6. 目录模块分析(文件directory.cc directory.h) 68
第四节 文件管理系统作业 70
第五章 用户程序和虚拟内存 71
第一节 NACHOS 对内存、寄存器以及CPU的模拟 71
1 RaiseException 方法 74
2 ReadMem 方法 74
3 WriteMem 方法 74
4 Translate方法 74
5 Run 方法 75
第二节 NACHOS用户进程运行机制 77
一、用户程序空间(文件address.cc, address.h) 77
1.1 生成方法 77
1.2 InitRegisters方法 78
1.3 SaveState方法 78
1.4 RestoreState方法 78
二、系统调用(文件exception.cc, syscall.h, start.s) 78
第三节 虚存管理的设计和实现 80
一、Nachos存储管理的改进要求 80
二、一个虚拟存储管理实现的实例 80
2.1 虚拟存储系统的总体设计 80
2.2 缺页中断陷入及其调度算法 83
2.3 虚存的存储分配 85
2.4 存储保护 85
2.5 实现中的一些细节 85
第四节 用户程序和虚拟存储作业 87
第六章 NACHOS的网络系统 88
第一节 NACHOS对物理网络的模拟 88
第二节 NACHOS的邮局协议 91
2.1 PostalDelivery方法 92
2.2 Send方法 93
第三节 网络部分作业 94
1