Page Table Translation

medium · os, memory, paging

Page Table Translation

Simulate a 2-level page table translation for a 32-bit virtual address.

Function

func Translate(va uint32, pd []int, pts [][]int) (uint32, bool)

Address format

  • Page size: 4096 bytes
  • VA layout: [10 bits dir][10 bits table][12 bits offset]

Table format

  • pd length is 1024.
  • pd[i] is the index of the page table in pts, or -1 if not present.
  • Each page table in pts has length 1024.
  • A page table entry is a frame number, or -1 if not present.

Behavior

  • If any level is not present, return (0, false).
  • Otherwise, return physical address frame*4096 + offset and true.
Run tests to see results
No issues detected