Chapter 4: Multi-Threaded Programming

Similar documents
Chapter 4: Threads. Chapter 4: Threads

Chapter 4: Threads. Operating System Concepts 9 th Edit9on

Chapter 4: Threads. Chapter 4: Threads

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

Chapter 4: Threads. Operating System Concepts 9 th Edition

Chapter 4: Threads. Overview Multithreading Models Threading Issues Pthreads Windows XP Threads Linux Threads Java Threads. Operating System Concepts

Operating Systems 2 nd semester 2016/2017. Chapter 4: Threads

Chapter 4: Multithreaded Programming. Operating System Concepts 8 th Edition,

Chapter 4: Multithreaded Programming

OPERATING SYSTEM. Chapter 4: Threads

Chapter 4: Threads. Operating System Concepts 9 th Edition

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

CS307: Operating Systems

Chapter 4: Multithreaded

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

EI 338: Computer Systems Engineering (Operating Systems & Computer Architecture)

Chapter 4: Multithreaded Programming Dr. Varin Chouvatut. Operating System Concepts 8 th Edition,

CS 450 Operating System Week 4 Lecture Notes

Questions from last time

Outline. Threads. Single and Multithreaded Processes. Benefits of Threads. Eike Ritter 1. Modified: October 16, 2012

CS420: Operating Systems

Chapter 5: Threads. Overview Multithreading Models Threading Issues Pthreads Windows XP Threads Linux Threads Java Threads

CSE 4/521 Introduction to Operating Systems

Chapter 4: Threads. Operating System Concepts. Silberschatz, Galvin and Gagne

Threads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits

Chapter 4: Multithreaded Programming

Multithreaded Programming

Che-Wei Chang Department of Computer Science and Information Engineering, Chang Gung University

Chapter 4: Multithreaded Programming

Chapter 4 Multithreaded Programming

Chapter 4: Multithreaded Programming

CSE Opera,ng System Principles

Chapter 5: Threads. Single and Multithreaded Processes

CSCE 313 Introduction to Computer Systems. Instructor: Dezhen Song

CSCE 313: Intro to Computer Systems

Operating Systems Prof. Ashok K Agrawala

CS370 Operating Systems

Chapter 3: Processes. Operating System Concepts 8th Edition

Chapter 4: Threads. Operating System Concepts with Java 8 th Edition

Lecture 4 Threads. (chapter 4)

Chapter 5: Processes & Process Concept. Objectives. Process Concept Process Scheduling Operations on Processes. Communication in Client-Server Systems

CSMC 412. Operating Systems Prof. Ashok K Agrawala Ashok Agrawala Set 4. September 2006 CMSC 412 Set 4

Chapter 5: Threads. Outline

Semantics of fork() and exec()

Processes and Threads

COP 4610: Introduction to Operating Systems (Spring 2015) Chapter 4: Threads. Zhi Wang Florida State University

CS370 Operating Systems

Processes and Threads

CS370 Operating Systems

Process Description and Control

CISC2200 Threads Spring 2015

Lecture 2 Process Management

Concurrency, Thread. Dongkun Shin, SKKU

Process Concept Process in Memory Process State new running waiting ready terminated Diagram of Process State

Chapter 4: Threads. Operating System Concepts 8 th Edition,

Chapter 4: Threads. Operating System Concepts 9 th Edition

Threads. CS3026 Operating Systems Lecture 06

Page 1. Analogy: Problems: Operating Systems Lecture 7. Operating Systems Lecture 7

Definition Multithreading Models Threading Issues Pthreads (Unix)

Threads. Thread Concept Multithreading Models User & Kernel Threads Pthreads Threads in Solaris, Linux, Windows. 2/13/11 CSE325 - Threads 1

CS370 Operating Systems

Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

CHAPTER 2: PROCESS MANAGEMENT

UNIT-II PROCESS SYNCHRONIZATION

Threads. Still Chapter 2 (Based on Silberchatz s text and Nachos Roadmap.) 3/9/2003 B.Ramamurthy 1

Threads Implementation. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Last Class: CPU Scheduling. Pre-emptive versus non-preemptive schedulers Goals for Scheduling: CS377: Operating Systems.

Thread Concept. Thread. No. 3. Multiple single-threaded Process. One single-threaded Process. Process vs. Thread. One multi-threaded Process

4.8 Summary. Practice Exercises

Thread. Operating Systems (Fall/Winter 2018) Yajin Zhou ( Zhejiang University

COP 4610: Introduction to Operating Systems (Fall 2016) Chapter 4: Threads. Zhi Wang Florida State University

ICS Principles of Operating Systems

Exercise (could be a quiz) Solution. Concurrent Programming. Roadmap. Tevfik Koşar. CSE 421/521 - Operating Systems Fall Lecture - IV Threads

Threads. CS-3013 Operating Systems Hugh C. Lauer. CS-3013, C-Term 2012 Threads 1

Chapter 3 Process Description and Control

Yi Shi Fall 2017 Xi an Jiaotong University

CS Lecture 3! Threads! George Mason University! Spring 2010!

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4

Multithreading. Reading: Silberschatz chapter 5 Additional Reading: Stallings chapter 4

Distributed Systems Operation System Support

Threads Implementation. Jo, Heeseung

Threads Chapter 5 1 Chapter 5

操作系统原理与设计. 第 4 章 Threads( 线程 ) 陈香兰. March 28, 2014 中国科学技术大学计算机学院. 陈香兰 ( 中国科学技术大学计算机学院 ) 操作系统原理与设计 March 28, /

!! How is a thread different from a process? !! Why are threads useful? !! How can POSIX threads be useful?

THREADS. Jo, Heeseung

CS420: Operating Systems

Lecture 5: Process Description and Control Multithreading Basics in Interprocess communication Introduction to multiprocessors

! How is a thread different from a process? ! Why are threads useful? ! How can POSIX threads be useful?

Computer Systems Laboratory Sungkyunkwan University

Threads. studykorner.org

Process Characteristics. Threads Chapter 4. Process Characteristics. Multithreading vs. Single threading

Threads Chapter 4. Reading: 4.1,4.4, 4.5

Lecture Topics. Announcements. Today: Threads (Stallings, chapter , 4.6) Next: Concurrency (Stallings, chapter , 5.

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process

Last class: Today: Thread Background. Thread Systems

Agenda. Threads. Single and Multi-threaded Processes. What is Thread. CSCI 444/544 Operating Systems Fall 2008

OPERATING SYSTEMS. UNIT II Sections A, B & D. An operating system executes a variety of programs:

Operating systems. Module 7 IPC (Interprocess communication) PART I. Tami Sorgente 1

Operating Systems CMPSCI 377 Spring Mark Corner University of Massachusetts Amherst

Transcription:

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 4.6 Threading Issues 4.7 Operating-System Examples 4.2

4.1 Overview Thread a basic unit of CPU utilization thread ID, program counter, register set, stack, etc. share with other threads belonging to the same process code section, data section open files, signals traditional (or heavyweight) process: a single thread of control 4.3

Single and Multithreaded Processes 4.4

Benefits Responsiveness The program continues even if part of it is blocked Resource Sharing Sharing code and data allows an application to have several different threads Economy More economical to create and context-switch threads In Solaris, creating a process is about 30x slower Utilization of MP Architectures Threads may be running in parallel 4.5

4.2 Multicore Programming Multicore systems putting pressure on programmers, challenges include Dividing activities Balance Data splitting Data dependency Testing and debugging 4.6

Multithreaded Server Architecture 4.7

Concurrent Execution on a Single-core System 4.8

Parallel Execution on a Multicore System 4.9

4.3 Multithreading Models Types of Threads User Threads Thread management done by user-level threads library Three primary thread libraries: POSIX Pthreads Win32 threads Java threads Kernel Threads Supported by the Kernel Examples: Windows XP/2000, Solaris, Linux, Tru64 UNIX, Mac OS X Multithreading Models Many-to-One One-to-One Many-to-Many Two-level 4.10

Many-to-One Many user-level threads mapped to single kernel thread Examples: Solaris Green Threads GNU Portable Threads 4.11

Many-to-One Model 4.12

One-to-One Each user-level thread maps to kernel thread Examples Windows NT/XP/2000 Linux Solaris 9 and later 4.13

One-to-one Model 4.14

Many-to-Many Model Allows many user level threads to be mapped to many kernel threads Allows the operating system to create a sufficient number of kernel threads Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package 4.15

Many-to-Many Model 4.16

Two-level Model Similar to the many-to-many model, except that it allows a user thread to be bound to kernel thread Examples IRIX HP-UX Tru64 UNIX Solaris 8 and earlier 4.17

Two-level Model 4.18

4.4 Thread Libraries Thread library: API for creating and managing threads Two primary implementation approaches 1. Entirely in user space with no kernel support All code and data structure in user space Invoke a local function call rather than a system call 2. Supported directly by OS Exist in kernel space Invoke a thread function typically resulting in a system call Three main thread libraries 1. POSIX Pthreads 2. Win32 threads 3. Java threads 4.19

Pthreads A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization API specifies behavior of the thread library, implementation is up to development of the library Common in UNIX operating systems (Solaris, Linux, Mac OS X) Example: Figure 4.9 at Page 161 4.20

Win32 Threads Implements the one-to-one mapping Each thread contains A thread id Register set Separate user and kernel stacks Private data storage area The register set, stacks, and private storage area are known as the context of the threads The primary data structures of a thread include: ETHREAD (executive thread block) KTHREAD (kernel thread block) TEB (thread environment block) Example: Figure 4.10 at Page 163 4.21

Java Threads Java threads are managed by the JVM Java threads may be created by two approaches: Extend Thread class Define a class that Implements the Runnable interface Actually created by the start() method rather by creating a thread object Allocate memory and initialize a new thread Call the run() method Six states New Terminated Runnable Blocked: waits to acquire a lock Waiting/Timed waiting: waits for an action by another thread, i.e. join() Example: Figure 4.11 at Page 165 Figures 4.13-15: Factory class with producer and consumer threads 4.22

4.5 Implicit Threading Implicit threading: transferring the creation and management of threading from application developers to compilers and run-time libraries Three approaches Thread Pools OpenMP Grand Central Dispatch 4.23

4.5.1 Thread Pools Simple approach: Create a separate thread to serve a request whenever the server receives the request Advanced approach: Create a number of threads in a pool where they await work Advantages: Usually slightly faster to service a request with an existing thread than create a new thread Allows the number of threads in the application(s) to be bound to the size of the pool Separating task to be performed from mechanics of creating task allows different strategies for running task i.e.tasks could be scheduled to run periodically Windows API supports thread pools: 4.24

4.5.2 OpenMP Set of compiler directives and an API for C, C++, FORTRAN Provides support for parallel programming in shared-memory environments Identifies parallel regions blocks of code that can run in parallel #pragma omp parallel Create as many threads as there are cores #pragma omp parallel for for(i=0;i<n;i++) { c[i] = a[i] + b[i]; } Run for loop in parallel 4.25

4.5.3 Grand Central Dispatch Apple technology for Mac OS X and ios operating systems Extensions to C, C++ languages, API, and run-time library Allows identification of parallel sections Manages most of the details of threading Block is in ^{ } - ˆ{ printf("i am a block"); } Blocks placed in dispatch queue Assigned to available thread in thread pool when removed from queue Two types of dispatch queues: serial blocks removed in FIFO order, queue is per process, called main queue Programmers can create additional serial queues within program concurrent removed in FIFO order but several may be removed at a time Three system wide queues with priorities low, default, high 4.26

4.6 Threading Issues 4.6.1 Semantics of fork() and exec() system calls 4.6.2 Thread cancellation 4.6.3 Signal handling 4.6.4 Thread-local storage 4.6.5 Scheduler activations 4.27

4.6.1 Semantics of fork() and exec() Does fork() duplicate only the calling thread or all threads? depending on OS, typically have two versions of fork() 4.28

4.6.2 Thread Cancellation Terminating a thread before it has finished Two general approaches: Asynchronous cancellation terminates the target thread immediately may not free a necessary system-wide resource Deferred cancellation allows the target thread to periodically check if it should be cancelled The thread can be canceled at a point when it can be canceled safely. called cancellation points in Pthreads 4.29

4.6.3 Signal Handling Signals are used in UNIX systems to notify a process that a particular event has occurred A signal handler is used to process signals 1. Signal is generated by particular event 2. Signal is delivered to a process 3. Signal is handled Options: Deliver the signal to the thread to which the signal applies Deliver the signal to every thread in the process Deliver the signal to certain threads in the process Assign a specific thread to receive all signals for the process 4.30

4.6.4 Thread-Local Storage Allows each thread to have its own copy of data Example: each transaction in a transaction-processing system is served in a separate thread Most thread libraries provide this. 4.31

4.6.5 Scheduler Activations Both M:M and Two-level models require communication between the kernel and thread library to maintain the appropriate number of kernel threads allocated to the application lightweight process (LWP): an intermediate data structure between the user and kernel threads to implement threads; like a virtual processor attached to a kernel thread, which is scheduled by OS The kernel provides an application with a set of virtual processors (LWPs) The thread library schedule user threads onto an available virtual processor Scheduler activation provides upcalls - a communication mechanism from the kernel to the thread library The kernel inform an application about certain events eg. informing that a thread is about to block, or now eligible to run This communication allows an application to maintain the correct number of kernel threads 4.32

Summary 4.1 Overview 4.2 Multicore Programming 4.3 Multithreading Models 4.4 Thread Libraries Pthreads Win32 Threads Java Threads 4.5 Implicit Threading 4.6 Threading Issues 4.7 Operating-System Examples 4.33