Professional Documents
Culture Documents
9 - Virtual Memory
9 - Virtual Memory
Background
● 50% of the time the page that is being replaced has been
modified and therefore needs to be swapped out.
● Frame Locking
🡺If frame is locked, it may not be replaced
🡺Kernel of the operating system
🡺Key control structures
🡺I/O buffers
🡺Associate a lock bit with each frame
Page table when some pages are not in memory
VM advantage : Copy on Write ( COW)
1 1 1 4 4 4 5 5 5
9 page
2 2 2 1 1 1 3 3 faults
3 3 3 2 2 2 4
1 2 3 4 1 2 5 1 2 3 4 5
First-In-First-Out (FIFO) Algorithm
● Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
● 4 frames (4 pages can be in memory at a time )
● In general more frames ⇒ less page faults
● FIFO Replacement – Belady’s Anomaly
10 page faults
1 1 1 1 5 5 5 5 4 4
2 2 2 2 1 1 1 1 5
3 3 3 3 2 2 2 2
4 4 4 4 3 3 3
1 2 3 4 1 2 5 1 2 3 4 5
FIFO Illustrating Belady’s Anomaly
Optimal Algorithm
1 1 1 1 1 4
2 2 2 2 2
3 3 3 3
4 5 5
1 2 3 4 1 2 5 1 2 3 4 5
6 page
faults
● Used for measuring how well algorithm performs.
Least Recently Used (LRU) Algorithm
● Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1 1 1 1 1 1 1 5
2 2 2 2 2 2 2
3 3 5 5 4 4
4 4 3 3 3
1 2 3 4 1 2 5 1 2 3 4 5
LRU Implementation
● Counter implementation
🡺Every page entry has a counter; every time page is
referenced through this entry, copy the clock into the
counter.
🡺When a page needs to be changed, look at the counters to
determine which are to change.
● Reference bit
🡺With each page associate a bit, initially = 0
🡺When page is referenced bit set to 1.
🡺Replace the one which is 0 (if one exists). We do not know the
order, however.
● Second chance
🡺Need reference bit.
🡺If page to be replaced (in clock wise order) has reference bit = 1.
then:
🡺set reference bit 0.
🡺leave page in memory.
🡺replace next page (in clock wise order), subject to same rules.
The Clock Policy
● A method to give ‘a chance’ to recently used pages
🡺a new page is not replaced unless there is no other choice
● The set of frames candidate for replacement is considered as a
circular buffer
● When a page is replaced, a pointer is set to point to the next frame
in buffer
● A use bit for each frame is set to 1 whenever
🡺a page is first loaded into the frame
🡺the corresponding page is referenced
● When it is time to replace a page, the first frame encountered with
the use bit = 0 is replaced.
🡺During the search for replacement, each use bit set to 1 is changed to 0
Second-Chance (clock) Page-Replacement Algorithm
Enhanced Clock Policy
m = 64
si = 10
s12 = 127
10
a1 = × 64 ≈ 5
137
127
a2 = × 64 ≈ 59
137
Priority Allocation
● Page Buffering:
🡺Maintain a pool of free frames to quickly restart a faulting
process
Can be used to improve performance of some simple
page replacement algorithms like FIFO
● Prepaging:
🡺Bring in the complete working set of a swapped out
process to avoid initial multiple faults
Other Considerations (Cont.)
● Program structure
🡺int A[ ][ ] = new int[1024][1024];
🡺Each row is stored in one page
🡺Program 1 for (j = 0; j < A.length; j++)
for (i = 0; i < A.length; i++)
A[i,j] = 0;
1024 x 1024 page faults