CSE 153 Design of Operating Systems

Similar documents
Carnegie Mellon. Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition

Computer Systems. Virtual Memory. Han, Hwansoo

Processes and Virtual Memory Concepts

Virtual Memory: Concepts

Virtual Memory: Concepts

Carnegie Mellon. 16 th Lecture, Mar. 20, Instructors: Todd C. Mowry & Anthony Rowe

14 May 2012 Virtual Memory. Definition: A process is an instance of a running program

VM as a cache for disk

198:231 Intro to Computer Organization. 198:231 Introduction to Computer Organization Lecture 14

This lecture. Virtual Memory. Virtual memory (VM) CS Instructor: Sanjeev Se(a

Virtual Memory: Concepts

Lecture 19: Virtual Memory: Concepts

Understanding the Design of Virtual Memory. Zhiqiang Lin

Systems Programming and Computer Architecture ( ) Timothy Roscoe

Virtual Memory. CS61, Lecture 15. Prof. Stephen Chong October 20, 2011

Virtual Memory. Alan L. Cox Some slides adapted from CMU slides

VIRTUAL MEMORY: CONCEPTS

Virtual Memory II CSE 351 Spring

Foundations of Computer Systems

Virtual Memory II. CSE 351 Autumn Instructor: Justin Hsia

Roadmap. Java: Assembly language: OS: Machine code: Computer system:

Virtual Memory II. CSE 351 Autumn Instructor: Justin Hsia

University of Washington Virtual memory (VM)

CS 153 Design of Operating Systems

Virtual Memory. Computer Systems Principles

Virtual Memory Nov 9, 2009"

Virtual Memory. Motivations for VM Address translation Accelerating translation with TLBs

CSE 351. Virtual Memory

Virtual Memory Oct. 29, 2002

Virtual Memory. Samira Khan Apr 27, 2017

CISC 360. Virtual Memory Dec. 4, 2008

Motivations for Virtual Memory Virtual Memory Oct. 29, Why VM Works? Motivation #1: DRAM a Cache for Disk

virtual memory. March 23, Levels in Memory Hierarchy. DRAM vs. SRAM as a Cache. Page 1. Motivation #1: DRAM a Cache for Disk

Virtual Memory I. CSE 351 Spring Instructor: Ruth Anderson

Virtual Memory. Physical Addressing. Problem 2: Capacity. Problem 1: Memory Management 11/20/15

A Few Problems with Physical Addressing. Virtual Memory Process Abstraction, Part 2: Private Address Space

virtual memory Page 1 CSE 361S Disk Disk

CS 153 Design of Operating Systems Winter 2016

@2010 Badri Computer Architecture Assembly II. Virtual Memory. Topics (Chapter 9) Motivations for VM Address translation

CSE 120 Principles of Operating Systems

Random-Access Memory (RAM) Systemprogrammering 2007 Föreläsning 4 Virtual Memory. Locality. The CPU-Memory Gap. Topics

Random-Access Memory (RAM) Systemprogrammering 2009 Föreläsning 4 Virtual Memory. Locality. The CPU-Memory Gap. Topics! The memory hierarchy

CSE 120 Principles of Operating Systems Spring 2017

Virtual Memory: Systems

Virtual Memory I. CSE 351 Winter Instructor: Mark Wyse

CS 318 Principles of Operating Systems

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2018 Lecture 24

P6/Linux Memory System Nov 11, 2009"

Memory System Case Studies Oct. 13, 2008

Virtual Memory: Systems

Pentium/Linux Memory System March 17, 2005

Virtual Memory. Spring Instructors: Aykut and Erkut Erdem

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2015 Lecture 23

CS24: INTRODUCTION TO COMPUTING SYSTEMS. Spring 2018 Lecture 23

18-447: Computer Architecture Lecture 16: Virtual Memory

Memory Management! How the hardware and OS give application pgms:" The illusion of a large contiguous address space" Protection against each other"

PROCESS VIRTUAL MEMORY PART 2. CS124 Operating Systems Winter , Lecture 19

University*of*Washington*

Paging. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Memory Management! Goals of this Lecture!

Paging. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Memory Hierarchy Requirements. Three Advantages of Virtual Memory

Memory Management. Goals of this Lecture. Motivation for Memory Hierarchy

Memory Management. Disclaimer: some slides are adopted from book authors slides with permission 1

Memory Management. Disclaimer: some slides are adopted from book authors slides with permission 1

CS162 Operating Systems and Systems Programming Lecture 10 Caches and TLBs"

Opera&ng Systems ECE344

CS 153 Design of Operating Systems

CS 61C: Great Ideas in Computer Architecture. Lecture 23: Virtual Memory

Another View of the Memory Hierarchy. Lecture #25 Virtual Memory I Memory Hierarchy Requirements. Memory Hierarchy Requirements

CS 61C: Great Ideas in Computer Architecture. Lecture 23: Virtual Memory. Bernhard Boser & Randy Katz

Virtual Memory. Daniel Sanchez Computer Science & Artificial Intelligence Lab M.I.T. November 15, MIT Fall 2018 L20-1

CS 261 Fall Mike Lam, Professor. Virtual Memory

Virtual Memory: From Address Translation to Demand Paging

CS252 S05. Main memory management. Memory hardware. The scale of things. Memory hardware (cont.) Bottleneck

Chapter 8. Virtual Memory

Memory Allocation. Copyright : University of Illinois CS 241 Staff 1

Lecture 12: Demand Paging

Paging! 2/22! Anthony D. Joseph and Ion Stoica CS162 UCB Fall 2012! " (0xE0)" " " " (0x70)" " (0x50)"

Virtual Memory. Daniel Sanchez Computer Science & Artificial Intelligence Lab M.I.T. April 12, 2018 L16-1

Recap: Memory Management

Recall: Address Space Map. 13: Memory Management. Let s be reasonable. Processes Address Space. Send it to disk. Freeing up System Memory

Virtual Memory. CS 3410 Computer System Organization & Programming

CSE 560 Computer Systems Architecture

Page 1. Review: Address Segmentation " Review: Address Segmentation " Review: Address Segmentation "

Memory Management. Disclaimer: some slides are adopted from book authors slides with permission 1

The Virtual Memory Abstraction. Memory Management. Address spaces: Physical and Virtual. Address Translation

John Wawrzynek & Nick Weaver

CSE 451: Operating Systems Winter Page Table Management, TLBs and Other Pragmatics. Gary Kimura

Intel P The course that gives CMU its Zip! P6/Linux Memory System November 1, P6 memory system. Review of abbreviations

10/7/13! Anthony D. Joseph and John Canny CS162 UCB Fall 2013! " (0xE0)" " " " (0x70)" " (0x50)"

Memory Hierarchy. Mehran Rezaei

P6 memory system P6/Linux Memory System October 31, Overview of P6 address translation. Review of abbreviations. Topics. Symbols: ...

Virtual Memory. Patterson & Hennessey Chapter 5 ELEC 5200/6200 1

EECS 470. Lecture 16 Virtual Memory. Fall 2018 Jon Beaumont

Intel P6 (Bob Colwell s Chip, CMU Alumni) The course that gives CMU its Zip! Memory System Case Studies November 7, 2007.

Memory Management Topics. CS 537 Lecture 11 Memory. Virtualizing Resources

Address Translation. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Lecture 21: Virtual Memory. Spring 2018 Jason Tang

Virtual Memory. Virtual Memory

Transcription:

CSE 53 Design of Operating Systems Winter 28 Lecture 6: Paging/Virtual Memory () Some slides modified from originals by Dave O hallaron

Today Address spaces VM as a tool for caching VM as a tool for memory management VM as a tool for memory protection Address translation

A System Using Physical Addressing CPU Physical address (PA) 4 Main memory : : 2: 3: 4: 5: 6: 7: 8:... M-: Data word Used in simple systems like embedded microcontrollers in devices like cars, elevators, and digital picture frames

A System Using Virtual Addressing CPU Chip CPU Virtual address (VA) 4 MMU Physical address (PA) 4 Main memory : : 2: 3: 4: 5: 6: 7: 8:... M-: Data word Used in all modern servers, desktops, and laptops One of the great ideas in computer science

Address Spaces Linear address space: Ordered set of contiguous non-negative integer addresses: {,, 2, 3 } Virtual address space: Set of N = 2 n virtual addresses {,, 2, 3,, N-} Physical address space: Set of M = 2 m physical addresses {,, 2, 3,, M-} Clean distinction between data (bytes) and their attributes (addresses) Each object can now have multiple addresses Every byte in main memory: one physical address, one (or more) virtual addresses

Why Virtual Memory (VM)? Virtual memory is page with a new ingredient Allow pages to be on disk» In a special partition (or file) called swap Motivation? Uses main memory efficiently Use DRAM as a cache for the parts of a virtual address space Simplifies memory management Each process gets the same uniform linear address space With VM, this can be big!

Today Address spaces VM as a tool for caching VM as a tool for memory management VM as a tool for memory protection Address translation

VM as a Tool for Caching Virtual memory is an array of N contiguous bytes stored on disk. The contents of the array on disk are cached in physical memory (DRAM cache) These cache blocks are called pages (size is P = 2 p bytes) VP VP n-p - Virtual memory Unallocated Cached Uncached Unallocated Cached Uncached Cached Uncached N- Virtual pages (VPs) stored on disk Physical memory M- Empty Empty Empty PP PP PP 2 m-p - Physical pages (PPs) cached in DRAM

DRAM Cache Organization DRAM cache organization driven by the enormous miss penalty DRAM is about x slower than SRAM Disk is about,x slower than DRAM Consequences Large page (block) size: typically 4-8 KB, sometimes 4 MB Fully associative» Any VP can be placed in any PP» Requires a large mapping function different from CPU caches Highly sophisticated, expensive replacement algorithms» Too complicated and open-ended to be implemented in hardware Write-back rather than write-through

Page Tables A page table is an array of page table entries (PTEs) that maps virtual pages to physical pages. Per-process kernel data structure in DRAM PTE PTE 7 Valid Physical page number or disk address null null Memory resident page table (DRAM) Physical memory (DRAM) VP VP 7 VP 4 Virtual memory (disk) VP VP 3 VP 4 VP 6 VP 7 PP PP 3

Page Hit Page hit: reference to VM word that is in physical memory (DRAM cache hit) Virtual address PTE PTE 7 Valid Physical page number or disk address null null Memory resident page table (DRAM) Physical memory (DRAM) VP VP 7 VP 4 Virtual memory (disk) VP VP 3 VP 4 VP 6 VP 7 PP PP 3

Page Fault Page fault: reference to VM word that is not in physical memory (DRAM cache miss) Virtual address PTE PTE 7 Valid Physical page number or disk address null null Memory resident page table (DRAM) Physical memory (DRAM) VP VP 7 VP 4 Virtual memory (disk) VP VP 3 VP 4 PP PP 3 VP 6 VP 7

Handling Page Fault Page miss causes page fault (an exception) Virtual address PTE Valid Physical page number or disk address null Physical memory (DRAM) VP VP 7 VP 4 PP PP 3 null Virtual memory (disk) PTE 7 VP Memory resident page table (DRAM) VP 3 VP 4 VP 6 VP 7

Handling Page Fault Page miss causes page fault (an exception) Page fault handler selects a victim to be evicted (here VP 4) Virtual address PTE Valid Physical page number or disk address null Physical memory (DRAM) VP VP 7 VP 4 PP PP 3 null Virtual memory (disk) PTE 7 VP Memory resident page table (DRAM) VP 3 VP 4 VP 6 VP 7

Handling Page Fault Page miss causes page fault (an exception) Page fault handler selects a victim to be evicted (here VP 4) Virtual address Valid PTE Physical page number or disk address null Physical memory (DRAM) VP VP 7 VP 3 PP PP 3 null Virtual memory (disk) PTE 7 VP Memory resident page table (DRAM) VP 3 VP 4 VP 6 VP 7

Handling Page Fault Page miss causes page fault (an exception) Page fault handler selects a victim to be evicted (here VP 4) Offending instruction is restarted: page hit! Virtual address Valid PTE Physical page number or disk address null Physical memory (DRAM) VP VP 7 VP 3 PP PP 3 null Virtual memory (disk) PTE 7 VP Memory resident page table (DRAM) VP 3 VP 4 VP 6 VP 7

Locality to the Rescue! Virtual memory works because of locality At any point in time, programs tend to access a set of active virtual pages called the working set Programs with better temporal locality will have smaller working sets If (working set size < main memory size) Good performance for one process after compulsory misses If ( SUM(working set sizes) > main memory size ) Thrashing: Performance meltdown where pages are swapped (copied) in and out continuously

Today Address spaces VM as a tool for caching VM as a tool for memory management VM as a tool for memory protection Address translation

VM as a Tool for Memory Management Key idea: each process has its own virtual address space It can view memory as a simple linear array Mapping function scatters addresses through physical memory» Well chosen mappings simplify memory allocation and management Virtual Address Space for Process : VP... Address translation PP 2 Physical Address Space (DRAM) N- PP 6 (e.g., read-only library code) Virtual Address Space for Process 2: VP... PP 8... N- M-

VM as a Tool for Memory Management Memory allocation Each virtual page can be mapped to any physical page A virtual page can be stored in different physical pages at different times Sharing code and data among processes Map virtual pages to the same physical page (here: PP 6) Virtual Address Space for Process : VP... Address translation PP 2 Physical Address Space (DRAM) N- PP 6 (e.g., read-only library code) Virtual Address Space for Process 2: VP... PP 8... N- M-

Sharing Can map shared memory at same or different virtual addresses in each process address space Different:» th virtual page in P and 7 th virtual page in P2 correspond to the 2 nd physical page» Flexible (no address space conflicts), but pointers inside the shared memory segment are invalid Same:» 2 nd physical page corresponds to the th virtual page in both P and P2» Less flexible, but shared pointers are valid

Copy on Write OSes spend a lot of time copying data System call arguments between user/kernel space Entire address spaces to implement fork() Use Copy on Write (CoW) to defer large copies as long as possible, hoping to avoid them altogether Instead of copying pages, create shared mappings of parent pages in child virtual address space Shared pages are protected as read-only in parent and child» Reads happen as usual» Writes generate a protection fault, trap to OS, copy page, change page mapping in client page table, restart write instruction How does this help fork()?

Execution of fork() Parent process s page table Page Page 2 Physical Memory Page Page 2 Child process s page table

fork() with Copy on Write Parent process s page table Page Page 2 When either process modifies Page, page fault handler allocates new page and updates PTE in child process Physical Memory Protection bits set to prevent either process from writing to any page Page Page 2 Child process s page table

Simplifying Linking and Loading Linking Each program has similar virtual address space Code, stack, and shared libraries always start at the same address Loading execve() allocates virtual pages for.text and.data sections = creates PTEs marked as invalid The.text and.data sections are copied, page by page, on demand by the virtual memory system xc x4 x848 Kernel virtual memory User stack (created at runtime) Memory-mapped region for shared libraries Run-time heap (created by malloc) Read/write segment (.data,.bss) Read-only segment (.init,.text,.rodata) Unused Memory invisible to user code %esp (stack pointer) brk Loaded from the executable file

Today Address spaces VM as a tool for caching VM as a tool for memory management VM as a tool for memory protection Address translation

VM as a Tool for Memory Protection Extend PTEs with permission bits Page fault handler checks these before remapping If violated, send process SIGSEGV (segmentation fault) Physical Process i: SUP READ WRITE Address Address Space Process j: VP : VP : : VP : VP : : No No Yes SUP No Yes No Yes Yes Yes No Yes Yes READ WRITE Yes Yes Yes No Yes Yes PP 6 PP 4 PP 2 Address PP 9 PP 6 PP PP 2 PP 4 PP 6 PP 8 PP 9 PP

Today Address spaces VM as a tool for caching VM as a tool for memory management VM as a tool for memory protection Address translation

VM Address Translation Virtual Address Space V = {,,, N } Physical Address Space P = {,,, M } Address Translation MAP: V P U { } For virtual address a:» MAP(a) = a if data at virtual address a is at physical address a in P» MAP(a) = if data at virtual address a is not in physical memory Either invalid or stored on disk

Summary of Address Translation Symbols Basic Parameters N = 2 n : Number of addresses in virtual address space M = 2 m : Number of addresses in physical address space P = 2 p : Page size (bytes) Components of the virtual address (VA) TLBI: TLB index TLBT: TLB tag VPO: Virtual page offset VPN: Virtual page number Components of the physical address (PA) PPO: Physical page offset (same as VPO) PPN: Physical page number CO: Byte offset within cache line CI: Cache index CT: Cache tag

Address Translation With a Page Table Virtual address Page table base register (PTBR) n- Virtual page number (VPN) p p- Virtual page offset (VPO) Page table address for process Page table Valid Physical page number (PPN) Valid bit = : page not in memory (page fault) m- p p- Physical page number (PPN) Physical page offset (PPO) Physical address

Address Translation: Page Hit CPU Chip CPU VA MMU 2 PTEA PTE 3 PA Cache/ Memory 4 Data 5 ) Processor sends virtual address to MMU 2-3) MMU fetches PTE from page table in memory 4) MMU sends physical address to cache/memory 5) Cache/memory sends data word to processor

Address Translation: Page Fault Exception 4 Page fault handler CPU Chip CPU VA 7 MMU 2 PTEA PTE 3 Cache/ Memory Victim page 5 New page Disk 6 ) Processor sends virtual address to MMU 2-3) MMU fetches PTE from page table in memory 4) Valid bit is zero, so MMU triggers page fault exception 5) Handler identifies victim (and, if dirty, pages it out to disk) 6) Handler pages in new page and updates PTE in memory 7) Handler returns to original process, restarting faulting instruction

Integrating VM and Cache PTE CPU Chip CPU VA MMU PTEA PA PTEA hit PTEA miss PA miss PTE PTEA PA Memory PA hit Data Data L cache VA: virtual address, PA: physical address, PTE: page table entry, PTEA = PTE address

Elephant(s) in the room Problem : Translation is slow! Many memory accesses for each memory access Caches are useless! Problem 2: Page table can be gigantic! We need one for each process All your memory are belong to us!