MIT6.S081学习总结-lab3:page tables

本文详细介绍了在MIT 6.S081操作系统课程中lab3的页表相关知识,包括打印页表、每个进程一张内核页表的实现以及简化copyin/copyinstr的方法。主要内容涉及页表的标志位解析、内核页表的创建与切换,以及用户页表到内核页表的复制,旨在提高用户和内核间的访问效率。
摘要由CSDN通过智能技术生成

lab3 主要是页表相关,难度突然提高了好多,遇到了无数个坑,太难了。

打印页表

第一个进程启动时打印页表内容
在这里插入图片描述
内容分析:
… 0:
… … 0:
… … … 0:标志位0x1f,用户可以访问,是代码,全局变量页表
… … … 1:标志位0x0f,用户不可以访问,就是守护页,因为栈是往下增长的,防止用户栈增长到守护页,最多只能到栈底
… … … 2:标志位0x1f,表示堆栈
… 255:
… … 511:
… … … 510:标志位0x07,可读写,是trapframe页,用来恢复和保存寄存器的页
… … … 511:标志位0x0b,可执行可读,trampoline页
实现:
kernel/vm.c里添加,递归实现即可
在这里插入图片描述

每个进程一张内核页表

目前xv6的实现里,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值