1、NachOS 课程设计 操作系统课程设计操作系统课程设计 说说 明明 书书 学 院: 信息科学与工程学院 NachOS 课程设计 一、 理解 Nachos 模拟的物理机的运行机制. 3 1. Sysdep 模块分析(文件 sysdep.cc sysdep.h) 5 2.中断模块分析(文件 interrupt.cc interrupt.h) 8 3. 时钟中断模块分析(文件 timer.cc timer.h)12 4. 终端设备模块分析(文件 console.cc console.h) 错误错误!未定义书签。未定义书签。 二、 理解 Nachos 中线程运行机制 14 1. 工具模块分析(文件
2、list.cc list.h utility.cc utility.h) 17 2. 线程启动和调度模块分析(文件 switch.s switch.h) .18 3. 线程模块分析(文件 thread.cc thread.h)20 4. 线程调度算法模块分析(文件 scheduler.cc scheduler.h).23 5.Nachos 主控模块分析(文件 main.cc system.cc system.h) 24 6. 同步机制模块分析(文件 synch.cc synch.h) 25 三、 理解 Nachos 中支持用户进程的机制 27 一、用户程序空间(文件 address.cc, a
3、ddress.h).30 二、系统调用(文件 exception.cc, syscall.h, start.s) .33 NachOS 课程设计 一、一、理解理解 Nachos 模拟的物理机的运行机制模拟的物理机的运行机制 Machine 类错误错误!未找到引用源。未找到引用源。用来模拟计算机主机。它提供的功能有:读 写寄存器。读写主存、运行一条用户程序错误错误!未找到引用源。未找到引用源。的汇编指令、运 行用户程序、单步调试用户程序、显示主存和寄存器状态、将虚拟内存错误错误!未未 找到引用源。找到引用源。地址转换为物理内存地址、陷入 Nachos 内核等等。 Machine 类错误错误!未找
4、到引用源。未找到引用源。实现方法是在宿主机上分配两块内存分别作 为虚拟机的寄存器和物理内存。运行用户程序错误错误!未找到引用源。未找到引用源。时,先将用 户程序从 Nachos 文件系统中读出,写入模拟的物理内存中,然后调用指令模拟 模块对每一条用户指令解释执行。将用户程序的读写内存要求,转变为对物理内 存地址的读写。Machine 类提供了单步调试用户程序的功能,执行一条指令后会 自动停下来,让用户查看系统状态,不过这里的单步调试是汇编指令级的,需要 读者对 R2/3000 错误错误!未找到引用源。未找到引用源。指令比较熟悉。如果用户程序想使用操作 系统提供的功能或者发出异常信号时,Mach
5、ine 调用系统异常陷入功能,进入 Nachos 的核心部分。 Interrupt 类错误错误!未找到引用源。未找到引用源。 用来模拟硬件中断系统。 在这个中断系统中, 中断状态有开,关两种,中断类型有时钟中断、磁盘中断、控制台写中断、控制 台读中断、网络发送中断以及网络接收中断。机器状态有用户态,核心态和空闲 态。中断系统提供的功能有开/关中断,读/写机器状态,将一个即将发生中断放 入中断队列,以及使机器时钟前进一步。 在 Interrupt 类错误错误!未找到引用源。未找到引用源。中有一个记录即将发生中断的队列,称为 中断等待队列。中断等待队列中每个等待处理的中断包含中断类型、中断处理程
6、NachOS 课程设计 序的地址及参数、中断应当发生的时间等信息。一般是由硬件设备模拟程序把将 要发生的中断放入中断队列。中断系统提供了一个模拟机器时钟,机器时钟在下 列情况下前进: 用户程序错误错误!未找到引用源。未找到引用源。打开中断 执行一条用户指令 处理机没有进程正在运行 机器时钟前进时,中断处理的过程如下图所示: NachOS 课程设计 中断系统成为整个 Nachos 虚拟机的基础, 其它的模拟硬件设备都是建立在中 断系统之上的。在此之上,加上 Machine 类错误错误!未找到引用源。未找到引用源。模拟的指令解 释器,可以实现 Nachos 的线程管理错误错误!未找到引用源。未找到引用源。 、文件系统管理错误错误!未未 找到引用源。找到引用源。 、虚拟内存错误错误!未找到引用源。未找到引用源。 、用户程序错误错误!未找到引用源。未找到引用源。和 网络管理错误错误!未找到引用源。未找到引用源。等所有操作系统功能。下图展示了 Nachos 系统的 整体结构。 用用 户户 程程 序序 线程管理线程管理错 误!未找到引用 网络协议网络协议 文件系