第一章绪论
第一节Nachos概述
一、引言
二、Nachos教学用操作系统
第二节Nachos的实验环境
一、Nachos的安装
二、Nachos的目录结构
三、各个部分的编译运行
四、应用程序的编译
第二章机器模拟
第一节概述
第二节机器模拟的实现
1. Sysdep模块分析(文件sysdep.cc sysdep.h)
1.1 PoolFile 函数
1.2 OpenForWrite 函数
1.3 OpenForReadWrite 函数
1.4 Read 函数
1.5 ReadPartial 函数
1.6 WriteFile 函数
1.7 Lseek 函数
1.8 Tell 函数
1.9 Close 函数
1.10 Unlink 函数
1.11 OpenSocket 函数
1.12 CloseSocket 函数
1.13 AssignNameToSocket 函数
1.14 DeAssignNameToSocket 函数
1.15 PoolSocket 函数
1.16 ReadFromSocket 函数
1.17 SendToSocket 函数
1.18 CallOnUserAbort 函数
1.19 Delay 函数
1.20 Abort 函数
1.21 Exit 函数
1.22 RandomInit 函数
1.23 Random 函数
1.24 AllocBoundedArray 函数
1.25 DeallocBoundedArray 函数
2.中断模块分析(文件interrupt.cc interrupt.h)
2.1 PendingInterrupt类
2.2 Interrupt类
2.2.1 内部使用方法
2.2.1.1 CheckIfDue 方法
2.2.1.2 ChangeLevel 方法
2.2.2 内部使用函数
2.2.2.1 PrintPending 函数
2.2.3 对外接口
2.2.3.1 构造方法
2.2.3.2 析构方法
2.2.3.3 SetLevel方法
2.2.3.4 Enable方法
2.2.3.5 OneTick方法
2.2.3.6 YieldOnReturn方法
2.2.3.7 Idle方法
2.2.3.8 Halt方法
2.2.3.9 Schedule方法
2.2.3.10 DumpState方法
3. 时钟中断模块分析(文件timer.cc timer.h)
4. 终端设备模块分析(文件console.cc console.h)
5. 磁盘设备模块分析(文件disk.cc disk.h)
6. Nachos运行情况统计(文件stats.cc stats.h)
第三章线程管理系统
第一节进程与线程
一、进程
1. 进程概念
2. 进程的状态及状态变化
3. 进程调度
4. 进程之间的同步和互斥
5. 进程的实施
6. 进程的创建
二、线程
1. 线程概念
2. 进程和线程的关系
第二节Nachos的线程管理
一、Nachos的线程管理
二、Nachos线程管理同实际进程管理的不同
第三节Nachos线程管理系统的初步实现
1. 工具模块分析(文件list.cc list.h utility.cc utility.h)
2. 线程启动和调度模块分析(文件switch.s switch.h)
2.1 ThreadRoot函数
2.2 SWITCH函数
3. 线程模块分析(文件thread.cc thread.h)
3.1 Fork 方法
3.2 StackAllocate 方法
3.3 Yield 方法
3.4 Sleep 方法
4. 线程调度算法模块分析(文件scheduler.cc scheduler.h)
4.1 Run方法
5.Nachos主控模块分析(文件main.cc system.cc system.h)
6. 同步机制模块分析(文件synch.cc synch.h)
6.1 信号量 ( Semaphore )
6.2 锁机制
6.3条件变量
第四节线程管理系统作业
第五节实现实例
4.1 对线程的改进
4.2 对线程调度的改进
第四章文件管理系统
第一节文件管理系统概述
一、文件
1. 文件结构
2. 文件访问
3. 文件类型
4. 文件属性
5. 文件操作
二、目录
1. 目录结构
2. 多级目录结构
3. 文件路径名
4. 工作目录
5. 目录结构的勾连
6. 目录项
三、UNIX文件系统的实现
1. UNIX文件系统中的主要结构
2. UNIX文件系统存储资源的分配和回收
第二节Nachos文件管理系统
第三节Nachos文件系统的实现
1. 同步磁盘分析(文件synchdisk.cc 、synchdisk.h)
2. 位图模块分析(文件bitmap.cc、bitmap.h)
3. 文件系统模块分析(文件filesys.cc、filesys.h)
3.1生成方法
3.2Create方法
3.3Open方法
3.4Remove方法
4. 文件头模块分析(文件filehdr.cc、filehdr.h)
5. 打开文件结构分析(文件openfile.cc、openfile.h)
5.1ReadAt方法
5.2WriteAt方法
6. 目录模块分析(文件directory.cc directory.h)
第四节文件管理系统作业
第五章 用户程序和虚拟内存
第一节Nachos 对内存、寄存器以及CPU的模拟
1 RaiseException 方法
2 ReadMem 方法
3 WriteMem 方法
4 Translate方法
5 Run 方法
第二节Nachos用户进程运行机制
一、用户程序空间(文件address.cc, address.h)
1.1生成方法
1.2InitRegisters方法
1.3SaveState方法
1.4RestoreState方法
二、系统调用(文件exception.cc, syscall.h, start.s)
第三节 虚存管理的设计和实现
一、Nachos存储管理的改进要求
二、一个虚拟存储管理实现的实例
2.1 虚拟存储系统的总体设计
2.2 缺页中断陷入及其调度算法
2.3 虚存的存储分配
2.4 存储保护
2.5 实现中的一些细节
第四节 用户程序和虚拟存储作业
第六章 Nachos的网络系统
第一节Nachos对物理网络的模拟
第二节Nachos的邮局协议
2.1 PostalDelivery方法
2.2 Send方法
第三节网络部分作业