Nachos Project Assignment 3 Virtual Memory TA:吳哲榮 Assignment Test case /test/matmult.c /test/sort.c Both test programs are greater than whole memory. Goal – run this two programs concurrently, and get the correct result. Under RR scheduling. Hints File system – swap space Add some table to help you record all the information. PageTable FrameTable SwapTable Catch PageFaultException Construct your Virtual Memory Manager Hints swap = new SynchDisk All headers you need to see are in /filesys/ Use this disk to be the swap space Hints PageTable FrameTable one pagetable per process Record every physical page information SwapTable Record every sector’s information in swap. Hints PageTable decide your virtual page number TranslationEntry{ unsigned int virtualPage; unsigned int physicalPage; bool valid; //whether in physical memory bool readOnly; bool use; //whether been referenced or modified bool dirty; //whether been modified } Hints FrameTable Each frame represent one physical page FrameInfoEntry { bool valid; bool lock; unsigned int vpn; //which virtual page is in this frame AddrSpace *addrSpace; //which process is using this frame }; Hints SwapTable The number of entries in swapTable is the same as swap sectors. Each entry represent one frame in the disk. FrameInfoEntry { bool valid; bool lock; unsigned int vpn; //whether entry been used //which virtual page is in this entry AddrSpace *addrSpace;//which process is using this entry }; Access virtual memory in the disk by kernel->swap>WriteSector and kernel->swap->ReadSector. Hints Virtual Address Map to Physical Address Physical Address = pageTable[(virtual address / PageSize)].physicalPage * PageSize + (virtual address % PageSize) Hints Modify Addrspace::Load(char *fileName) load one page once 1.acquire one page When all physical memory frames are occupied, please design a page replacement method to get a frame. 2.Map virtual address to physical address Invoke ‘executable->ReadAt(&(kernel>machine->mainMemory[physical address]), sizeToLoadNow, inFileAddr)’ Virtual Memory Manager Public: int TranslateAddr(AddrSpace *space, int virtAddr); // translate virtual address to physical address bool AcquirePage(AddrSpace *space, unsigned int vpn); // get a frame void ReleasePage(AddrSpace *space, unsigned int vpn); // release a page void PageFaultHandler(void); // manage page fault PageFaultHandler PageFaultHandler Put the pages in swaptable into frametable. When all physical memory frames are occupied, please design a page replacement method to get a frame. Assignment Requirements Assignment Report (1/20 on the class) How you modified Nachos to make it support virtual memory – important code segments Test cases and demonstration to show the correctness of your design Everything you consider important Hand in your reports. Please compress following with zip. source code Final report power-point file tar zcvf b99901000.tar.gz E-mail your code and presentation files(report) to TA (b93901098@ntu.edu.tw). Deadline: 2011/1/20 23:59 Grading Policy Correct Result Report 30% 70%