Spring 2006 - Memory Management Project
Out: March 20, 2006
Due: April 10, 2006 (Monday)
The purpose of this project is gain an appreciation of the
work involved in managing virtual memory, and to compare different
page replacement policies for virtual memory management. The
assignment is to write a simple virtual memory simulation.
Your simulator should read a reference string from a file.
The reference string items will be of the form: <PID> <page
ref>, where PID is a process ID and page ref is a page of that process'
memory. For example, the following might be the beginning of an input
file:
1 45 1 46 1 45 1 44 1 45 2 76 2 75 2 77 2 77 2 76This reference string corresponds to Process 1 accessing its pages 45, 46, 45, 44, and 45, then Process 2 accessing its pages 76, 77, 77, 76, and 75. We will assume a pure demand paging system (no pre-fetching). The simulation also should allow the number of physical frames to be specified. So for example, if there are 3 or more frames available, the above reference string will cause 6 page faults for all three strategies (one for each time a new page is referenced). If there are only 2 frames available, then there would be 7 page faults for LRU and 8 page faults for FIFO.
The input file name and the number of frames may be entered
interactively or on the command-line.
For the purposes of making this simulation manageable, assume
a program gets 1 megabyte (1024 kilobytes) of virtual memory divided
into 1K pages (i.e., a program can generate page references from 0 to
1023), and there will no more than 100 processes (PIDs 0 to 99). We
also will assume a global replacement strategy. That is, when a page
fault occurs, the victim page can be taken from any process. We will
ignore the issue of dirty pages by assuming that all victim pages have
not been modified.
(20 points) This project may be done in individually or in pairs (group of 2). The simulator may be written in any language. However, the instructor can provide assistance only for C/C++ projects. Hand in a printout of well-documented code for the simulator, preferable 2-up in landscape mode. On csserver this can be accomplished by using the a2ps command.
(10 points) Each student/pair must provide a high-level
functional analysis and design of the program describing the
functionality of the major components of the program and how they
interact with each other, and a more detailed analysis and design for
the data structures and algorithms used in the memory management
portion of the program.
(10 points) Each student/pair must provide the results of
running their simulation using the test files provided on csserver in
/home/hwang/cs470/project3 (to be released on or before March
24) for 10, 50, and 100 physical frames. Each student/pair should
produce a summary table showing the number of page faults generated
for each strategy for each number of frames (nine values in all) for
each file. The files will exhibit varying degrees of locality and
number of processes. A README file will be placed in the directory
explaining each file.
In addition, each student/pair should answer the following
questions: