山东大学操作系统课设lab6
实验六 系统调用(lab6)
实验目的
扩展现有的class AddrSpace的实现,使得Nachos可以实现多用户程序。
按照实验指导书中的方法,完成class AddrSpace中的print函数。
实现Nachos 系统调用:Exec()。
实验环境
虚拟机下Ubuntu Linux 16.04 LTS系统,nachos-3.4内核管理模块和MIPS CPU软件模拟模块,代码在lab6文件夹下面实现。
实验思路
有参考这个网页:https://blog.youkuaiyun.com/mottled233/article/details/78633571
先看machine文件夹,里面有一个mipssim.cc,mipssim是模拟器的意思,可以模拟一个完整系统的窗口:代码窗口、寄存器窗口、流水线窗口、时钟周期图窗口、内存窗口、统计窗口和断点窗口,我认为是模拟用户程序的完整过程。有一个Run()方法,应该是在运行整个系统,for循环里每条指令都作为参数依次传入OneInstruction()中。

然后看看OneInstruction(),感觉主体是一堆的case。当执行不同的指令时,寄存器的数组里存放不同的数。



这篇博客详细介绍了如何在Nachos操作系统中扩展AddrSpace实现多用户程序,并实现系统调用Exec()。实验涉及Ubuntu虚拟机,MIPS模拟器和lab6目录下的代码。博主分析了mipssim.cc、OneInstruction()函数以及exception.cc中的系统调用处理,并指出需要在exception.cc中添加Exec()和exit()的case。调试过程中遇到的重复定义问题通过删除多余的#include解决,但最终输出显示物理页分配存在问题。
最低0.47元/天 解锁文章
1295

被折叠的 条评论
为什么被折叠?



