// vm.cpp Dave Reed 11/20/02 // // Virtual Memory Simulator: currently uses FCFS page replacement ////////////////////////////////////////////////////////////////// #include #include "PageTable.h" using namespace std; int main() { int logSize; cout << "Enter number of pages in logical memory: " << endl; cin >> logSize; int physSize; cout << "Enter number of frames in physical memory: " << endl; cin >> physSize; PageTable PT(logSize, physSize); int pageNum; while (cin >> pageNum) { // if standard input, hit Ctrl-C to end if (PT.GetValid(pageNum)) { cout << pageNum << ": found at frame " << PT.GetFrameNumber(pageNum) << endl; } else if (PT.FreeRemaining()) { int frameNum = PT.GetFree(); PT.SetFrameNumber(pageNum, frameNum); PT.SetValid(pageNum, true); cout << pageNum << ": PAGE FAULT -- added at frame " << frameNum << endl; } else { int oldest = PT.GetOldest(); int frameNum = PT.GetFrameNumber(oldest); PT.SetFrameNumber(pageNum, frameNum); PT.SetValid(oldest, false); PT.SetValid(pageNum, true); cout << pageNum << ": PAGE FAULT -- replaces page " << oldest << " at frame " << frameNum << endl; } } return 0; }