6.S081 Lab3:page tables

完成Lab3花费了将近两周的时间,主要的时间都花在了DEBUG第三个问题Simplify copyin/copyinst上,第一个问题Print a page table对后面的DEBUG起到了非常大的帮助。在这个lab3大部分BUG几乎都是内存访问错误,因此很难通过gdb定位,最简单的方法是直接通过vmprint打印出页表检查。

Problem1:内核启动失败
exec在替换进程结构体中的k_pagetable时,需要sfence_vma()对pagetable进行重置生效,再对原来的k_pagetable进行释放。

Problem2:查看k_pagetable的userspace
k_pagetable映射了整个系统内核,全部打印不利用DEBUG,需要通过设计一个vmprint_userspace函数对其中的用户空间空间区间进行打印。

Problem3:k_pagetable的空间伸缩
k_pagetable需要随着user_pagetable伸缩,这时候需要慎用无符号类型,当需要对空间进行缩减时sz呈现出负数,这时候使用无符号类型往往会造成系统崩溃。

Problem4:panic问题查找
系统进入trap时出现的panic往往很难通过设置断点查看调用栈找出源头,这时候选择的方法还是通过在测试程序设置printf定位,在相应的系统调用中利用vmprint打印出k_pagetable进行检查。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇