[prev] 46 [next]

Virtual Memory (cont)

Recall the address mapping process with per-process page tables

Address processToPhysical(pid, Vaddr)
{
   PageData *PageTable = AllPageTables[pid];
   uint pageno = PageNumberFrom(Vaddr);
   uint offset = OffsetFrom(Vaddr);
   if (PageTable[pageno].status != Loaded) {
      // load page into free frame
      // set PageTable[pageno]
   }
   uint frame = PageTable[pageno].frameNo;
   return frame * P + offset;
}

What to do if the page is not loaded?