COS 318: Operating Systems Virtual ... - Princeton University

28
COS 318: Operating Systems Virtual Memory: Address Translation (http://www.cs.princeton.edu/courses/cos318/)

Transcript of COS 318: Operating Systems Virtual ... - Princeton University

Page 1: COS 318: Operating Systems Virtual ... - Princeton University

COS 318: Operating Systems

Virtual Memory: Address Translation

(http://www.cs.princeton.edu/courses/cos318/)

Page 2: COS 318: Operating Systems Virtual ... - Princeton University

2

Today’s Topics

u Virtual Memoryl Virtualizationl Protection

u Address Translationl Base and boundl Segmentationl Pagingl Translation look-ahead buffer

Page 3: COS 318: Operating Systems Virtual ... - Princeton University

3

The Big Picture

u DRAM is fast, but relatively expensiveu Disk is inexpensive, but slow

l 100X less expensivel 100,000X longer latencyl 1000X less bandwidth

u Our goalsl Run programs as efficiently as possiblel Make the system as safe as possible

CPU

Memory

Disk

Page 4: COS 318: Operating Systems Virtual ... - Princeton University

4

Issues

u Many processesl The more processes a system can handle, the better

u Address space sizel Many small processes whose total size may exceed memoryl Even one process may exceed the physical memory size

u Protectionl A user process should not crash the systeml A user process should not do bad things to other processes

Page 5: COS 318: Operating Systems Virtual ... - Princeton University

5

Consider A Simple System

u Only physical memoryl Applications use physical

memory directlyu Run three processes

l Email, browser, gccu What if

l gcc has an address error?l browser writes at x7050?l email needs to expand?l browser needs more

memory than is on the machine?

OS

email

browser

gcc

Free x0000

x2500

x5000

x7000

x9000

Page 6: COS 318: Operating Systems Virtual ... - Princeton University

6

Handling Protection

u Errors in one process should not affect othersu For each process, check each load and store instruction

to allow only legal memory references

CPU Check Physicalmemory

address

error

data

gcc

Page 7: COS 318: Operating Systems Virtual ... - Princeton University

7

Handling Finiteness: Relocation

u A process should be able to run regardless of where its data are physically placed or the physical memory size

u Give each process a large, static “fake” address space that is large and contiguous and entirely its own

u As a process runs, relocate or map each load and store to addresses in actual physical memory

CPU Check &relocate

Physicalmemory

address

data

email

Page 8: COS 318: Operating Systems Virtual ... - Princeton University

8

Virtual Memory

u Flexiblel Processes (and their data) can move in memory as they

execute, and be partially in memory and partially on disku Simple

l Applications generate loads and stores to addresses in the contiguous, large, “fake” address space

u Efficientl 20/80 rule: 20% of memory gets 80% of referencesl Keep the 20% in physical memory

u Design issuesl How is protection enforced?l How are processes relocated?l How is memory partitioned?

Page 9: COS 318: Operating Systems Virtual ... - Princeton University

9

Address Mapping and Granularityu Must have some “mapping” mechanism

l Map virtual addresses to physical addresses in RAM or disku Mapping must have some granularity

l Finer granularity provides more flexibilityl Finer granularity requires more mapping information

Page 10: COS 318: Operating Systems Virtual ... - Princeton University

10

Generic Address Translationu Memory Management Unite

(MMU) translates virtual address into physical address for each load and store

u Combination of hardware and (privileged) software controls the translation

u CPU viewl Virtual addresses

u Each process has its own memory space [0, high]l Address space

u Memory or I/O device viewl Physical addresses

CPU

MMU

Physicalmemory

I/Odevice

Virtual address

Physical address

Page 11: COS 318: Operating Systems Virtual ... - Princeton University

11

Goals of Translationu Implicit translation for each

memory referenceu A hit should be very fastu Trigger an exception on a

missu Protected from user’s errors

Registers

L1

Memory

Disk

2-3x

100-300x

20M-30Mx

Paging

L2-L3 10-20x

Page 12: COS 318: Operating Systems Virtual ... - Princeton University

12

Base and Bound (or Limit)u Built in Cray-1u CPU has base and bound regu Base holds start address of running

process; bound is length of its addressable space

u Protectionl A process can only access physical

memory in [base, base+bound]u On a context switch

l Save/restore base, bound regsu Pros

l Simpleu Cons

l Can’t fit all processes, have to swapl Fragmentation in memoryl Relocate processes when they growl Compare and add on every instr.

virtual address

base

bound

error

+

>

physical address

Page 13: COS 318: Operating Systems Virtual ... - Princeton University

13

Segmentationu Each process has a table of

(seg, size)u Treats (seg, size) as a fine-

grained (base, bound)u Protection

l Each entry has(nil, read, write, exec)

u On a context switchl Save/restore table in kernel

memory u Pros

l Efficient: programmer knows program and so segments

l Provides logical protectionl Easy to share data

u Consl Complex managementl Fragmentation

physical address

+

segment offset

Virtual address

seg size

...

>error

Page 14: COS 318: Operating Systems Virtual ... - Princeton University

14

Paging

u Use a fixed size unit called page instead of segment

u Use a page table to translate

u Various bits in each entryu Context switch

l Similar to segmentationu What should be the page

size?u Pros

l Simple allocationl Easy to share

u Consl Big tablel How to deal with holes?

VPage # offset

Virtual address

...

>error

PPage# ...

PPage# ...

...

PPage # offset

Physical address

Page table

page table size

Page 15: COS 318: Operating Systems Virtual ... - Princeton University

15

How Many PTEs Do We Need?

u Assume 4KB pagel Needs “low order” 12 bits

u Worst case for 32-bit address machinel # of processes ´ 220

l 220 PTEs per page table (~4Mbytes), but there might be 10K processes. They won’t fit in memory together

u What about 64-bit address machine?l # of processes ´ 252

l A page table cannot fit in a disk (252 PTEs = 16PBytes)!

Page 16: COS 318: Operating Systems Virtual ... - Princeton University

16

Segmentation with Paging

VPage # offset

Virtual address

...

>

PPage# ...

PPage# ...

...

PPage # offset

Physical address

Page tableseg size

...

Vseg #

error

Page 17: COS 318: Operating Systems Virtual ... - Princeton University

17

Multiple-Level Page Tables

Directory ...

pte

...

...

...

dir table offsetVirtual address

What does this buy us?

Page 18: COS 318: Operating Systems Virtual ... - Princeton University

18

Inverted Page Tables

u Main ideal One PTE for each

physical page framel Hash (Vpage, pid) to

Ppage#u Pros

l Small page table for large address space

u Consl Lookup is difficult l Overhead of managing

hash chains, etc

pid vpage offset

pid vpage

0

k

n-1

k offset

Virtual address

Physical address

Inverted page table

Page 19: COS 318: Operating Systems Virtual ... - Princeton University

19

Virtual-To-Physical Lookups

u Programs only know virtual addressesl Each program or process starts from 0 to high address

u Each virtual address must be translatedl May involve walking through the hierarchical page tablel Since the page table stored in memory, a program memory

access may requires several actual memory accessesu Solution

l Cache “active” part of page table in a very fast memory

Page 20: COS 318: Operating Systems Virtual ... - Princeton University

20

Translation Look-aside Buffer (TLB)

offset

Virtual address

...

PPage# ...

PPage# ...

PPage# ...

PPage # offset

Physical address

VPage #

TLB

Hit

Miss

Realpagetable

VPage#VPage#

VPage#

Page 21: COS 318: Operating Systems Virtual ... - Princeton University

21

Bits in a TLB Entry

u Common (necessary) bitsl Virtual page numberl Physical page number: translated addressl Validl Access bits: kernel and user (nil, read, write)

u Optional (useful) bitsl Process tagl Referencel Modifyl Cacheable

Page 22: COS 318: Operating Systems Virtual ... - Princeton University

22

Hardware-Controlled TLB

u On a TLB missl Hardware loads the PTE into the TLB

• Write back and replace an entry if there is no free entryl Generate a fault if the page containing the PTE is invalidl VM software performs fault handlingl Restart the CPU

u On a TLB hit, hardware checks the valid bitl If valid, pointer to page frame in memoryl If invalid, the hardware generates a page fault

• Perform page fault handling• Restart the faulting instruction

Page 23: COS 318: Operating Systems Virtual ... - Princeton University

23

Software-Controlled TLB

u On a miss in TLBl Write back if there is no free entryl Check if the page containing the PTE is in memoryl If not, perform page fault handlingl Load the PTE into the TLBl Restart the faulting instruction

u On a hit in TLB, the hardware checks valid bitl If valid, pointer to page frame in memoryl If invalid, the hardware generates a page fault

• Perform page fault handling• Restart the faulting instruction

Page 24: COS 318: Operating Systems Virtual ... - Princeton University

24

Hardware vs. Software Controlled

u Hardware approachl Efficientl Inflexiblel Need more space for page table

u Software approachl Flexiblel Software can do mappings by hashing

• PP# ® (Pid, VP#)• (Pid, VP#) ® PP#

l Can deal with large virtual address space

Page 25: COS 318: Operating Systems Virtual ... - Princeton University

25

Cache vs. TLB

u Similaritiesl Cache a portion of memoryl Write back on a miss

u Differencesl Associativityl Consistency

Vpage # offset

TLB

ppage # offset

Memory

Hit

Miss

Cache

Address Data

Hit

Memory

Miss

Page 26: COS 318: Operating Systems Virtual ... - Princeton University

26

TLB Related Issues

u What TLB entry to be replaced?l Randoml Pseudo LRU

u What happens on a context switch?l Process tag: change TLB registers and process registerl No process tag: Invalidate the entire TLB contents

u What happens when changing a page table entry?l Change the entry in memoryl Invalidate the TLB entry

Page 27: COS 318: Operating Systems Virtual ... - Princeton University

27

Consistency Issues

u “Snoopy” cache protocols (hardware)l Maintain consistency with DRAM, even when DMA happens

u Consistency between DRAM and TLBs (software)l You need to flush related TLBs whenever changing a page

table entry in memoryu TLB “shoot-down”

l On multiprocessors, when you modify a page table entry, you need to flush all related TLB entries on all processors, why?

Page 28: COS 318: Operating Systems Virtual ... - Princeton University

28

Summary

u Virtual Memoryl Virtualization makes software development easier and

enables memory resource utilization betterl Separate address spaces provide protection and isolate faults

u Address translationl Base and bound: very simple but limitedl Segmentation: useful but complex

u Pagingl TLB: fast translation for pagingl VM needs to take care of TLB consistency issues