这次我们实验要求是一直做到实验七为止,但是比较难受的就是按照实验七的要求内存地址空间扩展部分即使做完了也没法验证,因为如果想验证就需要等到实验八做完才能验证,这里为了通过增加部分代码的方式来对实验七进行了验证,很多实现也参考了写完实验八的那位学长的博客。
山东大学操作系统课设实验nachos系统(6)系统调用Exec()和Exit()
一、实验要求重述
扩展地址空间,使其能够运行多个用户程序。
通过查看实验指导书中的Things to Do,可以知道在本次试验中,我们需要扩展地址空间使其能够运行多个用户程序,此外就是通过对Exec函数的处理,使得我们能够观察到扩展地址空间之后的结果。
二、地址空间扩展部分
首先我们来处理地址空间的扩展,通过对相关代码的分析,我们知道与空间分配有关的代码均在AddrSpace这个类中,在修改之前虚拟地址页到物理地址帧之间的映射是一对一的,这样也无法运行多个用户进程,所以我们需要对其进行修改,根据提示,我们知道这里在分配物理地址单位的时候可以用到bitmap这个数据结构,而这个数据结构可能在整个系统运行过程中都需要,因此我们可以把它设置为一个静态变量,这里我写到了addrspace.h中,如图:
我们曾经在文件系统的扩展中用过这个数据结构,那时将其写到磁盘上的时候只占了一