slide

advertisement
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%
Download