[prev] 39 [next]

Virtual Memory (cont)

Virtual address to physical address mapping (more detail):

typedef struct {char status, uint frameNo, ...} PageData;

PageData *AllPageTables[maxProc];
    // one entry for each process

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;
}