Memory Management: Overlays and Virtual Memory

Slides:



Advertisements
Similar presentations
Part IV: Memory Management
Advertisements

EECS 470 Virtual Memory Lecture 15. Why Use Virtual Memory? Decouples size of physical memory from programmer visible virtual memory Provides a convenient.
COMP381 by M. Hamdi 1 Virtual Memory. COMP381 by M. Hamdi 2 Virtual Memory: The Problem For example: MIPS64 is a 64-bit architecture allowing an address.
16.317: Microprocessor System Design I
Carnegie Mellon 1 Virtual Memory: Concepts : Introduction to Computer Systems 15 th Lecture, Oct. 14, 2010 Instructors: Randy Bryant and Dave O’Hallaron.
CS 153 Design of Operating Systems Spring 2015
CS 153 Design of Operating Systems Spring 2015
CS 333 Introduction to Operating Systems Class 11 – Virtual Memory (1)
Computer ArchitectureFall 2008 © CS : Computer Architecture Lecture 22 Virtual Memory (1) November 6, 2008 Nael Abu-Ghazaleh.
Memory Management. 2 How to create a process? On Unix systems, executable read by loader Compiler: generates one object file per source file Linker: combines.
Memory Management 2010.
Chapter 3.2 : Virtual Memory
Virtual Memory. Why do we need VM? Program address space: 0 – 2^32 bytes –4GB of space Physical memory available –256MB or so Multiprogramming systems.
CS 333 Introduction to Operating Systems Class 9 - Memory Management
CS 333 Introduction to Operating Systems Class 9 - Memory Management Jonathan Walpole Computer Science Portland State University.
CS 241 Section Week #12 (04/22/10).
Virtual Memory By: Dinouje Fahih. Definition of Virtual Memory Virtual memory is a concept that, allows a computer and its operating system, to use a.
CSE378 Virtual memory.1 Evolution in memory management techniques In early days, single program ran on the whole machine –used all the memory available.
CS 346 – Chapter 8 Main memory –Addressing –Swapping –Allocation and fragmentation –Paging –Segmentation Commitment –Please finish chapter 8.
CS333 Intro to Operating Systems Jonathan Walpole.
Chapter 8 Memory Management Dr. Yingwu Zhu. Outline Background Basic Concepts Memory Allocation.
Computer Architecture Lecture 28 Fasih ur Rehman.
CS 153 Design of Operating Systems Spring 2015 Lecture 17: Paging.
Lecture 19: Virtual Memory
1 Chapter 3.2 : Virtual Memory What is virtual memory? What is virtual memory? Virtual memory management schemes Virtual memory management schemes Paging.
Operating Systems COMP 4850/CISG 5550 Page Tables TLBs Inverted Page Tables Dr. James Money.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming  To allocate scarce memory resources.
Chapter 8 – Main Memory (Pgs ). Overview  Everything to do with memory is complicated by the fact that more than 1 program can be in memory.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
Virtual Memory. Virtual Memory: Topics Why virtual memory? Virtual to physical address translation Page Table Translation Lookaside Buffer (TLB)
Address Translation. Recall from Last Time… Virtual addresses Physical addresses Translation table Data reads or writes (untranslated) Translation tables.
Virtual Memory Lei Li CS147.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming.  To allocate scarce memory.
Virtual Memory 1 1.
1 Some Real Problem  What if a program needs more memory than the machine has? —even if individual programs fit in memory, how can we run multiple programs?
Operating Systems Lecture 14 Segments Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard. Zhiqing Liu School of Software Engineering.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.
Introduction to Virtual Memory and Memory Management
Operating Systems Unit 7: – Virtual Memory organization Operating Systems.
Paging (continued) & Caching CS-3013 A-term Paging (continued) & Caching CS-3013 Operating Systems A-term 2008 (Slides include materials from Modern.
Introduction: Memory Management 2 Ideally programmers want memory that is large fast non volatile Memory hierarchy small amount of fast, expensive memory.
Memory Management. Why memory management? n Processes need to be loaded in memory to execute n Multiprogramming n The task of subdividing the user area.
Memory Management: Overlays and Virtual Memory. Agenda Overview of Virtual Memory –Review material based on Computer Architecture and OS concepts Credits.
Lab4: Virtual Memory CS 3410 : Computer System Organization & Programming Spring 2015.
Carnegie Mellon 1 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Virtual Memory: Concepts Slides adapted from Bryant.
Memory Management. 2 How to create a process? On Unix systems, executable read by loader Compiler: generates one object file per source file Linker: combines.
CDA 5155 Virtual Memory Lecture 27. Memory Hierarchy Cache (SRAM) Main Memory (DRAM) Disk Storage (Magnetic media) CostLatencyAccess.
Chapter 2 Memory and process management
Memory COMPUTER ARCHITECTURE
CSE 120 Principles of Operating
PA1 is out Best by Feb , 10:00 pm Enjoy early
CSE 153 Design of Operating Systems Winter 2018
Lecture 28: Virtual Memory-Address Translation
Virtual Memory: Concepts /18-213/14-513/15-513: Introduction to Computer Systems 17th Lecture, October 23, 2018.
CSCI206 - Computer Organization & Programming
Lecture 14 Virtual Memory and the Alpha Memory Hierarchy
CS399 New Beginnings Jonathan Walpole.
Virtual Memory Hardware
CSE 451: Operating Systems Autumn 2005 Memory Management
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
CSE 451: Operating Systems Autumn 2003 Lecture 9 Memory Management
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
CSE 451: Operating Systems Autumn 2003 Lecture 9 Memory Management
Evolution in memory management techniques
CS703 - Advanced Operating Systems
CSE 153 Design of Operating Systems Winter 2019
Evolution in memory management techniques
Evolution in memory management techniques
Virtual Memory.
Virtual Memory 1 1.
Presentation transcript:

Memory Management: Overlays and Virtual Memory Lecture 14

How Does a Program Start Running? OS (loader) copies a program from permanent storage into RAM ­ on PCs and workstations, the “operating system” copies the program (bits) from disk. RAM 0x3fff 00111101 01101010 11010101 10101010 10101101 CPU’s Program Counter is then set to the starting address of the program and the program begins execution. 0x0000

What if the program is too big? Some machines won't let you run the program Original DOS Why this limitation? RAM 0x3fff 0011100 0010101 1001101 1101011 1011000101101011110101010110 0x0000

Solution: Only Load Part of the Program One option: programmer breaks code into pieces that fit into RAM Pieces, called overlays, are loaded and unloaded by the program Does not require OS help 0x01ff RAM 0xff load one overlay and run until other overlay is needed 0x0100 0x00ff 0x00 0x0000 Program

ARM Linker Supports Overlays Overlay manager loads an overlay segment when it is not in RAM Supports Static and Dynamic Overlays Static overlays One root segment 2 or more memory partitions (1 for the root partition which is always in RAM) Within each partition, any number of overlay segments Only 1 overlay segment can be in a partition at a given time Application writer specifies what is in each partition and segment 2_1 2_2 2_3 2_4 high address 1_1 1_2 1_3 1_4 segments 1_1 .. 1_4 share the same memory area so do segments 2_1 .. 2_4 root segment low address

What Happens if ... A function in one overlay calls a function in another ­ and vice-versa 0x01ff define foo2(){ call foo1(); } define foo1(){ call foo2(); RAM 0xff 0x0100 both segments statically allocated to the same physical partition 0x00ff 0x00 0x0000

Dynamic Overlay Include re-location information with each overlay segment Have overlay manager allocate memory for an overlay segment when it is first loaded Load and unload overlay segments by explicit calls to overlay manager Each overlay segment is given its own name ­ linker links each as if it were in its own partition

Problems with Overlays Difficult for programmer to manage Not general ­ management of resources (RAM) is an operating system issue But many embedded systems do not have the space or power for a “real” OS

Solution: Virtual Memory What is virtual memory? Technique that allows execution of a program that may not completely reside in memory (RAM) Allows the computer to “fake”' a program into believing that its memory space is larger than physical RAM Why is VM important? Cheap ­ no longer have to buy lots of RAM Removes burden of memory resource management from the programmer Other benefits ...

The Memory Pyramid

How Does VM Work ? Two memory “spaces” On program startup Virtual memory space ­ what the program “sees” Physical memory space ­ what the program runs in (size of RAM) On program startup OS copies program into RAM If there is not enough RAM, OS stops copying program and starts it running with only a portion of the program loaded in RAM When the program touches a part of the program not in physical memory (RAM), OS catches the memory abort (called a page fault) and copies that part of the program from disk into RAM In order to copy some of the program from disk to RAM, OS must evict parts of the program already in RAM OS copies the evicted parts of the program back to disk

Example: Virtual and Physical Address Spaces Virtual Address Space Physical Address Space 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C add r1,r2,r3 0x00 0x04 0x08 0x0C add r1,r2,r3 sub r2,r3,r4 sub r2,r3,r4 lw r2, 0x04 lw r2, 0x04 mult r3,r4,r5 mult r3,r4,r5 bne 0x00 add r10,r1,r2 sub r3,r4,r1 sw r5,0x0c

Example (con'td): Need VA­to­PA mappings Virtual Address Space Physical Address Space VA->PA 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C add r1,r2,r3 0x00 0x04 0x08 0x0C add r1,r2,r3 sub r2,r3,r4 sub r2,r3,r4 lw r2, 0x04 lw r2, 0x04 mult r3,r4,r5 mult r3,r4,r5 bne 0x00 add r10,r1,r2 sub r3,r4,r1 sw r5,0x0c

Example (con'td): After handling a page fault Virtual Address Space Physical Address Space VA->PA 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C add r1,r2,r3 0x00 0x04 0x08 0x0C bne 0x00 sub r2,r3,r4 sub r2,r3,r4 lw r2, 0x04 lw r2, 0x04 mult r3,r4,r5 mult r3,r4,r5 bne 0x00 add r10,r1,r2 sub r3,r4,r1 sw r5,0x0c

Example (con'td): After a second page fault Virtual Address Space Physical Address Space VA->PA 0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1C add r1,r2,r3 0x00 0x04 0x08 0x0C bne 0x00 sub r2,r3,r4 add r1,r2,r3 lw r2, 0x04 lw r2, 0x04 mult r3,r4,r5 mult r3,r4,r5 bne 0x00 add r10,r1,r2 sub r3,r4,r1 sw r5,0x0c

Basic VM Algorithm Program asks for virtual address Computer translates virtual address (VA) to physical address (PA) Computer reads PA from RAM, returning it to program 0x00 0x04 0x08 0x0C add r1,r2,r3 sub r2,r3,r4 lw r2, 0x04 mult r3,r4,r5 RAM VA->PA Processor (running program) Instructions (or data) Virtual address

Page Tables Table which holds VA ­> PA translations is called the page table In our current scheme, each word is translated from a virtual address to a physical address How big is the page table? VA->PA RAM 0x00 0x04 0x08 0x0C add r1,r2,r3 Processor (running program) sub r2,r3,r4 Virtual address lw r2, 0x04 mult r3,r4,r5 Instructions (or data)

Real Page Tables Instead of the fine­grained VM where any virtual word can map to any RAM word location, partition memory into chunks called pages Typical page size today is 4 or 8 KBytes This reduces the number of VA­> PA translation entries Only one translation per page For a 4 KByte page, that's one VA­> PA translation for every 1,024 words Within a page, the virtual address == physical address Virtual Page Number Page Offset Physical Page # Translation Virtual Address Physical 11 12 31 24

Virtual Pages & Physical Page Frames Virtual Address Space Physical Address Space 0x7fff 0x6fff 0x5fff 0x4fff 0x3fff 0x2fff 0x1fff 0x0fff 0x3fff 0x2fff 0x1fff 0x0fff 0x0000 physical page frame virtual page 0x000-0xfff = 4KB 0x0000

Page Frames Every address within a virtual page maps to the same location within a physical page frame In other words, bottom log 2(page size in bytes) is not translated

Physical Page Number (PPN) Page Table Entries A real page table entry (PTE) contains a number of fields Physical page number Access control bits (e.g., writeable bit) Status bits (e.g., accessed and dirty bits) MMU control bits (e.g., cacheable and bufferable bits) Why is the virtual page number not in the page table entry? 31 12 11 6 5 3 2 Physical Page Number (PPN) Access Control Status MMU

Interactions with Instruction/Data Cache Page table entry has bits to determine if region is cacheable vs . uncacheable write­through vs. write­back Why control caching? Some regions, such as for memory­mapped I/O devices, should not be cached. Why? Because cache doesn't know if I/O device register has changed value

Interactions with Write Buffer Page table entry has bits to determine if region Allows write buffer to buffer writes Why would one not want to buffer writes? Possible problems with memory­mapped I/O devices that require a write to complete before subsequent commands (instructions) are issued

Two­level Page Tables Virtual Address page directory page table page 31 22 21 12 11 Virtual Address page directory page table page frame data

ARM MMU Complex VM and protection mechanisms Presents 4 GB address space (why?) Memory granularity: 3 options supported 1MB sections Large pages (64 KBytes) ­ access control within a large page on 16 KBytes Small pages (4 KBytes) ­ access control within a large page on 1 Kbytes Puts processor in Abort Mode when virtual address not mapped or permission check fails Change pointer to page tables (called the translation table base, in ARM jargon) to change virtual address space useful for context switching of processes

Example: Single-Level Page Table 31 12 11 Virtual Address value = x value = y 32 bits page table x page frame 220 entries y 212 entries data 8 bits Size of page table = 220 * 32 bits = 4 Mbytes Size of page = 212 * 8 bits = 4 Kbytes

Single-Level Page Table Assumptions 32-bit virtual addresses 4 Kbyte page size = 212 bytes 32-bit address space How many virtual page numbers? 232 / 212 = 220 = 1,048,576 virtual page numbers = number of entries in the page table If each page table entry occupies 4 bytes, how much memory is needed to store the page table? 220 entries * 4 bytes = 222 bytes = 4 Mbytes

Example: Two­level Page Table 31 22 21 12 11 Virtual Address value = x value = y value = z page directory x 210 entries 210 entries page table y page frame z 212 entries data 32 bits 32 bits Size of page directory = 210 * 32 bits = 4 Kbytes 8 bits Size of page table = 210 * 32 bits = 4 Kbytes Size of page = 212 * 8 bits = 4 Kbytes

Two-Level Page Table Assumptions How much memory is needed? 210 entries in page directory (= max number of page tables) 210 entries in page table 32 bits allocated for each page directory entry 32 bits allocated for each page table entry How much memory is needed? Page table size = 210 entries * 32 bits = 212 bytes = 4 Kbytes Page directory size = 210 entries * 32 bits = 212 bytes = 4 Kbytes

Two-Level Page Table Small (typical) system Large system One page table might be enough Page directory size + Page table size = 8 Kbytes of memory would suffice for virtual memory management How much physical memory could this one page table handle? Number of page tables * Number of page table entries * Page size = 1 * 210 * 212 bytes = 4 Mbytes Large system You might need the maximum number of page tables Max number of page tables * Page table size = 210 directory entries * 212 bytes = 222 bytes = 4 Mbytes of memory would be needed for virtual memory management How much physical memory could these 210 page tables handle? 210 * 210 * 212 bytes = 4 Gbytes

Summary of Lecture How do programs run in memory? Virtual Memory (VM) What happens on “overflows”? Memory Overlays static overlays and dynamic overlays Problems with overlays Virtual Memory (VM) What is VM? How does VM work? Virtual address to physical address mappings Page faults VM Schemes page tables virtual pages and physical page frames page table entries interactions with the rest of the system two-level page tables