Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 51

Virtual Memory

Operating System Concepts 8th Edition

Silberschatz, Galvin and Gagne 2009

What to Learn?
Chapter 8 in the text book OSCE. Chapter 9 in OSC.
The benefits of a virtual memory system
The concepts of
demand

paging

page-replacement
and

algorithms

allocation of physical page frames

Other related techniques


Copy-on-write.

Operating System Concepts 8th Edition

Memory mapped files

9.2

Silberschatz, Galvin and Gagne 2009

Background
Virtual memory
Only

part of the program needs to be


in memory for execution

Logical

address space can be much


larger than physical address space

Allows

address spaces to be shared


by several processes

Operating System Concepts 8th Edition

9.3

Silberschatz, Galvin and Gagne 2009

Virtual Memory That is


Larger Than Physical Memory

Operating System Concepts 8th Edition

9.4

Silberschatz, Galvin and Gagne 2009

Transfer of a Paged Memory to


Contiguous Disk Space

Operating System Concepts 8th Edition

9.5

Silberschatz, Galvin and Gagne 2009

Demand Paging for Virtual Memory


Bring a page into memory ONLY when it is

needed
Less

I/O needed

Less

memory needed

Faster
More

response

users supported

Check a page table entry when a page is

needed

not-in-memory

Operating System Concepts 8th Edition

bring to memory

9.6

Silberschatz, Galvin and Gagne 2009

Valid-Invalid Bit
With each page table entry a validinvalid bit is

associated
(v in-memory, i not-in-memory)

Initially validinvalid bit is set to i on all entries


Not in memory page fault

Frame #

valid-invalid bit

v
v
v
v
i
.
i
i
page table
Operating System Concepts 8th Edition

9.7

Silberschatz, Galvin and Gagne 2009

Page Table When Some Pages


Are Not in Main Memory

Operating System Concepts 8th Edition

9.8

Silberschatz, Galvin and Gagne 2009

Handling a Page Fault


1. Get an empty physical frame
2. Swap page from the disk into frame
3. Reset the page table

Set validation bit = v


4. Restart the instruction that caused the

page fault

Operating System Concepts 8th Edition

9.9

Silberschatz, Galvin and Gagne 2009

Page Fault (Cont.)


Restart instruction
Special handling
block

Auto

move

increment/decrement

Operating System Concepts 8th Edition

9.10

Silberschatz, Galvin and Gagne 2009

Steps in Handling a Page Fault

Operating System Concepts 8th Edition

9.11

Silberschatz, Galvin and Gagne 2009

Performance of Demand Paging


Page Fault Rate 0 p 1.0
if

p = 0, no page faults

if

p = 1, every reference is a fault

Effective Access Time (EAT)

EAT = (1 p) x memory access


+ p (page fault overhead
+ swap page out
+ swap page in
+ restart overhead
)

Operating System Concepts 8th Edition

9.12

Silberschatz, Galvin and Gagne 2009

Demand Paging Performance Example


Memory access time = 200 nanoseconds
Average page-fault service time = 8 milliseconds
EAT = (1 p) x 200 + p (8 milliseconds)

= (1 p x 200 + p x 8,000,000
= 200 + p x 7,999,800
If one access out of 1,000 causes a page fault, then

EAT = 8.2 microseconds.


This is a slowdown by a factor of 40!!

Operating System Concepts 8th Edition

9.13

Silberschatz, Galvin and Gagne 2009

Other Benefits
Virtual memory allows other benefits

- Shared pages
- Copy-on-Write during process creation
- Memory-Mapped Files

Operating System Concepts 8th Edition

9.14

Silberschatz, Galvin and Gagne 2009

Shared Pages with Virtual Memory

Operating System Concepts 8th Edition

9.15

Silberschatz, Galvin and Gagne 2009

Copy-on-Write: Lazy copy during process creation


Copy-on-Write (COW) allows both parent and child

processes to initially share the same pages in


memory

If either process modifies a shared page, this page is


copied
COW allows more efficient process creation as only

modified pages are copied

Operating System Concepts 8th Edition

9.16

Silberschatz, Galvin and Gagne 2009

Before Process 1 Modifies Page C

Operating System Concepts 8th Edition

9.17

Silberschatz, Galvin and Gagne 2009

Copy on Write: After Process 1


Modifies Page C

Operating System Concepts 8th Edition

9.18

Silberschatz, Galvin and Gagne 2009

Memory-Mapped Files
Allow file I/O to be treated as routine memory

access by mapping a disk block to a page in


memory

Simplifies file access by treating file I/O

through direct memory access rather than


read() write() system calls

File access is managed with demand paging.


Several processes may map the same file

into memory as shared data

Operating System Concepts 8th Edition

9.19

Silberschatz, Galvin and Gagne 2009

Memory Mapped Files

Operating System Concepts 8th Edition

9.20

Silberschatz, Galvin and Gagne 2009

Example of Linux mmap


#define NUMINTS 1000
#define FILESIZE

NUMINTS * sizeof(int)

fd = open(FILEPATH, O_RDWR | O_CREAT |


O_TRUNC, 0600);
result = lseek(fd, FILESIZE-1, SEEK_SET);
result = write(fd, "", 1);
map = mmap(0, FILESIZE, PROT_READ |
PROT_WRITE, MAP_SHARED, fd, 0);
for (i = 1; i <=NUMINTS; ++i) map[i] = 2 * i;
munmap(map, FILESIZE);
close(fd);
Operating System Concepts 8th Edition

9.21

Silberschatz, Galvin and Gagne 2009

Demand paging when there is no free frame?

Page replacement find some page in

memory, but not really in use, swap it out


Algorithm
Performance

want an algorithm which will


result in minimum number of page faults

Same page may be brought into memory

several times

Operating System Concepts 8th Edition

9.22

Silberschatz, Galvin and Gagne 2009

Need For Page Replacement

Operating System Concepts 8th Edition

9.23

Silberschatz, Galvin and Gagne 2009

Page Replacement

Operating System Concepts 8th Edition

9.24

Silberschatz, Galvin and Gagne 2009

Basic Page Replacement


1. Find the location of the desired page on disk
2. Find a free frame:

- If there is a free frame, use it


- If there is no free frame, use a page replacement
algorithm to select a victim frame

3. Swap out: Use modify (dirty) bit to reduce overhead

of page transfers only modified pages are written to


disk

4. Bring the desired page into the free frame.

Update the page and frame tables

Operating System Concepts 8th Edition

9.25

Silberschatz, Galvin and Gagne 2009

Expected behavior: # of Page Faults vs.


# of Physical Frames

Operating System Concepts 8th Edition

9.26

Silberschatz, Galvin and Gagne 2009

First-In-First-Out (FIFO) Algorithm


Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
3 frames (3 pages can be in memory at a time per process).

Maintain a queue and select based on FIFO order.

4 frames

9 page faults

10 page faults

Beladys Anomaly: more frames more page faults


Operating System Concepts 8th Edition

9.27

Silberschatz, Galvin and Gagne 2009

FIFO Page Replacement

Operating System Concepts 8th Edition

9.28

Silberschatz, Galvin and Gagne 2009

FIFO Illustrating Beladys Anomaly

Operating System Concepts 8th Edition

9.29

Silberschatz, Galvin and Gagne 2009

Optimal Algorithm
Replace page that will not be used for longest period of time
4 frames example

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
1

6 page faults

3
4

How do you know this?


Used for measuring how well your algorithm performs

Operating System Concepts 8th Edition

9.30

Silberschatz, Galvin and Gagne 2009

Optimal Page Replacement

Operating System Concepts 8th Edition

9.31

Silberschatz, Galvin and Gagne 2009

Least Recently Used (LRU) Algorithm


Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

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

Operating System Concepts 8th Edition

9.32

Silberschatz, Galvin and Gagne 2009

LRU Page Replacement

Operating System Concepts 8th Edition

9.33

Silberschatz, Galvin and Gagne 2009

LRU Algorithm Implementation


Stack implementation keep a stack

of page numbers in a double link


form:
Page

referenced:

move

it to the top

requires

No

6 pointers to be changed

search for replacement

Operating System Concepts 8th Edition

9.34

Silberschatz, Galvin and Gagne 2009

Use Of A Stack to Record The


Most Recent Page References

Operating System Concepts 8th Edition

9.35

Silberschatz, Galvin and Gagne 2009

LRU Approximation Algorithms


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

If page has reference bit = 1 then:


Leave

bit 0.

this page in memory, but set reference

Visit next page (in clock order)

If reference bit is 0, replace it.

Operating System Concepts 8th Edition

9.36

Silberschatz, Galvin and Gagne 2009

Second-Chance
Page-Replacement Algorithm

Operating System Concepts 8th Edition

9.37

Silberschatz, Galvin and Gagne 2009

Issues with Page Allocation and


Replacement
Initial Allocation. Each process needs

minimum number of pages


Two

schemes: Fixed allocation vs.


priority allocation

Where to find frames


Global replacement find a frame from all

processes.

Local replacement find only from its

own allocated frames

Operating System Concepts 8th Edition

9.38

Silberschatz, Galvin and Gagne 2009

Fixed Allocation
Equal allocation For example, if there are 100 frames and 5

processes, give each process 20 frames.

Proportional allocation Allocate according to the size of process

si size of process pi

S si
m total number of frames
s
ai allocation for pi i m
S
m 64
si 10
s2 127
10
64 5
137
127
a2
64 59
137
a1

Operating System Concepts 8th Edition

9.39

Silberschatz, Galvin and Gagne 2009

Priority Allocation
Use a proportional allocation scheme using

priorities rather than size

If process Pi generates a page fault,


select

for replacement one of its frames

select

for replacement a frame from a


process with lower priority number

Operating System Concepts 8th Edition

9.40

Silberschatz, Galvin and Gagne 2009

Thrashing
If a process does not have enough pages,

the page-fault rate is very high. This leads to:


low

CPU utilization

operating

system thinks that it needs to


increase the degree of multiprogramming

another

process added to the system

Thrashing a process is busy swapping

pages in and out

Operating System Concepts 8th Edition

9.41

Silberschatz, Galvin and Gagne 2009

Thrashing (Cont.)

Operating System Concepts 8th Edition

9.42

Silberschatz, Galvin and Gagne 2009

Relationship of Demand Paging and


Thrashing
Why does demand paging work?

Locality model
Process

another

migrates from one locality to

Localities
Need

may overlap

a minimum working set to be effective

Why does thrashing occur?

working-sets > total memory size

Operating System Concepts 8th Edition

9.43

Silberschatz, Galvin and Gagne 2009

Locality In A Memory-Reference Pattern

Operating System Concepts 8th Edition

9.44

Silberschatz, Galvin and Gagne 2009

Working Sets and Page Fault Rates

Operating System Concepts 8th Edition

9.45

Silberschatz, Galvin and Gagne 2009

Prefetching Pages (Prepaging)


Optimization to reduce page faults (e.g. during

process startup)

Preload some pages before they are referenced


But if prefetched pages are unused, I/O and

memory was wasted

Assume s pages are prepaged and % of the

pages is used

Page fault cost of s *

>

cost of prepaging s * (1- ) unnecessary pages

Operating System Concepts 8th Edition

9.46

Silberschatz, Galvin and Gagne 2009

Tradeoffs: Page Size

Impact of page size selection:


Internal
Page
I/O

fragmentation

table size

overhead

locality

Operating System Concepts 8th Edition

9.47

Silberschatz, Galvin and Gagne 2009

Other Issues TLB Reach


TLB Reach - The amount of memory accessible from the TLB
TLB Reach = (TLB Size) X (Page Size)
Ideally, the working set of each process is stored in the TLB
Increase the Page Size

Increase TLB reach

But may increase internal fragmentation as not all applications


require a large page size

Operating System Concepts 8th Edition

9.48

Silberschatz, Galvin and Gagne 2009

Other Issues Impact of Program


Structure on Page Faults
<128 physical memory pages for each process. Each page is of

128x4 bytes

Program structure

Int[128,128] data;

Each row is stored in one page

Page faults of Program 1?


for (j = 0; j <128; j++)
for (i = 0; i < 128; i++)
data[i,j] = 0;

Page faults of Program 2 ?


for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
data[i,j] = 0;

Operating System Concepts 8th Edition

9.49

Silberschatz, Galvin and Gagne 2009

Other Issues Impact of Program


Structure
<128 physical pages for each process. Each page is of 128x4 bytes
Program structure

Int[128,128] data;

Each row is stored in one page

Program 1
for (j = 0; j <128; j++)
for (i = 0; i < 128; i++)
data[i,j] = 0;
128 x 128 = 16,384 page faults

Program 2
for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)
data[i,j] = 0;
128 page faults

Operating System Concepts 8th Edition

9.50

Silberschatz, Galvin and Gagne 2009

Other Issues I/O interlock


I/O Interlock Pages must sometimes be locked into memory
Consider I/O - Pages that are used for copying a file from a device

must be locked from being selected for eviction by a page replacement


algorithm

Operating System Concepts 8th Edition

9.51

Silberschatz, Galvin and Gagne 2009

You might also like