Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

23
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware

Transcript of Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

Page 1: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

Operating SystemsECE344

Ashvin GoelECE

University of Toronto

Virtual Memory Hardware

Page 2: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

2

Outline

Introduction to virtual memory

Paging MMU

Page tables

Page 3: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

3

Problems with Simple Memory Mgmt

A simple memory management scheme allocates contiguous physical memory to programs

Problemso Growing a program requires copying entire programo Wastes memory due to internal and external fragmentationo Running a program requires loading entire program in memoryo Maximum program size is limited by memory size

These problems occur because programs are allocated contiguous memory

Page 4: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

4

Non-Contiguous Memory Allocation

Can we use non-contiguous memory for programs?o It is hard to program with non-contiguous memory (why?)o Challenge is to hide non-contiguous memory from programs

Page 5: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

5

Use Memory Management H/W

Insight: Take advantage of MMU h/w to translate CPU virtual addresses to physical memory addresses

Program can use contiguous virtual addresses

Physical memory is allocated non-contiguously

1. Programs use virtual memory

addresses

2. CPU sends these virtual

addresses to MMU

3. MMU translates virtual address to physical memory

address

4. MMU accesses memory using physical

addresses

Page 6: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

6

P1

Example: MMU with 2 Base Registers

Limit 1

Base 1

Limit 2

Base 2

P1

Consider an MMU with two base register and one limit registers

Glossaryo V = virtual addresso P = physical addresso B1 = base 1, L1 = limit 1o B2 = base 2, L2 = limit 2

Virtual address spaceo 0 <= V < (L1 + L2)

Address translationo P = V + B1, when 0 <= V < L1o P = (V – L1) + B2, when L1 <= V < (L1 + L2)

Page 7: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

7

Paging MMU

Problems with two base-register MMUo Limited: supports only two physical memory regionso Slow: with N registers, address translation needs O(N) time

A paging MMU supports a very large number of non-contiguous physical memory regions efficientlyo Virtual address space consists of contiguous, fixed size

chunks called pages Page size = 2n bytes, fixed by paging MMU, e.g., 4KB

o Paging MMU maps each page to a physical memory region called a frame

frame size = page sizeo To understand how paging works, we need to understand the

format of virtual and physical addresses

Page 8: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

8

Virtual and Physical Address

Virtual address = (page number, offset)o On 32 bit machine, virtual address space size = 232 bytes = 4GB

page size = 212 = 4KB, nr. of pages = 220

Physical address = (frame number, offset)o Say, physical memory size = 230 bytes = 1GB

frame size = 212 = 4KB, nr. of frames = 218

bit 0bit 3120 bits 12 bits

offsetpage number

bit 0bit 2918 bits 12 bits

offsetframe number

Page 9: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

9

Paging MMU Operation

On each memory reference:o CPU produces vaddr = (page nr, offset)o Memory sees paddr = (frame nr, offset)

o MMU maps vaddr to paddr, i.e., f(page) = frame Note that offset remains the same

MMU

Page 10: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

Paging Example

10

Virtual address space

Page 1Page 0

Unallocated pages

Page 2^20 - 1

Physical addressspace

Frame 1Frame 0

Unused frame

frame for anotheraddress space

Frame 2^18 - 1

Stack

Text

Data

Heap

MMU

MMU translates virtual to

physical address

Page 11: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

11

Benefits of Paging

Contiguous Memory Allocation Paging

Growing a program requires copying entire program

Growing a program requires allocating a page at a time

Wastes memory due to internal and external fragmentation

No external fragmentation, internal fragmentation is ½ page per region

Running a program requires loading entire program in memory

As program runs, pages can be loaded in memory (we will see this later)

Maximum program size is limited by memory size

Maximum program size is limited by disk size (we will see this later)

Page 12: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

12

Page Tables

Paging MMU maintains its mapping information in a page table

A page table contains page table entries (PTE) that map a page to a frame Typically, each entry is one word

E.g, 32 bits on 32 bit architecture, 64 bits on 64 bit architecture

Each entry contains frame number and various bits such as valid/invalid, writeable, dirty, etc.

Valid bit says whether mapping is valid or not We will discuss how these bits are used later

Page 13: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

13

Linear Page Table

offsetpage number

12 bits20 bits

Single-levelpage table

frames in memory

32 bit virtual address

page_table(PTR)

0121331frame number unused D R W V

PTE

C

0x1005

0x1005

0xe

0xe000

0

Example architectureo Virtual address size: 32 bitso Page size: 212 B (4KB)

Example translationo vaddr = 0x01005a6fo offset = vaddr & 0xfff = 0xa6fo page = vaddr >> 12 = 0x1005o check page_table[page].valido fr = page_table[page].addr = 0xeo paddr = (fr << 12) | offset = 0xea6f

0xa6f

v

Page 14: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

14

Storing Page Table

Page table is large and stored in memory

Problemo MMU needs to access page table on every instructiono Each memory access requires two memory accesses

First one for page table entry in physical memory Second one for the physical memory location being accessed

Solutiono Cache PTE in MMU, handle misses from physical memoryo Cache is called translation lookaside buffer (TLB)

Discussed later

Page 15: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

15

Accessing Page Tables

MMU needs to know the location of page table in physical memory

Paging MMU has a page table register (PTR) that stores the location of the start of the page tableo Similar to base register

OS associates a separate page table for each processo Thus each process has its own address space

Implementing context switcho context switch = thread switch + address space switcho OS implements address space switching by changing PTR to

the start of the appropriate page table for each process

Page 16: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

16

Page Table Size

Page table sizeo #PTE = #pages =

= virtual address space size / page size = 232 / 212 = 220

o Typically, each PTE is word sized (4B)o Page table size = #PTE * PTE size = 220 * 4B = 4 MBo Each process needs 4MB for its own page table!

Effect of page size on performanceo Smaller size => lower internal fragmentationo Larger size => fewer PTE

memory overhead better performance (we will see this later)

Page 17: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

17

Reducing Page Table Size

Consider a small process with one page of text, data and stacko It requires 3 pages of memory (12KB)o It requires 4MB of memory for page tables!

With the linear page table design, we need a PTE even when the corresponding page is not in useo Notice that most of the page table entries has invalid

3 pages are valid, (220 – 3) entries are invalid i.e., the page table array is sparely populated

o Need a more space efficient data structure that avoids storing invalid entries

Use a tree data structure, instead of an array A parent does not need to store a child sub-tree if all elements of

the sub-tree are invalid

Page 18: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

18

Multi-Level Page Table

frames in memory

Top-level page table

Second level page tables

32 bit virtual address

12 bits10 bits 10 bits

offsetPT1 PT24

0xa

PTR4

5

5

0xa000

0xe

0

0xa6f

v

0xe000

Page 19: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

19

Example Translation

vaddr = 0x1005a6f

offset = vaddr & 0xfff = 0xa6f get 12 low bits of addr

pg2 = (vaddr >> 12) & 0x3ff = 0x5

get next 10 bits of addr

pg1 = vaddr >> (12+10) = 0x4 get top 10 bits of addr

pt_1 = page_table_register base of top page table

pt_2 = pt_1[pg1].frame << 12 = 0xa000

look up top page table to find second level page table. pt_2 is stored page aligned

fr = pt_2[pg2].frame = 0xe look up second page table

paddr = (fr << 12) | offset = 0xea6f

generate physical address

Page 20: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

20

Comparing Single & Two-Level Page Table

Is address translation faster with a single-level page table or a two-level page table?

How does two-level page table save space compared to the single-level page table?o Not all pages within an address space are allocatedo E.g., consider the region between heap and stack

This region does not need any frames So there is no need to maintain mapping information

o When a 2nd level page table is entirely invalid, it is not allocated, and corresponding entry in top-level page table is marked invalid

Page 21: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

21

Summary

Contiguous memory allocation makes it hard to grow programs and causes external fragmentation

It is easier to allocate memory non-contiguously, but it is easier to program a contiguous address space

We can solve this dilemma by using MMU hardware to virtualize the address space of a processo Process sees contiguous (virtual) memory addresseso MMU translates these addresses to physical memory

addresses that may be non-contiguous

Page 22: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

22

Summary

A paging MMU breaks the virtual address space of a process into fixed size pages and maps each page to a physical memory frameo Enables growing programs at page granularityo No external fragmentation

Page mapping information is stored in memoryo Single level page table stores mappings in an array

Very inefficient because address space is generally sparseo Multi-level page table stores mappings in a tree

Reduces memory overhead significantly, but Requires more time for looking up physical address

Page 23: Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.

23

Think Time

What is the purpose of a page table?

Where is the page table located?

How many address bits are used for page offset when page size is 2KB?

How does a processor locate page tables?

Discuss advantages and disadvantages of linear and multi-level page tables