Linearizability with ownership transfer
|
|
- Phoebe Tucker
- 6 years ago
- Views:
Transcription
1 Linearizability with ownership transfer Hongseok Yang University of Oxford Joint work with Alexey Gotsman (IMDEA Software Institute, Spain)
2 Concurrent libraries Encapsulate efficient concurrent algorithms. - Java: java.util.concurrent - C++: Threading Building Blocks - C#: System.Collections.Concurrent Implement stacks, queues, skip lists, hash tables, etc. But it is not easy to understand why they are correct.
3 Non-blocking stack: (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push)
4 Non-blocking stack: Why is it OK to return empty here? (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push)
5 Non-blocking stack: It can also return no (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(no)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push)
6 A binary relation L L on libraries L and L. Usually, L is an impl. and L is a spec.
7 Problem
8 Shared address space C ret m(0) call m(42) L
9 Shared address space C ret m(0) call m(42) L Linearizability assumes a complete isolation between the library and its client.
10 Shared address space C ret m(0) call m(42) L Linearizability assumes a complete isolation between the library and its client. If client and library share address space, they can corrupt each other.
11 Ownership transfer C ret m(ok) call m(node* p) L Boundary between data structures owned by the library and its client is not static. Ownership = right to access. Ownership of cells transferred between library and client.
12 Example: container Typically stores pointers to data structures. Thread 1 Thread 2 A B C L
13 Example: container Typically stores pointers to data structures. Thread 1 A Thread 2 C L B
14 Example: container Typically stores pointers to data structures. Thread 1 Thread 2 A B C L
15 Example: container Typically stores pointers to data structures. Thread 1 Thread 2 A B C L Can t access B after transferring its ownership!
16 Our paper 1. We generalised linearizability to a realistic setting: shared address space, ownership transfer. 2. Our generalisation gives the Abstraction Theorem: L v L Can replace L by L in a proof of C in C(L). C L C L
17 Review of linearizability
18 Histories H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) (t1, call push(42))(t2, call pop)(t1, ret push)(t2, ret pop(42))(t2,call push(11))...
19 Histories H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push)
20 Linearization relation H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t2, call pop) (t2, ret pop(42)) (t1, call isempty) (t2, call push(11)) (t1, ret isempty(yes)) (t2, ret push) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
21 Linearization relation H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t2, call pop) (t2, ret pop(42)) (t1, call isempty) (t2, call push(11)) (t1, ret isempty(yes)) (t2, ret push) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
22 Linearization relation H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t2, call pop) (t2, ret pop(42)) (t1, call isempty) (t2, call push(11)) (t1, ret isempty(yes)) (t2, ret push) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
23 Linearization relation H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(no)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) (t1, call isempty) (t1, ret isempty(no)) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
24 Linearization relation H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(no)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t1, call isempty) (t2, call pop) (t1, ret isempty(no)) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
25 Linearization relation L v L 0 () 8H 2 JLK. 9H 0 2 JL 0 K.H v H 0 H (t1, call push(42)) (t1, ret push) (t1, call isempty) (t1, ret isempty(no)) (t2, call pop) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H 0 (t1, call push(42)) (t1, ret push) (t1, call isempty) (t2, call pop) (t1, ret isempty(no)) (t2, ret pop(42)) (t2, call push(11)) (t2, ret push) H v H 0 We can permute calls and returns by different threads. But non-overlapping method invocations can t be rearranged.
26 Our results
27 Specified library L : Γ Γ defines a light-weight specification {pm}m{qm} for every method m in L. E.g. {n _}push(n){emp}, {emp}pop{res _}. pm determines cells transferred from client to library. qm determines cells transferred from library to client.
28 Histories with ownership transfer (t1, call push([10:0])) (t1, ret push) (t1, call isempty) (t1, ret isempty(yes)) (t2, call pop) (t2, ret pop([10:0])) (t2, call push([20:0])) (t2, ret push) Before: (t, call m(k)), (t, ret m(k)) for k in Integer. Now: (t, call m(θ)), θ pm; (t, ret m(θ)), θ qm. Linearizability as before.
29 Why were we surprised? Important properties of standard linearizability rely on the movability of call and ret actions.
30 Why were we surprised? Important properties of standard linearizability rely on the movability of call and ret actions.
31 Why were we surprised? Important properties of standard linearizability rely on the movability of call and ret actions. (t1, ret pop([10:0])) (t2, push([10:0])) But this movability might not hold in the presence of transferred cells.
32 Well-balanced histories Histories that have correct accounting of cells owned by library and its client. (t1, call push([10:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([10:0]))
33 Well-balanced histories Histories that have correct accounting of cells owned by library and its client. (t1, call push([10:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([10:0])) (t1, call push([20:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([30:0]))
34 Well-balanced histories Histories that have correct accounting of cells owned by library and its client. (t1, call push([10:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([10:0])) (t1, call push([20:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([30:0])) (t1, call push([20:0])) (t1, ret push) (t2, call push([10:0])) (t2, ret push) (t2, call pop()) (t2, ret pop([20:0]))
35 Semantics of specified library L:Γ 0 1 n k k=1 while (true) { if (nondet()) {new p 1 ; m 1 (nondet()); delete q 1 ;} else if (nondet()) {new p 2 ; m 2 (nondet()); delete q 2 ;}... else {new p l ; m l (nondet()); delete q l ;} } C A
36 Semantics of specified library L:Γ Any number of threads n k k=1 0 Any methods, in any order, with any parameters while (true) { if (nondet()) {new p 1 ; m 1 (nondet()); delete q 1 ;} else if (nondet()) {new p 2 ; m 2 (nondet()); delete q 2 ;}... else {new p l ; m l (nondet()); delete q l ;} } 1 C A
37 Semantics of specified library L:Γ Any number of threads n k k=1 0 Any methods, in any order, with any parameters while (true) { if (nondet()) {new p 1 ; m 1 (nondet()); delete q 1 ;} else if (nondet()) {new p 2 ; m 2 (nondet()); delete q 2 ;}... else {new p l ; m l (nondet()); delete q l ;} } 1 C A new p: allocates an arbitrary state satisfying p. delete q: removes the part of state satisfying q.
38 Semantics of specified library L:Γ 0 1 n k k=1 while (true) { if (nondet()) {new p 1 ; m 1 (nondet()); delete q 1 ;} else if (nondet()) {new p 2 ; m 2 (nondet()); delete q 2 ;}... else {new p l ; m l (nondet()); delete q l ;} } C A L:Γ consists of histories generated by this most general client. Lemma: Only well-behaved histories are generated.
39 Linearizability L v L 0 () 8H 2 JLK. 9H 0 2 JL 0 K.H v H 0 Generated from the most-general client Libraries L and L have the same specifications Γ.
40 Abstraction Theorem Assume: Client C and libraries L, L : Γ are safe. L Then v L. client(jc(l)k) client(jc(l 0 )K) Can replace L by L in a proof of C: C L C L C(L 0 ) = P C(L) = P
41 Abstraction Theorem Client and library do not corrupt each other. Assume: Client C and libraries L, L : Γ are safe. L Then v L. client(jc(l)k) client(jc(l 0 )K) Can replace L by L in a proof of C: C L C L C(L 0 ) = P C(L) = P
Concurrent library abstraction without information hiding
Universidad Politécnica de Madrid Escuela técnica superior de ingenieros informáticos Concurrent library abstraction without information hiding Artem Khyzha Advised by Manuel Carro and Alexey Gotsman Madrid
More informationNON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY. Tim Harris, 31 October 2012
NON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY Tim Harris, 31 October 2012 Lecture 6 Linearizability Lock-free progress properties Queues Reducing contention Explicit memory management Linearizability
More informationConcurrent specifications beyond linearizability
Concurrent specifications beyond linearizability Éric Goubault Jérémy Ledent Samuel Mimram École Polytechnique, France OPODIS 2018, Hong Kong December 19, 2018 1 / 14 Objects Processes communicate through
More informationNON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY. Tim Harris, 17 November 2017
NON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY Tim Harris, 17 November 2017 Lecture 7 Linearizability Lock-free progress properties Hashtables and skip-lists Queues Reducing contention Explicit
More informationProving liveness. Alexey Gotsman IMDEA Software Institute
Proving liveness Alexey Gotsman IMDEA Software Institute Safety properties Ensure bad things don t happen: - the program will not commit a memory safety fault - it will not release a lock it does not hold
More informationHow many leaves on the decision tree? There are n! leaves, because every permutation appears at least once.
Chapter 8. Sorting in Linear Time Types of Sort Algorithms The only operation that may be used to gain order information about a sequence is comparison of pairs of elements. Quick Sort -- comparison-based
More informationHoare logic. A proof system for separation logic. Introduction. Separation logic
Introduction Hoare logic Lecture 6: Examples in separation logic In the previous lecture, we saw how reasoning about pointers in Hoare logic was problematic, which motivated introducing separation logic.
More informationCS 211. Project 5 Infix Expression Evaluation
CS 211 Project 5 Infix Expression Evaluation Part 1 Create you own Stack Class Need two stacks one stack of integers for the operands one stack of characters for the operators Do we need 2 Stack Classes?
More informationNON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY. Tim Harris, 21 November 2014
NON-BLOCKING DATA STRUCTURES AND TRANSACTIONAL MEMORY Tim Harris, 21 November 2014 Lecture 7 Linearizability Lock-free progress properties Queues Reducing contention Explicit memory management Linearizability
More informationAssume you are given a Simple Linked List (i.e. not a doubly linked list) containing an even number of elements. For example L = [A B C D E F].
Question Assume you are given a Simple Linked List (i.e. not a doubly linked list) containing an even number of elements. For example L = [A B C D E F]. a) Draw the linked node structure of L, including
More informationVerifying Concurrent Memory Reclamation Algorithms with Grace
Verifying Concurrent Memory Reclamation Algorithms with Grace Alexey Gotsman, Noam Rinetzky, and Hongseok Yang 1 IMDEA Software Institute 2 Tel-Aviv University 3 University of Oxford Abstract. Memory management
More informationLinked Lists, Stacks, and Queues
Department of Computer Science and Engineering Chinese University of Hong Kong In a nutshell, a data structure describes how data are stored in memory, in order to facilitate certain operations. In all
More informationA Non-Blocking Concurrent Queue Algorithm
A Non-Blocking Concurrent Queue Algorithm Bruno Didot bruno.didot@epfl.ch June 2012 Abstract This report presents a new non-blocking concurrent FIFO queue backed by an unrolled linked list. Enqueue and
More informationCOMP 346 Winter 2019 Programming Assignment 2
COMP 346 Winter 2019 Programming Assignment 2 Due: 11:59 PM March 1 st, 2019 Mutual Exclusion and Barrier Synchronization 1. Objectives The objective of this assignment is to allow you to learn how to
More informationIII Data Structures. Dynamic sets
III Data Structures Elementary Data Structures Hash Tables Binary Search Trees Red-Black Trees Dynamic sets Sets are fundamental to computer science Algorithms may require several different types of operations
More informationComputer Science 9608 (Notes) Chapter: 4.1 Computational thinking and problem-solving
In Computer Science, an abstract data type (ADT) is a mathematical model for a certain data type or structures. This doesn t mean that the ADTs cannot be programmed. But that we must first understand them
More informationG Programming Languages Spring 2010 Lecture 13. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 13 Robert Grimm, New York University 1 Review Last week Exceptions 2 Outline Concurrency Discussion of Final Sources for today s lecture: PLP, 12
More information1 The comparison of QC, SC and LIN
Com S 611 Spring Semester 2009 Algorithms for Multiprocessor Synchronization Lecture 5: Tuesday, 3rd February 2009 Instructor: Soma Chaudhuri Scribe: Jianrong Dong 1 The comparison of QC, SC and LIN Pi
More informationParallel Programming in Distributed Systems Or Distributed Systems in Parallel Programming
Parallel Programming in Distributed Systems Or Distributed Systems in Parallel Programming Philippas Tsigas Chalmers University of Technology Computer Science and Engineering Department Philippas Tsigas
More informationDepartment of Computer Science & Engineering Indian Institute of Technology Kharagpur. Practice Sheet #13
Department of Computer Science & Engineering Indian Institute of Technology Kharagpur Topic: Stack and Queue Practice Sheet #13 Date: 04-04-2017 1. Consider the following sequence of push and pop operations
More informationHiding local state in direct style: a higher-order anti-frame rule
1 / 65 Hiding local state in direct style: a higher-order anti-frame rule François Pottier January 28th, 2008 2 / 65 Contents Introduction Basics of the type system A higher-order anti-frame rule Applications
More informationStacks. Chapter 5. Copyright 2012 by Pearson Education, Inc. All rights reserved
Stacks Chapter 5 Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions A Problem Solved: Checking for Balanced Delimiters in an Infix Algebraic Expression A Problem Solved:
More informationCMSC351 - Fall 2014, Homework #2
CMSC351 - Fall 2014, Homework #2 Due: October 8th at the start of class Name: Section: Grades depend on neatness and clarity. Write your answers with enough detail about your approach and concepts used,
More informationTable of Contents. Chapter 1: Introduction to Data Structures... 1
Table of Contents Chapter 1: Introduction to Data Structures... 1 1.1 Data Types in C++... 2 Integer Types... 2 Character Types... 3 Floating-point Types... 3 Variables Names... 4 1.2 Arrays... 4 Extraction
More informationConcurrent Objects and Linearizability
Chapter 3 Concurrent Objects and Linearizability 3.1 Specifying Objects An object in languages such as Java and C++ is a container for data. Each object provides a set of methods that are the only way
More informationRun-time Environments. Lecture 13. Prof. Alex Aiken Original Slides (Modified by Prof. Vijay Ganesh) Lecture 13
Run-time Environments Lecture 13 by Prof. Vijay Ganesh) Lecture 13 1 What have we covered so far? We have covered the front-end phases Lexical analysis (Lexer, regular expressions,...) Parsing (CFG, Top-down,
More informationFrom IMP to Java. Andreas Lochbihler. parts based on work by Gerwin Klein and Tobias Nipkow ETH Zurich
From IMP to Java Andreas Lochbihler ETH Zurich parts based on work by Gerwin Klein and Tobias Nipkow 2015-07-14 1 Subtyping 2 Objects and Inheritance 3 Multithreading 1 Subtyping 2 Objects and Inheritance
More informationCS 1114: Implementing Search. Last time. ! Graph traversal. ! Two types of todo lists: ! Prof. Graeme Bailey.
CS 1114: Implementing Search! Prof. Graeme Bailey http://cs1114.cs.cornell.edu (notes modified from Noah Snavely, Spring 2009) Last time! Graph traversal 1 1 2 10 9 2 3 6 3 5 6 8 5 4 7 9 4 7 8 10! Two
More informationLIFO : Last In First Out
Introduction Stack is an ordered list in which all insertions and deletions are made at one end, called the top. Stack is a data structure that is particularly useful in applications involving reversing.
More informationIndex. Anagrams, 212 Arrays.sort in O(nlogn) time, 202
Index A Anagrams, 212 Arrays.sort in O(nlogn) time, 202 B Backtracking definition, 90 robot move C++ code, 93 4 source code, 94 test cases, 94 string path in matrix C++ code, 91 2 source code, 92 test
More informationHoare Logic and Model Checking
Hoare Logic and Model Checking Kasper Svendsen University of Cambridge CST Part II 2016/17 Acknowledgement: slides heavily based on previous versions by Mike Gordon and Alan Mycroft Introduction In the
More informationProject 3 Due October 21, 2015, 11:59:59pm
Project 3 Due October 21, 2015, 11:59:59pm 1 Introduction In this project, you will implement RubeVM, a virtual machine for a simple bytecode language. Later in the semester, you will compile Rube (a simplified
More informationLecture Notes. char myarray [ ] = {0, 0, 0, 0, 0 } ; The memory diagram associated with the array can be drawn like this
Lecture Notes Array Review An array in C++ is a contiguous block of memory. Since a char is 1 byte, then an array of 5 chars is 5 bytes. For example, if you execute the following C++ code you will allocate
More informationPriority Queues. 1 Introduction. 2 Naïve Implementations. CSci 335 Software Design and Analysis III Chapter 6 Priority Queues. Prof.
Priority Queues 1 Introduction Many applications require a special type of queuing in which items are pushed onto the queue by order of arrival, but removed from the queue based on some other priority
More informationHoare Logic and Model Checking. A proof system for Separation logic. Introduction. Separation Logic
Introduction Hoare Logic and Model Checking In the previous lecture we saw the informal concepts that Separation Logic is based on. Kasper Svendsen University of Cambridge CST Part II 2016/17 This lecture
More informationDictionaries and Hash Tables
Dictionaries and Hash Tables Nicholas Mainardi Dipartimento di Elettronica e Informazione Politecnico di Milano nicholas.mainardi@polimi.it 14th June 2017 Dictionaries What is a dictionary? A dictionary
More informationModular Verification of Preemptive OS Kernels
Under consideration for publication in J. Functional Programming 1 Modular Verification of Preemptive OS Kernels ALEXEY GOTSMAN IMDEA Software Institute HONGSEOK YANG University of Oxford Abstract Most
More informationSystem Software Assignment 1 Runtime Support for Procedures
System Software Assignment 1 Runtime Support for Procedures Exercise 1: Nested procedures Some programming languages like Oberon and Pascal support nested procedures. 1. Find a run-time structure for such
More informationOrder Is A Lie. Are you sure you know how your code runs?
Order Is A Lie Are you sure you know how your code runs? Order in code is not respected by Compilers Processors (out-of-order execution) SMP Cache Management Understanding execution order in a multithreaded
More informationAssignment No.1 What is ADT? Explain stack as an ADT with suitable example.
Programme:- MCA-Semester-II Subject Code 201 Data Structures What is ADT? Explain stack as an ADT with suitable example. You know what a queue is... Implement a queue class with Java. What is the cost
More informationStack and Its Implementation
Stack and Its Implementation Tessema M. Mengistu Department of Computer Science Southern Illinois University Carbondale tessema.mengistu@siu.edu Room - 3131 1 Definition of Stack Usage of Stack Outline
More informationPrecept 2: Non-preemptive Scheduler. COS 318: Fall 2018
Precept 2: Non-preemptive Scheduler COS 318: Fall 2018 Project 2 Schedule Precept: Monday 10/01, 7:30pm (You are here) Design Review: Monday 10/08, 3-7pm Due: Sunday 10/14, 11:55pm Project 2 Overview Goal:
More informationStacks, Queues (cont d)
Stacks, Queues (cont d) CSE 2011 Winter 2007 February 1, 2007 1 The Adapter Pattern Using methods of one class to implement methods of another class Example: using List to implement Stack and Queue 2 1
More informationCS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University
CS 112 Introduction to Computing II Wayne Snyder Department Boston University Today Introduction to Linked Lists Stacks and Queues using Linked Lists Next Time Iterative Algorithms on Linked Lists Reading:
More informationShow No Weakness: Sequentially Consistent Specifications of TSO Libraries
Show No Weakness: Sequentially Consistent Specifications of TSO Libraries Alexey Gotsman 1, Madanlal Musuvathi 2, and Hongseok Yang 3 1 IMDEA Software Institute 2 Microsoft Research 3 University of Oxford
More informationWhy Do We Need Trees?
CSE 373 Lecture 6: Trees Today s agenda: Trees: Definition and terminology Traversing trees Binary search trees Inserting into and deleting from trees Covered in Chapter 4 of the text Why Do We Need Trees?
More informationData Structures Question Bank Multiple Choice
Section 1. Fundamentals: Complexity, Algorthm Analysis 1. An algorithm solves A single problem or function Multiple problems or functions Has a single programming language implementation 2. A solution
More informationLinked Structures. See Section 3.2 of the text.
Linked Structures See Section 3.2 of the text. First, notice that Java allows classes to be recursive, in the sense that a class can have an element which is itself an object of that class: class Person
More informationAlgorithm Design and Analysis
Algorithm Design and Analysis LECTURE 3 Data Structures Graphs Traversals Strongly connected components Sofya Raskhodnikova L3.1 Measuring Running Time Focus on scalability: parameterize the running time
More information8. Fundamental Data Structures
172 8. Fundamental Data Structures Abstract data types stack, queue, implementation variants for linked lists, [Ottman/Widmayer, Kap. 1.5.1-1.5.2, Cormen et al, Kap. 10.1.-10.2] Abstract Data Types 173
More informationNon-blocking Array-based Algorithms for Stacks and Queues!
Non-blocking Array-based Algorithms for Stacks and Queues! Niloufar Shafiei! Department of Computer Science and Engineering York University ICDCN 09 Outline! Introduction! Stack algorithm! Queue algorithm!
More informationFast and Lock-Free Concurrent Priority Queues for Multi-Thread Systems
Fast and Lock-Free Concurrent Priority Queues for Multi-Thread Systems Håkan Sundell Philippas Tsigas Outline Synchronization Methods Priority Queues Concurrent Priority Queues Lock-Free Algorithm: Problems
More informationCS6202 - PROGRAMMING & DATA STRUCTURES I Unit IV Part - A 1. Define Stack. A stack is an ordered list in which all insertions and deletions are made at one end, called the top. It is an abstract data type
More informationApply to be a Meiklejohn! tinyurl.com/meikapply
Apply to be a Meiklejohn! tinyurl.com/meikapply Seeking a community to discuss the intersections of CS and positive social change? Interested in facilitating collaborations between students and non-profit
More informationAmortized Analysis. The time required to perform a sequence of (data structure) operations is averaged over all the operations performed.
Amortized Analysis The time required to perform a sequence of (data structure) operations is averaged over all the operations performed. No probabilistic assumptions - not an average case analysis! 1 Example:
More informationCOMP250: Stacks. Jérôme Waldispühl School of Computer Science McGill University. Based on slides from (Goodrich & Tamassia, 2004)
COMP250: Stacks Jérôme Waldispühl School of Computer Science McGill University Based on slides from (Goodrich & Tamassia, 2004) 2004 Goodrich, Tamassia The Stack ADT A Stack ADT is a list that allows only
More informationThe Universality of Consensus
Chapter 6 The Universality of Consensus 6.1 Introduction In the previous chapter, we considered a simple technique for proving statements of the form there is no wait-free implementation of X by Y. We
More informationWe don t have much time, so we don t teach them [students]; we acquaint them with things that they can learn. Charles E. Leiserson
Homework 3 CS 321 - Data Structures Fall 2018 Dec 6, 2018 Name: Collaborators: We don t have much time, so we don t teach them [students]; we acquaint them with things that they can learn. Charles E. Leiserson
More informationUniversity of Illinois at Urbana-Champaign Department of Computer Science. Second Examination
University of Illinois at Urbana-Champaign Department of Computer Science Second Examination CS 225 Data Structures and Software Principles Fall 2011 9a-11a, Wednesday, November 2 Name: NetID: Lab Section
More informationHoare logic. WHILE p, a language with pointers. Introduction. Syntax of WHILE p. Lecture 5: Introduction to separation logic
Introduction Hoare logic Lecture 5: Introduction to separation logic In the previous lectures, we have considered a language, WHILE, where mutability only concerned program variables. Jean Pichon-Pharabod
More information3. Fundamental Data Structures
3. Fundamental Data Structures CH08-320201: Algorithms and Data Structures 233 Data Structures Definition (recall): A data structure is a way to store and organize data in order to facilitate access and
More informationABSTRACT DATA TYPES (ADTS) COMP1927 Computing 2 16x1 Sedgewick Chapter 4
ABSTRACT DATA TYPES (ADTS) COMP1927 Computing 2 16x1 Sedgewick Chapter 4 ABSTRACTION To understand a system, it should be enough to understand what its components do without knowing how Watching a television
More informationHoare logic. Lecture 5: Introduction to separation logic. Jean Pichon-Pharabod University of Cambridge. CST Part II 2017/18
Hoare logic Lecture 5: Introduction to separation logic Jean Pichon-Pharabod University of Cambridge CST Part II 2017/18 Introduction In the previous lectures, we have considered a language, WHILE, where
More informationNotes on the Exam. Question 1. Today. Comp 104:Operating Systems Concepts 11/05/2015. Revision Lectures (separate questions and answers)
Comp 104:Operating Systems Concepts Revision Lectures (separate questions and answers) Today Here are a sample of questions that could appear in the exam Please LET ME KNOW if there are particular subjects
More informationCSCE 2014 Final Exam Spring Version A
CSCE 2014 Final Exam Spring 2017 Version A Student Name: Student UAID: Instructions: This is a two-hour exam. Students are allowed one 8.5 by 11 page of study notes. Calculators, cell phones and computers
More informationRun-time Environments
Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction
More informationRun-time Environments
Run-time Environments Status We have so far covered the front-end phases Lexical analysis Parsing Semantic analysis Next come the back-end phases Code generation Optimization Register allocation Instruction
More informationDescribe how to implement deque ADT using two stacks as the only instance variables. What are the running times of the methods
Describe how to implement deque ADT using two stacks as the only instance variables. What are the running times of the methods 1 2 Given : Stack A, Stack B 3 // based on requirement b will be reverse of
More informationTowards imperative modules: reasoning about invariants and sharing of mutable state
Towards imperative modules: reasoning about invariants and sharing of mutable state David A. Naumann Joint work with Mike Barnett and Anindya Banerjee Stevens Institute of Technology Supported by NSF CCR-0208984,
More informationProving linearizability & lock-freedom
Proving linearizability & lock-freedom Viktor Vafeiadis MPI-SWS Michael & Scott non-blocking queue head tail X 1 3 2 null CAS compare & swap CAS (address, expectedvalue, newvalue) { atomic { if ( *address
More informationCS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University
CS 11 Introduction to Computing II Wayne Snyder Department Boston University Today Object-Oriented Programming Concluded Stacks, Queues, and Priority Queues as Abstract Data Types Reference types: Basic
More informationStacks, Queues, and Priority Queues. Inf 2B: Heaps and Priority Queues. The PriorityQueue ADT
Stacks, Queues, and Priority Queues Inf 2B: Heaps and Priority Queues Lecture 6 of ADS thread Kyriakos Kalorkoti School of Informatics University of Edinburgh Stacks, queues, and priority queues are all
More informationEE 361 University of Hawaii Fall
C functions Road Map Computation flow Implementation using MIPS instructions Useful new instructions Addressing modes Stack data structure 1 EE 361 University of Hawaii Implementation of C functions and
More informationUniversity of Illinois at Urbana-Champaign Department of Computer Science. Second Examination
University of Illinois at Urbana-Champaign Department of Computer Science Second Examination CS 225 Data Structures and Software Principles Spring 2014 7-10p, Tuesday, April 8 Name: NetID: Lab Section
More informationAbstract Data Types. Stack. January 26, 2018 Cinda Heeren / Geoffrey Tien 1
Abstract Data Types Stack January 26, 2018 Cinda Heeren / Geoffrey Tien 1 Abstract data types and data structures An Abstract Data Type (ADT) is: A collection of data Describes what data are stored but
More informationLarge-Scale Key-Value Stores Eventual Consistency Marco Serafini
Large-Scale Key-Value Stores Eventual Consistency Marco Serafini COMPSCI 590S Lecture 13 Goals of Key-Value Stores Export simple API put(key, value) get(key) Simpler and faster than a DBMS Less complexity,
More informationProblem One: Loops and ASCII Graphics
Problem One: Loops and ASCII Graphics Write a program that prompts the user for a number between 1 and 9, inclusive, then prints a square of text to the console that looks like this: 1**** 22*** 333**
More informationStacks. Chapter 5. Copyright 2012 by Pearson Education, Inc. All rights reserved
Stacks Chapter 5 Copyright 2012 by Pearson Education, Inc. All rights reserved Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions A Problem Solved: Checking for Balanced
More informationVerifying Concurrent Memory Reclamation Algorithms with Grace
Verifying Concurrent Memory Reclamation Algorithms with Grace Alexey Gotsman, Noam Rinetzky, and Hongseok Yang 1 IMDEA Software Institute 2 Tel-Aviv University 3 University of Oxford Abstract. Memory management
More informationComp 204: Computer Systems and Their Implementation. Lecture 25a: Revision Lectures (separate questions and answers)
Comp 204: Computer Systems and Their Implementation Lecture 25a: Revision Lectures (separate questions and answers) 1 Today Here are a sample of questions that could appear in the exam Please LET ME KNOW
More informationCreating Object Classes in True BASIC
Introduction Creating Object Classes in True BASIC by Thomas E. Kurtz Co-inventor of BASIC Now that we have seen and experienced the use of an object class, through the driver StackDriver.tru, let s now
More informationCE204 Data Structures and Algorithms Part 2
CE204 Data Structures and Algorithms Part 2 14/01/2018 CE204 Part 2 1 Abstract Data Types 1 An abstract data type is a type that may be specified completely without the use of any programming language.
More informationVerifying a Concurrent Garbage Collector using a Rely-Guarantee Methodology
Verifying a Concurrent Garbage Collector using a Rely-Guarantee Methodology Yannick Zakowski David Cachera Delphine Demange Gustavo Petri David Pichardie Suresh Jagannathan Jan Vitek Automatic memory management
More information1. Attempt any three of the following: 15
(Time: 2½ hours) Total Marks: 75 N. B.: (1) All questions are compulsory. (2) Make suitable assumptions wherever necessary and state the assumptions made. (3) Answers to the same question must be written
More informationData Structures. BSc in Computer Science University of New York, Tirana. Assoc. Prof. Marenglen Biba 1-1
Data Structures BSc in Computer Science University of New York, Tirana Assoc. Prof. Marenglen Biba 1-1 General info Course : Data Structures (3 credit hours) Instructor : Assoc. Prof. Marenglen Biba Office
More informationToday s Menu. >Use the Internal Register(s) >Use the Program Memory Space >Use the Stack >Use global memory
Today s Menu Methods >Use the Internal Register(s) >Use the Program Memory Space >Use the Stack >Use global memory Look into my See examples on web-site: ParamPassing*asm and see Methods in Software and
More informationA class C of objects is universal for some set E of classes if and only if any object in E can be implemented with objects of C (and registers)
Universality A class C of objects is universal for some set E of classes if and only if any object in E can be implemented with objects of C (and registers) n-consensus is universal for n-objects (objects
More informationUniversity of Waterloo Department of Electrical and Computer Engineering ECE250 Algorithms and Data Structures Fall 2014
University of Waterloo Department of Electrical and Computer Engineering ECE250 Algorithms and Data Structures Fall 2014 Midterm Examination Instructor: Ladan Tahvildari, PhD, PEng, SMIEEE Date: Tuesday,
More informationObject Oriented Programming COP3330 / CGS5409
Object Oriented Programming COP3330 / CGS5409 Intro to Data Structures Vectors Linked Lists Queues Stacks C++ has some built-in methods of storing compound data in useful ways, like arrays and structs.
More informationStack and Queue. Stack:
Stack and Queue Stack: Abstract Data Type A stack is a container of objects that are inserted and removed according to the last-in first-out (LIFO) principle. In the pushdown stacks only two operations
More informationDDS Dynamic Search Trees
DDS Dynamic Search Trees 1 Data structures l A data structure models some abstract object. It implements a number of operations on this object, which usually can be classified into l creation and deletion
More informationNon-blocking Array-based Algorithms for Stacks and Queues. Niloufar Shafiei
Non-blocking Array-based Algorithms for Stacks and Queues Niloufar Shafiei Outline Introduction Concurrent stacks and queues Contributions New algorithms New algorithms using bounded counter values Correctness
More informationCOMP171. Hashing.
COMP171 Hashing Hashing 2 Hashing Again, a (dynamic) set of elements in which we do search, insert, and delete Linear ones: lists, stacks, queues, Nonlinear ones: trees, graphs (relations between elements
More information1/30/2018. Conventions Provide Implicit Information. ECE 220: Computer Systems & Programming. Arithmetic with Trees is Unambiguous
University of Illinois at Urbana-Champaign Dept. of Electrical and Computer Engineering ECE 220: Computer Systems & Programming The Stack Abstraction Conventions Provide Implicit Information What does
More informationRuntime Checking for Program Verification Systems
Runtime Checking for Program Verification Systems Karen Zee, Viktor Kuncak, and Martin Rinard MIT CSAIL Tuesday, March 13, 2007 Workshop on Runtime Verification 1 Background Jahob program verification
More informationHash table basics mod 83 ate. ate. hashcode()
Hash table basics ate hashcode() 82 83 84 48594983 mod 83 ate Reminder from syllabus: EditorTrees worth 10% of term grade See schedule page Exam 2 moved to Friday after break. Short pop quiz over AVL rotations
More informationWhat does IRET do, anyway?... Exam #1 Feb. 27, 2004
15-410...What does IRET do, anyway?... Exam #1 Feb. 27, 2004 Dave Eckhardt Bruce Maggs - 1 - L18_Exam1 Synchronization Final Exam list posted You must notify us of conflicts in a timely fashion P3 milestones
More informationAbstract Data Types Documentation
Abstract Data Types Documentation ADT-doc-1 Documentation Users are only interested in the properties of the ADT Programmers and designers require all the information which a user needs AND all information
More informationCategory Item Abstract Concrete
Exceptions To make things simple we ll first consider a simple failure mechanism. CMPSCI 630: Programming Languages Exceptions and Continuations Spring 2009 (with thanks to Robert Harper) Like exceptions,
More informationPriority Queues. T. M. Murali. January 26, T. M. Murali January 26, 2016 Priority Queues
Priority Queues T. M. Murali January 26, 2016 Motivation: Sort a List of Numbers Sort INSTANCE: Nonempty list x 1, x 2,..., x n of integers. SOLUTION: A permutation y 1, y 2,..., y n of x 1, x 2,..., x
More information