Opera&ng Systems CMPSCI 377 Dynamic Memory Management. Emery Berger and Mark Corner University of Massachuse9s Amherst

Size: px
Start display at page:

Download "Opera&ng Systems CMPSCI 377 Dynamic Memory Management. Emery Berger and Mark Corner University of Massachuse9s Amherst"

Transcription

1 Opera&ng Systems CMPSCI 377 Dynamic Memory Management Emery Berger and Mark Corner University of Massachuse9s Amherst

2 Dynamic Memory Management How the heap manager is implemented malloc, free new, delete 2

3 Memory Management Programs ask memory manager to allocate/free objects (or mul&ple pages) Memory manager asks OS to allocate/free pages (or mul&ple pages) User Program Objects (new, malloc) Allocator(java, libc) Pages (mmap,brk) Operating System

4 Memory Management Ideal memory manager: Fast Raw &me, asympto&c run&me, locality Memory efficient Low fragmenta&on With mul&core & mul&processors: Scalable to mul&ple processors New issues: Secure from asack Reliable in face of errors 4

5 Memory Manager Func=ons Not just malloc/free realloc Change size of object, copying old contents ptr = realloc (ptr, 10); But: realloc(ptr, 0) =? How about: realloc (NULL, 16)? Other fun calloc memalign Needs ability to locate size & object start 5

6 Fragmenta=on Intui&vely, fragmenta&on stems from breaking up heap into unusable spaces More fragmenta&on = worse u&liza&on External fragmenta&on Wasted space outside allocated objects Internal fragmenta&on Wasted space inside an object 6

7 Classical Algorithms First- fit find first chunk of desired size 7

8 Classical Algorithms Best- fit find chunk that fits best Minimizes wasted space 8

9 Classical Algorithms Worst- fit find chunk that fits worst name is a misnomer! keeps large holes around Reclaim space: coalesce free adjacent objects into one big object 9

10 Quick Ac=vity Program asks for: 300,25,25,100 First- fit and best- fit alloca&ons go where? Which ones cannot be fulfilled? What about: 110,54,25,70,50?

11 Implementa=on Techniques Freelists Linked lists of objects in same size class Range of object sizes First- fit, best- fit in this context? Which is faster? 11

12 Implementa=on Techniques Segregated size classes Use free lists, but never coalesce or split Choice of size classes Exact Powers- of- two 12

13 Implementa=on Techniques Big Bag of Pages (BiBOP) Page or pages (mul&ples of 4K) Usually segregated size classes Header contains metadata Locate with bitmasking Limits external fragmenta&on Can be very fast Secret Sauce for project Use free objects to track free objects 13

14 Run=me Analysis Key components Cost of malloc (best, worst, average) Cost of free Cost of size lookup (for realloc & free) 14

15 Space Bounds Fragmenta&on worst- case for op&mal : O(log M/m) M = largest object size m = smallest object size Best- fit = O(M * m)! 15

16 Performance Issues Goal: perform well for typical programs Considera&ons: Internal fragmenta&on External fragmenta&on Headers (metadata) We ll talk about scalability later Reliability, too Canned allocator olen seen as slow 16

17 Custom Memory Alloca=on Programmers replace new/delete Reduce run&me Olen Expand func&onality Some&mes Reduce space rarely Very common Apache, gcc, lcc, STL, database servers Language- level support in C++ Widely recommended Use custom allocators 17

18 Drawbacks of Custom Allocators Avoiding system allocator: More code to maintain & debug Can t use memory debuggers Not modular or robust: Mix memory from custom and general- purpose allocators crash! Increased burden on programmers 18

19 (1) Per- Class Allocators Recycle freed objects from a free list a = new Class1; b = new Class1; c = new Class1; delete a; delete b; delete c; a = new Class1; b = new Class1; c = new Class1; Class1 free list a b c + Fast + Linked list operations + Simple + Identical semantics + C++ language support - Possibly space-inefficient 19

20 (II) Custom Pa9erns Tailor- made to fit alloca&on paserns Example: 197.parser (natural language parser) char[memory_limit] a d b c end_of_array end_of_array a = xalloc(8); b = xalloc(16); c = xalloc(8); xfree(b); xfree(c); d = xalloc(8); + Fast + Pointer-bumping allocation - Brittle - Fixed memory size - Requires stack-like lifetimes 20

21 (III) Regions Separate areas, dele&on only en masse regioncreate(r) regionmalloc(r, sz) r regiondelete(r) + Fast + Pointer- bumping alloca&on + Dele&on of chunks + Convenient + One call frees all memory - Risky - Dangling references - Too much space Increasingly popular custom allocator 21

22 Are custom allocators a win? Generally not worth the trouble use good general- purpose allocator However Some&mes worth it for specialized apps Tells us how to allocate resources from a pool

23 Problems w/unsafe Languages C, C++: pervasive apps, but langs. memory unsafe Numerous opportuni&es for security vulnerabili&es, errors Double free Invalid free Unini&alized reads Dangling pointers Buffer overflows (stack & heap)

24 Soundness for Erroneous Progs Normally: memory errors lead to Consider infinite- heap allocator: All news fresh; ignore delete No dangling pointers, invalid frees, double frees Every object infinitely large No buffer overflows, data overwrites Transparent to correct program Erroneous programs sound

25 Probabilis=c Memory Safety Approximate with M- heaps (e.g., M=2) DieHard: fully- randomized M- heap Increases odds of benign errors Probabilis&c memory safety i.e., P(no error) n Errors independent across heaps E(users with no error) n * users Efficient implementa&on

26 DieHard Derives benefits from three sources Randomized Alloca&on Space- Robustness tradeoff Replica&on

27 Implementa=on Choices Conven&onal, freelist- based heaps Hard to randomize, protect from errors Double frees, heap corrup&on What about bitmaps? [Wilson90] Catastrophic fragmenta&on Each small object likely to occupy one page obj obj obj obj pages

28 Randomized Heap Layout metadata heap Bitmap- based, segregated size classes Bit represents one object of given size i.e., one bit = 2 i+3 bytes, etc. Prevents fragmenta&on

29 Randomized Alloca=on metadata heap malloc(8): compute size class = ceil(log 2 sz) = 3 randomly probe bitmap for zero- bit (free) Fast: run&me O(1) M=2: E[# of probes] 2

30 Randomized Alloca=on metadata heap malloc(8): compute size class = ceil(log 2 sz) = 3 randomly probe bitmap for zero- bit (free) Fast: run&me O(1) M=2: E[# of probes] 2

31 Randomized Dealloca=on metadata heap free(ptr): Ensure object valid aligned to right address Ensure allocated bit set Resets bit Prevents invalid frees, double frees

32 Randomized Dealloca=on metadata heap free(ptr): Ensure object valid aligned to right address Ensure allocated bit set Resets bit Prevents invalid frees, double frees

33 Randomized Dealloca=on metadata heap free(ptr): Ensure object valid aligned to right address Ensure allocated bit set Resets bit Prevents invalid frees, double frees

34 Randomized Heaps & Reliability object size = 2 i My Mozilla: malignant overflow object size = 2 i+4 Objects randomly spread across heap Different run = different heap Errors across heaps independent Your Mozilla: benign overflow

35 DieHard sosware architecture seed 1 replica 1 input seed 2 replica 2 output broadcast vote seed 3 replica 3 execute replicas (separate processes) Replica&on- based fault- tolerance Requires randomiza&on: errors independent

36 DieHard Results Empirical results Run&me overhead Error avoidance Injected faults & actual applica&ons Analy&cal results (if &me, pictures!) Buffer overflows Unini&alized reads Dangling pointer errors (the best)

37 Empirical Results: Run=me

38 Error Avoidance Injected faults: Dangling pointers 10 alloca&ons) glibc: crashes; DieHard: 9/10 correct Overflows 4 bytes over) glibc: crashes 9/10, inf loop; DieHard: 10/10 correct Real faults: Avoids Squid web cache overflow Crashes Boehm- Demers- Weiser(BDW) Collector & glibc Avoids dangling pointer error in Mozilla DoS in glibc & Windows

39 The End 39

40 Analy&cal Results: Buffer Overflows Model overflow as write of live data Heap half full (max occupancy)

41 Analy&cal Results: Buffer Overflows Model overflow as write of live data Heap half full (max occupancy)

42 Analy&cal Results: Buffer Overflows Model overflow: random write of live data Heap half full (max occupancy)

43 Analy=cal Results: Overflows Replicas: Increase odds of avoiding overflow in at least one replica replicas

44 Analy=cal Results: Overflows Replicas: Increase odds of avoiding overflow in at least one replica replicas

45 Analy=cal Results: Overflows Replicas: Increase odds of avoiding overflow in at least one replica replicas P(Overflow in all replicas) = (½)3 = 1/8 P(No overflow in > 1 replica) = 1- (½)3 = 7/8

46 Analy&cal Results: Buffer Overflows F = free space H = heap size N = # objects worth of overflow k = replicas Overflow one object

47 Custom Allocators Are Faster Runtime - Custom Allocator Benchmarks Custom Win32 Normalized Runtime parser non-regions boxed-sim c-breeze 175.vpr 176.gcc regions apache lcc mudlle As good as and some&mes much faster than Win32 47

48 Not So Fast Runtime - Custom Allocator Benchmarks Custom Win32 DLmalloc Normalized Runtime parser non-regions boxed-sim c-breeze 175.vpr 176.gcc regions apache lcc mudlle DLmalloc: as fast or faster for most benchmarks 48

49 Lea Allocator (Dlmalloc 2.7.0) Mature general- purpose allocator Op&mized for common alloca&on paserns Per- size quicklists per- class alloca&on Deferred coalescing combining adjacent free objects Highly- op&mized fastpath Space- efficient 49

50 Space Consump=on: Mixed Space - Custom Allocator Benchmarks Custom DLmalloc Normalized Space non-regions regions 197.parser boxed-sim c-breeze 175.vpr 176.gcc apache lcc mudlle 50

51 Custom Allocators? Generally not worth the trouble: use good general- purpose allocator Avoids risky solware engineering errors 51

DieHard: Probabilistic Memory Safety for Unsafe Programming Languages

DieHard: Probabilistic Memory Safety for Unsafe Programming Languages DieHard: Probabilistic Memory Safety for Unsafe Programming Languages Emery Berger University of Massachusetts Amherst Ben Zorn Microsoft Research Problems with Unsafe Languages C, C++: pervasive apps,

More information

Opera&ng Systems CMPSCI 377 Garbage Collec&on. Emery Berger and Mark Corner University of Massachuse9s Amherst

Opera&ng Systems CMPSCI 377 Garbage Collec&on. Emery Berger and Mark Corner University of Massachuse9s Amherst Opera&ng Systems CMPSCI 377 Garbage Collec&on Emery Berger and Mark Corner University of Massachuse9s Amherst Ques

More information

Dynamic Memory Alloca/on: Basic Concepts

Dynamic Memory Alloca/on: Basic Concepts Dynamic Memory Alloca/on: Basic Concepts 15-213 / 18-213: Introduc2on to Computer Systems 18 th Lecture, March. 26, 2013 Instructors: Anthony Rowe, Seth Goldstein, and Gregory Kesden 1 Today Basic concepts

More information

Memory Management. CS449 Fall 2017

Memory Management. CS449 Fall 2017 Memory Management CS449 Fall 2017 Life9mes Life9me: 9me from which a par9cular memory loca9on is allocated un9l it is deallocated Three types of life9mes Automa9c (within a scope) Sta9c (dura9on of program)

More information

Dynamic Memory Alloca/on: Basic Concepts

Dynamic Memory Alloca/on: Basic Concepts Dynamic Memory Alloca/on: Basic Concepts Fall 2015 Instructor: James Griffioen Adapted from slides by R. Bryant and D. O Hallaron (hip://csapp.cs.cmu.edu/public/instructors.html) 1 Today Basic concepts

More information

DieHard: Memory Error Fault Tolerance in C and C++

DieHard: Memory Error Fault Tolerance in C and C++ DieHard: Memory Error Fault Tolerance in C and C++ Ben Zorn Microsoft Research In collaboration with Emery Berger and Gene Novark, Univ. of Massachusetts Ted Hart, Microsoft Research DieHard: Memory Error

More information

Memory Management III Memory Alloca0on

Memory Management III Memory Alloca0on Memory Management III Memory Alloca0on COMS W4118 Prof. Kaustubh R. Joshi krj@cs.columbia.edu hgp://www.cs.columbia.edu/~krj/os References: Opera0ng Systems Concepts (9e), Linux Kernel Development, previous

More information

A program execution is memory safe so long as memory access errors never occur:

A program execution is memory safe so long as memory access errors never occur: A program execution is memory safe so long as memory access errors never occur: Buffer overflows, null pointer dereference, use after free, use of uninitialized memory, illegal free Memory safety categories

More information

Dynamic Memory Allocation

Dynamic Memory Allocation Dynamic Memory Allocation CS61, Lecture 10 Prof. Stephen Chong October 4, 2011 Announcements 1/2 Assignment 4: Malloc Will be released today May work in groups of one or two Please go to website and enter

More information

Memory Allocator Security

Memory Allocator Security Memory Allocator Security Yves Younan, Wouter Joosen, Frank Piessens and Hans Van den Eynden DistriNet, Department of Computer Science Katholieke Universiteit Leuven Belgium Yves.Younan@cs.kuleuven.ac.be

More information

Dnmaloc: a more secure memory allocator

Dnmaloc: a more secure memory allocator Dnmaloc: a more secure memory allocator 28 September 2005 Yves Younan, Wouter Joosen, Frank Piessens and Hans Van den Eynden DistriNet, Department of Computer Science Katholieke Universiteit Leuven Belgium

More information

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

Memory Allocation. Copyright : University of Illinois CS 241 Staff 1 Memory Allocation Copyright : University of Illinois CS 241 Staff 1 Memory allocation within a process What happens when you declare a variable? Allocating a page for every variable wouldn t be efficient

More information

Heap Management portion of the store lives indefinitely until the program explicitly deletes it C++ and Java new Such objects are stored on a heap

Heap Management portion of the store lives indefinitely until the program explicitly deletes it C++ and Java new Such objects are stored on a heap Heap Management The heap is the portion of the store that is used for data that lives indefinitely, or until the program explicitly deletes it. While local variables typically become inaccessible when

More information

Dynamic Memory Allocation

Dynamic Memory Allocation 1 Dynamic Memory Allocation Anne Bracy CS 3410 Computer Science Cornell University Note: these slides derive from those by Markus Püschel at CMU 2 Recommended Approach while (TRUE) { code a little; test

More information

Tolerating and Correcting Memory Errors in C and C++

Tolerating and Correcting Memory Errors in C and C++ Tolerating and Correcting Memory Errors in C and C++ Ben Zorn Microsoft Research In collaboration with: Emery Berger and Gene Novark, UMass - Amherst Karthik Pattabiraman, UIUC Vinod Grover and Ted Hart,

More information

ECE 598 Advanced Operating Systems Lecture 10

ECE 598 Advanced Operating Systems Lecture 10 ECE 598 Advanced Operating Systems Lecture 10 Vince Weaver http://www.eece.maine.edu/~vweaver vincent.weaver@maine.edu 17 February 2015 Announcements Homework #1 and #2 grades, HW#3 Coming soon 1 Various

More information

CIS Operating Systems Memory Management. Professor Qiang Zeng Fall 2017

CIS Operating Systems Memory Management. Professor Qiang Zeng Fall 2017 CIS 5512 - Operating Systems Memory Management Professor Qiang Zeng Fall 2017 Previous class Uniprocessor policies FCFS, Shortest Job First Round Robin Multilevel Feedback Queue Multiprocessor policies

More information

Improving memory management security for C and C++

Improving memory management security for C and C++ Improving memory management security for C and C++ Yves Younan, Wouter Joosen, Frank Piessens, Hans Van den Eynden DistriNet, Katholieke Universiteit Leuven, Belgium Abstract Memory managers are an important

More information

My malloc: mylloc and mhysa. Johan Montelius HT2016

My malloc: mylloc and mhysa. Johan Montelius HT2016 1 Introduction My malloc: mylloc and mhysa Johan Montelius HT2016 So this is an experiment where we will implement our own malloc. We will not implement the world s fastest allocator, but it will work

More information

DieHarder: Securing the Heap

DieHarder: Securing the Heap DieHarder: Securing the Heap Gene Novark Emery D. Berger Dept. of Computer Science University of Massachusetts Amherst Amherst, MA 01003 gnovark@cs.umass.edu, emery@cs.umass.edu Abstract Heap-based attacks

More information

Binghamton University Dynamic Memory Alloca/on

Binghamton University Dynamic Memory Alloca/on Dynamic Memory Alloca/on Slides credit: Presenta/on based on slides by Dave O halloran/csapp 1 Dynamic memory alloca/on Where is this important? Heap Kernel heap Physical memory allocator Problems are

More information

Dynamic Memory Allocation

Dynamic Memory Allocation Dynamic Memory Allocation CS61, Lecture 11 Prof. Stephen Chong October 6, 2011 Announcements 1/2 Reminder: No section on Monday Monday sections have been rescheduled See website for details Please attend

More information

Heap Management. Heap Allocation

Heap Management. Heap Allocation Heap Management Heap Allocation A very flexible storage allocation mechanism is heap allocation. Any number of data objects can be allocated and freed in a memory pool, called a heap. Heap allocation is

More information

Motivation for Dynamic Memory. Dynamic Memory Allocation. Stack Organization. Stack Discussion. Questions answered in this lecture:

Motivation for Dynamic Memory. Dynamic Memory Allocation. Stack Organization. Stack Discussion. Questions answered in this lecture: CS 537 Introduction to Operating Systems UNIVERSITY of WISCONSIN-MADISON Computer Sciences Department Dynamic Memory Allocation Questions answered in this lecture: When is a stack appropriate? When is

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c/su06 CS61C : Machine Structures Lecture #6: Memory Management CS 61C L06 Memory Management (1) 2006-07-05 Andy Carle Memory Management (1/2) Variable declaration allocates

More information

Cling: A Memory Allocator to Mitigate Dangling Pointers. Periklis Akritidis

Cling: A Memory Allocator to Mitigate Dangling Pointers. Periklis Akritidis Cling: A Memory Allocator to Mitigate Dangling Pointers Periklis Akritidis --2010 Use-after-free Vulnerabilities Accessing Memory Through Dangling Pointers Techniques : Heap Spraying, Feng Shui Manual

More information

DieHarder: Securing the Heap

DieHarder: Securing the Heap DieHarder: Securing the Heap Gene Novark Dept. of Computer Science University of Massachusetts Amherst gnovark@cs.umass.edu Abstract Heap-based attacks depend on a combination of memory management errors

More information

Dynamic Memory Alloca/on: Advanced Concepts

Dynamic Memory Alloca/on: Advanced Concepts Dynamic Memory Alloca/on: Advanced Concepts CS 485 Systems Programming Fall 2015 Instructor: James Griffioen Adapted from slides by R. Bryant and D. O Hallaron (hip://csapp.cs.cmu.edu/public/instructors.html)

More information

Memory Management. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory

Memory Management. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory Management q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory management Ideal memory for a programmer large, fast, nonvolatile and cheap not an option

More information

Causes of Software Failures

Causes of Software Failures Causes of Software Failures Hardware Faults Permanent faults, e.g., wear-and-tear component Transient faults, e.g., bit flips due to radiation Software Faults (Bugs) (40% failures) Nondeterministic bugs,

More information

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

! What is main memory? ! What is static and dynamic allocation? ! What is segmentation? Maria Hybinette, UGA. High Address (0x7fffffff) ! Memory Questions? CSCI [4 6]730 Operating Systems Main Memory! What is main memory?! How does multiple processes share memory space?» Key is how do they refer to memory addresses?! What is static and dynamic

More information

Optimizing Dynamic Memory Management

Optimizing Dynamic Memory Management Optimizing Dynamic Memory Management 1 Goals of this Lecture Help you learn about: Details of K&R heap mgr Heap mgr optimizations related to Assignment #5 Faster free() via doubly-linked list, redundant

More information

PROJECT 2 - MEMORY ALLOCATOR Computer Systems Principles. October 1, 2010

PROJECT 2 - MEMORY ALLOCATOR Computer Systems Principles. October 1, 2010 PROJECT 2 - MEMORY ALLOCATOR Computer Systems Principles Emery Berger Mark Corner October 1, 2010 1 Overview The purpose of this project is to acquaint you with how memory allocators provide virtual memory

More information

A.Arpaci-Dusseau. Mapping from logical address space to physical address space. CS 537:Operating Systems lecture12.fm.2

A.Arpaci-Dusseau. Mapping from logical address space to physical address space. CS 537:Operating Systems lecture12.fm.2 UNIVERSITY of WISCONSIN-MADISON Computer Sciences Department CS 537 A. Arpaci-Dusseau Intro to Operating Systems Spring 2000 Dynamic Memory Allocation Questions answered in these notes When is a stack

More information

The Art and Science of Memory Alloca4on

The Art and Science of Memory Alloca4on The Art and Science of Memory Alloca4on Don Porter 1 Binary Formats RCU Logical Diagram Memory Allocators Threads User System Calls Kernel Today s Lecture File System Networking Sync Memory Management

More information

Engine Support System. asyrani.com

Engine Support System. asyrani.com Engine Support System asyrani.com A game engine is a complex piece of software consisting of many interacting subsystems. When the engine first starts up, each subsystem must be configured and initialized

More information

Memory Allocation: Either Love It or Hate It (or just think it s okay)

Memory Allocation: Either Love It or Hate It (or just think it s okay) Memory Allocation: Either Love It or Hate It (or just think it s okay) Andrei Alexandrescu c 2007-2008 Andrei Alexandrescu 1 / 45 Memory Allocation Fundamental part of most systems since 1960 Frequently

More information

Memory Management Basics

Memory Management Basics Memory Management Basics 1 Basic Memory Management Concepts Address spaces! Physical address space The address space supported by the hardware Ø Starting at address 0, going to address MAX sys! MAX sys!!

More information

Run-Time Environments/Garbage Collection

Run-Time Environments/Garbage Collection Run-Time Environments/Garbage Collection Department of Computer Science, Faculty of ICT January 5, 2014 Introduction Compilers need to be aware of the run-time environment in which their compiled programs

More information

Preview. Memory Management

Preview. Memory Management Preview Memory Management With Mono-Process With Multi-Processes Multi-process with Fixed Partitions Modeling Multiprogramming Swapping Memory Management with Bitmaps Memory Management with Free-List Virtual

More information

Recitation #11 Malloc Lab. November 7th, 2017

Recitation #11 Malloc Lab. November 7th, 2017 18-600 Recitation #11 Malloc Lab November 7th, 2017 1 2 Important Notes about Malloc Lab Malloc lab has been updated from previous years Supports a full 64 bit address space rather than 32 bit Encourages

More information

Exterminator: Automatically Correcting Memory Errors with High Probability By Gene Novark, Emery D. Berger, and Benjamin G. Zorn

Exterminator: Automatically Correcting Memory Errors with High Probability By Gene Novark, Emery D. Berger, and Benjamin G. Zorn Exterminator: Automatically Correcting Memory Errors with High Probability By Gene Novark, Emery D. Berger, and Benjamin G. Zorn doi:0.45/409360.40938 Abstract Programs written in C and C++ are susceptible

More information

Review! Lecture 5 C Memory Management !

Review! Lecture 5 C Memory Management ! CS61C L05 C Memory Management (1)! inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management 2010-06-28!!! Instructor Paul Pearce! Symmetric multiprocessor! MIPS support for

More information

CS61C : Machine Structures

CS61C : Machine Structures inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 5 C Memory Management 2010-06-28!!! Instructor Paul Pearce! Symmetric multiprocessor! MIPS support for Android MIPS Technologies (founded

More information

CS 241 Honors Memory

CS 241 Honors Memory CS 241 Honors Memory Ben Kurtovic Atul Sandur Bhuvan Venkatesh Brian Zhou Kevin Hong University of Illinois Urbana Champaign February 20, 2018 CS 241 Course Staff (UIUC) Memory February 20, 2018 1 / 35

More information

Run-time Environments -Part 3

Run-time Environments -Part 3 Run-time Environments -Part 3 Y.N. Srikant Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Compiler Design Outline of the Lecture Part 3 What is run-time support?

More information

Dynamic Memory Alloca/on: Advanced Concepts

Dynamic Memory Alloca/on: Advanced Concepts Dynamic Memory Alloca/on: Advanced Concepts 15-213: Introduc0on to Computer Systems 18 th Lecture, Oct. 26, 2010 Instructors: Randy Bryant and Dave O Hallaron 1 Today Explicit free lists Segregated free

More information

Lecture 2: Memory in C

Lecture 2: Memory in C CIS 330:! / / / / (_) / / / / _/_/ / / / / / \/ / /_/ / `/ \/ / / / _/_// / / / / /_ / /_/ / / / / /> < / /_/ / / / / /_/ / / / /_/ / / / / / \ /_/ /_/_/_/ _ \,_/_/ /_/\,_/ \ /_/ \ //_/ /_/ Lecture 2:

More information

Dynamic Memory Allocation I Nov 5, 2002

Dynamic Memory Allocation I Nov 5, 2002 15-213 The course that gives CMU its Zip! Dynamic Memory Allocation I Nov 5, 2002 Topics Simple explicit allocators Data structures Mechanisms Policies class21.ppt Harsh Reality Memory is not unbounded

More information

Dynamic Memory Allocation. Gerson Robboy Portland State University. class20.ppt

Dynamic Memory Allocation. Gerson Robboy Portland State University. class20.ppt Dynamic Memory Allocation Gerson Robboy Portland State University class20.ppt Harsh Reality Memory is not unbounded It must be allocated and managed Many applications are memory dominated Especially those

More information

Lectures 13 & 14. memory management

Lectures 13 & 14. memory management Lectures 13 & 14 Linked lists and memory management Courtesy of Prof. Garcia (UCB) CS61C L05 Introduction to C (pt 3) (1) Review Pointers and arrays are virtually same C knows how to increment pointers

More information

Dynamic Memory Allocation. Zhaoguo Wang

Dynamic Memory Allocation. Zhaoguo Wang Dynamic Memory Allocation Zhaoguo Wang Why dynamic memory allocation? Do not know the size until the program runs (at runtime). #define MAXN 15213 int array[maxn]; int main(void) { int i, n; scanf("%d",

More information

Memory Management. To do. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory

Memory Management. To do. q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory Management To do q Basic memory management q Swapping q Kernel memory allocation q Next Time: Virtual memory Memory management Ideal memory for a programmer large, fast, nonvolatile and cheap not

More information

HW 3: Malloc CS 162. Due: Monday, March 28, 2016

HW 3: Malloc CS 162. Due: Monday, March 28, 2016 CS 162 Due: Monday, March 28, 2016 1 Introduction Your task in this assignment is to implement your own memory allocator from scratch. This will expose you to POSIX interfaces, force you to reason about

More information

Dynamic Memory Allocation: Basic Concepts

Dynamic Memory Allocation: Basic Concepts Dynamic Memory Allocation: Basic Concepts 15-213: Introduction to Computer Systems 19 th Lecture, March 30, 2017 Instructor: Franz Franchetti & Seth Copen Goldstein 1 Today Basic concepts Implicit free

More information

Recitation #12 Malloc Lab - Part 2. November 14th, 2017

Recitation #12 Malloc Lab - Part 2. November 14th, 2017 18-600 Recitation #12 Malloc Lab - Part 2 November 14th, 2017 1 2 REMINDER Malloc Lab checkpoint is due on 11/17 This is Friday (instead of the usual Thursday deadline) No late days available Final submission

More information

ECE 598 Advanced Operating Systems Lecture 12

ECE 598 Advanced Operating Systems Lecture 12 ECE 598 Advanced Operating Systems Lecture 12 Vince Weaver http://web.eece.maine.edu/~vweaver vincent.weaver@maine.edu 1 March 2018 Announcements Next homework will be due after break. Midterm next Thursday

More information

Dynamic Memory Allocation I

Dynamic Memory Allocation I Dynamic Memory Allocation I William J. Taffe Plymouth State University Using the Slides of Randall E. Bryant Carnegie Mellon University Topics Simple explicit allocators Data structures Mechanisms Policies

More information

Project 2. Assigned: 02/20/2015 Due Date: 03/06/2015

Project 2. Assigned: 02/20/2015 Due Date: 03/06/2015 CSE 539 Project 2 Assigned: 02/20/2015 Due Date: 03/06/2015 Building a thread-safe memory allocator In this project, you will implement a thread-safe malloc library. The provided codebase includes a simple

More information

Processes, Address Spaces, and Memory Management. CS449 Spring 2016

Processes, Address Spaces, and Memory Management. CS449 Spring 2016 Processes, Address Spaces, and Memory Management CS449 Spring 2016 Process A running program and its associated data Process s Address Space 0x7fffffff Stack Data (Heap) Data (Heap) Globals Text (Code)

More information

Today. Dynamic Memory Allocation: Basic Concepts. Dynamic Memory Allocation. Dynamic Memory Allocation. malloc Example. The malloc Package

Today. Dynamic Memory Allocation: Basic Concepts. Dynamic Memory Allocation. Dynamic Memory Allocation. malloc Example. The malloc Package Today Dynamic Memory Allocation: Basic Concepts Basic concepts Performance concerns Approach 1: implicit free lists CSci 01: Machine Architecture and Organization October 17th-nd, 018 Your instructor:

More information

CSCI-UA /2. Computer Systems Organization Lecture 19: Dynamic Memory Allocation: Basics

CSCI-UA /2. Computer Systems Organization Lecture 19: Dynamic Memory Allocation: Basics Slides adapted (and slightly modified) from: Clark Barrett Jinyang Li Randy Bryant Dave O Hallaron CSCI-UA.0201-001/2 Computer Systems Organization Lecture 19: Dynamic Memory Allocation: Basics Mohamed

More information

Dynamic Memory Allocation. Basic Concepts. Computer Organization 4/3/2012. CSC252 - Spring The malloc Package. Kai Shen

Dynamic Memory Allocation. Basic Concepts. Computer Organization 4/3/2012. CSC252 - Spring The malloc Package. Kai Shen Dynamic Memory Allocation: Basic Concepts Kai Shen Dynamic Memory Allocation Programmers use dynamic memory allocators (such as malloc) to acquire memory at run time. For data structures whose size is

More information

Process s Address Space. Dynamic Memory. Backing the Heap. Dynamic memory allocation 3/29/2013. When a process starts the heap is empty

Process s Address Space. Dynamic Memory. Backing the Heap. Dynamic memory allocation 3/29/2013. When a process starts the heap is empty /9/01 Process s Address Space Dynamic Memory 0x7fffffff Stack Data (Heap) Data (Heap) 0 Text (Code) Backing the Heap When a process starts the heap is empty The process is responsible for requesting memory

More information

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

Memory: Overview. CS439: Principles of Computer Systems February 26, 2018 Memory: Overview CS439: Principles of Computer Systems February 26, 2018 Where We Are In the Course Just finished: Processes & Threads CPU Scheduling Synchronization Next: Memory Management Virtual Memory

More information

VMem. By Stewart Lynch.

VMem. By Stewart Lynch. VMem By Stewart Lynch. 1 Contents Introduction... 3 Overview... 4 Getting started... 6 Fragmentation... 7 Virtual Regions... 8 The FSA... 9 Biasing... 10 The Coalesce allocator... 11 Skewing indices...

More information

Memory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008

Memory Allocation. Static Allocation. Dynamic Allocation. Dynamic Storage Allocation. CS 414: Operating Systems Spring 2008 Dynamic Storage Allocation CS 44: Operating Systems Spring 2 Memory Allocation Static Allocation (fixed in size) Sometimes we create data structures that are fixed and don t need to grow or shrink. Dynamic

More information

Memory Management. Didactic Module 14 Programming Languages - EEL670 1

Memory Management. Didactic Module 14 Programming Languages - EEL670 1 Memory Management Didactic Module 14 Programming Languages - EEL670 1 Dynamic Memory Allocation Lots of things need memory at runtime: Activation records Objects Explicit allocations: new, malloc, etc.

More information

Memory Management. Chapter Fourteen Modern Programming Languages, 2nd ed. 1

Memory Management. Chapter Fourteen Modern Programming Languages, 2nd ed. 1 Memory Management Chapter Fourteen Modern Programming Languages, 2nd ed. 1 Dynamic Memory Allocation Lots of things need memory at runtime: Activation records Objects Explicit allocations: new, malloc,

More information

Administrivia. Project 2 due Friday at noon Midterm Monday. Midterm review section Friday Section for Project 3 next Friday

Administrivia. Project 2 due Friday at noon Midterm Monday. Midterm review section Friday Section for Project 3 next Friday Administrivia Project 2 due Friday at noon Midterm Monday - Open book, open notes (but not open notebook computer) - Covers first 9 lectures of course (including today) Midterm review section Friday Section

More information

Exploiting a Coalmine Abusing Complex Bugs in Webkit's RenderArena

Exploiting a Coalmine Abusing Complex Bugs in Webkit's RenderArena Exploiting a Coalmine Abusing Complex Bugs in Webkit's RenderArena Georg Wicherski Senior Security Researcher Wednesday, April 11, 2012 WebKit Based on KHTML (KDE) Apple forked in 2001 Chrome, (Mobile)

More information

Software Fault Tolerance for Type-unsafe Languages

Software Fault Tolerance for Type-unsafe Languages Software Fault Tolerance for Type-unsafe Languages C/C++ Ben Zorn Microsoft Research In collaboration with Emery Berger, Univ. of Massachusetts Karthik Pattabiraman, Univ. of Illinois, UC Vinod Grover,

More information

Administrivia. Dynamic memory allocation. More abstractly. Why is it hard? What is fragmentation really? Important decisions

Administrivia. Dynamic memory allocation. More abstractly. Why is it hard? What is fragmentation really? Important decisions Administrivia Project 2 due right now - As before, free extension if you are here - For SCPD students, put this at top of design doc: caf656 - For non-scpd students, put this: Midterm Tuesday - Open book,

More information

Runtime. The optimized program is ready to run What sorts of facilities are available at runtime

Runtime. The optimized program is ready to run What sorts of facilities are available at runtime Runtime The optimized program is ready to run What sorts of facilities are available at runtime Compiler Passes Analysis of input program (front-end) character stream Lexical Analysis token stream Syntactic

More information

Performance of Non-Moving Garbage Collectors. Hans-J. Boehm HP Labs

Performance of Non-Moving Garbage Collectors. Hans-J. Boehm HP Labs Performance of Non-Moving Garbage Collectors Hans-J. Boehm HP Labs Why Use (Tracing) Garbage Collection to Reclaim Program Memory? Increasingly common Java, C#, Scheme, Python, ML,... gcc, w3m, emacs,

More information

Today. Dynamic Memory Allocation: Basic Concepts. Dynamic Memory Allocation. Dynamic Memory Allocation. malloc Example. The malloc Package

Today. Dynamic Memory Allocation: Basic Concepts. Dynamic Memory Allocation. Dynamic Memory Allocation. malloc Example. The malloc Package Today Dynamic Memory Allocation: Basic Concepts Basic concepts Performance concerns Approach 1: implicit free lists CSci 01: Machine Architecture and Organization Lecture #9, April th, 016 Your instructor:

More information

Deallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection

Deallocation Mechanisms. User-controlled Deallocation. Automatic Garbage Collection Deallocation Mechanisms User-controlled Deallocation Allocating heap space is fairly easy. But how do we deallocate heap memory no longer in use? Sometimes we may never need to deallocate! If heaps objects

More information

Dynamic Memory Allocation: Basic Concepts

Dynamic Memory Allocation: Basic Concepts Dynamic Memory Allocation: Basic Concepts CSE 238/2038/2138: Systems Programming Instructor: Fatma CORUT ERGİN Slides adapted from Bryant & O Hallaron s slides 1 Today Basic concepts Implicit free lists

More information

Memory Management william stallings, maurizio pizzonia - sistemi operativi

Memory Management william stallings, maurizio pizzonia - sistemi operativi Memory Management 1 summary goals and requirements techniques that do not involve virtual memory 2 memory management tracking used and free memory primitives allocation of a certain amount of memory de-allocation

More information

Runtime Defenses against Memory Corruption

Runtime Defenses against Memory Corruption CS 380S Runtime Defenses against Memory Corruption Vitaly Shmatikov slide 1 Reading Assignment Cowan et al. Buffer overflows: Attacks and defenses for the vulnerability of the decade (DISCEX 2000). Avijit,

More information

Dynamic Memory Management

Dynamic Memory Management Dynamic Memory Management 1 Goals of this Lecture Help you learn about: Dynamic memory management techniques Garbage collection by the run-time system (Java) Manual deallocation by the programmer (C, C++)

More information

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11

CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Introduction to Programming Languages and Compilers Charles N. Fischer Lecture 11 CS 536 Spring 2015 1 Handling Overloaded Declarations Two approaches are popular: 1. Create a single symbol table

More information

6.172 Performance Engineering of Software Systems Spring Lecture 9. P after. Figure 1: A diagram of the stack (Image by MIT OpenCourseWare.

6.172 Performance Engineering of Software Systems Spring Lecture 9. P after. Figure 1: A diagram of the stack (Image by MIT OpenCourseWare. 6.172 Performance Engineering of Software Systems Spring 2009 Lecture 9 MIT OpenCourseWare Dynamic Storage Allocation Stack allocation: LIFO (last-in-first-out) Array and pointer A used unused P before

More information

Lecture 07 Heap control data. Stephen Checkoway University of Illinois at Chicago

Lecture 07 Heap control data. Stephen Checkoway University of Illinois at Chicago Lecture 07 Heap control data Stephen Checkoway University of Illinois at Chicago Layout of program memory Heap is managed by malloc - Many different malloc implementations - glibc uses a modified version

More information

CIS Operating Systems Non-contiguous Memory Allocation. Professor Qiang Zeng Spring 2018

CIS Operating Systems Non-contiguous Memory Allocation. Professor Qiang Zeng Spring 2018 CIS 3207 - Operating Systems Non-contiguous Memory Allocation Professor Qiang Zeng Spring 2018 Big picture Fixed partitions Dynamic partitions Buddy system Contiguous allocation: Each process occupies

More information

Introduction to Computer Systems /18 243, fall th Lecture, Oct. 22 th

Introduction to Computer Systems /18 243, fall th Lecture, Oct. 22 th Introduction to Computer Systems 15 213/18 243, fall 2009 16 th Lecture, Oct. 22 th Instructors: Gregory Kesden and Markus Püschel Today Dynamic memory allocation Process Memory Image %esp kernel virtual

More information

Shared snapshots. 1 Abstract. 2 Introduction. Mikulas Patocka Red Hat Czech, s.r.o. Purkynova , Brno Czech Republic

Shared snapshots. 1 Abstract. 2 Introduction. Mikulas Patocka Red Hat Czech, s.r.o. Purkynova , Brno Czech Republic Shared snapshots Mikulas Patocka Red Hat Czech, s.r.o. Purkynova 99 612 45, Brno Czech Republic mpatocka@redhat.com 1 Abstract Shared snapshots enable the administrator to take many snapshots of the same

More information

On-Demand Proactive Defense against Memory Vulnerabilities

On-Demand Proactive Defense against Memory Vulnerabilities On-Demand Proactive Defense against Memory Vulnerabilities Gang Chen, Hai Jin, Deqing Zou, and Weiqi Dai Services Computing Technology and System Lab Cluster and Grid Computing Lab School of Computer Science

More information

Last week. Data on the stack is allocated automatically when we do a function call, and removed when we return

Last week. Data on the stack is allocated automatically when we do a function call, and removed when we return Last week Data can be allocated on the stack or on the heap (aka dynamic memory) Data on the stack is allocated automatically when we do a function call, and removed when we return f() {... int table[len];...

More information

Requirements, Partitioning, paging, and segmentation

Requirements, Partitioning, paging, and segmentation Requirements, Partitioning, paging, and segmentation Main Memory: The Big Picture kernel memory proc struct kernel stack/u area Stack kernel stack/u area Stack kernel stack/u area Stack Data Text (shared)

More information

Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory.

Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory. Memory Management Page 1 Memory Management Wednesday, October 27, 2004 4:54 AM Memory Management: The process by which memory is shared, allocated, and released. Not applicable to cache memory. Two kinds

More information

Main Points. Address Transla+on Concept. Flexible Address Transla+on. Efficient Address Transla+on

Main Points. Address Transla+on Concept. Flexible Address Transla+on. Efficient Address Transla+on Address Transla+on Main Points Address Transla+on Concept How do we convert a virtual address to a physical address? Flexible Address Transla+on Segmenta+on Paging Mul+level transla+on Efficient Address

More information

Run-time Environments - 3

Run-time Environments - 3 Run-time Environments - 3 Y.N. Srikant Computer Science and Automation Indian Institute of Science Bangalore 560 012 NPTEL Course on Principles of Compiler Design Outline of the Lecture n What is run-time

More information

Memory Management. Dr. Yingwu Zhu

Memory Management. Dr. Yingwu Zhu Memory Management Dr. Yingwu Zhu Big picture Main memory is a resource A process/thread is being executing, the instructions & data must be in memory Assumption: Main memory is infinite Allocation of memory

More information

The Art and Science of Memory Allocation

The Art and Science of Memory Allocation Logical Diagram The Art and Science of Memory Allocation Don Porter CSE 506 Binary Formats RCU Memory Management Memory Allocators CPU Scheduler User System Calls Kernel Today s Lecture File System Networking

More information

COSC345 Software Engineering. The Heap And Dynamic Memory Allocation

COSC345 Software Engineering. The Heap And Dynamic Memory Allocation COSC345 Software Engineering The Heap And Dynamic Memory Allocation Outline Revision The programmer s view of memory Simple array-based memory allocation C memory allocation routines Virtual memory Swapping

More information

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

Memory Management. Reading: Silberschatz chapter 9 Reading: Stallings. chapter 7 EEL 358 Memory Management Reading: Silberschatz chapter 9 Reading: Stallings chapter 7 1 Outline Background Issues in Memory Management Logical Vs Physical address, MMU Dynamic Loading Memory Partitioning Placement

More information

Baggy bounds checking. Periklis Akri5dis, Manuel Costa, Miguel Castro, Steven Hand

Baggy bounds checking. Periklis Akri5dis, Manuel Costa, Miguel Castro, Steven Hand Baggy bounds checking Periklis Akri5dis, Manuel Costa, Miguel Castro, Steven Hand C/C++ programs are vulnerable Lots of exis5ng code in C and C++ More being wrieen every day C/C++ programs are prone to

More information

CSE506: Operating Systems CSE 506: Operating Systems

CSE506: Operating Systems CSE 506: Operating Systems CSE 506: Operating Systems Memory Management Review We ve seen how paging works on x86 Maps virtual addresses to physical pages These are the low-level hardware tools This lecture: build up to higher-level

More information