1 virtual memory in the real world implementing exact lru approximating lru hardware support clock...
Post on 19-Dec-2015
230 views
TRANSCRIPT
1
Virtual Memory in the Real World
Implementing exact LRU Approximating LRU
Hardware Support Clock Algorithm
Thrashing Cause Working Set
2
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA, B, C, B, C, C, D
3
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
A, B, C, B, C, C, D
4
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
B2
A, B, C, B, C, C, D
5
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
B2
C3
A, B, C, B, C, C, D
6
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
B4
C3
A, B, C, B, C, C, D
7
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
B4
C5
A, B, C, B, C, C, D
8
Implementing Exact LRU
On each reference, time stamp page
When we need to evict: select oldest page= least-recently usedA1
B4
C6
A, B, C, B, C, C, D
9
Implementing Exact LRU
On each reference, time stamp page When we need to evict: select oldest page
= least-recently used
A1
B4
C6
A, B, C, B, C, C, DD7
LRU page
How should we implement this?
10
Implementing Exact LRU:Data Structures Hash table: optimize the common case
(memory hit) Location of a page in memory: apply hash
function to a page number update: O(1), eviction: O(n) (n: # of pages to
process) Expensive: on every reference, compute
hash of page address; update time stamp doubly-linked list
Move items to front when referenced LRU items at end of list Still too expensive:
Linear lookup time to find a page 4-6 pointer updates per reference
11
Virtual Memory in the Real World
Implementing exact LRU Approximating LRU
Reference-bit algorithm Clock Algorithm
Thrashing Cause Working Set
12
Reference-bit algorithm
Hardware support: reference bit Maintain reference bit for every
page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0
13
Reference-bit algorithm : example
Maintain reference bit for every page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0A
1B1
C1
A, B, C, B, C, C, D
14
Reference-bit algorithm: example
Maintain reference bit for every page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0A
0B0
C0
A, B, C, B, C, C, D
reset reference bits
15
Reference-bit algorithm: example
Maintain reference bit for every page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0A
0B1
C0
A, B, C, B, C, C, D
16
Reference-bit algorithm: example
Maintain reference bit for every page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0A
0B1
C1
A, B, C, B, C, C, D
17
Reference-bit algorithm: example
Maintain reference bit for every page On each access, set reference bit to
1 Periodically resets reference bits Evict page with reference bit = 0A
0B1
C1
A, B, C, B, C, C, D
18
Reference-bit algorithm: example
Maintain reference bit for every page On each access, set reference bit to 1 Periodically resets reference bits Evict page with reference bit = 0
A0
B1
C1
A, B, C, B, C, C, DD1
19
Virtual Memory in the Real World
Implementing exact LRU Approximating LRU
Reference-bit algorithm Clock Algorithm
Thrashing Cause Working Set
20
The Clock Algorithm Set reference bit to 1 for an access Consider frames in circle Pointer:
0: initially Only advance pointer when page fault
happens On page fault, OS:
Repeat Checks reference bit of the current pointer If reference bit = 0, replace page, set bit to
1; advance pointer to next frame; break; If reference bit = 1, set bit to 0, advance
pointer to next frame
21
The Clock Algorithm
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
B1
C1
A1
D1
A, B, C, D, B, C, E, F, C, G
22
The Clock Algorithm
B1
C1
A1
D1
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
23
The Clock Algorithm
B1
C1
A1
D1
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
24
The Clock Algorithm
B1
C1
A0
D1
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
25
The Clock Algorithm
B0
C1
A0
D1
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
26
The Clock Algorithm
B0
C0
A0
D1
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
27
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
28
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E1
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
29
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
30
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
F1
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
31
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
F1
C1
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
32
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
F0
C1
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
33
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
F0
C1C0
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
34
The Clock Algorithm
B0
C0
A0
D0
A, B, C, D, B, C, E, F, C, G
E0
F0
C1C0
G1
Consider frames in circle
On page fault, repeat: Checks reference bit If reference bit = 0,
replace page, set bit to 1; advance pointer to next frame; break;
If reference bit = 1, set bit to 0, advance pointer to next frame
35
The Clock Algorithm: Summary
Variant of FIFO & LRU LRU: ? FIFO: ?
No need to reset referenece bit periodically
36
Enhancing Clock
Recall: we don’t write back unmodified pages Idea: favor eviction of unmodified pages Extend hardware to keep another bit:
modified bit Total order of tuples: (ref bit, mod
bit) (0,0), (0,1), (1,0), (1,1) Evict page from lowest nonempty class
37
Page Replacementin Enhanced Clock
OS scans at most three times Page (0,0) – replace that page Page (0,1) – write out page Page (1,0), (1,1)
Fast, but still coarse approximation of LRU
38
Virtual Memory in the Real World
Implementing exact LRU Approximating LRU
Reference-bit algorithm Clock
Thrashing Cause Working Set
39
Thrashing
A process is busy swapping pages in and out; no useful work is done low CPU utilization
OS adds processes →
even more page swapping & lower CPU utilization
40
Cause of Thrashing
Locality A set of pages that are actively used
together Process migrates from one locality to
another Total locality of processes > total
memory size Process cannot keep in memory all
pages that it is currently using
41
Working Set Strategy
Working set = pages referred in last references (approximate of locality)
OS monitors working set of each process; allocate enough frames to process Another process can be started if
there are enough extra frames Suspend process(es) if the sum of
working-set sizes exceeds RAM
42
Working Set Problems
Algorithm relies on key parameter, How do we set ? Is there one correct ?
Different processes have different timescales over which they refer pages
Not acceptable (or necessarily possible) to suspend processes altogether
Not really used Very rough variant used in Windows