100% found this document useful (2 votes)
377 views18 pages

Virtual Memory

Virtual memory was invented to allow programs to access more memory than is physically available by swapping memory pages to disk as needed. It uses page tables and a memory management unit (MMU) to map virtual addresses to physical addresses. Common techniques for improving virtual memory performance include using multi-level page tables to reduce table size, caching recent mappings in a translation lookaside buffer (TLB) to speed address translation, and maintaining an inverted page table to allow searching by physical address instead of virtual address.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
100% found this document useful (2 votes)
377 views18 pages

Virtual Memory

Virtual memory was invented to allow programs to access more memory than is physically available by swapping memory pages to disk as needed. It uses page tables and a memory management unit (MMU) to map virtual addresses to physical addresses. Common techniques for improving virtual memory performance include using multi-level page tables to reduce table size, caching recent mappings in a translation lookaside buffer (TLB) to speed address translation, and maintaining an inverted page table to allow searching by physical address instead of virtual address.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1/ 18

Virtual Memory

• Invented to solve problem that a program or collection


of ready programs are larger than physical memory

• Before virtual memory, overlays were used


– Programmer splits program into swap units called overlays
– Overlays must not refer to memory addresses outside of itself
except through special call to ask OS to specifically swap 2
swap units
– Unfriendly programming model
Virtual Memory

• Virtual memory – range of addressable locations


independent of size of physical memory

• Each process given a separate virtual address space


– Similar to having separate memory partitions for each process,
but virtual address space is not physically bounded

– Instead, virtual address space is limited by memory address


size
• Dependent on architecture
• 32-bit address was typical (232 = 4 billion)
• 64-bit is becoming more prevalent (264 = 16 quintillion)
Virtual Memory

• Virtual address space often divided into a few large


regions that are used differently

• Entire virtual address space is not addressable by a


process

• Off-limit regions used by OS to store per-proces data


structures

• Virtual memory is form of indirect addressing


Virtual Memory Mapping

• Memory management unit (MMU)


– Hardware to map virtual address to physical address
– Hardware essential for performance
– MMU resides in the CPU package
– MMU sends translated physical memory address onto
memory bus

• Steps in virtual address translation


1) CPU issues a program instruction
2) MMU translates virtual address to physical (main memory)
address (not physical location on disk!)
3) Physical memory page frame is accessed
Paging

• Physical memory is a sequence of page frames


• Process’ virtual address space is sequence of pages
• Pages and page frames are the same size
– Size is a power of 2
– Typically 4-64KB (typical size increases as main memory size
increases)
– Will large or small page sizes be more wasteful?
• Any page can be mapped to any page frame
• OS maintains mapping automatically (with assistance
from MMU hardware)
• Mapping is transparent to user/program
Page Tables

• MMU translates virtual address to physical address via


page table

• Size of page table = number of virtual pages

• One page table per process


– Located in kernel’s physical memory or process’ virtual
memory
– Table start and length in 2 hidden registers that are part of
process state information

• Example of using page table….


Page Table Entry
Disable Caching Ref. Dirty Protection Present/Absent Page Frame #
• Present/Absent bit – Is page loaded in main memory?
• Page Frame # - physical page frame where virtual page is
loaded
• Protection – read, write, executable
– If access is not allowed, produce segmentation fault
• “dirty bit” – has page been modified?
– If yes, then need to write back to disk when page is swapped out of
physical memory
• Referenced – set when page is accessed
– Helps OS decide whether or not to swap page out
• Disable caching – if set, do not use cached copy
– Cached copy may be invalid if page is mapped to I/O device and will
change often (memory-mapped I/O)
Page Tables: Design Issues

• Average waste due to internal fragmentation is ½ page


per process, so want small page size
• But, small page size many pages large
page table page tables (for each process)
will take up a lot of memory space
• Page sizes have grown a overall memory size has
grown – 4 to 64KB is common
• Often need to make 2 or more page table references
per instruction, so fast access is necessary!
• Using registers faster than using main memory
Page Tables: Design Issues

• 2 options
1) Store entire page table for process in registers
- No memory reference to access page table
- But, context switch between processes would be
expensive – why?
1) Store page table in memory and one register points
to start of page table for running process
- On context switch, load only 1 register value
- But, need one or more memory reference per instruction –
why?
• Neither methods rarely used. Instead, use hybrid
methods.
Managing Page Tables

• There is one page table entry (PTE) per possible


page in the address space, so huge number of
PTEs
– For example, 32-bit address space with 4KB pages and
32-bit PTEs
• Solutions to page size and fast access:
– Make all except part of OS’s page table pageable
(helps a little)
– Multi-level page tables
– Hashed page tables
– Inverted page tables
– TLB – translation look-aside buffer
Multi-level Page Tables

• Divide virtual address into 3 portions – high


page bits, low page bits, offset bits

• High page bits


– Index into a 1st-level page table
– Each entry points to 2nd-level page table which
contains conventional page table entries
– Need a complete 1st-level page table for entire virtual
address space
Multi-level Page Tables

• Avoid keeping all page tables in memory in 2 ways


– If 1st -level page entry indicates an invalid address, then do not even
allocate corresponding 2nd -level page tables
– Very common for process to have widely separated and dense text,
stack, and data areas – end up allocating just three 2nd -level page
tables, one for each “segment”. 3 areas do not have to be contiguous.

• Multi-level page tables can be extended to N levels as


address spaces get larger
• VAX and Pentium support 2-level page tables
• SPARC supports 3 levels
• Motorola 680X0 supports up to 4 levels
Translation Lookaside Buffer (TLB)

• Each virtual address reference requires 2 physical


memory references:
1) To page table to get mapping
2) To page frame itself

• Eliminate #1 by caching recent mappings in translation


lookaside buffer (TLB)
– Take advantage of fact that most programs reference small
number of pages often
– TLB is part of MMU
– Each TLB entry is a page table entry (has same elements as
PTE)
– TLB is special hardware (called associative memory) –
searches all PTE’s in TLB at once in parallel
– Approximately 64-256 PTE’s in TLB
Translation Lookaside Buffer (TLB)

• Translation and page fault handling happens in middle


of instruction
– Given virtual address, MMU compares it to all TLB entries in
parallel
• If present, no need to access memory to get page table entry
• Otherwise, load entry from page table
– Hardware must know how to restart any instruction that may
cause a page fault

• RISC machines (SPARC, MIPS, Alpha) do page


management in software. If virtual address is not in
the TLB, TLB fault occurs and is passed to OS
Translation Lookaside Buffer (TLB)

• 2 types of TLBs
1) Those whose entries include an address space ID
field
– Address space ID associates TLB entry with process
– No need to invalidate entries on context switch
2) Those whose entries do not include address
space ID
– TLB must be flushed on context switch
– When process is loaded, TLB is loaded from page table in
memory
Inverted Page Table
• Inverted page table has as many entries as physical
page frames – will max size be smaller than that of
page table?
• One single global inverted page table, rather than one
page table per process
• Each entry contains process ID and virtual page
number
• Given virtual address, must search in inverted page
table – cannot use virtual address as index as with
standard page table
• Solutions:
– Maintain inverted page table in associative memory hardware
whose entries are search in parallel
– Use hash table to hash the virtual page address – how?
Two Different Architectures
• Typical page table architecture
– Information is kept in combination of page tables and map of
allocated virtual address space region to backing store –
backing store is swap space on disk where pages are
swapped in & out
– TLB is a cache
– PTE present/absent bit must be reset when page is replaced
(page frame field is considered garbage)

• TLB-only architecture (RISC machines)


– TLB is not cache – it is definitive record of where pages are in
memory
– Page tables indicate disk location
– Page table remains unchanged when page is replaced
– Page table should be called “allocated-region-to-backing-
store” data structure
Summary of Options
• Page table – the standard
• Solutions to minimizing size of page tables:
– Multi-level page table
– Inverted page table
– Hashed page table
• Solution to faster access:
– TLB reduces number of memory references to get page table
entry
• Inverted page table – HP Spectrum, UltraSPARC, Power
PC
• Only TLB in hardware, leave all else to OS – MIPS,
Alpha, HP Precision

You might also like