Chap 9 Virtual Memory
Chap 9 Virtual Memory
Background
Demand Paging
Copy-on-Write
Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.2 Silberschatz, Galvin and Gagne ©2013
Objectives Background
Code needs to be in memory to execute, but entire program rarely
To describe the benefits of a virtual memory system
used
To explain the concepts of demand paging, page-replacement
Error code, unusual routines, large data structures
algorithms, and allocation of page frames
Entire program code not needed at same time
To discuss the principle of the working-set model
Consider ability to execute partially-loaded program
To examine the relationship between shared memory and
memory-mapped files Program no longer constrained by limits of physical memory
To explore how kernel memory is managed Each program takes less memory while running -> more
programs run at the same time
Increased CPU utilization and throughput with no increase
in response time or turnaround time
Less I/O needed to load or swap programs into memory ->
each user program runs faster
Operating System Concepts – 9th Edition 9.3 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.4 Silberschatz, Galvin and Gagne ©2013
Background (Cont.) Background (Cont.)
Virtual memory – separation of user logical memory from Virtual address space – logical view of how process is
physical memory stored in memory
Only part of the program needs to be in memory for execution Usually start at address 0, contiguous addresses until end of
space
Logical address space can therefore be much larger than physical
address space Meanwhile, physical memory organized in page frames
Allows address spaces to be shared by several processes MMU must map logical to physical
Allows for more efficient process creation Virtual memory can be implemented via:
More programs running concurrently Demand paging
Less I/O needed to load or swap processes Demand segmentation
Operating System Concepts – 9th Edition 9.5 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.6 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.7 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.8 Silberschatz, Galvin and Gagne ©2013
Shared Library Using Virtual Memory Demand Paging
Could bring entire process into memory
at load time
Or bring a page into memory only when
it is needed
Less I/O needed, no unnecessary
I/O
Less memory needed
Faster response
More users
Similar to paging system with swapping
(diagram on right)
Page is needed reference to it
invalid reference abort
not-in-memory bring to memory
Lazy swapper – never swaps a page
into memory unless page will be needed
Swapper that deals with pages is a
pager
Operating System Concepts – 9th Edition 9.9 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.10 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.11 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.12 Silberschatz, Galvin and Gagne ©2013
Page Table When Some Pages Are Not in Main Memory Page Fault
Operating System Concepts – 9th Edition 9.13 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.14 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.15 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.16 Silberschatz, Galvin and Gagne ©2013
Instruction Restart Performance of Demand Paging
Consider an instruction that could access several different locations Stages in Demand Paging (worse case)
1. Trap to the operating system
block move
2. Save the user registers and process state
3. Determine that the interrupt was a page fault
4. Check that the page reference was legal and determine the location of the page on the disk
5. Issue a read from the disk to a free frame:
1. Wait in a queue for this device until the read request is serviced
2. Wait for the device seek and/or latency time
3. Begin the transfer of the page to a free frame
6. While waiting, allocate the CPU to some other user
auto increment/decrement location
7. Receive an interrupt from the disk I/O subsystem (I/O completed)
Restart the whole operation? 8. Save the registers and process state for the other user
What if source and destination overlap? 9. Determine that the interrupt was from the disk
10. Correct the page table and other tables to show page is now in memory
11. Wait for the CPU to be allocated to this process again
12. Restore the user registers, process state, and new page table, and then resume the
interrupted instruction
Operating System Concepts – 9th Edition 9.17 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.18 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.19 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.20 Silberschatz, Galvin and Gagne ©2013
Demand Paging Optimizations Copy-on-Write
Swap space I/O faster than file system I/O even if on the same device Copy-on-Write (COW) allows both parent and child processes to initially
Swap allocated in larger chunks, less management needed than file share the same pages in memory
system If either process modifies a shared page, only then is the page copied
Copy entire process image to swap space at process load time COW allows more efficient process creation as only modified pages are
Then page in and out of swap space copied
Used in older BSD Unix In general, free pages are allocated from a pool of zero-fill-on-demand
Demand page in from program binary on disk, but discard rather than paging pages
out when freeing frame Pool should always have free frames for fast demand page execution
Used in Solaris and current BSD Don’t want to have to free a frame as well as other processing on
Still need to write to swap space page fault
Pages not associated with a file (like stack and heap) – anonymous Why zero-out a page before allocating it?
memory vfork() variation on fork() system call has parent suspend and child
Pages modified in memory but not yet written back to the file system using copy-on-write address space of parent
Designed to have child call exec()
Mobile systems
Typically don’t support swapping Very efficient
Instead, demand page from file system and reclaim read-only pages
(such as code)
Operating System Concepts – 9th Edition 9.21 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.22 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.23 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.24 Silberschatz, Galvin and Gagne ©2013
What Happens if There is no Free Frame? Page Replacement
Used up by process pages Prevent over-allocation of memory by modifying page-
Also in demand from the kernel, I/O buffers, etc fault service routine to include page replacement
How much to allocate to each? Use modify (dirty) bit to reduce overhead of page
Page replacement – find some page in memory, but not really in transfers – only modified pages are written to disk
use, page it out Page replacement completes separation between logical
Algorithm – terminate? swap out? replace the page? memory and physical memory – large virtual memory can
be provided on a smaller physical memory
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 – 9th Edition 9.25 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.26 Silberschatz, Galvin and Gagne ©2013
3. Bring the desired page into the (newly) free frame; update the page
and frame tables
4. Continue the process by restarting the instruction that caused the trap
Note now potentially 2 page transfers for page fault – increasing EAT
Operating System Concepts – 9th Edition 9.27 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.28 Silberschatz, Galvin and Gagne ©2013
Page Replacement Page and Frame Replacement Algorithms
Operating System Concepts – 9th Edition 9.29 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.30 Silberschatz, Galvin and Gagne ©2013
Graph of Page Faults Versus The Number of Frames First-In-First-Out (FIFO) Algorithm
Reference string: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
3 frames (3 pages can be in memory at a time per process)
15 page faults
Can vary by reference string: consider 1,2,3,4,1,2,5,1,2,3,4,5
Adding more frames can cause more page faults!
Belady’s Anomaly
How to track ages of pages?
Just use a FIFO queue
Operating System Concepts – 9th Edition 9.31 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.32 Silberschatz, Galvin and Gagne ©2013
FIFO Illustrating Belady’s Anomaly Optimal Algorithm
Replace page that will not be used for longest period of time
9 is optimal for the example
How do you know this?
Can’t read the future
Used for measuring how well your algorithm performs
Operating System Concepts – 9th Edition 9.33 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.34 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.35 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.36 Silberschatz, Galvin and Gagne ©2013
Use Of A Stack to Record Most Recent Page References LRU Approximation Algorithms
LRU needs special hardware and still slow
Reference bit
With each page associate a bit, initially = 0
When page is referenced bit set to 1
Replace any with reference bit = 0 (if one exists)
We do not know the order, however
Second-chance algorithm
Generally FIFO, plus hardware-provided reference bit
Clock replacement
If page to be replaced has
Reference bit = 0 -> replace it
reference bit = 1 then:
– set reference bit 0, leave page in memory
– replace next page, subject to same rules
Operating System Concepts – 9th Edition 9.37 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.38 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.39 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.40 Silberschatz, Galvin and Gagne ©2013
Counting Algorithms Page-Buffering Algorithms
Keep a counter of the number of references that have been made Keep a pool of free frames, always
to each page Then frame available when needed, not found at fault time
Not common Read page into free frame and select victim to evict and add
to free pool
Lease Frequently Used (LFU) Algorithm: replaces page with When convenient, evict victim
smallest count
Possibly, keep list of modified pages
When backing store otherwise idle, write pages there and set
Most Frequently Used (MFU) Algorithm: based on the argument
to non-dirty
that the page with the smallest count was probably just brought in
and has yet to be used Possibly, keep free frame contents intact and note what is in them
If referenced again before reused, no need to load contents
again from disk
Generally useful to reduce penalty if wrong victim frame
selected
Operating System Concepts – 9th Edition 9.41 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.42 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.43 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.44 Silberschatz, Galvin and Gagne ©2013
Fixed Allocation Priority Allocation
Equal allocation – For example, if there are 100 frames (after Use a proportional allocation scheme using priorities rather
allocating frames for the OS) and 5 processes, give each process than size
20 frames
Keep some as free frame buffer pool If process Pi generates a page fault,
Proportional allocation – Allocate according to the size of process select for replacement one of its frames
Dynamic as degree of multiprogramming, process sizes select for replacement a frame from a process with lower
change priority number
m 64
si size of process pi s1 10
S si s2 127
m total number of frames a1
10
62 » 4
s 137
ai allocation for pi i m 127
S a2 62 » 57
137
Operating System Concepts – 9th Edition 9.45 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.46 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.47 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.48 Silberschatz, Galvin and Gagne ©2013
Thrashing Thrashing (Cont.)
If a process does not have “enough” pages, the page-fault rate is
very high
Page fault to get page
Replace existing frame
But quickly need replaced frame back
This leads to:
Low CPU utilization
Operating system thinking that it needs to increase the
degree of multiprogramming
Another process added to the system
Operating System Concepts – 9th Edition 9.49 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.50 Silberschatz, Galvin and Gagne ©2013
m emory address
Limit effects by using local or priority page replacement 26
24
22
18
execution time
Operating System Concepts – 9th Edition 9.51 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.52 Silberschatz, Galvin and Gagne ©2013
Working-Set Model Keeping Track of the Working Set
working-set window a fixed number of page references
Example: 10,000 instructions Approximate with interval timer + a reference bit
WSSi (working set of Process Pi) = Example: = 10,000
total number of pages referenced in the most recent (varies in time) Timer interrupts after every 5000 time units
if too small will not encompass entire locality
Keep in memory 2 bits for each page
if too large will encompass several localities
Whenever a timer interrupts copy and sets the values of all
if = will encompass entire program
reference bits to 0
D = WSSi total demand frames
If one of the bits in memory = 1 page in working set
Approximation of locality
Why is this not completely accurate?
if D > m Thrashing
Improvement = 10 bits and interrupt every 1000 time units
Policy if D > m, then suspend or swap out one of the processes
Operating System Concepts – 9th Edition 9.53 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.54 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.55 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.56 Silberschatz, Galvin and Gagne ©2013
Memory-Mapped Files Memory-Mapped File Technique for all I/O
Memory-mapped file I/O allows file I/O to be treated as routine Some OSes uses memory mapped files for standard I/O
memory access by mapping a disk block to a page in memory Process can explicitly request memory mapping a file via mmap()
A file is initially read using demand paging system call
A page-sized portion of the file is read from the file system into Now file mapped into process address space
a physical page For standard I/O (open(), read(), write(), close()), mmap
Subsequent reads/writes to/from the file are treated as anyway
ordinary memory accesses But map file into kernel address space
Simplifies and speeds file access by driving file I/O through Process still does read() and write()
memory rather than read() and write() system calls
Copies data to and from kernel space and user space
Also allows several processes to map the same file allowing the
Uses efficient memory management subsystem
pages in memory to be shared
Avoids needing separate subsystem
But when does written data make it to disk?
Periodically and / or at file close() time COW can be used for read/write non-shared pages
Memory mapped files can be used for shared memory (although
For example, when the pager scans for dirty pages
again via separate system calls)
Operating System Concepts – 9th Edition 9.57 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.58 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.59 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.60 Silberschatz, Galvin and Gagne ©2013
Shared Memory in Windows API Allocating Kernel Memory
First create a file mapping for file to be mapped Treated differently from user memory
Then establish a view of the mapped file in process’s virtual Often allocated from a free-memory pool
address space Kernel requests memory for structures of varying sizes
Consider producer / consumer Some kernel memory needs to be contiguous
Producer create shared-memory object using memory mapping I.e. for device I/O
features
Open file via CreateFile(), returning a HANDLE
Create mapping via CreateFileMapping() creating a
named shared-memory object
Create view via MapViewOfFile()
Sample code in Textbook
Operating System Concepts – 9th Edition 9.61 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.62 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.63 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.64 Silberschatz, Galvin and Gagne ©2013
Slab Allocator Slab Allocation
Alternate strategy
Slab is one or more physically contiguous pages
Cache consists of one or more slabs
Single cache for each unique kernel data structure
Each cache filled with objects – instantiations of the data
structure
When cache created, filled with objects marked as free
When structures stored, objects marked as used
If slab is full of used objects, next object allocated from empty
slab
If no empty slabs, new slab allocated
Benefits include no fragmentation, fast memory request
satisfaction
Operating System Concepts – 9th Edition 9.65 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.66 Silberschatz, Galvin and Gagne ©2013
Operating System Concepts – 9th Edition 9.67 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.68 Silberschatz, Galvin and Gagne ©2013
Other Considerations -- Prepaging Other Issues – Page Size
Prepaging Sometimes OS designers have a choice
To reduce the large number of page faults that occurs at Especially if running on custom-built CPU
process startup Page size selection must take into consideration:
Prepage all or some of the pages a process will need, before Fragmentation
they are referenced
Page table size
But if prepaged pages are unused, I/O and memory was wasted
Resolution
Assume s pages are prepaged and α of the pages is used
I/O overhead
Is cost of s * α save pages faults > or < than the cost of
Number of page faults
prepaging
s * (1- α) unnecessary pages? Locality
α near zero prepaging loses TLB size and effectiveness
Always power of 2, usually in the range 212 (4,096 bytes) to 222
(4,194,304 bytes)
On average, growing over time
Operating System Concepts – 9th Edition 9.69 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.70 Silberschatz, Galvin and Gagne ©2013
TLB Reach - The amount of memory accessible from the TLB Program structure
int[128,128] data;
TLB Reach = (TLB Size) X (Page Size) Each row is stored in one page
Program 1
Ideally, the working set of each process is stored in the TLB
for (j = 0; j <128; j++)
Otherwise there is a high degree of page faults for (i = 0; i < 128; i++)
data[i,j] = 0;
Increase the Page Size
This may lead to an increase in fragmentation as not all 128 x 128 = 16,384 page faults
applications require a large page size
Program 2
Provide Multiple Page Sizes
for (i = 0; i < 128; i++)
This allows applications that require larger page sizes the for (j = 0; j < 128; j++)
opportunity to use them without an increase in fragmentation data[i,j] = 0;
Operating System Concepts – 9th Edition 9.71 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.72 Silberschatz, Galvin and Gagne ©2013
Other Issues – I/O interlock Operating System Examples
Operating System Concepts – 9th Edition 9.73 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.74 Silberschatz, Galvin and Gagne ©2013
Windows Solaris
Uses demand paging with clustering. Clustering brings in pages Maintains a list of free pages to assign faulting processes
surrounding the faulting page Lotsfree – threshold parameter (amount of free memory) to
Processes are assigned working set minimum and working set begin paging
maximum Desfree – threshold parameter to increasing paging
Working set minimum is the minimum number of pages the Minfree – threshold parameter to being swapping
process is guaranteed to have in memory
Paging is performed by pageout process
A process may be assigned as many pages up to its working set
maximum Pageout scans pages using modified clock algorithm
When the amount of free memory in the system falls below a Scanrate is the rate at which pages are scanned. This ranges
threshold, automatic working set trimming is performed to from slowscan to fastscan
restore the amount of free memory Pageout is called more frequently depending upon the amount of
Working set trimming removes pages from processes that have free memory available
pages in excess of their working set minimum Priority paging gives priority to process code pages
Operating System Concepts – 9th Edition 9.75 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition 9.76 Silberschatz, Galvin and Gagne ©2013
Solaris 2 Page Scanner
End of Chapter 9
Operating System Concepts – 9th Edition 9.77 Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9th Edition Silberschatz, Galvin and Gagne ©2013