Topics Not Covered. Debugging (includes kmemcheck, kmemleak) Statistics Tracing UP UMA CPU and Memory Hotplug Lockdep Failslab

Size: px
Start display at page:

Download "Topics Not Covered. Debugging (includes kmemcheck, kmemleak) Statistics Tracing UP UMA CPU and Memory Hotplug Lockdep Failslab"

Transcription

1 Topics Not Covered Debugging (includes kmemcheck, kmemleak) Statistics Tracing UP UMA CPU and Memory Hotplug Lockdep Failslab

2 SLAB Allocates from per-cpu array with interrupts disabled Fallsback to nodelist's shared array (shared by all local nodes) Otherwise, search node's partial list with centralized locking Periodically drains free objects back to slabs and free slabs back to page allocator

3 SLAB Fallsback to allocating new slab from page allocator Specializes in low-order slab pages, easy to allocate Scales exponentially with many cpus and nodes with alien caches Per-object mempolicy and cpuset support

4 SLUB Unqueued slab allocator, developed for large systems Performance improves with higher order slabs Relies heavily on cmpxchg_double(), limited hardware support Fallsback to disabling interrupts in the fastpaths

5 SLUB Recently introduced per-cpu partial lists Fallsback to per-node partial lists with centralized locking Merges caches with the same characteristics together No per-object mempolicy or cpuset support

6 Bucket sizes... kmalloc 256 kmalloc 512 kmalloc 1024 kmalloc

7 struct kmem_cache_objects Represents a list of free objects. unsigned long void void avail **head **tail

8 struct kmem_cache_slabs Represents a local, remote, and a list of partial slabs. struct kmem_cache_objects struct kmem_cache_objects spinlock_t bool unsigned long struct list_head struct kmem_cache remote_ lock remote_free_check nr_partial partial *cache

9 struct kmem_cache_cpu Represents a local cpu slab and list of objects freed remotely. struct kmem_cache_slabs struct kmem_cache_objects remote_objects struct kmem_cache_slabs *remote_slab_list

10 struct kmem_cache_node Represents a local, remote, and a list of partial slabs protected by a spinlock. struct kmem_cache_slabs spinlock_t slab_list

11 SLAM: A Mutable Slab Allocation System The Allocation Fastpath...

12 cpu void void **head **head

13 kmalloc(256) 256 bytes cpu void void **head **head

14 kmalloc(256, SLAB_TEMPORARY) 256 bytes cpu 512 bytes avail avail == 00 void void **head **head

15 cpu remote_free_check remote_free_check == true true remote_ remote_ avail avail >> 00 void void **head **head remote_free_check remote_free_check == false false

16 cpu nr_partial nr_partial >> 00 partial partial avail avail >> 00 void void **head **head nr_partial-nr_partial- head head == partial->head partial->head

17 And the Slowpath...

18 Page allocator cpu Local Page partial partial nr_partials++ nr_partials++ avail avail == 00 if GFP_WAIT

19 Page allocator cpu Remote Page partial partial nr_partials nr_partials == 00 node slab_list slab_list if GFP_WAIT avail avail == 00

20 node slab_list slab_list void void **head **head

21 node slab_list slab_list remote_free_check remote_free_check == true true remote_ remote_ avail avail >> 00 void void **head **head remote_free_check remote_free_check == false false

22 node slab_list slab_list nr_partial nr_partial >> 00 partial partial avail avail >> 00 void void **head **head nr_partial-nr_partial- head head == partial->head partial->head

23 Page allocator node slab_list slab_list Remote Page partial partial nr_partials nr_partials == 00 avail avail == 00

24 The Free Fastpath...

25 cpu obj obj ++ offset offset == head head head head == obj obj avail++ avail++ LIFO

26 void **head void **tail obj obj obj obj obj obj obj obj obj obj obj batchcount

27 void **head void **tail obj obj obj obj obj obj obj batchcount obj obj obj obj Local Page inuse-- Local Page inuse - 3

28 void **head void **tail obj obj obj obj obj obj obj batchcount obj obj obj obj Local Page Local Page inuse = objects + 1 nr_partial++ nr_partial++ partial partial

29 void **head void **tail obj obj obj obj obj obj obj batchcount obj obj obj obj Local Page Local Page inuse = 0 nr_partial-nr_partial-partial partial Page allocator

30 void **head void **tail obj obj obj obj obj obj obj batchcount obj obj obj obj Local Page Remote Page inuse = 0 nr_partial nr_partial == 00 partial partial Page allocator

31 cpu *remote_slab_list *remote_slab_list remote_objects remote_objects obj Remote Page ->list obj obj ++ offset offset == head head head head == obj obj avail++ avail++ LIFO

32 cpu *remote_slab_list *remote_slab_list remote_objects remote_objects obj void void **head **head Remote Page ->list lock lock lock remote_ remote_ remote_free_check remote_free_check == true true

33 cpu *remote_slab_list *remote_slab_list remote_objects remote_objects obj head head == NULL NULL avail avail == 00 Remote Page ->list

Status of the Linux Slab Allocators

Status of the Linux Slab Allocators Status of the Linux Slab Allocators David Rientjes rientjes@google.com SCALE 9X February 26, 2011 Los Angeles, California 1 of 13 Status of the Linux Slab Allocators As of 2.6.37.1, the latest stable release

More information

Operating Systems. 11. Memory Management Part 3 Kernel Memory Allocation. Paul Krzyzanowski Rutgers University Spring 2015

Operating Systems. 11. Memory Management Part 3 Kernel Memory Allocation. Paul Krzyzanowski Rutgers University Spring 2015 Operating Systems 11. Memory Management Part 3 Kernel Memory Allocation Paul Krzyzanowski Rutgers University Spring 2015 1 Kernel memory The kernel also needs memory User code calls malloc kernel functions

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

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

Linux Memory Analysis with Volatility. Andrew Case Digital Forensics Solutions

Linux Memory Analysis with Volatility. Andrew Case Digital Forensics Solutions Linux Memory Analysis with Volatility Andrew Case Digital Forensics Solutions Purpose of the Talk To highlight the Linux analysis capabilities integrated into the Volatility framework within the last year

More information

Memory Allocators. Pradipta De

Memory Allocators. Pradipta De Memory Allocators Pradipta De pradipta.de@sunykorea.ac.kr Today s Topic How does memory allocators work? Challenges and techniques for memory allocation (Physical) Memory allocation techniques in Linux

More information

CROWDMARK. Examination Midterm. Spring 2017 CS 350. Closed Book. Page 1 of 30. University of Waterloo CS350 Midterm Examination.

CROWDMARK. Examination Midterm. Spring 2017 CS 350. Closed Book. Page 1 of 30. University of Waterloo CS350 Midterm Examination. Times: Thursday 2017-06-22 at 19:00 to 20:50 (7 to 8:50PM) Duration: 1 hour 50 minutes (110 minutes) Exam ID: 3520593 Please print in pen: Waterloo Student ID Number: WatIAM/Quest Login Userid: Sections:

More information

BLOCK DEVICES. Philipp Dollst

BLOCK DEVICES. Philipp Dollst BLOCK DEVICES Philipp Dollst BASICS A block driver provides access to devices that transfer randomly accessible data in fixed-size blocks disk drives, primarily. The Linux kernel sees block devices a being

More information

ECE 2035 A Programming HW/SW Systems Spring problems, 5 pages Exam Three 13 April Your Name (please print clearly)

ECE 2035 A Programming HW/SW Systems Spring problems, 5 pages Exam Three 13 April Your Name (please print clearly) Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand; do not leave your seat. Please work the exam in pencil and do not separate

More information

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 18 November 2015

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 18 November 2015 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

LOCKDEP, AN INSIDE OUT PERSPECTIVE. Nahim El

LOCKDEP, AN INSIDE OUT PERSPECTIVE. Nahim El LOCKDEP, AN INSIDE OUT PERSPECTIVE Nahim El Atmani @brokenpi_pe P1 R1 R1 P2 THE BIG PICTURE The need for a proof mechanism PREVIOUSLY ON LINUX SMP Synchronization needed giant-lock (a.k.a big-lock, kernel-lock

More information

A Heap of Trouble Exploiting the Linux Kernel SLOB Allocator

A Heap of Trouble Exploiting the Linux Kernel SLOB Allocator A Heap of Trouble Exploiting the Linux Kernel SLOB Allocator Dan Rosenberg 1 Who am I? Security consultant and vulnerability researcher at VSR in Boston App/net pentesting, code review, etc. Published

More information

CPSC 261 Midterm 2 Thursday March 17 th, 2016

CPSC 261 Midterm 2 Thursday March 17 th, 2016 CPSC 261 Midterm 2 Thursday March 17 th, 2016 [9] 1. Multiple choices [5] (a) Among the following terms, circle all of those that refer to a responsibility of a thread scheduler: Solution : Avoiding deadlocks

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

Programming in C. Lecture 5: Aliasing, Graphs, and Deallocation. Dr Neel Krishnaswami. Michaelmas Term University of Cambridge

Programming in C. Lecture 5: Aliasing, Graphs, and Deallocation. Dr Neel Krishnaswami. Michaelmas Term University of Cambridge Programming in C Lecture 5: Aliasing, Graphs, and Deallocation Dr Neel Krishnaswami University of Cambridge Michaelmas Term 2017-2018 1 / 20 The C API for Dynamic Memory Allocation void *malloc(size_t

More information

ECE 2035 Programming HW/SW Systems Fall problems, 4 pages Exam Three 14 November Your Name (please PRINT clearly) Signed.

ECE 2035 Programming HW/SW Systems Fall problems, 4 pages Exam Three 14 November Your Name (please PRINT clearly) Signed. Your Name (please PRINT clearly) Your Student Number (9 digit) This exam will be conducted according to the Georgia Tech Honor Code. I pledge to neither give nor receive unauthorized assistance on this

More information

Understand Computer Storage and Data Types

Understand Computer Storage and Data Types Understand Computer Storage and Data Types Lesson Overview Students will understand computer storage and data types. In this lesson, you will learn: How a computer stores programs and instructions in computer

More information

250P: Computer Systems Architecture. Lecture 14: Synchronization. Anton Burtsev March, 2019

250P: Computer Systems Architecture. Lecture 14: Synchronization. Anton Burtsev March, 2019 250P: Computer Systems Architecture Lecture 14: Synchronization Anton Burtsev March, 2019 Coherence and Synchronization Topics: synchronization primitives (Sections 5.4-5.5) 2 Constructing Locks Applications

More information

2. List Implementations (a) Class Templates (b) Contiguous (c) Simply Linked (d) Simply Linked with Position Pointer (e) Doubly Linked

2. List Implementations (a) Class Templates (b) Contiguous (c) Simply Linked (d) Simply Linked with Position Pointer (e) Doubly Linked Chapter 6 LISTS AND STRINGS 1. List Specifications 2. List Implementations (a) Class Templates (b) Contiguous (c) Simply Linked (d) Simply Linked with Position Pointer (e) Doubly Linked 3. Strings 4. Application:

More information

Table of Contents. Preface... xi

Table of Contents. Preface... xi ,ldr3toc.fm.4587 Page v Thursday, January 20, 2005 9:30 AM Table of Contents Preface................................................................. xi 1. An Introduction to Device Drivers.....................................

More information

Radix Tree, IDR APIs and their test suite. Rehas Sachdeva & Sandhya Bankar

Radix Tree, IDR APIs and their test suite. Rehas Sachdeva & Sandhya Bankar Radix Tree, IDR APIs and their test suite Rehas Sachdeva & Sandhya Bankar Introduction Outreachy intern Dec 2016-March 2017 for Linux kernel, mentored by Rik van Riel and Matthew Wilcox. 4th year undergrad

More information

An Evolutionary Study of Linux Memory Management for Fun and Profit

An Evolutionary Study of Linux Memory Management for Fun and Profit An Evolutionary Study of Linux Memory Management for Fun and Profit Jian Huang Moinuddin K. Qureshi Karsten Schwan Virtual Memory: A Long History Physical Hardware DRAM Disk 2 Virtual Memory: A Long History

More information

Managing Lustre TM Data Striping

Managing Lustre TM Data Striping Managing Lustre TM Data Striping Metadata Server Extended Attributes and Lustre Striping APIs in a Lustre File System Sun Microsystems, Inc. February 4, 2008 Table of Contents Overview...3 Data Striping

More information

Linux multi-core scalability

Linux multi-core scalability Linux multi-core scalability Oct 2009 Andi Kleen Intel Corporation andi@firstfloor.org Overview Scalability theory Linux history Some common scalability trouble-spots Application workarounds Motivation

More information

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 19 November 2014

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 19 November 2014 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

Scalable Locking. Adam Belay

Scalable Locking. Adam Belay Scalable Locking Adam Belay Problem: Locks can ruin performance 12 finds/sec 9 6 Locking overhead dominates 3 0 0 6 12 18 24 30 36 42 48 Cores Problem: Locks can ruin performance the locks

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

COL331/COL633 Major Exam Operating Systems Sem II, Answer all 14 questions (12 pages) Max. Marks: 41

COL331/COL633 Major Exam Operating Systems Sem II, Answer all 14 questions (12 pages) Max. Marks: 41 1 COL331/COL633 Major Exam Operating Systems Sem II, 2016-17 Answer all 14 questions (12 pages) Max. Marks: 41 For True/False questions, please provide a brief justification (1-2 sentences) for your answer.

More information

11 'e' 'x' 'e' 'm' 'p' 'l' 'i' 'f' 'i' 'e' 'd' bool equal(const unsigned char pstr[], const char *cstr) {

11 'e' 'x' 'e' 'm' 'p' 'l' 'i' 'f' 'i' 'e' 'd' bool equal(const unsigned char pstr[], const char *cstr) { This document contains the questions and solutions to the CS107 midterm given in Spring 2016 by instructors Julie Zelenski and Michael Chang. This was an 80-minute exam. Midterm questions Problem 1: C-strings

More information

Cache and Virtual Memory Simulations

Cache and Virtual Memory Simulations Cache and Virtual Memory Simulations Does it really matter if you pull a USB out before it safely ejects? Data structure: Cache struct Cache { }; Set *sets; int set_count; int line_count; int block_size;

More information

Toolbox Kernel Korner

Toolbox Kernel Korner Toolbox Kernel Korner In this article, Robert offers a refresher on kernel memory allocation and how it has changed for the 2. by Robert Love Unfortunately for kernel developers, allocating memory in the

More information

CISC 360. Cache Memories Exercises Dec 3, 2009

CISC 360. Cache Memories Exercises Dec 3, 2009 Topics ν CISC 36 Cache Memories Exercises Dec 3, 29 Review of cache memory mapping Cache Memories Cache memories are small, fast SRAM-based memories managed automatically in hardware. ν Hold frequently

More information

Advanced Topic: Efficient Synchronization

Advanced Topic: Efficient Synchronization Advanced Topic: Efficient Synchronization Multi-Object Programs What happens when we try to synchronize across multiple objects in a large program? Each object with its own lock, condition variables Is

More information

CSE 120 Principles of Operating Systems

CSE 120 Principles of Operating Systems CSE 120 Principles of Operating Systems Spring 2018 Lecture 15: Multicore Geoffrey M. Voelker Multicore Operating Systems We have generally discussed operating systems concepts independent of the number

More information

Kernel Synchronization I. Changwoo Min

Kernel Synchronization I. Changwoo Min 1 Kernel Synchronization I Changwoo Min 2 Summary of last lectures Tools: building, exploring, and debugging Linux kernel Core kernel infrastructure syscall, module, kernel data structures Process management

More information

Read-Copy Update Ottawa Linux Symposium Paul E. McKenney et al.

Read-Copy Update Ottawa Linux Symposium Paul E. McKenney et al. Read-Copy Update Paul E. McKenney, IBM Beaverton Jonathan Appavoo, U. of Toronto Andi Kleen, SuSE Orran Krieger, IBM T.J. Watson Rusty Russell, RustCorp Dipankar Sarma, IBM India Software Lab Maneesh Soni,

More information

ETFS Design and Implementation Notes#

ETFS Design and Implementation Notes# ETFS Design and Implementation Notes# One of the first questions that comes to mind when learning a new file system, is "What is the on disk file system structure?" ETFS does not have one. Well, not a

More information

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 28 November 2012

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 28 November 2012 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

Part 1: Concepts and Hardware- Based Approaches

Part 1: Concepts and Hardware- Based Approaches Part 1: Concepts and Hardware- Based Approaches CS5204-Operating Systems Introduction Provide support for concurrent activity using transactionstyle semantics without explicit locking Avoids problems with

More information

- Knowledge of basic computer architecture and organization, ECE 445

- Knowledge of basic computer architecture and organization, ECE 445 ECE 446: Device Driver Development Fall 2014 Wednesdays 7:20-10 PM Office hours: Wednesdays 6:15-7:15 PM or by appointment, Adjunct office Engineering Building room 3707/3708 Last updated: 8/24/14 Instructor:

More information

NUMA and VM Scalability

NUMA and VM Scalability NUMA and VM Scalability Mark Johnston markj@freebsd.org FreeBSD Developer Summit MeetBSD 2018 October 18, 2018 Non-Uniform Memory Access Motivation Scalable multiprocessing Target commodity systems Assumptions

More information

Synchronization Spinlocks - Semaphores

Synchronization Spinlocks - Semaphores CS 4410 Operating Systems Synchronization Spinlocks - Semaphores Summer 2013 Cornell University 1 Today How can I synchronize the execution of multiple threads of the same process? Example Race condition

More information

Intel New RDT Features and Implementation Introduction

Intel New RDT Features and Implementation Introduction Intel New RDT Features and Implementation Introduction Yi Sun Jun. 10 th, 2017 1 Agenda Shared Resource Contention Solution: Intel Resource Director Technology (RDT) Performance Improvement Proofs New

More information

Improving Linux Development with better tools. Andi Kleen. Oct 2013 Intel Corporation

Improving Linux Development with better tools. Andi Kleen. Oct 2013 Intel Corporation Improving Linux Development with better tools Andi Kleen Oct 2013 Intel Corporation ak@linux.intel.com Linux complexity growing Source lines in Linux kernel All source code 16.5 16 15.5 M-LOC 15 14.5 14

More information

Dynamic Dispatch and Duck Typing. L25: Modern Compiler Design

Dynamic Dispatch and Duck Typing. L25: Modern Compiler Design Dynamic Dispatch and Duck Typing L25: Modern Compiler Design Late Binding Static dispatch (e.g. C function calls) are jumps to specific addresses Object-oriented languages decouple method name from method

More information

Quiz I Solutions MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Department of Electrical Engineering and Computer Science

Quiz I Solutions MASSACHUSETTS INSTITUTE OF TECHNOLOGY Fall Department of Electrical Engineering and Computer Science Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.828 Fall 2012 Quiz I Solutions Mean 65 Median 66 Std. dev 17.5214 14 12 10 8 6 4 2 0 0 10 20 30 40 50 60

More information

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry:

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry: Logical Diagram VFS, Continued Don Porter CSE 506 Binary Formats RCU Memory Management File System Memory Allocators System Calls Device Drivers Networking Threads User Today s Lecture Kernel Sync CPU

More information

VFS, Continued. Don Porter CSE 506

VFS, Continued. Don Porter CSE 506 VFS, Continued Don Porter CSE 506 Logical Diagram Binary Formats Memory Allocators System Calls Threads User Today s Lecture Kernel RCU File System Networking Sync Memory Management Device Drivers CPU

More information

ECE 2035 Programming HW/SW Systems Spring problems, 5 pages Exam Three 8 April Your Name (please print clearly)

ECE 2035 Programming HW/SW Systems Spring problems, 5 pages Exam Three 8 April Your Name (please print clearly) Your Name (please print clearly) This exam will be conducted according to the Georgia Tech Honor Code. I pledge to neither give nor receive unauthorized assistance on this exam and to abide by all provisions

More information

Lecture 9: Multiprocessor OSs & Synchronization. CSC 469H1F Fall 2006 Angela Demke Brown

Lecture 9: Multiprocessor OSs & Synchronization. CSC 469H1F Fall 2006 Angela Demke Brown Lecture 9: Multiprocessor OSs & Synchronization CSC 469H1F Fall 2006 Angela Demke Brown The Problem Coordinated management of shared resources Resources may be accessed by multiple threads Need to control

More information

Advanced Pointer & Data Storage

Advanced Pointer & Data Storage 18, 19: storage classes 14: Preprocessor & Polymorphism in C) 15 : command line building 26 : stdarg Advanced Pointer & Data Storage (for ch. 14, 15 18, 19, 26) Contents Preprocessor & Polymorphism in

More information

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...).

To obtain the current global trace mask, call meitraceget(...). To modify the global trace mask, call meitraceset(...). Trace Objects Trace Objects Introduction Use the Trace module to selectively produce trace output on a global and/or per-object basis for your application. You can specify the types of trace output when

More information

CMSC 341 Lecture 7 Lists

CMSC 341 Lecture 7 Lists CMSC 341 Lecture 7 Lists Today s Topics Linked Lists vs Arrays Nodes Using Linked Lists Supporting Actors (member variables) Overview Creation Traversal Deletion UMBC CMSC 341 Lists 2 Linked Lists vs Arrays

More information

Improving Linux development with better tools

Improving Linux development with better tools Improving Linux development with better tools Andi Kleen Oct 2013 Intel Corporation ak@linux.intel.com Linux complexity growing Source lines in Linux kernel All source code 16.5 16 15.5 M-LOC 15 14.5 14

More information

Multi-level Translation. CS 537 Lecture 9 Paging. Example two-level page table. Multi-level Translation Analysis

Multi-level Translation. CS 537 Lecture 9 Paging. Example two-level page table. Multi-level Translation Analysis Multi-level Translation CS 57 Lecture 9 Paging Michael Swift Problem: what if you have a sparse address space e.g. out of GB, you use MB spread out need one PTE per page in virtual address space bit AS

More information

Bus-Independent Device Accesses

Bus-Independent Device Accesses Bus-Independent Device Accesses Matthew Wilcox matthew@wil.cx Alan Cox alan@lxorguk.ukuu.org.uk Bus-Independent Device Accesses by Matthew Wilcox by Alan Cox Copyright 2001 Matthew Wilcox This documentation

More information

Linked List using a Sentinel

Linked List using a Sentinel Linked List using a Sentinel Linked List.h / Linked List.h Using a sentinel for search Created by Enoch Hwang on 2/1/10. Copyright 2010 La Sierra University. All rights reserved. / #include

More information

CS510 Concurrent Systems. Jonathan Walpole

CS510 Concurrent Systems. Jonathan Walpole CS510 Concurrent Systems Jonathan Walpole Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms utline Background Non-Blocking Queue Algorithm Two Lock Concurrent Queue Algorithm

More information

Application Note: Heap Memory Management

Application Note: Heap Memory Management Application Note: Heap Memory Management Document Number: SWRA204 Texas Instruments, Inc. San Diego, California USA Copyright 2006-2009 Texas Instruments, Inc. All rights reserved. Version Description

More information

Paging, and segmentation

Paging, and segmentation Paging, and segmentation Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated efficiently to pack as many processes into memory as possible 2 Big Picture

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

CSCI 2212: Intermediate Programming / C Review, Chapters 10 and 11

CSCI 2212: Intermediate Programming / C Review, Chapters 10 and 11 ... 1/16 CSCI 2212: Intermediate Programming / C Review, Chapters 10 and 11 Alice E. Fischer February 3, 2016 ... 2/16 Outline Basic Types and Diagrams ... 3/16 Basic Types and Diagrams Types in C C has

More information

CSE 306/506 Operating Systems Process Address Space. YoungMin Kwon

CSE 306/506 Operating Systems Process Address Space. YoungMin Kwon CSE 306/506 Operating Systems Process Address Space YoungMin Kwon Process s Address Space Memory allocation for user processes On request, a right to use a new range of linear address is given to the process

More information

Galica OSPERT Verification of OS-level Cache Management. Renato Mancuso Creative template. Sagar Chaki

Galica OSPERT Verification of OS-level Cache Management. Renato Mancuso Creative template. Sagar Chaki Galica Verification of OS-level Cache Management Renato Mancuso Creative template Sagar Chaki OSPERT 2018 Goal + Approach Colored Lockdown for deterministic cache management C source code via CBMC Linux

More information

Spinlocks. Spinlocks. Message Systems, Inc. April 8, 2011

Spinlocks. Spinlocks. Message Systems, Inc. April 8, 2011 Spinlocks Samy Al Bahra Devon H. O Dell Message Systems, Inc. April 8, 2011 Introduction Mutexes A mutex is an object which implements acquire and relinquish operations such that the execution following

More information

Introduction to Operating Systems. Device Drivers. John Franco. Dept. of Electrical Engineering and Computing Systems University of Cincinnati

Introduction to Operating Systems. Device Drivers. John Franco. Dept. of Electrical Engineering and Computing Systems University of Cincinnati Introduction to Operating Systems Device Drivers John Franco Dept. of Electrical Engineering and Computing Systems University of Cincinnati Basic Computer Architecture CPU Main Memory System Bus Channel

More information

CS 502 Support. Queue Management State Printers and Output Philosophy. Release Revised 6/2018

CS 502 Support. Queue Management State Printers and Output Philosophy. Release Revised 6/2018 CS 502 Support Queue Management State Printers and Output Philosophy Release 4.50 - Revised 6/2018 This document contains the following sections: 1. Queue management and overview of an object to make your

More information

DenseFS: A Cache-Compact Filesystem

DenseFS: A Cache-Compact Filesystem DenseFS: A Cache-Compact Filesystem Zev Weiss, Andrea C. Arpaci Dusseau, Remzi H. Arpaci Dusseau July 9, 2018 Filesystems in light of NVM Existing filesystems mostly disk/flash-oriented Large storage unit

More information

CS2141 Software Development using C/C++ C++ Basics

CS2141 Software Development using C/C++ C++ Basics CS2141 Software Development using C/C++ C++ Basics Integers Basic Types Can be short, long, or just plain int C++ does not define the size of them other than short

More information

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 20 November 2013

ECE 2035 Programming HW/SW Systems Fall problems, 5 pages Exam Three 20 November 2013 Instructions: This is a closed book, closed note exam. Calculators are not permitted. If you have a question, raise your hand and I will come to you. Please work the exam in pencil and do not separate

More information

An overview of how to write your function and fill out the FUNCTIONINFO structure. Allocating and freeing memory.

An overview of how to write your function and fill out the FUNCTIONINFO structure. Allocating and freeing memory. Creating a User DLL Extend Mathcad Professional's power by writing your own customized functions. Your functions will have the same advanced features as Mathcad built-in functions, such as customized error

More information

Projects 3 & 4. CS-3013 Operating Systems Hugh C. Lauer. CS-3013, A-Term 2011 Projects 3 & 4 1

Projects 3 & 4. CS-3013 Operating Systems Hugh C. Lauer. CS-3013, A-Term 2011 Projects 3 & 4 1 Projects 3 & 4 CS-3013 Operating Systems Hugh C. Lauer (Slides include materials from Slides include materials from Modern Operating Systems, 3 rd ed., by Andrew Tanenbaum and from Operating System Concepts,

More information

Concurrent Programming in the D Programming Language. by Walter Bright Digital Mars

Concurrent Programming in the D Programming Language. by Walter Bright Digital Mars Concurrent Programming in the D Programming Language by Walter Bright Digital Mars Introduction What is sequential consistency across threads? What are the problems with it? D features that mitigate those

More information

Lecture #7: Shared objects and locks

Lecture #7: Shared objects and locks Lecture #7: Shared objects and locks Review -- 1 min Independent v. cooperating threads -- can't reason about all possible interleavings Too much milk: Solution #3 to too much milk works, but it is really

More information

Lecture Notes CPSC 122 (Fall 2014) Today Quiz 7 Doubly Linked Lists (Unsorted) List ADT Assignments Program 8 and Reading 6 out S.

Lecture Notes CPSC 122 (Fall 2014) Today Quiz 7 Doubly Linked Lists (Unsorted) List ADT Assignments Program 8 and Reading 6 out S. Today Quiz 7 Doubly Linked Lists (Unsorted) List ADT Assignments Program 8 and Reading 6 out S. Bowers 1 of 11 Doubly Linked Lists Each node has both a next and a prev pointer head \ v1 v2 v3 \ tail struct

More information

Linux on Sun Logical Domains

Linux on Sun Logical Domains Linux on Sun Logical Domains linux.conf.au, MEL8OURNE, 2008 Outline 1 Background SUN4V and Niagara Sun s Logical Domains 2 Userland Simulator 3 Implementation LDC: Logical Domain Channels VIO: Virtual

More information

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

Memory Management. Disclaimer: some slides are adopted from book authors slides with permission 1 Memory Management Disclaimer: some slides are adopted from book authors slides with permission 1 Recap Paged MMU: Two main Issues Translation speed can be slow TLB Table size is big Multi-level page table

More information

Virtual Memory COMPSCI 386

Virtual Memory COMPSCI 386 Virtual Memory COMPSCI 386 Motivation An instruction to be executed must be in physical memory, but there may not be enough space for all ready processes. Typically the entire program is not needed. Exception

More information

CPSC/ECE 3220 Fall 2017 Exam Give the definition (note: not the roles) for an operating system as stated in the textbook. (2 pts.

CPSC/ECE 3220 Fall 2017 Exam Give the definition (note: not the roles) for an operating system as stated in the textbook. (2 pts. CPSC/ECE 3220 Fall 2017 Exam 1 Name: 1. Give the definition (note: not the roles) for an operating system as stated in the textbook. (2 pts.) Referee / Illusionist / Glue. Circle only one of R, I, or G.

More information

Synchronization. CS61, Lecture 18. Prof. Stephen Chong November 3, 2011

Synchronization. CS61, Lecture 18. Prof. Stephen Chong November 3, 2011 Synchronization CS61, Lecture 18 Prof. Stephen Chong November 3, 2011 Announcements Assignment 5 Tell us your group by Sunday Nov 6 Due Thursday Nov 17 Talks of interest in next two days Towards Predictable,

More information

Midterm Exam March 13, 2013 CS162 Operating Systems

Midterm Exam March 13, 2013 CS162 Operating Systems University of California, Berkeley College of Engineering Computer Science Division EECS Spring 2013 Anthony D. Joseph Midterm Exam March 13, 2013 CS162 Operating Systems Your Name: SID AND 162 Login:

More information

Lecture 5: Synchronization w/locks

Lecture 5: Synchronization w/locks Lecture 5: Synchronization w/locks CSE 120: Principles of Operating Systems Alex C. Snoeren Lab 1 Due 10/19 Threads Are Made to Share Global variables and static objects are shared Stored in the static

More information

CS 241 Data Organization Binary Trees

CS 241 Data Organization Binary Trees CS 241 Data Organization Binary Trees Brooke Chenoweth University of New Mexico Fall 2017 Binary Tree: Kernighan and Ritchie 6.5 Read a file and count the occurrences of each word. now is the time for

More information

RCU in the Linux Kernel: One Decade Later

RCU in the Linux Kernel: One Decade Later RCU in the Linux Kernel: One Decade Later by: Paul E. Mckenney, Silas Boyd-Wickizer, Jonathan Walpole Slides by David Kennedy (and sources) RCU Usage in Linux During this same time period, the usage of

More information

Concurrency and Race Conditions (Linux Device Drivers, 3rd Edition (www.makelinux.net/ldd3))

Concurrency and Race Conditions (Linux Device Drivers, 3rd Edition (www.makelinux.net/ldd3)) (Linux Device Drivers, 3rd Edition (www.makelinux.net/ldd3)) Concurrency refers to the situation when the system tries to do more than one thing at once Concurrency-related bugs are some of the easiest

More information

NPTEL Course Jan K. Gopinath Indian Institute of Science

NPTEL Course Jan K. Gopinath Indian Institute of Science Storage Systems NPTEL Course Jan 2012 (Lecture 17) K. Gopinath Indian Institute of Science Accessing Devices/Device Driver Many ways to access devices under linux Non-block based devices ( char ) - stream

More information

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

Memory Management. Disclaimer: some slides are adopted from book authors slides with permission 1 Memory Management Disclaimer: some slides are adopted from book authors slides with permission 1 CPU management Roadmap Process, thread, synchronization, scheduling Memory management Virtual memory Disk

More information

COL106: Data Structures and Algorithms. Ragesh Jaiswal, IIT Delhi

COL106: Data Structures and Algorithms. Ragesh Jaiswal, IIT Delhi Stack and Queue How do we implement a Queue using Array? : A collection of nodes with linear ordering defined on them. Each node holds an element and points to the next node in the order. The first node

More information

Memory Management. Fundamentally two related, but distinct, issues. Management of logical address space resource

Memory Management. Fundamentally two related, but distinct, issues. Management of logical address space resource Management Fundamentally two related, but distinct, issues Management of logical address space resource On IA-32, address space may be scarce resource for a user process (4 GB max) Management of physical

More information

Midterm Review. CS 211 Fall 2018

Midterm Review. CS 211 Fall 2018 Midterm Review CS 211 Fall 2018 BSB 250 Official Time: 10:00 am to 10:50 am If we can start a few minutes early, we will So try to arrive closer to 9:50am We will need to finish right at 10:50 since there

More information

CS349/SE382 A1 C Programming Tutorial

CS349/SE382 A1 C Programming Tutorial CS349/SE382 A1 C Programming Tutorial Erin Lester January 2005 Outline Comments Variable Declarations Objects Dynamic Memory Boolean Type structs, enums and unions Other Differences The Event Loop Comments

More information

The Note/1 Driver Design

The Note/1 Driver Design Nathan Lay Kelly Hirai 6/14/06 Device Drivers The Note/1 Driver Design Introduction The Music Quest Note/1 midi engine is a small midi controller that communicates over the parallel port. It features two

More information

OPAE Intel FPGA Linux Device Driver Architecture Guide

OPAE Intel FPGA Linux Device Driver Architecture Guide OPAE Intel FPGA Linux Device Driver Architecture Guide Subscribe Send Feedback Latest document on the web: PDF HTML Contents Contents 1 OPAE Intel FPGA Linux Device Driver Architecture...3 1.1 Hardware

More information

Pointers, Pointers, Pointers!

Pointers, Pointers, Pointers! Pointers, Pointers, Pointers! Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers, Pointers! Colin Gordon csgordon@cs.washington.edu University

More information

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide

82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide 82V391x / 8V893xx WAN PLL Device Families Device Driver Version 1.2 April 29, 2014 Table of Contents 1. Introduction... 1 2. Software Architecture... 2 2.1. Overview... 2 2.2. Hardware Abstraction Layer

More information

Memory Mapping. Sarah Diesburg COP5641

Memory Mapping. Sarah Diesburg COP5641 Memory Mapping Sarah Diesburg COP5641 Memory Mapping Translation of address issued by some device (e.g., CPU or I/O device) to address sent out on memory bus (physical address) Mapping is performed by

More information

Devsummit Concurrency Hacks

Devsummit Concurrency Hacks Devsummit Concurrency Hacks Taylor Riastradh Campbell campbell@mumble.net riastradh@netbsd.org EuroBSDcon 2015 Stockholm, Sweden October 2, 2015 Concurrency hacks Works in progress not even compile-tested.

More information

1. Overview This project will help you understand address spaces and virtual memory management.

1. Overview This project will help you understand address spaces and virtual memory management. Project 2--Memory Worth: 12 points Assigned: Due: 1. Overview This project will help you understand address spaces and virtual memory management. In this project, you will implement an external pager,

More information

2018/04/06 01:40 1/11 SMP

2018/04/06 01:40 1/11 SMP 2018/04/06 01:40 1/11 SMP SMP Definition According to Wikipedia: Symmetric multiprocessing (SMP) involves a symmetric multiprocessor system hardware and software architecture where two or more identical

More information

Concurrency: Mutual Exclusion (Locks)

Concurrency: Mutual Exclusion (Locks) Concurrency: Mutual Exclusion (Locks) Questions Answered in this Lecture: What are locks and how do we implement them? How do we use hardware primitives (atomics) to support efficient locks? How do we

More information