main memory: address translation - cornell university · isolation don’t wantdistinct process...

38
Main Memory: Address Translation (Chapter 8) CS 4410 Operating Systems

Upload: nguyennguyet

Post on 08-Jun-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Main Memory: Address Translation

(Chapter 8)CS 4410

Operating Systems

Page 2: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Physical Reality: different processes/threads share the same hardware à need to multiplex• CPU (temporal)• Memory (spatial)• Disk and devices (later)

Why worry about memory sharing?• Complete working state of process and/or kernel is

defined by its data in memory (+ registers)• Don’t want different threads to have access to each

other’s memory (protection)

Can’t We All Just Get Along?

2

Page 3: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

IsolationDon’t want distinct process states collided in physical memory(unintended overlap à chaos)

SharingWant option to overlap when desired (for communication)

VirtualizationWant to create the illusion of more resources than exist in underlying physical system

UtilizationWant to best use of this limited resource

Aspects of Memory Multiplexing

3

Page 4: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Paged Translation• Efficient Address Translation

All in the context of the OS

Address Translation

4

Page 5: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

A Day in the Life of a Program

5

sum.c

source files

...0C40023C210350001b80050c8C048004210470020C400020

...102010002104033022500102

...

0040 0000

1000 0000

.text

.dat

am

ain

max

#include <stdio.h>

int max = 10;

int main () {int i;int sum = 0;add(m, &sum);printf(“%d”,i); ...

}

Compiler(+ Assembler + Linker)

executablesum

“It’s alive!”Loader

stack

text

data

heap

process

0x00000000

pid xxx

0x00400000

0x10000000

GP SPPC0xffffffff

max

addijal

Page 6: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

What’s wrong with this …in the context of:

multiple processes? multiple threads?

Logical view of process memory

6

0xffffffff

0x00000000

stack

text

data

heap

Page 7: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

TERMINOLOGY ALERT:Page: the data itselfFrame: physical location

Paged Translation

7

stack

text

data

heap

Processor’sView

STACK 0

TEXT 0DATA 0HEAP 1

Physical Memory

HEAP 0

TEXT 1

STACK 1Virtual Page 0

Virtual Page N

Frame 0

Frame M

No more external

fragmentation!

Page 8: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Divide:• Physical memory into fixed-sized blocks called frames• Logical memory into blocks of same size called pages

Management:• Keep track of all free frames.• To run a program with n pages, need to find n free

frames and load program

Notice:• Logical address space can be noncontiguous!• Process given frames when/where available

Paging Overview

8

Page 9: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Address Translation, Conceptually

9

Translation

PhysicalMemory

VirtualAddress

RaiseException

PhysicalAddress

Valid

Processor

Data

Data

Invalid

Page 10: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Hardware device• Maps virtual to physical address

(used to access data)

User Process: • deals with virtual addresses• Never sees the physical address

Memory Management Unit (MMU)

10

Page 11: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

red cube is 255th

byte in page 2.

Where is the red cube in physical memory?

High-Level Address Translation

11

stack

text

data

heap

Processor’sView

STACK 0

TEXT 0DATA 0HEAP 1

Physical Memory

HEAP 0

TEXT 1

STACK 1Page 0

Page N

Frame 0

Frame M

Page 12: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Page number – Upper bits• Must be translated into a physical frame number

Page offset – Lower bits• Does not change in translation

For given logical address space 2m and page size 2n

Logical Address Components

12

page number page offset

m - n n

Page 13: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

High-Level Address Translation

13

stack

text

data

heap

Virtual Memory

STACK 0

TEXT 0DATA 0HEAP 1

Physical Memory

HEAP 0

TEXT 1

STACK 1

0x0000

0x1000

0x20000x3000

0x4000

0x5000

0x20FF

0x00000x10000x20000x30000x4000

0x5000

0x60000x????

Who keeps track of the mapping?

à Page Table012345…

-36485

Page 14: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

14

Simplified Page Table

Lives in MemoryPage-table base register (PTBR)• Points to the page table • Saved/restored on context switch PTBR

Page-table

Page 15: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Protection• Dynamic Loading• Dynamic Linking• Copy-On-Write

Leveraging Paging

15

Page 16: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

16

Full Page Table

Meta Data about each frameProtection R/W/X, Modified, Valid, etc.

PTBR

Page-table

Page 17: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Protection• Dynamic Loading• Dynamic Linking• Copy-On-Write

Leveraging Paging

17

Page 18: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Dynamic Loading• Routine is not loaded until it is called• Better memory-space utilization; unused

routine is never loaded• No special support from the OS needed

Dynamic Linking• Routine is not linked until execution time• Locate (or load) library routine when called• AKA shared libraries (e.g., DLLs)

Dynamic Loading & Linking

18

Page 19: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Protection• Dynamic Loading• Dynamic Linking• Copy-On-Write

Leveraging Paging

19

Page 20: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• P1 forks()• P2 created with- own page table- same translations

• All pages marked COW (in Page Table)

Copy on Write (COW)

20

stack

textdataheap

P1 Virt Addr Space

stack

text

data

heap

Physical Addr Space

stack

textdataheap

P2 Virt Addr Space

COWX

XXX

X

XXX

Page 21: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Option #1: Child keeps executing

Upon page fault:• Allocate new

frame• Copy frame• Both pages no

longer COW

COW, then keep executing

21

stack

textdataheap

P1 Virt Addr Space

stack

text

data

heap

Physical Addr Space

stack

textdataheap

P2 Virt Addr Space

stack

COW

XXX

X

X

XXX

Page 22: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Option #2: Child calls exec()

• Load new frames

• Copy frame• Both pages now

COW

COW, then call exec (before)

22

stack

textdataheap

P1 Virt Addr Space

stack

text

data

heap

Physical Addr Space

stack

textdataheap

P2 Virt Addr Space

BEFORE

stack

textdataheap

P2 Virt Addr Space

COWX

XXX

X

XXX

Page 23: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

stack

textdata

Option #2: Child calls exec()

• Load new frames• Copy frame• Both pages no

longer COW

COW, then call exec (after)

23

stack

textdataheap

P1 Virt Addr Space

stack

text

data

heap

Physical Addr Space

P2 Virt Addr Space

stack

text

data

AFTER

COW

Page 24: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Memory Consumption:• Internal Fragmentation

• Make pages smaller? But then…• Page Table Space: consider 32-bit address space,

4KB page size, each PTE 8 bytes• How big is this page table?• How many pages in memory does it need?

Performance: every data/instruction access requires two memory accesses:• One for the page table• One for the data/instruction

Downsides to Paging

24

Page 25: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Paged Translation• Efficient Address Translation• Multi-Level Page Tables• Inverted Page Tables• TLBs

Address Translation

25

Page 26: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

26

PhysicalMemory

Implementation

Level 1

Level 2

Level 3

Processor

VirtualAddress

OffsetIndex 3Index 2Index 1

Frame Offset

PhysicalAddress

+ Allocate only PTEs in use+ Simple memory allocation−more lookups per memory reference

Multi-Level Page Tables to the Rescue!

index 1 | index 2 | offset

Frame | Access

Frame

Page 27: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

32-bit machine, 1KB page size• Logical address is divided into:

– a page offset of 10 bits (1024 = 2^10)– a page number of 22 bits (32-10)

• Since the page table is paged, the page number is further divided into:– a 12-bit first index– a 10-bit second index

• Thus, a logical address is as follows:

Two-Level Paging Example

page number page offset

12 10 1027

index 1 index 2 offset

Page 28: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

28

PhysicalMemory

Implementation

Level 1

Level 2

Level 3

Processor

VirtualAddress

OffsetIndex 3Index 2Index 1

Frame Offset

PhysicalAddress

+ First Level requires less contiguous memory− even more lookups per memory reference

This one goes to three!

Page 29: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Index is an index into:• table of memory frames (if bottom level)• table of page table frames (if multilevel page table)• backing store (if page was swapped out)

Synonyms:• Valid bit == Present bit• Dirty bit == Modified bit• Referenced bit == Accessed bit

Complete Page Table Entry (PTE)

29

Valid ProtectionR/W/X Ref Dirty Index

Page 30: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Paged Translation• Efficient Address Translation• Multi-Level Page Tables• Inverted Page Tables• TLBs

Address Translation

30

Page 31: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

So many virtual pages…

… comparatively few physical frames

Traditional Page Tables:• map pages to frames• are numerous and sparse

Why not map frames to pages? (How?)

Inverted Page Table: Motivation

31

Page 32: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

32

Inverted Page Table: Implementation

Page-table Physical Memory

pid

frame page pid

Not to scale! Page table << Memory

Implementation:• 1 Page Table for entire system• 1 entry per frame in memory• Why don’t we store the frame #?

page # offsetVirtual address

frame

offset

pid page

Page 33: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Tradeoffs:↓ memory to store page tables↑ time to search page tables

Solution: hashing• hash(page,pid) à PT entry (or chain of entries)• What about:

• collisions…• sharing…

Inverted Page Table: Discussion

33

Page 34: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

• Paged Translation• Efficient Address Translation• Multi-Level Page Tables• Inverted Page Tables• TLBs

Address Translation

34

Page 35: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Cache of virtual to physical page translationsMajor efficiency improvement

35

PhysicalMemory

Frame Offset

Physical Address

Page# Offset

VirtualAddress

Translation Lookaside Buffer (TLB)

Virtual Page

Page Frame Access

Matching Entry

Page Table Lookup

Translation Lookaside Buffer (TLB)

Page 36: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Access TLB before you access memory.

Address Translation with TLB

36

TLB

PhysicalMemory

VirtualAddress

VirtualAddress

Frame Frame

RaiseException

PhysicalAddress

HitValid

Processor PageTable

Data

Data

Miss Invalid

Offset

Trick: access TLB while you access the cache.

Page 37: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Process isolation• Keep a process from touching anyone else’s memory, or

the kernel’sEfficient interprocess communication

• Shared regions of memory between processesShared code segments

• common libraries used by many different programsProgram initialization

• Start running a program before it is entirely in memoryDynamic memory allocation

• Allocate and initialize stack/heap pages on demand

Address Translation Uses!

37

Page 38: Main Memory: Address Translation - Cornell University · Isolation Don’t wantdistinct process states collided in physical memory (unintended overlap àchaos) Sharing Want option

Program debugging• Data breakpoints when address is accessed

Memory mapped files• Access file data using load/store instructions

Demand-paged virtual memory• Illusion of near-infinite memory, backed by disk or

memory on other machinesCheckpointing/restart

• Transparently save a copy of a process, without stopping the program while the save happens

Distributed shared memory• Illusion of memory that is shared between machines

MORE Address Translation Uses!

38