CSC 543 Multiprocessing & Concurrent Programming, Fall 2016

Size: px
Start display at page:

Download "CSC 543 Multiprocessing & Concurrent Programming, Fall 2016"

Transcription

1 CSC 543 Multiprocessing & Concurrent Programming, Fall 2016 Dr. Dale E. Parson, Midterm Exam Project, Assorted Thread Synchronization Problems This assignment is due by 11:59 PM on Wednesday November 2 via make turnitin. Perform the following steps to set up this project and to get my handout. Start out in your login directory on csit (a.k.a. acad). cd $HOME/multip cp ~parson/multip/prisonerdmidterm2016.problem.zip prisonerdmidterm2016.problem.zip Then log into ONE of the following machines via the ssh command from csit. ssh hermione ssh dumbledore ssh luna ssh harry My advice is to do your development and testing on one of the Linux machines the per-context speed is greater and then do additional testing on harry. Always run make test on one of these machines (gmake test on harry) before running make turnitin on a Linux machine to ensure that last-minute edits or file transfers have not created problems. After logging into one of the above machines, do the following. cd./multip unzip prisonerdmidterm2016.problem.zip cd./prisonerdmidterm2016 gmake test_atomic test_semaphore Those two tests should pass. They use these source files from assignment 2. PrisonerTest.java Tables.java PlayerAtomic.java PlayerSemaphore.java # NO CHANGES NEEDED FOR EXAM # CHANGES NEEDED FOR EXAM # SAME AS PlayerExplicit.java, CHANGES NEEDED # SAME AS PlayerExplicit.java, CHANGES NEEDED 1. Tables.java is back to the starting point for assignment 2, i.e., it is not thread safe or immutable because it exposes several java.util.hashmap objects in the penalty field to multithreaded access. Here are the STUDENT instructions from within Tables.java. * STUDENT: MIDTERM: * This is my starting point for assignment 2's Tables.java. * It uses non-thread-safe java.util.hashmap for its * Map objects. You must continue to use java.util.hashmap * -- DO NOT CHANGE java.util.hashmap IN ANY WAY -- * but you must make this class thread safe for multi-threaded * access using some other means. ADD A COMMENT HERE EXPLAINING * YOUR SOLUTION (You can use any package as you see fit * within this source file.): page 1

2 2. PlayerAtomic.java has identical code to my solution PlayerExplicit.java that uses an explicit Reentrant lock and condition variable. Only the class name has changed. It works correctly. However, you must modify it as explained in its STUDENT comments: * PlayerAtomic plays the Iterated Prisoner's Dilemma with its * partner using an explicit lock & condition variable which a * STUDENT must change to using one or more object or objects from one or more classes * in package java.util.concurrent.atomic. THERE MUST BE NO OBJECTS * FROM CLASSES IN PACKAGE java.util.concurrent.locks IN THIS CLASS, * AND THERE MUST BE NO USE OF IMPLICIT OR EXPLICIT LOCKS OR * CONDITION VARIABLES. STUDENTS MUST MAKE THIS WORK USING ATOMICS. After you replace all uses of the explicit lock and condition variable with one or more atomic objects from package java.util.concurrent.atomic, gmake test_atomic should work correctly, without diffs or hanging. 3. PlayerSemaphore.java has identical code to my solution PlayerExplicit.java that uses an explicit Reentrant lock and condition variable. Only the class name has changed. It works correctly. However, you must modify it as explained in its STUDENT comments: * PlayerSemaphore plays the Iterated Prisoner's Dilemma with its * partner using an explicit lock & condition variable which a * STUDENT must change to using one or more objects from class * java.util.concurrent.semaphore. * THERE MUST BE NO OBJECTS FROM CLASSES IN PACKAGE * java.util.concurrent.atomic IN THIS CLASS, * AND THERE MUST BE NO USE OF IMPLICIT OR EXPLICIT LOCKS OR * CONDITION VARIABLES. STUDENTS MUST MAKE THIS WORK USING ONE OR * MORE SEMAPHORE OBJECTS. After you replace all uses of the explicit lock and condition variable with one or more Semaphore objects from package java.util.concurrent, gmake test_semaphore should work correctly, without diffs or hanging. 4. This part of the assignment, derived from assignment 1, relates to the following source files, and can be tested by using make test_pipeline. BigDecimalPipelineBuilder.java PipelineStage.java PipeSourceRandom.java PipeStageMath.java PipeSinkFile.java The last three files in bold are the files that you might have to change. Instructions are in file testscript, which you must NOT change. # STUDENT ASSIGNMENT FOR MIDTERM "make test_pipeline" portion: # The first "true true" test run below works OK -- It is multi-threaded # and blocking. The second test that uses non-blocking multi-threading hangs. # Your assignment is to analyze why the second test line hangs, and then # to change a SUBSET of the non-blocking calls WITHIN THE SCOPE OF THE page 2

3 # if (inputmidtermq!= null) { # AND/OR # if (outputmidtermq!= null) { # in the three pipeline classes PipeSinkFile.java, # PipeSourceRandom.java, and/or PipeStageMath.java, to use # blocking Queue calls. At least one Queue call within these "if" blocks # must be non-blocking, and at least one call must be blocking. # Write within a comment in the files in which you make changes, # 1. WHY USING ALL-NON-BLOCKING CALLS HANGS, and also # 2. WHY YOUR MIX OF BLOCKING AND NON-BLOCKING CALLS WORKS CORRECTLY. runatest true true java.util.concurrent.synchronousqueue runatest true false java.util.concurrent.synchronousqueue Here are the initialization statements for inputmidtermq and outputmidtermq in the files in which they appear: // The next statement says that if inq is in fact a // blocking queue, then set inputmidtermq to that, // else to null. BlockingQueue<BigDecimal []> inputmidtermq = (inq instanceof BlockingQueue)? ((BlockingQueue<BigDecimal []>) inq) : null ; // The next statement says that if ouq is in fact a // blocking queue, then set outputmidtermq to that, // else to null. BlockingQueue<BigDecimal []> outputmidtermq = (ouq instanceof BlockingQueue)? ((BlockingQueue<BigDecimal []>) ouq) : null ; Therefore, the if (inputmidtermq!= null) { and if (outputmidtermq!= null) { code blocks to consider for modification are BlockingQueue object references passed to the pipeline stage as plain Queue object references. Keep these if statement lines unchanged, but consider changing the Queue method calls within those blocks to BlockingQueue blocking calls; but you must keep at least one or more of the calls non-blocking; for the non-blocking calls you can use either the exception-throwing or the flag-returning non-blocking calls. Add comments where you make changes that explain the reason for the original problem, and also why your change or changes fix the problem. Here is a test run on the handout code. I am hitting control-\ after the test hangs. Control-\ (control backslash) causes the JVM to show stack traces. $ make test_pipeline /bin/rm -f sink.ref ln -s ~parson/tmp/sink.ref./sink.ref chmod +x testscript STUDENT=parson bash -x././testscript + runatest true true java.util.concurrent.synchronousqueue + CLASSPATH=..:jcip-annotations.jar + time java prisonerdmidterm2016.bigdecimalpipelinebuilder true true prisonerdmidterm2016.pipesourcerandom ' ' java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipestagemath + java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipesinkfile /home/kutztown/parson/tmp/parsonsink.out page 3

4 There are 64 contexts on this machine. RUNNING java prisonerdmidterm2016.bigdecimalpipelinebuilder true true prisonerdmidterm2016.pipesourcerandom java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipestagemath + java.util.concurren t.synchronousqueue prisonerdmidterm2016.pipesinkfile /home/kutztown/parson/tmp/parsonsink.ou t CPU TIME FOR PipeSourceRandom = , USER TIME = CPU TIME FOR PipeStageMath = , USER TIME = CPU TIME FOR PipeSinkFile = , USER TIME = ELAPSED = 9.345, TOTAL CPU = , USER CPU = , SYSTEM CPU = real 10.0 user 16.1 sys exitstatus=0 + chmod 666 /home/kutztown/parson/tmp/parsonsink.out + ln -s /home/kutztown/parson/tmp/parsonsink.out./sink.out ln: cannot create./sink.out: File exists + '[' 0 -ne 0 ']' + diff./sink.out /home/kutztown/parson/tmp/sink.ref + exitstatus=0 + '[' 0 -ne 0 ']' + /bin/rm -rf /home/kutztown/parson/tmp/parsonsink.out./sink.out + runatest true false java.util.concurrent.synchronousqueue + CLASSPATH=..:jcip-annotations.jar + time java prisonerdmidterm2016.bigdecimalpipelinebuilder true false prisonerdmidterm2016.pipesourcerandom ' ' java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipestagemath + java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipesinkfile /home/kutztown/parson/tmp/parsonsink.out There are 64 contexts on this machine. RUNNING java prisonerdmidterm2016.bigdecimalpipelinebuilder true false prisonerdmidterm2016.pipesourcerandom java.util.concurrent.synchronousqueue prisonerdmidterm2016.pipestagemath + java.util.concurren t.synchronousqueue prisonerdmidterm2016.pipesinkfile /home/kutztown/parson/tmp/parsonsink.ou t The process hangs. Here are the stack traces for the three pipeline threads after hitting control-\. "Thread-2" prio=3 tid=0x002ba400 nid=0x26 runnable [0xb537f000] at java.util.concurrent.synchronousqueue.poll(synchronousqueue.java:888) at prisonerdmidterm2016.pipesinkfile.run(pipesinkfile.java:98) at java.lang.thread.run(thread.java:619) "Thread-1" prio=3 tid=0x002b8c00 nid=0x25 runnable [0xb547f000] at java.util.concurrent.synchronousqueue.poll(synchronousqueue.java:888) at prisonerdmidterm2016.pipestagemath.run(pipestagemath.java:112) page 4

5 at java.lang.thread.run(thread.java:619) "Thread-0" prio=3 tid=0x002b7800 nid=0x24 runnable [0xb557f000] at prisonerdmidterm2016.pipesourcerandom.run(pipesourcerandom.java:106) at java.lang.thread.run(thread.java:619) The threads are always either in a non-blocking call to a SynchronousQueue object, or in a polling loop, depending on when control-\ is hit. Here is the code in the neighborhood of PipeSourceRandom.java:106: 105 if (outputmidtermq!= null) { 106 while (! outputmidtermq.offer(result)) { 107 // spin until the blockqueue accepts the value 108 } 109 } else if (ouq!= null) { 110 ouq.add(result); 111 } else { 112 oubq.put(result); 113 } Once you have make test_pipeline working, make clean test should work, passing all tests without hanging. Make sure to write documentation comments explaining the problem and why your solution fixes it for this last part of the exam. When you are done working, run make turnitin to turn the assignment in by the deadline. page 5

CSC 343 Operating Systems, Fall 2015

CSC 343 Operating Systems, Fall 2015 CSC 343 Operating Systems, Fall 2015 Dr. Dale E. Parson, Assignment 4, analyzing swapping algorithm variations. This assignment is due via gmake turnitin from the swapping2015 directory by 11:59 PM on

More information

CSC 343 Operating Systems, Fall 2015

CSC 343 Operating Systems, Fall 2015 CSC 343 Operating Systems, Fall 2015 Dr. Dale E. Parson, Assignment 2, modeling an atomic spin lock, a mutex, and a condition variable. This assignment is due via gmake turnitin from the criticalsection2015

More information

CSC 310 Programming Languages, Spring 2014, Dr. Dale E. Parson

CSC 310 Programming Languages, Spring 2014, Dr. Dale E. Parson CSC 310 Programming Languages, Spring 2014, Dr. Dale E. Parson Assignment 3, Perquacky in Python, due 11:59 PM, Saturday April 12, 2014 I will turn the solution back on Monday April 14, after which I will

More information

CSC 552 UNIX System Programming, Fall 2015

CSC 552 UNIX System Programming, Fall 2015 CSC 552 UNIX System Programming, Fall 2015 Dr. Dale E. Parson, Assignment 4, multi-threading a socket-based server loop & helper functions. This assignment is due via make turnitin from the wordcathreadc4/

More information

CSC 510 Advanced Operating Systems, Fall 2017

CSC 510 Advanced Operating Systems, Fall 2017 CSC 510 Advanced Operating Systems, Fall 2017 Dr. Dale E. Parson, Assignment 4, Benchmarking and analyzing a modified Assignment 1 running on System VMs on Type 1 and Type 2 hypervisors. This assignment

More information

Assignment 2, perquack2 class hierarchy in Java, due 11:59 PM, Sunday March 16, 2014 Login into your account on acad/bill and do the following steps:

Assignment 2, perquack2 class hierarchy in Java, due 11:59 PM, Sunday March 16, 2014 Login into your account on acad/bill and do the following steps: CSC 243 Java Programming, Spring 2014, Dr. Dale E. Parson Assignment 2, perquack2 class hierarchy in Java, due 11:59 PM, Sunday March 16, 2014 Login into your account on acad/bill and do the following

More information

Principles of Software Construction: Objects, Design and Concurrency. The Perils of Concurrency, Part 2 Can't live with it. Cant live without it.

Principles of Software Construction: Objects, Design and Concurrency. The Perils of Concurrency, Part 2 Can't live with it. Cant live without it. Principles of Software Construction: Objects, Design and Concurrency 15-214 toad The Perils of Concurrency, Part 2 Can't live with it. Cant live without it. Fall 2013 Jonathan Aldrich Charlie Garrod School

More information

Synchronization COMPSCI 386

Synchronization COMPSCI 386 Synchronization COMPSCI 386 Obvious? // push an item onto the stack while (top == SIZE) ; stack[top++] = item; // pop an item off the stack while (top == 0) ; item = stack[top--]; PRODUCER CONSUMER Suppose

More information

Summary of Student Projects from CSC 580, Multiprocessor Programming in Java

Summary of Student Projects from CSC 580, Multiprocessor Programming in Java Summary of Student Projects from CSC 580, Multiprocessor Programming in Java Dale E. Parson, http://faculty.kutztown.edu/parson, January 2012, course was held spring 2011 This course in Multiprocessor

More information

Threads Questions Important Questions

Threads Questions Important Questions Threads Questions Important Questions https://dzone.com/articles/threads-top-80-interview https://www.journaldev.com/1162/java-multithreading-concurrency-interviewquestions-answers https://www.javatpoint.com/java-multithreading-interview-questions

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

The New Java Technology Memory Model

The New Java Technology Memory Model The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (

More information

CSC UNIX System, Spring 2015

CSC UNIX System, Spring 2015 ` CSC 352 - UNIX System, Spring 2015 Assignment 2, due by 11:59 on Friday March 6 via gmake turnitin. Dr. Dale E. Parson, http://faculty.kutztown.edu/parson The directory, source-file and makefile contents

More information

Perform the following steps to set up for this project. Start out in your login directory on csit (a.k.a. acad).

Perform the following steps to set up for this project. Start out in your login directory on csit (a.k.a. acad). CSC 458 Data Mining and Predictive Analytics I, Fall 2017 (November 22, 2017) Dr. Dale E. Parson, Assignment 4, Comparing Weka Bayesian, clustering, ZeroR, OneR, and J48 models to predict nominal dissolved

More information

Threads and Java Memory Model

Threads and Java Memory Model Threads and Java Memory Model Oleg Šelajev @shelajev oleg@zeroturnaround.com October 6, 2014 Agenda Threads Basic synchronization Java Memory Model Concurrency Concurrency - several computations are executing

More information

Principles of Software Construction: Objects, Design, and Concurrency. The Perils of Concurrency, Part 3 Can't live with it. Can't live without it.

Principles of Software Construction: Objects, Design, and Concurrency. The Perils of Concurrency, Part 3 Can't live with it. Can't live without it. Principles of Software Construction: Objects, Design, and Concurrency The Perils of Concurrency, Part 3 Can't live with it. Can't live without it. Fall 2014 Charlie Garrod Jonathan Aldrich School of Computer

More information

High-Level Design Specification for the Callimuse System

High-Level Design Specification for the Callimuse System High-Level Design Specification for the Callimuse System CSC354 Introduction to Software Engineering, Dr. Dale Parson, Fall 2013. This assignment is due by end of October 24, 2013 1. Introduction by the

More information

Chair of Software Engineering. Java and C# in depth. Carlo A. Furia, Marco Piccioni, Bertrand Meyer. Java: concurrency

Chair of Software Engineering. Java and C# in depth. Carlo A. Furia, Marco Piccioni, Bertrand Meyer. Java: concurrency Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: concurrency Outline Java threads thread implementation sleep, interrupt, and join threads that return values Thread synchronization

More information

Java SE 8 Programming

Java SE 8 Programming Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 67863102 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features

More information

CSC UNIX System, Spring 2015

CSC UNIX System, Spring 2015 CSC 352 - UNIX System, Spring 2015 Study guide for the CSC352 midterm exam (20% of grade). Dr. Dale E. Parson, http://faculty.kutztown.edu/parson We will have a midterm on March 19 on material we have

More information

CPSC/ECE 3220 Summer 2018 Exam 2 No Electronics.

CPSC/ECE 3220 Summer 2018 Exam 2 No Electronics. CPSC/ECE 3220 Summer 2018 Exam 2 No Electronics. Name: Write one of the words or terms from the following list into the blank appearing to the left of the appropriate definition. Note that there are more

More information

DUE By 11:59 PM on Thursday March 15 via make turnitin on acad. The standard 10% per day deduction for late assignments applies.

DUE By 11:59 PM on Thursday March 15 via make turnitin on acad. The standard 10% per day deduction for late assignments applies. CSC 558 Data Mining and Predictive Analytics II, Spring 2018 Dr. Dale E. Parson, Assignment 2, Classification of audio data samples from assignment 1 for predicting numeric white-noise amplification level

More information

Here are the steps to get the files for this project after logging in on acad/bill.

Here are the steps to get the files for this project after logging in on acad/bill. CSC 243, Java Programming, Spring 2014, Dr. Dale Parson Assignment 4, implementing undo, redo & initial GUI layout ASSIGNMENT due by 11:59 PM on Saturday April 19 via gmake turnitin ASSIGNMENT 5 (see page

More information

Chapter 4: Threads. Operating System Concepts 9 th Edit9on

Chapter 4: Threads. Operating System Concepts 9 th Edit9on Chapter 4: Threads Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads 1. Overview 2. Multicore Programming 3. Multithreading Models 4. Thread Libraries 5. Implicit

More information

Chapter 4: Threads. Operating System Concepts 9 th Edition

Chapter 4: Threads. Operating System Concepts 9 th Edition Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples

More information

CSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs

CSE 451: Operating Systems Winter Lecture 7 Synchronization. Steve Gribble. Synchronization. Threads cooperate in multithreaded programs CSE 451: Operating Systems Winter 2005 Lecture 7 Synchronization Steve Gribble Synchronization Threads cooperate in multithreaded programs to share resources, access shared data structures e.g., threads

More information

Threads and Locks, Part 2. CSCI 5828: Foundations of Software Engineering Lecture 08 09/18/2014

Threads and Locks, Part 2. CSCI 5828: Foundations of Software Engineering Lecture 08 09/18/2014 Threads and Locks, Part 2 CSCI 5828: Foundations of Software Engineering Lecture 08 09/18/2014 1 Goals Cover the material presented in Chapter 2 of our concurrency textbook In particular, selected material

More information

Java SE 8 Programming

Java SE 8 Programming Oracle University Contact Us: +52 1 55 8525 3225 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features and Application Programming

More information

Recap. Contents. Reenterancy of synchronized. Explicit Locks: ReentrantLock. Reenterancy of synchronise (ctd) Advanced Thread programming.

Recap. Contents. Reenterancy of synchronized. Explicit Locks: ReentrantLock. Reenterancy of synchronise (ctd) Advanced Thread programming. Lecture 07: Advanced Thread programming Software System Components 2 Behzad Bordbar School of Computer Science, University of Birmingham, UK Recap How to deal with race condition in Java Using synchronised

More information

G52CON: Concepts of Concurrency

G52CON: Concepts of Concurrency G52CON: Concepts of Concurrency Lecture 11: Semaphores I" Brian Logan School of Computer Science bsl@cs.nott.ac.uk Outline of this lecture" problems with Peterson s algorithm semaphores implementing semaphores

More information

Chapter 4: Threads. Operating System Concepts 9 th Edition

Chapter 4: Threads. Operating System Concepts 9 th Edition Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples

More information

Chapter 4: Multithreaded Programming

Chapter 4: Multithreaded Programming Chapter 4: Multithreaded Programming Silberschatz, Galvin and Gagne 2013 Chapter 4: Multithreaded Programming Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading

More information

143a, Spring 2018 Discussion Week 4 Programming Assignment. Jia Chen 27 Apr 2018

143a, Spring 2018 Discussion Week 4 Programming Assignment. Jia Chen 27 Apr 2018 143a, Spring 2018 Discussion Week 4 Programming Assignment Jia Chen 27 Apr 2018 Annoucements HW2 posted due Friday, May 4, 2018, 11:55 PM Programming Assignment posted due Friday, Jun 1, 2018, 11:55 PM

More information

CS11 Java. Fall Lecture 7

CS11 Java. Fall Lecture 7 CS11 Java Fall 2006-2007 Lecture 7 Today s Topics All about Java Threads Some Lab 7 tips Java Threading Recap A program can use multiple threads to do several things at once A thread can have local (non-shared)

More information

Chapter 4: Threads. Chapter 4: Threads

Chapter 4: Threads. Chapter 4: Threads Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples

More information

Synchronization SPL/2010 SPL/20 1

Synchronization SPL/2010 SPL/20 1 Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization

More information

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Chapter 4: Threads Silberschatz, Galvin and Gagne 2013 Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues 4.2 Silberschatz, Galvin

More information

Here are the steps to get the files for this project after logging in on acad/bill.

Here are the steps to get the files for this project after logging in on acad/bill. CSC 243, Java Programming, Spring 2013, Dr. Dale Parson Assignment 5, handling events in a working GUI ASSIGNMENT due by 11:59 PM on Thursday May 9 via gmake turnitin Here are the steps to get the files

More information

COMP 322: Fundamentals of Parallel Programming. Lecture 30: Java Synchronizers, Dining Philosophers Problem

COMP 322: Fundamentals of Parallel Programming. Lecture 30: Java Synchronizers, Dining Philosophers Problem COMP 322: Fundamentals of Parallel Programming Lecture 30: Java Synchronizers, Dining Philosophers Problem Vivek Sarkar, Shams Imam Department of Computer Science, Rice University Contact email: vsarkar@rice.edu,

More information

Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2

Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2 Lecture 3: Processes Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2 Process in General 3.3 Process Concept Process is an active program in execution; process

More information

Here are the steps to get the files for this project after logging in on acad/bill.

Here are the steps to get the files for this project after logging in on acad/bill. CSC 243, Java Programming, Spring 2013, Dr. Dale Parson Assignment 3, cloning & serializing game state for save & restore commands ASSIGNMENT due by 11:59 PM on Thursday April 11 via gmake turnitin Here

More information

Threads, Synchronization, and Scheduling. Eric Wu

Threads, Synchronization, and Scheduling. Eric Wu Threads, Synchronization, and Scheduling Eric Wu (ericwu@cs) Topics for Today Project 2 Due tomorrow! Project 3 Due Feb. 17 th! Threads Synchronization Scheduling Project 2 Troubleshooting: Stock kernel

More information

CONCURRENT API AND PARALLEL PROGRAMMING

CONCURRENT API AND PARALLEL PROGRAMMING MODULE 11 CONCURRENT API AND PARALLEL PROGRAMMING Module 11.A THREAD MODEL: RUNNABLE, CALLABLE, FUTURE, FUTURETASK Threads > What are threads? Threads are a virtual CPU. > The three parts of at thread

More information

CSE 451: Operating Systems Winter Lecture 7 Synchronization. Hank Levy 412 Sieg Hall

CSE 451: Operating Systems Winter Lecture 7 Synchronization. Hank Levy 412 Sieg Hall CSE 451: Operating Systems Winter 2003 Lecture 7 Synchronization Hank Levy Levy@cs.washington.edu 412 Sieg Hall Synchronization Threads cooperate in multithreaded programs to share resources, access shared

More information

Introduction to Locks. Intrinsic Locks

Introduction to Locks. Intrinsic Locks CMSC 433 Programming Language Technologies and Paradigms Spring 2013 Introduction to Locks Intrinsic Locks Atomic-looking operations Resources created for sequential code make certain assumptions, a large

More information

Real-Time and Concurrent Programming Lecture 4 (F4): Monitors: synchronized, wait and notify

Real-Time and Concurrent Programming Lecture 4 (F4): Monitors: synchronized, wait and notify http://cs.lth.se/eda040 Real-Time and Concurrent Programming Lecture 4 (F4): Monitors: synchronized, wait and notify Klas Nilsson 2016-09-20 http://cs.lth.se/eda040 F4: Monitors: synchronized, wait and

More information

OPERATING SYSTEM. Chapter 4: Threads

OPERATING SYSTEM. Chapter 4: Threads OPERATING SYSTEM Chapter 4: Threads Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples Objectives To

More information

Chapter 4: Multi-Threaded Programming

Chapter 4: Multi-Threaded Programming Chapter 4: Multi-Threaded Programming Chapter 4: Threads 4.1 Overview 4.2 Multicore Programming 4.3 Multithreading Models 4.4 Thread Libraries Pthreads Win32 Threads Java Threads 4.5 Implicit Threading

More information

Object Oriented Programming. Week 10 Part 1 Threads

Object Oriented Programming. Week 10 Part 1 Threads Object Oriented Programming Week 10 Part 1 Threads Lecture Concurrency, Multitasking, Process and Threads Thread Priority and State Java Multithreading Extending the Thread Class Defining a Class that

More information

CS420: Operating Systems

CS420: Operating Systems Threads James Moscola Department of Physical Sciences York College of Pennsylvania Based on Operating System Concepts, 9th Edition by Silberschatz, Galvin, Gagne Threads A thread is a basic unit of processing

More information

CSC 343 Operating Systems, Fall 2015, Intro to our UML State Machines

CSC 343 Operating Systems, Fall 2015, Intro to our UML State Machines CSC 343 Operating Systems, Fall 2015, Intro to our UML State Machines Dr. Dale E. Parson, http://faculty.kutztown.edu/parson To compile and run this course s state machines, you will have to log onto machine

More information

Student Name: University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science

Student Name: University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science University of California at Berkeley College of Engineering Department of Electrical Engineering and Computer Science CS 162 Spring 2011 I. Stoica FIRST MIDTERM EXAMINATION Wednesday, March 9, 2011 INSTRUCTIONS

More information

Practical Concurrency. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited.

Practical Concurrency. Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Practical Concurrency Agenda Motivation Java Memory Model Basics Common Bug Patterns JDK Concurrency Utilities Patterns of Concurrent Processing Testing Concurrent Applications Concurrency in Java 7 2

More information

Synchronization Lecture 24 Fall 2018

Synchronization Lecture 24 Fall 2018 Synchronization Lecture 24 Fall 2018 Prelim 2 tonight! The room assignments are on the course website, page Exams. Check it carefully! Come on time! Bring you Cornell id card! No lunch with gries this

More information

G Programming Languages Spring 2010 Lecture 13. Robert Grimm, New York University

G 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 information

STUDENT NAME: STUDENT ID: Problem 1 Problem 2 Problem 3 Problem 4 Problem 5 Total

STUDENT NAME: STUDENT ID: Problem 1 Problem 2 Problem 3 Problem 4 Problem 5 Total University of Minnesota Department of Computer Science & Engineering CSci 5103 - Fall 2018 (Instructor: Tripathi) Midterm Exam 1 Date: October 18, 2018 (1:00 2:15 pm) (Time: 75 minutes) Total Points 100

More information

Midterm Exam Amy Murphy 6 March 2002

Midterm Exam Amy Murphy 6 March 2002 University of Rochester Midterm Exam Amy Murphy 6 March 2002 Computer Systems (CSC2/456) Read before beginning: Please write clearly. Illegible answers cannot be graded. Be sure to identify all of your

More information

Synchronization. Announcements. Concurrent Programs. Race Conditions. Race Conditions 11/9/17. Purpose of this lecture. A8 released today, Due: 11/21

Synchronization. Announcements. Concurrent Programs. Race Conditions. Race Conditions 11/9/17. Purpose of this lecture. A8 released today, Due: 11/21 Announcements Synchronization A8 released today, Due: 11/21 Late deadline is after Thanksgiving You can use your A6/A7 solutions or ours A7 correctness scores have been posted Next week's recitation will

More information

COMP 322: Fundamentals of Parallel Programming

COMP 322: Fundamentals of Parallel Programming COMP 322: Fundamentals of Parallel Programming https://wiki.rice.edu/confluence/display/parprog/comp322 Lecture 30: Advanced locking in Java Vivek Sarkar Department of Computer Science Rice University

More information

Multi-threaded Performance And Scalability

Multi-threaded Performance And Scalability 1 Multi-threaded Performance And Scalability Dr Heinz M. Kabutz 2012 Heinz Kabutz All Rights Reserved Multi-threaded Performance and Scalability Dr Heinz Kabutz Brief Biography Lives in Chania on the Island

More information

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209

CSC209. Software Tools and Systems Programming. https://mcs.utm.utoronto.ca/~209 CSC209 Software Tools and Systems Programming https://mcs.utm.utoronto.ca/~209 What is this Course About? Software Tools Using them Building them Systems Programming Quirks of C The file system System

More information

CSCI 201L Written Exam #2. 10% of course grade

CSCI 201L Written Exam #2. 10% of course grade Name Final Score ID Extra Credit Section (circle one): MW 3:30-6:30 CSCI 201L Written Exam #2 10% of course grade 1. Anonymous Inner Classes In lecture we walked through the following: 1. Having two classes

More information

EECE.4810/EECE.5730: Operating Systems Spring Midterm Exam March 8, Name: Section: EECE.4810 (undergraduate) EECE.

EECE.4810/EECE.5730: Operating Systems Spring Midterm Exam March 8, Name: Section: EECE.4810 (undergraduate) EECE. EECE.4810/EECE.5730: Operating Systems Spring 2017 Midterm Exam March 8, 2017 Name: Section: EECE.4810 (undergraduate) EECE.5730 (graduate) For this exam, you may use two 8.5 x 11 double-sided page of

More information

CSE 153 Design of Operating Systems

CSE 153 Design of Operating Systems CSE 153 Design of Operating Systems Winter 19 Lecture 7/8: Synchronization (1) Administrivia How is Lab going? Be prepared with questions for this weeks Lab My impression from TAs is that you are on track

More information

Java SE 8 Programming

Java SE 8 Programming Java SE 8 Programming Training Calendar Date Training Time Location 16 September 2019 5 Days Bilginç IT Academy 28 October 2019 5 Days Bilginç IT Academy Training Details Training Time : 5 Days Capacity

More information

Midterm Exam October 15, 2012 CS162 Operating Systems

Midterm Exam October 15, 2012 CS162 Operating Systems CS 62 Fall 202 Midterm Exam October 5, 202 University of California, Berkeley College of Engineering Computer Science Division EECS Fall 202 Ion Stoica Midterm Exam October 5, 202 CS62 Operating Systems

More information

Concurrency: State Models & Design Patterns

Concurrency: State Models & Design Patterns Concurrency: State Models & Design Patterns Practical Session Week 02 1 / 13 Exercises 01 Discussion Exercise 01 - Task 1 a) Do recent central processing units (CPUs) of desktop PCs support concurrency?

More information

Syllabus CSCI 405 Operating Systems Fall 2018

Syllabus CSCI 405 Operating Systems Fall 2018 Syllabus CSCI 405 Operating Systems Fall 2018 1.0 General Information Class Time: Monday/Wednesday/Friday 11:00 AM - 11:50 AM Class Location: 317 Thompson Instructor: Dr. Deepti Joshi; Office: 224 Thompson;

More information

EMBEDDED SYSTEMS PROGRAMMING More About Languages

EMBEDDED SYSTEMS PROGRAMMING More About Languages EMBEDDED SYSTEMS PROGRAMMING 2015-16 More About Languages JAVA: ANNOTATIONS (1/2) Structured comments to source code (=metadata). They provide data about the code, but they are not part of the code itself

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

CS370 Operating Systems Midterm Review

CS370 Operating Systems Midterm Review CS370 Operating Systems Midterm Review Yashwant K Malaiya Fall 2015 Slides based on Text by Silberschatz, Galvin, Gagne 1 1 What is an Operating System? An OS is a program that acts an intermediary between

More information

Processes and Threads. Processes: Review

Processes and Threads. Processes: Review Processes and Threads Processes and their scheduling Threads and scheduling Multiprocessor scheduling Distributed Scheduling/migration Lecture 3, page 1 Processes: Review Multiprogramming versus multiprocessing

More information

AC OB S. Multi-threaded FW framework (OS) for embedded ARM systems Torsten Jaekel, June 2014

AC OB S. Multi-threaded FW framework (OS) for embedded ARM systems Torsten Jaekel, June 2014 AC OB S Multi-threaded FW framework (OS) for embedded ARM systems Torsten Jaekel, June 2014 ACOBS ACtive OBject (operating) System Simplified FW System for Multi-Threading on ARM embedded systems ACOBS

More information

CSE 4/521 Introduction to Operating Systems

CSE 4/521 Introduction to Operating Systems CSE 4/521 Introduction to Operating Systems Lecture 5 Threads (Overview, Multicore Programming, Multithreading Models, Thread Libraries, Implicit Threading, Operating- System Examples) Summer 2018 Overview

More information

CS140 Operating Systems and Systems Programming Midterm Exam

CS140 Operating Systems and Systems Programming Midterm Exam CS140 Operating Systems and Systems Programming Midterm Exam October 31 st, 2003 (Total time = 50 minutes, Total Points = 50) Name: (please print) In recognition of and in the spirit of the Stanford University

More information

What is a thread anyway?

What is a thread anyway? Concurrency in Java What is a thread anyway? Smallest sequence of instructions that can be managed independently by a scheduler There can be multiple threads within a process Threads can execute concurrently

More information

Java SE 7 Programming

Java SE 7 Programming Oracle University Contact Us: +40 21 3678820 Java SE 7 Programming Duration: 5 Days What you will learn This Java Programming training covers the core Application Programming Interfaces (API) you'll use

More information

CS 351 Design of Large Programs Threads and Concurrency

CS 351 Design of Large Programs Threads and Concurrency CS 351 Design of Large Programs Threads and Concurrency Brooke Chenoweth University of New Mexico Spring 2018 Concurrency in Java Java has basic concurrency support built into the language. Also has high-level

More information

Operating Systems, Spring 2015 Course Syllabus

Operating Systems, Spring 2015 Course Syllabus Operating Systems, Spring 2015 Course Syllabus Instructor: Dr. Rafael Ubal Email: ubal@ece.neu.edu Office: 140 The Fenway, 3rd floor (see detailed directions below) Phone: 617-373-3895 Office hours: Wednesday

More information

Java SE 7 Programming

Java SE 7 Programming Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 4108 4709 Java SE 7 Programming Duration: 5 Days What you will learn This is the second of two courses that cover the Java Standard Edition

More information

Chapter 6 Process Synchronization

Chapter 6 Process Synchronization Chapter 6 Process Synchronization Cooperating Process process that can affect or be affected by other processes directly share a logical address space (threads) be allowed to share data via files or messages

More information

Operating Systems. Synchronization

Operating Systems. Synchronization Operating Systems Fall 2014 Synchronization Myungjin Lee myungjin.lee@ed.ac.uk 1 Temporal relations Instructions executed by a single thread are totally ordered A < B < C < Absent synchronization, instructions

More information

Lab. Lecture 26: Concurrency & Responsiveness. Assignment. Maze Program

Lab. Lecture 26: Concurrency & Responsiveness. Assignment. Maze Program Lab Lecture 26: Concurrency & Responsiveness CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Using parallelism to speed up sorting using Threads and ForkJoinFramework Review relevant material. Some slides

More information

CSE 153 Design of Operating Systems Fall 2018

CSE 153 Design of Operating Systems Fall 2018 CSE 153 Design of Operating Systems Fall 2018 Lecture 5: Threads/Synchronization Implementing threads l Kernel Level Threads l u u All thread operations are implemented in the kernel The OS schedules all

More information

Module Road Map. 7. Version Control with Subversion Introduction Terminology

Module Road Map. 7. Version Control with Subversion Introduction Terminology Module Road Map 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring 5. Debugging 6. Testing with JUnit 7. Version Control with Subversion Introduction Terminology

More information

CPS 110 Midterm. Out: Wednesday, October 8, 14:50 Due via Hardcopy: 16:05

CPS 110 Midterm. Out: Wednesday, October 8, 14:50 Due via Hardcopy: 16:05 CPS 110 Midterm Out: Wednesday, October 8, 14:50 Due via Hardcopy: 16:05 This is an in-class exam. Read the entire exam through before you begin working. Read each question carefully, and note all that

More information

Non-blocking Array-based Algorithms for Stacks and Queues. Niloufar Shafiei

Non-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 information

Synchronization I. Jo, Heeseung

Synchronization I. Jo, Heeseung Synchronization I Jo, Heeseung Today's Topics Synchronization problem Locks 2 Synchronization Threads cooperate in multithreaded programs To share resources, access shared data structures Also, to coordinate

More information

Synchronization Lecture 23 Fall 2017

Synchronization Lecture 23 Fall 2017 Synchronization Lecture 23 Fall 2017 Announcements A8 released today, Due: 11/21 Late deadline is after Thanksgiving You can use your A6/A7 solutions or ours A7 correctness scores have been posted Next

More information

CSC 716 Advanced Operating System Fall 2007 Exam 1. Answer all the questions. The maximum credit for each question is as shown.

CSC 716 Advanced Operating System Fall 2007 Exam 1. Answer all the questions. The maximum credit for each question is as shown. CSC 716 Advanced Operating System Fall 2007 Exam 1 Answer all the questions. The maximum credit for each question is as shown. 1. (15) Multiple Choice(3 points for each): 1) Which of the following statement

More information

CS4411 Intro. to Operating Systems Exam 1 Fall points 10 pages

CS4411 Intro. to Operating Systems Exam 1 Fall points 10 pages CS4411 Intro. to Operating Systems Exam 1 Fall 2005 (October 6, 2005) 1 CS4411 Intro. to Operating Systems Exam 1 Fall 2005 150 points 10 pages Name: Most of the following questions only require very short

More information

CS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring 2004

CS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring 2004 CS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring 2004 Lecture 9: Readers-Writers and Language Support for Synchronization 9.1.2 Constraints 1. Readers can access database

More information

Java 2 Programmer Exam Cram 2

Java 2 Programmer Exam Cram 2 Java 2 Programmer Exam Cram 2 Copyright 2003 by Que Publishing International Standard Book Number: 0789728613 Warning and Disclaimer Every effort has been made to make this book as complete and as accurate

More information

Atomicity CS 2110 Fall 2017

Atomicity CS 2110 Fall 2017 Atomicity CS 2110 Fall 2017 Parallel Programming Thus Far Parallel programs can be faster and more efficient Problem: race conditions Solution: synchronization Are there more efficient ways to ensure the

More information

Project 1: Syscalls for synchronization 1

Project 1: Syscalls for synchronization 1 Project 1: Syscalls for synchronization 1 Submit a gzipped tarball of your code to CourseWeb. Due: Monday, February 4, 2019 @11:59pm Late: Wednesday, February 6, 2019 @11:59pm with 10% reduction per late

More information

CS 450 Operating System Week 4 Lecture Notes

CS 450 Operating System Week 4 Lecture Notes CS 450 Operating System Week 4 Lecture Notes Reading: Operating System Concepts (7 th Edition) - Silberschatz, Galvin, Gagne Chapter 5 - Pages 129 147 Objectives: 1. Explain the main Objective of Threads

More information

Midterm Exam Solutions Amy Murphy 28 February 2001

Midterm Exam Solutions Amy Murphy 28 February 2001 University of Rochester Midterm Exam Solutions Amy Murphy 8 February 00 Computer Systems (CSC/56) Read before beginning: Please write clearly. Illegible answers cannot be graded. Be sure to identify all

More information

CSC209H Lecture 1. Dan Zingaro. January 7, 2015

CSC209H Lecture 1. Dan Zingaro. January 7, 2015 CSC209H Lecture 1 Dan Zingaro January 7, 2015 Welcome! Welcome to CSC209 Comments or questions during class? Let me know! Topics: shell and Unix, pipes and filters, C programming, processes, system calls,

More information

Synchronization

Synchronization Synchronization 10-28-2013 Synchronization Coming next: Multithreading in JavaFX (javafx.concurrent) Read: Java Tutorial on concurrency JavaFX Tutorial on concurrency Effective Java, Chapter 9 Project#1:

More information

Actors in the Small. Making Actors more Useful. Bill La

Actors in the Small. Making Actors more Useful. Bill La Actors in the Small Making Actors more Useful Bill La Forge laforge49@gmail.com @laforge49 Actors in the Small I. Introduction II. Making Actors Fast III.Making Actors Easier to Program IV. Tutorial I.

More information