MIT6.828_Lab 3_User Environments_Part A

Lab 3: User Environments

简介:
本实验中将实现运行受保护的用户态环境(即“进程”)所需的基本内核功能。 将增强JOS内核,以设
置数据结构来跟踪用户环境(进程),创建单个用户环境(进程),将程序映像加载到其中并开始运行。还
将使JOS内核能够处理用户环境(进程)发出的任何系统调用并处理它引起的任何其他异常。
注意:在本实验中,术语“环境”和“过程”是可互换的-两者均指允许您运行程序的抽象。 为了强调
JOS环境和UNIX进程提供不同的接口,并且不提供相同的语义,我们引入术语“环境”而不是传统的术
语“进程”。
预备工作:按课程给出的步骤切换到lab3分支,再将lab2合并
实验要求:与实验2一样,完成实验3中描述的所有常规练习以及至少一个挑战性问题。在lab目录顶层的一个名为Answers-lab3.txt的文件中,写下对实验室中提出的问题的简短答案,写下一两个段落的描述来说明是如何解决挑战性问题的。

Part A: User Environments and Exception Handling

课程中描述了一些管理用户环境(进程)的关键结构体,以及结构体中各元素的含义,值得一提的是在JOS
中,各个环境(进程)不像xv6中的进程那样具有自己的内核堆栈。一次在内核中只能有一个活动的JOS环境(进程),因此JOS只需要一个内核堆栈。

练习1:
修改kern / pmap.c中的mem_init()来分配和映射envs数组,与页面数组一样,应在合适的地方:UENVS(inc / memlayout.h)上以只读方式映射为用户,以便用户进程可以从该数组读取。
要求:运行你的代码,并保证check_kern_pgdir通过。
代码修改很简单,参考Lab2里写过的分配和映射Pages的代码就行了:
补充的代码:
图片在这里插入图片描述
测试居然报错了:
图片
那就调试一下:
调试代码:
图片
调试结果:
图片
可以看到memset之后,kern_pgdir变成0了,搞不清楚,上网查波资料,最后参考了
Salvete

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值