Presentation is loading. Please wait.

Presentation is loading. Please wait.

Nachos Project Assignment 3

Similar presentations


Presentation on theme: "Nachos Project Assignment 3"— Presentation transcript:

1 Nachos Project Assignment 3
Virtual Memory TA:吳哲榮

2 Assignment Test case Both test programs are greater than whole memory.
/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.

3 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

4 Hints swap = new SynchDisk
All headers you need to see are in /filesys/ Use this disk to be the swap space

5 Hints PageTable FrameTable SwapTable one pagetable per process
Record every physical page information SwapTable Record every sector’s information in swap.

6 Hints PageTable TranslationEntry{ decide your virtual page number
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 }

7 Hints FrameTable FrameInfoEntry { bool valid; bool lock;
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 };

8 Hints SwapTable FrameInfoEntry { bool valid; //whether entry been used
The number of entries in swapTable is the same as swap sectors. Each entry represent one frame in the disk. FrameInfoEntry { bool valid; //whether entry been used bool lock; unsigned int vpn; //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.

9 Hints Virtual Address Map to Physical Address
Physical Address = pageTable[(virtual address / PageSize)].physicalPage * PageSize + (virtual address % PageSize)

10 Modify Addrspace::Load(char *fileName)
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)’

11 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

12 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.

13 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

14 Hand in your reports. Please compress following with zip.
source code Final report power-point file tar zcvf b tar.gz your code and presentation files(report) to TA Deadline: 2011/1/20 23:59

15 Grading Policy Correct Result 30% Report 70%


Download ppt "Nachos Project Assignment 3"

Similar presentations


Ads by Google