Lecture 7 Memory Management. Virtual Memory Approaches Time Sharing: one process uses RAM at a time Static Relocation: statically rewrite code before.

Slides:



Advertisements
Similar presentations
Memory.
Advertisements

1 CMPT 300 Introduction to Operating Systems Virtual Memory Sample Questions.
4/14/2017 Discussed Earlier segmentation - the process address space is divided into logical pieces called segments. The following are the example of types.
Chapter 19 Translation Lookaside Buffer Chien-Chung Shen CIS, UD
CS 5600 Computer Systems Lecture 7: Virtual Memory.
Lecture 8 Memory Management. Paging Too slow -> TLB Too big -> multi-level page table What if all that stuff does not fit into memory?
COMP 3221: Microprocessors and Embedded Systems Lectures 27: Virtual Memory - III Lecturer: Hui Wu Session 2, 2005 Modified.
Kevin Walsh CS 3410, Spring 2010 Computer Science Cornell University Virtual Memory 2 P & H Chapter
CS 153 Design of Operating Systems Spring 2015
Virtual Memory & Address Translation Vivek Pai Princeton University.
Virtual Memory Adapted from lecture notes of Dr. Patterson and Dr. Kubiatowicz of UC Berkeley and Rabi Mahapatra & Hank Walker.
Memory Management and Paging CSCI 3753 Operating Systems Spring 2005 Prof. Rick Han.
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.
Chapter 3.2 : Virtual Memory
©UCB CS 162 Ch 7: Virtual Memory LECTURE 13 Instructor: L.N. Bhuyan
Memory Management CSE451 Andrew Whitaker. Big Picture Up till now, we’ve focused on how multiple programs share the CPU Now: how do multiple programs.
Chapter 8 Memory Management Dr. Yingwu Zhu. Outline Background Basic Concepts Memory Allocation.
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.
Lecture Topics: 11/17 Page tables TLBs Virtual memory flat page tables
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.
Chapter 18 Paging Chien-Chung Shen CIS, UD
PA0 due 60 hours. Lecture 4 Memory Management OSTEP Virtualization CPU: illusion of private CPU RAM: illusion of private memory Concurrency Persistence.
Computer Structure 2012 – VM 1 Computer Structure X86 Virtual Memory and TLB Franck Sala Slides from Lihu and Adi’s Lecture.
COS 318: Operating Systems Virtual Memory and Its Address Translations.
Address Translation. Recall from Last Time… Virtual addresses Physical addresses Translation table Data reads or writes (untranslated) Translation tables.
1 Memory Management. 2 Fixed Partitions Legend Free Space 0k 4k 16k 64k 128k Internal fragmentation (cannot be reallocated) Divide memory into n (possible.
Chapter 21 Swapping: Mechanisms Chien-Chung Shen CIS, UD
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Virtual Memory Hardware.
Review °Apply Principle of Locality Recursively °Manage memory to disk? Treat as cache Included protection as bonus, now critical Use Page Table of mappings.
PA1 due in one week TA office hour is 1-3 PM The grade would be available before that.
Lecture 7 TLB. Virtual Memory Approaches Time Sharing Static Relocation Base Base+Bounds Segmentation Paging.
Lab4: Virtual Memory CS 3410 : Computer System Organization & Programming Spring 2015.
Address Translation Andy Wang Operating Systems COP 4610 / CGS 5765.
Address Translation Mark Stanovich Operating Systems COP 4610.
Memory Management Continued Questions answered in this lecture: What is paging? How can segmentation and paging be combined? How can one speed up address.
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.
CS203 – Advanced Computer Architecture Virtual Memory.
W4118 Operating Systems Instructor: Junfeng Yang.
Chapter 18 Paging Chien-Chung Shen CIS/UD
Chapter 21 Swapping: Mechanisms Chien-Chung Shen CIS/UD
Chapter 20 Smaller Tables Chien-Chung Shen CIS, UD
Chapter 19 Translation Lookaside Buffer
CS161 – Design and Architecture of Computer
Memory: Page Table Structure
Paging Review Page tables store translations from virtual pages to physical frames Issues: Speed - TLBs Size – Multi-level page tables.
Review: Memory Virtualization
Virtualization Virtualize hardware resources through abstraction CPU
CS161 – Design and Architecture of Computer
CSE 120 Principles of Operating
Paging COMP 755.
Christo Wilson Lecture 7: Virtual Memory
143A: Principles of Operating Systems Lecture 6: Address translation (Paging) Anton Burtsev October, 2017.
PA1 is out Best by Feb , 10:00 pm Enjoy early
Paging Review: Virtual address spaces are broken into pages
CSCI206 - Computer Organization & Programming
Lecture 6 Memory Management
Page that info back into your memory!
PA0 is due in 12 hours PA1 will be out in 12 hours
CS399 New Beginnings Jonathan Walpole.
Virtual Memory Hardware
Practical Session 9, Memory
Christo Wilson Lecture 7: Virtual Memory
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
CSE451 Virtual Memory Paging Autumn 2002
CSE 451: Operating Systems Autumn 2003 Lecture 10 Paging & TLBs
Paging and Segmentation
Chapter 8: Main Memory CSS503 Systems Programming
CS 444/544 Operating Systems II Virtual Memory Translation
Presentation transcript:

Lecture 7 Memory Management

Virtual Memory Approaches Time Sharing: one process uses RAM at a time Static Relocation: statically rewrite code before run Base: add a base to virtual address to get physical Base+Bounds: also check physical is in range Segmentation: many base+bounds pairs Paging: divide mem into small, fix-sized page Too slow – TLB Too big – smaller tables

1 VPN = (VirtualAddress & VPN_MASK) >> SHIFT 2 (Success, TlbEntry) = TLB_Lookup(VPN) 3 if (Success == True) // TLB Hit 4 if (CanAccess(TlbEntry.ProtectBits) == True) 5 Offset = VirtualAddress & OFFSET_MASK 6 PhysAddr = (TlbEntry.PFN << SHIFT) | Offset 7 AccessMemory(PhysAddr) 8 else 9 RaiseException(PROTECTION_FAULT) 10 else // TLB Miss 11 PTEAddr = PTBR + (VPN * sizeof(PTE)) 12 PTE = AccessMemory(PTEAddr) 13 if (PTE.Valid == False) 14 RaiseException(SEGMENTATION_FAULT) 15 else if (CanAccess(PTE.ProtectBits) == False) 16 RaiseException(PROTECTION_FAULT) 17 else 18 TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits) 19 RetryInstruction()

1 VPN = (VirtualAddress & VPN_MASK) >> SHIFT 2 (Success, TlbEntry) = TLB_Lookup(VPN) 3 if (Success == True) // TLB Hit 4 if (CanAccess(TlbEntry.ProtectBits) == True) 5 Offset = VirtualAddress & OFFSET_MASK 6 PhysAddr = (TlbEntry.PFN << SHIFT) | Offset 7 AccessMemory(PhysAddr) 8 else 9 RaiseException(PROTECTION_FAULT) 10 else // TLB Miss 11 RaiseException(TLB_MISS)

Context Switches What happens if a process uses the cached TLB entries from another process? Solutions? flush TLB on each switch remember which entries are for each process Address Space Identifier

Tag each TLB entry with an 8-bit ASID How many ASIDs to we get? What if there are more PIDs than ASIDs? 3 P1 (ASID 11) P2 (ASID 12) validVPNPFNASID ? 114? 103?

How Many Physical Accesses Assume 256-byte pages, 16-bit addresses. Assume ASID of current process is 211 0xAA10: movl 0x1111, %edi 0xBB13: addl $0x3, %edi 0x0519: movl %edi, 0xFF10 validVPNPFNASIDProt 10xBB0x91211? 10xFF0x23211? 10x050x91112? 00x050x12211?

PTE Size Phys addr space contains 1024 pages. 7 bits needed for extras (prot, valid, etc.) Phys addrs 16-bits, pages are 32 bytes, 8 bits needed for extras Phys addr space is 4 GB, pages are 4 KB, 6 bits needed for extras

Page Table Size (a) PTE’s are 3 bytes, and there are 32 possible virtual page numbers (b) PTE’s are 3 bytes, virtual addrs are 24 bits, and pages are 16 bytes (c) PTE’s are 4 bytes, virtual addrs are 32 bits, and pages are 4 KB (d) PTE’s are 4 bytes, virtual addrs are 64 bits, and pages are 4 KB (e) assume each PTE is 10 bits. We cut the size of pages in half, keeping everything else fixed, including size of virt/phys addresses. By what factor does the PT increase in size?

Page Size (a) Goal PT size is 512 bytes. PTE’s are 4 bytes. Virtual addrs are 16 bits (b) Goal PT size is 1 KB. PTE’s are 4 bytes. Virtual addrs are 16 bits (c) Goal PT size is 4 KB. PTE’s are 4 bytes. Virtual addrs are 32 bits

Now let’s solve the too big problem

Change Sizes Make virtual address space smaller Make pages bigger Why are 4 MB pages bad? Internal fragmentation.

Abandon Simple Linear Page Tables Use more complex PTs, instead of just a big array Look at the problem more closely..

Many invalid PT entries There is a big “hole” in our page table Invalid entries are clustered. How did we fix holes in virtual address space? Segmentation Paging

Segmentation/Paging Hybrid Idea: use different page tables for heap, stack, etc Each PT can have a different size Each PT has a base/bounds (where?) Virtual address Before: VPN(PT_Index) + OFFSET Now: SEG + PT_Index+ OFFSET

Segment 00: code Segment 01: heap (a) 0x12FFF => (b) 0x10FFF => (c) 0x01ABC => (d) 0x11111 => Stack? External fragmentation? PFNvalidProt 0x101r-x 0x151r-x 0x121r-x … PFNvalidProt 0x221rw- 0x021rw- 0x041rw- … 18-bit addresses. 2-bit segment index 4-bit VPN

Multi-Level Page Tables Idea: break PT itself into pages A page directory refers to pieces only have pieces with >0 valid entries Used by x86 Virtual address Basic paging: VPN(PT_Index) + OFFSET Segmentation/Paging: SEG + PT_Index + OFFSET Multi-level page tables: PD_Index + PT_Index + OFFSET

16KB address space 64-byte pages 4-byte PTE

>2 Levels Problem: page directories may not fit In a page Solution: split page directories into pieces. Use another page dir to refer to the page dir pieces. Virtual address Basic paging: VPN(PT_Index) + OFFSET Segmentation/Paging: SEG + PT_Index + OFFSET Multi-level page tables: PD_Index0 + …1 + PT_Index + OFFSET

How many levels do we need? 30-bit virtual address space, 512-byte pages, 4-byte PTE How large is the virtual addr space, assuming 4-KB pages and 4-byte entries with N levels? (PT can now no longer require more than 1 contiguous page for bookkeeping) (a) N = 1 (b) N = 2 (c) N = 3

What about TLBs? Lookups in multiple levels more expensive. How much does a miss cost? Time/Space tradeoffs

10 else // TLB Miss 11 // first, get page directory entry 12 PDIndex = (VPN & PD_MASK) >> PD_SHIFT 13 PDEAddr = PDBR + (PDIndex* sizeof(PDE)) 14 PDE = AccessMemory(PDEAddr) 15 if (PDE.Valid == False) 16 RaiseException(SEGMENTATION_FAULT) 17 else 18 // PDE is valid: now fetch PTE from page table 19 PTIndex = (VPN & PT_MASK) >> PT_SHIFT 20 PTEAddr = (PDE.PFN << SHIFT) + (PTIndex*sizeof(PTE)) 21 PTE = AccessMemory(PTEAddr) 22 if (PTE.Valid == False) 23 RaiseException(SEGMENTATION_FAULT) 24 else if (CanAccess(PTE.ProtectBits) == False) 25 RaiseException(PROTECTION_FAULT) 26 else 27 TLB_Insert(VPN, PTE.PFN, PTE.ProtectBits) 28 RetryInstruction()

How Many Physical Accesses Assume a 3-level page table Assume 256-byte pages, 16-bit addresses. Assume ASID of current process is 211 0xAA10: movl 0x1111, %edi 0xBB13: addl $0x3, %edi 0x0519: movl %edi, 0xFF10 validVPNPFNASIDProt 10xBB0x91211? 10xFF0x23211? 10x050x91112? 00x050x12211?

Summary Many PT options are possible … Inverted page table Mixed-size page table Time/Space/Complexity tradeoffs

Next: swapping