CSC 369 Operating Systems

Similar documents
12: Memory Management

CS399 New Beginnings. Jonathan Walpole

Topics: Memory Management (SGG, Chapter 08) 8.1, 8.2, 8.3, 8.5, 8.6 CS 3733 Operating Systems

Preview. Memory Management

Memory Management. Dr. Yingwu Zhu

Memory Management. Reading: Silberschatz chapter 9 Reading: Stallings. chapter 7 EEL 358

CS 31: Intro to Systems Virtual Memory. Kevin Webb Swarthmore College November 15, 2018

Chapter 9 Memory Management Main Memory Operating system concepts. Sixth Edition. Silberschatz, Galvin, and Gagne 8.1

Performance of Various Levels of Storage. Movement between levels of storage hierarchy can be explicit or implicit

Recall from Tuesday. Our solution to fragmentation is to split up a process s address space into smaller chunks. Physical Memory OS.

Paging. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

UNIT III MEMORY MANAGEMENT

CS 3733 Operating Systems:

Recap: Memory Management

CS370 Operating Systems

Virtual Memory I. Jo, Heeseung

Chapter 8 Memory Management

Lecture 8 Memory Management Strategies (chapter 8)

File Systems. OS Overview I/O. Swap. Management. Operations CPU. Hard Drive. Management. Memory. Hard Drive. CSI3131 Topics. Structure.

Memory Management. Dr. Yingwu Zhu

Chapter 8 & Chapter 9 Main Memory & Virtual Memory

Memory Management. Memory Management

Background. Contiguous Memory Allocation

Operating Systems Memory Management. Mathieu Delalandre University of Tours, Tours city, France

PROCESS VIRTUAL MEMORY. CS124 Operating Systems Winter , Lecture 18

Operating Systems. Designed and Presented by Dr. Ayman Elshenawy Elsefy

Chapter 8: Memory Management. Operating System Concepts with Java 8 th Edition

Chapter 7: Main Memory. Operating System Concepts Essentials 8 th Edition

Goals of Memory Management

Paging. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

Chapter 9 Memory Management

Memory Management. Memory Management

CS307: Operating Systems

Main Memory: Address Translation

Virtual Memory. Today. Segmentation Paging A good, if common example

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

Process. Memory Management

Operating Systems and Computer Networks. Memory Management. Dr.-Ing. Pascal A. Klein

6 - Main Memory EECE 315 (101) ECE UBC 2013 W2

Memory management: outline

Memory management: outline

Operating Systems (2INC0) 2017/18

CS 550 Operating Systems Spring Memory Management: Paging

VIRTUAL MEMORY. Operating Systems 2015 Spring by Euiseong Seo

Virtual Memory 1. To do. q Segmentation q Paging q A hybrid system

How to create a process? What does process look like?

Memory management. Last modified: Adaptation of Silberschatz, Galvin, Gagne slides for the textbook Applied Operating Systems Concepts

Memory Management. Goals of Memory Management. Mechanism. Policies

Process. One or more threads of execution Resources required for execution. Memory (RAM) Others

Chapter 8: Main Memory

Chapter 8: Memory- Management Strategies. Operating System Concepts 9 th Edition

Chapter 8: Memory- Management Strategies

Principles of Operating Systems

16 Sharing Main Memory Segmentation and Paging

Memory Management. Frédéric Haziza Spring Department of Computer Systems Uppsala University

CHAPTER 8: MEMORY MANAGEMENT. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

Virtual Memory. CS 3410 Computer System Organization & Programming

! What is main memory? ! What is static and dynamic allocation? ! What is segmentation? Maria Hybinette, UGA. High Address (0x7fffffff) !

Chapter 8: Memory-Management Strategies

Background Swapping Contiguous Memory Allocation Paging Structure of the Page Table Segmentation

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

Virtual Memory: From Address Translation to Demand Paging

CHAPTER 6 Memory. CMPS375 Class Notes (Chap06) Page 1 / 20 Dr. Kuo-pao Yang

Memory Management Basics

Chapter 8: Memory- Management Strategies. Operating System Concepts 9 th Edition

Virtual Memory 1. Virtual Memory

Virtual Memory 1. Virtual Memory

Memory Management (Chaper 4, Tanenbaum)

Part Three - Memory Management. Chapter 8: Memory-Management Strategies

Process. One or more threads of execution Resources required for execution. Memory (RAM) Others

CHAPTER 8 - MEMORY MANAGEMENT STRATEGIES

Memory Management. CSCI 315 Operating Systems Design Department of Computer Science

Process. One or more threads of execution Resources required for execution

Chapter 3 - Memory Management

Chapter 9: Memory Management. Background

Operating Systems, Fall

Main Memory (Part I)

Operating Systems, Fall

Chapter 8: Main Memory. Operating System Concepts 9 th Edition

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

Requirements, Partitioning, paging, and segmentation

Main Memory. Electrical and Computer Engineering Stephen Kim ECE/IUPUI RTOS & APPS 1

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

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

18-447: Computer Architecture Lecture 16: Virtual Memory

CSE 120 Principles of Operating Systems Spring 2017

I.-C. Lin, Assistant Professor. Textbook: Operating System Principles 7ed CHAPTER 8: MEMORY

Virtual Memory. CS 3410 Computer System Organization & Programming. [K. Bala, A. Bracy, E. Sirer, and H. Weatherspoon]

Memory: Overview. CS439: Principles of Computer Systems February 26, 2018

Memory Management. Memory Management Requirements

Memory Management. Contents: Memory Management. How to generate code? Background

Chapter 8: Main Memory

CSE 120 Principles of Operating Systems

Memory Hierarchy. Goal: Fast, unlimited storage at a reasonable cost per bit.

Simple idea 1: load-time linking. Our main questions. Some terminology. Simple idea 2: base + bound register. Protection mechanics.

CS61C : Machine Structures

I.-C. Lin, Assistant Professor. Textbook: Operating System Concepts 8ed CHAPTER 8: MEMORY

Module 8: Memory Management

15 Sharing Main Memory Segmentation and Paging

Memory Management. CSE 2431: Introduction to Operating Systems Reading: , [OSC]

Transcription:

CSC 369 Operating Systems Lecture 6: Memory management Bogdan Simion

Memory hierarchy 1 KB Registers Speed Price 32 128 KB L1 cache 2 8 MB L2 cache 4 16 GB DRAM 1 2 TB Disk 2

But that s not all Sequential data access speeds on disk/dram differ column DISK row DRAM Accessing the 1st byte: ~100,000 times slower than the next bytes; DRAM only ~4 times slower What does that mean? Better for large sequential data, bad for small random data 3

Bottom line Disk is cheap, but waaaaay slow! We want to avoid going to disk at all cost! DRAM acts like a cache for the disk Performance depends on efficient use of DRAM! How can the OS help you use DRAM? Virtual memory! 4

Virtual memory 1. Only a limited amount of physical memory Must use efficiently 2. Every active process needs memory Must provide the illusion of infinite memory to each process 3. Physical memory is access by multiple processes Must ensure data privacy! Might want to allow sharing! => Our goals: 1. Efficiency 2. Transparency 3. Protection and sharing 5

Goals: Efficiency Make use of memory wisely Basic idea: Some portions are in DRAM Some portions are stored on disk Transfer data back and forth, as needed Which portions should be in DRAM? 6

Goals: Transparency Data moves back and forth between RAM and disk Programmer should not worry if chunks of program/data are in memory or disk How do we create the illusion of having more memory than DRAM? 7

So,.. Transparency Give each process its own view of memory Large contiguous address space, starting at address 0 Simplifies memory allocation Decouple the data layout from where the data is actually stored in physical memory Why do we want this separation? How would you manage physical memory? How do we find a location in physical memory to put our process s memory? 8

Fixed partitioning Each process gets a fixed partition to use Divide physical memory into 8M regions OS occupies a separate partition Each process is granted one of these See any problems? If process is smaller than partition, this wastes memory (internal fragmentation) If program needs more memory than the partition size, programmer has to deal with that (overlays) Number of partitions is limited => limits the number of active processes! Operating system (8M) Process 1 (5M) Unusable (3M) Available (8M) Process 2 (2M) Unusable (6M) Available (8M) 9

Fixed partitioning Unequal sized partitions:... Queue per partition Enqueue process to smallest partition in which it will fit Operating system (8M) Available (4M) Available (4M) Available (8M)... Available (16M) 10

Placement example Process 1 and Process 2 fit in the same partition. With smallest partition policy, both must share the 8M partition while the 16M partition goes unused.... Process 2 (7M) Process 1 (5M) Operating system (8M) Available (4M) Available (4M) Available (8M)... Available (16M) 11

Dynamic partitioning Partitions vary in length and number over time When a process is brought into memory, a partition of exactly the right size is created to hold it Operating system (8M) Available (32M) Operating system (8M) Process 1 (5M) Available (27M) Operating system (8M) Process 1 (5M) Process 2 (7M) Available (20M) 12

More dynamic partitioning P2 gone, hole is created Some holes may be too small to be re used This is called external fragmentation OS may move processes around to create larger chunks of free space E.g. Process 3 immediately after P1 This is called compaction Requires processes to be relocatable Need to know maximum size of process at load time Can we know? Can we grow partitions at runtime? Can we share data between processes? Operating system (8M) Process 1 (5M) Process Available(7M) 2 Process 3 (2M) Process 4(2M) Available (16M) 13

VM to the rescue: use Paging instead! 2 64 1 Virtual Address Space (for Process X) Stack Decouple address space completely from actual physical data location Split both virtual and physical memory in same size chunks (pages) Physical memory 8GB Heap Static Code 14

Mapping virtual memory Virtual Address Space (for Process X) 2 64 1 Physical memory 8GB Disk 1 TB Demand paging 15

Processes co exist in memory Process 1 (AS) DRAM Can we have fragmentation? Process2(AS) Process3(AS) What happens when we swap pages? OS libs OS Disk 16

What we ve learnt so far.. Each process gets the illusion of its personal address space (0 > 2 64 1) Each virtual page can be mapped to any physical page Data is either in memory or on disk We must bring data in memory, as needed Who keeps the correspondence between a virtual address and a physical address? 17

Where does the translation happen? Multiple processes => Each process needs to have its address space pages translated to real (physical) addresses CPU VA Page Table PA PA Physical memory Hardware (MMU) converts VAs into PAs using the Page Table (an OS managed lookup table) Each process running in the OS has its own Page Table. VA PA PA Disk 18

Page faults What if the page we want is not in memory? Page table entry indicates that the page is not in memory Causes a page fault (basically, like a cache miss) How do we handle a page fault? OS is responsible for loading page from disk Process stops until the data is brought into memory Page replacement policy is up to the OS (next time..) 19

How come this is not way too slow? Processes reference pages in localized patterns! Temporal locality Locations referenced recently likely to be referenced again. Examples? Spatial locality Locations near recently referenced locations are likely to be referenced soon. Examples? Although cost of paging is high, if it s infrequent enough (due to locality), it s acceptable What s the worst we can do in our programs? 20

Exercise 1 #define N 409600000 #define M 100000 #define PAGESIZE 4096 int main(int argc, char **argv) { int i; int *X = malloc(n * sizeof(int)); if(!x) return 1; for (i = 0; i < M; i++) X[i] = 0; int main(int argc, char **argv) { int i; int *X = malloc(n * sizeof(int)); if(!x) return 1; for (i = 0; i < M; i++) X[i * PAGESIZE] = 0; } return 0; return 0; Try timing each one: } $ time./program Make sure you check that your system s page size is 4K too: $ getconf PAGESIZE 21

Goals: Protection and sharing Processes co exist in memory Processes should not access other processes memory Must protect process address spaces! Implies we need access rights for pages (like file permissions R/W/X) Priviledged OS data shouldn t be accessible to users In some cases, sharing may be desirable Need to control what sharing is allowed Physical memory P1 P2 P2 P3 P1 P1 P1 An OS lib OS 22

VM enforces protection Address spaces are per process, completely isolated Access rights are kept in the page tables Hardware enforces protection, OS is called when violation happens Can I modify my own page tables? No! Page tables are in protected OS memory (only OS can modify them) Avoid leaked information from deallocated pages Programmer should not have to zero out each page on dealloc OS ensures that newly allocated pages are zero ed out. How? Use a zero ed page and give the VA of that page (Copy on Write) Where is this COW concept also being used? 23

Sharing pages Process 1 (AS) P1 (PT) Allow sharing pages, like read only library code Physical memory... P1 (PT) Process2(AS)... C library OS VM simplifies sharing code and data between multiple processes in the system! 24

Summary Virtual memory allows mechanisms for: Efficient use of physical memory Transparent use of physical memory Protection and sharing of physical data between processes 25

Recap Addresses in program must be translated (mapped, bound) to real (physical) addresses Looked at different ways of allocating physical memory to processes Fixed partitioning Dynamic partitioning Paging Keep in mind the goals: Efficiency, Transparency, Protection and Sharing 26

Key theme: how to translate! How does the OS translate the programmer s view to (real) physical addresses? Let s assume, for now, that we can actually fit the address space in physical memory! Virtual Stack OS Available Physical Heap Static Code Stack (Allocated but not used) Heap Static Code Available 27

Where does my program go? 28

Overview of requirements Relocation Programmers don t know what physical memory will be available when their programs run Medium term scheduler may swap processes in/out of memory; need to be able to bring it back in to a different region of memory This implies some sort of address translation Logical organization Machine accesses/addresses the memory as a one dimensional array of bytes Programmers organize code in modules Need to map between these views Physical organization Memory and Disk form a two level hierarchy, flow of information between levels must be managed Recall that CPU can only access data in registers or memory, not disk 29

Address binding Programs must be in memory to execute Program binary is loaded into a process s address space Needs memory for code (instructions) & data Addresses in program must be translated (mapped, bound) to real (physical) addresses Programmers use symbolic addresses (i.e., variable names) to refer to memory locations CPU fetches from, and stores to, real memory addresses Address translation is the process of linking variable names to physical locations int main() { } int y; y = random(); printf( %d,y); Compile Program binary Load Process Code Data State Etc. Execute Fetch Decode Execute 30

When are addresses bound? Option 1: Compile time Must know what memory the process will use, during compilation Called absolute code since binary contains real addresses No relocation is possible e.g., old MS DOS.COM programs, simple embedded systems Option 2: Load time (aka static relocation) Compiler: translates (binds) symbolic addresses to logical, relocatable addresses within compilation unit (source file) Linker: translates addresses from obj files to logical, absolute addresses within executable Takes care of references to symbols from other files/modules Loader translates logical absolute addresses to physical addresses when program is loaded into memory 31

Load Time Binding Example program1 4092 12 ADD 8 MOV 4 0 JMP 12 Content of binary file on disk program2 4092 Programs can be loaded to different address when they start, but cannot be relocated later. Why not? 12 SUB 8 CMP 4 0 JMP 8 program1 (in memory) program2 (in memory) 16380 8204 ADD 8200 MOV 8196 8192 JMP 8204 8188 4108 SUB 4104 CMP 4100 4096 JMP 4104

A better plan Bind addresses at execution time (dynamic relocation) main.c foo.c Translators (cpp, cc1, as) main.o Translators (cpp, cc1, as) foo.o Linker (ld) a.out Executable file, a.out, contains logical addresses for entire program Translated to a real, physical address during execution Flexible, but requires special hardware (as we will see) 33

Dynamic relocation Hardware support: 2 registers called base and bound on the MMU The executable simply stores virtual addresses (starting at 0) When a program starts to run, the OS decides where in physical memory to place its address space Step 1: Set the base register Step 2: Physical address can be translated as the following physical address = base + virtual address Step 3: Profit! => Instructions in the executable do NOT need to be modified! Why do we need the bound register? Ensures that we don t access outside a process address space MMU only has one base and bound register But... we have N processes Base and bound get saved in the PCB when we do a context switch 34

Example Virtual address space relocated into physical memory 16K 14K Virtual Stack Base = 4K Bound = 16K Physical OS 32K 6K 4K 2K 0 Heap Static Code Available Stack (Allocated but not used) Heap Static Code Available 20K 8K 4K 0 35

Problems? OS must be able to find free space to relocate new processes address spaces Possible problems? 36

Recall dynamic partitioning? As processes come and go, holes are created Problem: Some holes may be too small to be re used, aka external fragmentation Solution: OS may move processes around to create larger chunks of free space Aka compaction Expensive to shuffle many of them around, in order to find space for a new process Operating system (8M) Process 1 (5M) Available(7M) Process 3 (2M) Available (18M) 37

Placement Heuristics Compaction is time consuming and not always possible Can we reduce the need for it? How about being careful about how memory is allocated to processes over time? Smart freelist management algorithms! First fit choose first block that is large enough; search can start at beginning, or where previous search ended (called next fit) Best fit choose the block that is closest in size to the request Worst fit choose the largest block Quick fit keep multiple free lists for common block sizes

Comparing Placement Algorithms Best fit left over fragments tend to be small (unusable) In practice, similar storage utilization to first fit First fit Simplest, and often fastest and most efficient May leave many small fragments near start of memory that must be searched repeatedly Next fit variant tends to allocate from end of memory Free space becomes fragmented more rapidly Worst fit Not as good as best fit or first fit in practice Quick fit Great for fast allocation, generally harder to coalesce

Going back to Relocation Swapping and compaction require a way to change the physical memory addresses a process refers to can we repeat address translation as done at initial load? Really, need dynamic relocation (aka execution time binding of addresses) process refers to relative addresses, hardware translates to physical address as instruction is executed Let s recall minimum hardware requirements All memory used by process is contiguous in these methods

Recap: Hardware for Relocation Basic idea: add relative address to the process s starting address (base address) to form real, or physical, address check that address generated is within process s space 2 registers, base and limit When process is assigned to CPU (i.e., set to Running state), load base register with starting address of process Load limit register with last address of process On memory reference instruction (load, store) add base to address and compare with limit If compare fails, trap to operating system if (addr < base addr >= (base+limit) then trap This is an Illegal address exception

Other problems? Basic problem is that processes must be allocated to contiguous blocks of physical memory Hard to figure out how to size these blocks given that processes are not all the same Now what? Paging! 42

Paging Logically partition physical memory into equal, fixed size chunks These are called page frames or simply frames Divide processes memory into chunks of the same size These are called virtual pages or just pages Any page can be assigned to any free page frame External fragmentation is eliminated Internal fragmentation is at most a part of one page per process Possible page frame sizes are restricted to powers of 2 to simplify address translation

Example of Paging Suppose a new process, D, arrives needing 3 frames of memory 0 1 2 3 4 5 6 7 8 Main memory A.0 A.1 A.2 C.0 C.1 Main memory A.0 A.1 A.2 D.0 D.1 C.0 C.1 D.2 We can fit Process D into memory, even though we don t have 3 contiguous frames available! 0 1 2 3 4 5 6 7 8

Paging simplifies things Good virtualization of memory No more base and bound registers Just need to translate virtual pages to physical pages All we need to know is where does the page table start: PTBR (Page Table Base Register) 45

How do we support paging? Recall that OS maintains a page table for each process Software data structure, stored in OS memory Page table records which physical frame holds each page Virtual addresses now interpreted as page number + page offset page number = vaddr / page_size page offset = vaddr % page_size Simple to calculate if page size is power of 2 On each memory reference, processor MMU translates page# to frame# and adds offset to generate a physical address Hence why a hardware page table base register (PTBR) to quickly locate the page table for the running process Loaded when process runs, just like base/limit registers

Paged Address Translation Physical Memory Virtual Address Page number Offset Page table Physical Address Page frame # Offset Page frame #

Example Address Translation Suppose addresses are 16 bits, pages are 1024 bytes Bit 15 Pg # 10 Least significant 10 bits of address provide offset within a page (2 10 = 1024) Most significant 6 bits provide page number Maximum number of pages = 2 6 = 64 To translate virtual address: 0x0DDE Extract page number (high order 6 bits) > pg = vaddr >> 10 ( == vaddr/1024) == 3 Get frame number from page table Combine frame number with page offset offset = vaddr & 0x3FF (== vaddr % 1024) == 478 paddr = (frame << 10) offset Equivalent to paddr = frame * 1024 + offset 9 Offset 0 0000 1101 1101 1110 0 D D E Logical address Page# Offset 3 478 Page Table Page# Frame# 0 11 1 16 2 7 3 28 28 478 Frame# Offset Physical address

Paged address translation redux 32 bit virtual address, 4K (4096 bytes) pages Page size, virtual address size set by MMU hardware Offset must be 12 bits (2 12 = 4096) Leaves 20 bits for virtual page number (VPN) Page frame 0x42 MMU CPU 0x7468 VPN 7 OFF 468 PTBR 0111 0100 0110 1000 Page table base address + 42 Page table entry 0x7 Main Memory Offset 468 Memory Bus

Details of calculation Program generates virtual address 0x7468 CPU and MMU see binary 0111 0100 0110 1000 Virtual page is 0x7, offset is 0x468 (0111 0100 0110 1000) Page table entry 0x7 contains 0x42 Page frame number is 0x42 Virtual page 0x7 is stored in physical frame 0x42 Physical address = 0x42 << 12 + 0x468 = 0x42468 MMU hardware generates address of page table entry, does lookup without OS OS has to load PTBR for new process on context switch Remember that Page Tables are per process!

The Page Table Simplest version A linear array of page table entries, 1 entry per virtual page Stored in OS memory, attached to process structure Virtual page number (VPN) is array index Allocate enough physical memory (ppages) for entire page table struct addrspace { paddr_t pgtbl; } nentries calc: max vaddr is all 1 s (i.e. ~0). To get number of pages, divide by page size (>> 12). But only half of address space is user and mapped by page table so divide by 2 (>>13). struct addrspace *as_create(void) { struct addrspace *as = kmalloc(sizeof(struct addrspace)); int nentries = (~0 >> 13) + 1 ; int npages = DIVROUNDUP(nentries* sizeof(pte_t), PAGE_SIZE); as->pgtbl = getppages(npages);... }

Page Table Entries 1 1 1 3 26 M R V Prot Page Frame Number Page table entries (PTEs) control mapping Modify bit (M) says whether or not page has been written Set when a write to a page occurs Reference bit (R) says whether page has been accessed Set when a read or write to the page occurs Valid bit (V) says whether PTE can be used Checked on each use of virtual address Protection bits specify what operations are allowed on page Read/write/execute Page frame number (PFN) determines physical page Not all bits are provided by all architectures

MIPS R2000 Page Table Entry 20 1 1 1 1 8 Page Frame Number N D V G unused N == not cached D == dirty (meaning writable, not set by hardware) V == valid G == global (can be used by all processes) Maximum 2 20 physical pages, each 4 kb maximum 4GB of physical RAM

Where are page tables stored? Too big too fit into MMU => store in memory More specifically, in protected memory Recall that a user process cannot access its own page table! 54

Paging Limitations Space Memory required for page table can be large (space overhead) Need one PTE per page 32 bit virtual address space w/ 4K pages => 2 20 PTEs 4 bytes/pte => 4MB/page table 100 processes => 400MB just for page tables! OUCH! It gets worse: modern processors have 64 bit address spaces => 16 petabytes per page table! Solutions?

Solution: Bigger Pages Use 16K pages instead of 4K pages 32 bit virtual address space w/ 16K pages => 2 18 PTEs 4 bytes/pte => 1MB/page table 100 processes => 100MB for page tables! A factor of 4 less space... Yay?? Say a process only needs 1KB of memory Page size = 4K => 3KB wasted Page size = 16K => 15KB wasted! OUCH! So, what does this mean? The bigger the pages, the more severe internal fragmentation may occur Ideally, we want something else... 56

Better Solutions? Solution 1: Hierarchical page tables Solution 2: Hashed page tables Solution 3: Inverted page tables To be continued... 57

Announcements Midterm next Wednesday during lecture timeslot Make sure to attend your own section's midterm! Covers up to Virtual Memory (excluding) Write in pen, cannot regrade tests written in pencil! Location and logistics: Check website! Check Piazza announcements!