OS-virtual-memory 之 linear page table

virtual memory

例子分析:
page size = 4K
address space = 16K
physical memroy = 64K
page table entry = 4Bytes 假定 valid bit(1bit) + PFN(31bits)

address translation 图解

Linear page table

在这里插入图片描述

virtual address space(16K)
  1. bits(virtual address space) = log2(virtual memory address space) = log216K = 14
  2. 总页数 = virtual address space / page size = 16K / 4K = 4,可知需要 2bits 表示页数(Virtual Page Number)
  3. offset = log2(page size) = log2(4K) = 12
Virtual Page Number bitsoffset bits
212
physical memory (64K)
  1. bits(virtual address space) = log2(virtual memory address space) = log264K = 16
  2. 总页数 = virtual address space / page size = 64K / 4K = 16,可知需要 4bits 表示页数(Physical Frame Number)
  3. offset = log2(page size) = log2(4K) = 12
Physical Frame Number bitsoffset bits
412
linear page table 记录啥?

记录从 VPNPFN 的映射。那么记录(Page Table Entry)格式是怎样的呢?
该示例使用的记录格式是:

valid bitPFN bits
131

valid bit = 1 该 entry 是一个有效的 VPN -> PFN 映射。
valid bit = 0 该 entry 是一个无效的 VPN -> PFN 映射。

linear page table 就是一维数组,数组 index 作为 VPN。数组每一个元素就是一个 Page Table Entry。

实例 Address Translation

在这里插入图片描述

Page table 例子
Page Table (from entry 0 down to the max size)
  [       0]  0x8000000c
  [       1]  0x00000000
  [       2]  0x00000000
  [       3]  0x80000006
virtual address 例子
Virtual Address Trace
  VA 0x00003229 (decimal:    12841) --> PA or invalid address? (1)
  VA 0x00001369 (decimal:     4969) --> PA or invalid address? (2)
  VA 0x00001e80 (decimal:     7808) --> PA or invalid address? (3)
  VA 0x00002556 (decimal:     9558) --> PA or invalid address? (4)
  VA 0x00003a1e (decimal:    14878) --> PA or invalid address? (5)

(1) VA 0x00003229 (decimal: 12841) 虚拟地址翻译过程。

  1. 计算 VPN = VA / page size = 12841 / 4K = 3,即是线性页表的 index
  2. 计算 offset = VA % page size = 553
  3. 查看 Page Table[VPN] = Page Table[3] = 0x80000006
  4. 判断该 Page Table Entry 是否有效,该 VPN -> PFN 是有效映射。根据 page table entry 格式可以得到 PFN = 6。
  5. 计算物理地址:PFN * page size + offset = 6 * 4K + 553 = 25129。虚拟地址翻译完毕。
    综上步骤可知:地址翻译主要是找到 VPN 到 PFN 的过程。这个关系存储在 Linear Page Table 之中。

References

  1. decimal-to-binary
  2. vm-paging
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值