从零开始写 OS (6) —— 页表简介

如题所述

第1个回答  2024-08-17
分页是操作系统中一种常见的内存管理方式,用于将虚拟地址转换为物理地址,实现不同程序之间的内存隔离。虚拟地址由两部分组成:虚拟页号(VPN)和页面偏移量(page offset)。其中,VPN用于确定虚拟内存空间的页面位置,页面偏移量则用于定位该页面内的具体物理位置。分页的核心思想是将虚拟内存空间和物理内存空间划分为固定大小的块,虚拟内存空间中的块称为页面(pages),而物理内存空间中的块则称为帧(frames)。在RISC-V32架构下,每个页面的大小固定为4KB。

在RISC-V32中,如果satp的第31位为1,则表示启用了页表机制。当访问虚拟内存时,内存管理单元MMU会通过页表将虚拟地址转换为物理地址,再进行访问。页表就是用于实现这一转换的工具。每个进程有一个根页表(也称为页目录),不同的进程拥有不同的根页表,因此相同虚拟地址在不同进程下可能对应不同的物理地址。

为了实现页表的转换,虚拟地址被分为两部分:虚拟页号(VPN)和页面偏移量(page offset)。由于页面大小为4KB,因此需要12位来表示页面偏移量,以定位页面内的具体位置。RISC-V32架构采用了二级页表机制,即一个进程只有一个根页表,不同进程的根页表不同,这样相同的虚拟地址在不同进程下可以映射到不同的物理地址。

在RISC-V32框架中,每个页面的大小固定为4KB。虚拟地址可以被分解为虚拟页号(VPN)和页面偏移量(page offset)。虚拟页号用于确定虚拟内存空间中的页面位置,而页面偏移量则用于精确定位页面内的物理位置。

在RISC-V32架构下,根页表也称为页目录,用于保存指向子页表(二级页表)的物理地址。在实现分页机制时,通常需要处理页面异常,如在读、写等操作时缺少权限。目前,我们可以通过简单的异常处理机制(如panic)来应对这些异常情况。实现页表机制后,可以有效地管理虚拟内存与物理内存之间的转换,提高内存管理的效率和安全性。接下来,我们将深入实践,动手实现页表,结合理论与实践进行深入学习。

从零开始写 OS (6) —— 页表简介
在RISC-V32架构下,根页表也称为页目录,用于保存指向子页表(二级页表)的物理地址。在实现分页机制时,通常需要处理页面异常,如在读、写等操作时缺少权限。目前,我们可以通过简单的异常处理机制(如panic)来应对这些异常情况。实现页表机制后,可以有效地管理虚拟内存与物理内存之间的转换,提高内存管理...

如何从零开始写一个简单的操作系统
题主你好,如何写一个简单的操作系统,不是三言两语能够讲清楚的,也不是一两行代码就可完成的。要完成一个简单的操作系统,而不是一个裸机下打印一下hello world的引导扇区。这需要有足够的计算机系统的知识。包括但不仅限于汇编,C和操作系统原理。在自己写操作系统这一领域,也有不少大作。我之前...

从零开始的ARMv8操作系统内核实践 3 为内核启动MMU
现有OS内核代码通常在虚拟地址的高地址区,这是一种历史传承。在DOS时代,CPU不支持虚拟地址,应用程序会独享内存。当CPU支持虚拟地址后,OS为兼容之前的程序,将应用程序放在低地址区运行,自身则放置在高地址区,以确保自身数据不与应用程序数据冲突。我们通过页表实现低48位的恒等映射,并将页表安装在TTB...

相似回答
大家正在搜