首页 > 其他分享 >xv6页表

xv6页表

时间:2023-04-30 19:22:19浏览次数:35  
标签:27 索引 虚拟地址 xv6 物理地址 页表 物理

一级页表


地址64bit。虚拟地址使用low39位,物理地址使用low56位。
虚拟地址的low39中,高27位是index,用来索引页表中的具体"一行"页表项。一个页表项在物理内存中是4096Byte,offset用来索引具体一个Byte。
物理地址的low56中,高44位是物理页号(PPN),低12位等同于虚拟地址中的offset的12位。
这段地址翻译过程中,虚拟地址的27位用来在页表中索引一个页表项,找到页表项后,可以从中读到44位的PPN,直接对应了物理地址中的44位。然后使用虚拟地址的offset12位,来索引具体的一个Byte。
在这个一级页表设计中,存储页表所需要的物理空间是(2^27)*(64bit)=2^27*8B = 128*8MB= 1G。那么系统中每一个进程都需要1G的物理空间来存储这张页表,以进行虚拟地址对物理地址的转换。

三级页表

在三级页表的设计中,虚拟地址的index被分为3级。最高的一级(9位)用来索引第一级页表,第一级页表在物理内存中存储的地址写在寄存器satp中。从第一级页表中索引到ppn后,可以直接找到第二级页表在物理内存中的位置,再用中间的9bit来索引第二级页表中的页表项。

例如,如果只为了映射一个物理地址时,这种三级页表的方式,只需要在物理内存中存储三张页表,分别对应这张图中的三张页表。因为每一级页表只要找到相应的ppn就行了,所以只需要这3级ppn被存储的页表。那么每张页表的物理空间占用为2^9*64bit=512*8B=4KB,三张页表总共占用12KB。相比之前一级页表的设计,同样为了映射一个物理地址,此时一个进程只需要12KB,之前需要1G。

其他

无论几级页表,在页表中都有一个flag的表示,就是把每一个页表项的低10位用来表示flag。具体flag的含义可见【三级页表图】中的位表示。一般是读写权限、有效性等等。

标签:27,索引,虚拟地址,xv6,物理地址,页表,物理
From: https://www.cnblogs.com/ijpq/p/17365666.html

相关文章

  • 《操作系统原型--xv6分析与实验》第一章:qemu启动xv6问题记录
    最近在学习《操作系统原型--xv6分析与实验》,第一章安装qemu和启动xv6就遇到很多障碍,特此记录一下解决办法。版本信息系统:Ubuntu22.04.1LTSxv6:rev9qemu:6.2gcc:11.2.0操作步骤ubuntu勾选了完整安装,默认自带gcc、make等构建工具。首先将用到的xv6下载下来解压,我下载的是re......
  • xv6 exec系统调用
    exec是一个创建用户地址空间的系统调用。根据一个存储在文件系统中的file来创建用户地址空间。具体来说,intexec(char*path,char**argv)exec使用namei打开指定的二进制文件路径(kernel/exec.c:26)。exec读取ELF(可执行与可链接格式)文件头。xv6应用程序遵循广泛使用的......
  • xv6 labs Copy-On-Write fork
    虚拟内存提供了一个中间层:内核可以通过将PTE标记为invalid或者read-only来拦截内存引用,这会导致pagefault,此时,你可以通过修改PTE来改变地址的含义。在计算机系统中有一种说法,任何系统问题都可以通过中间层解决。lazyallocation实验提供了一个例子,本次实验将探索另一个例子:copy-o......
  • xv6 如何进入系统调用,并设置参数
    #Initialprocessthatexecs/init.#Thiscoderunsinuserspace.#include"syscall.h"#exec(init,argv).globlstartstart:laa0,initlaa1,argvlia7,SYS_exececall#for(;;)exit();exit:lia......
  • xv6操作系统启动过程
    当按下系统电源按键后,做一些硬件层面的配置和初始化:上电复位:在开机时,计算机进行硬件复位,确保寄存器和其他硬件组件处于初始状态。检查和测试硬件:计算机进行一系列硬件检查和自检操作,以确保硬件组件功能正常。这可能包括内存检测、CPU测试等。初始化硬件组件:初始化和配置计算......
  • ARM64页表映射
    1.ARMv8-A架构基于ARMv8-A架构的处理器最大可以支持到48根地址线,也就是寻址2的48次方的虚拟地址空间,即虚拟地址空间范围为0x0000_0000_0000_0000~0x0000_FFFF_FFFF_FFFF,共256TB。一个是从0x0000_0000_0000_0000到0x0000_FFFF_FFFF_FFFF,另外一个是从0xFFFF_0000_0000_0000到0xFFFF......
  • xv6 page fault —— MIT6.S081操作系统工程
    当硬件对用户使用的虚拟地址进行翻译时,若该虚拟地址不正确,比如尚未映射、权限不足等,硬件会产生一个pagefault陷阱给操作系统,就是这样一个看似简单平常的机制,却给了操作系......
  • 7款颜色的CSS表格样式美化网页表格
    第一种:CSS表格样式之一点击查看CSS代码 /*Borderstyles*/#table-1thead,#table-1tr{border-top-width:1px;border-top-style:solid;border-top-color:......
  • VC提交网页表单-自动评论留言
    一、准备工作:1、本机环境:WindowsXPSP3、ADSL10M光纤2、开发工具:WildPacketsOmniPeekV5.1.4                   VisualC++6.0         ......
  • xv6系统调用流程——MIT6.S081操作系统
    这篇文章通过gdb跟踪基于risc-v架构的xv6系统中write系统调用的处理流程。系统调用是操作系统给应用程序提供的操作底层硬件资源的简单清晰的接口,隐藏底层资源的复杂性,比......