0% found this document useful (0 votes)
60 views16 pages

Chapter 4 - Thread Concepts: 2004 Deitel & Associates, Inc. All Rights Reserved

The document discusses thread concepts including the definition of a thread, motivation for using threads, the life cycle and states of a thread, threading models, and common thread operations. A thread is a lightweight process that shares resources with other threads in a process and has its own program counter, registers, and stack. Threads allow for more natural expression of parallel tasks and improve performance on multiprocessor systems compared to separate processes. Thread states include ready, running, waiting, sleeping, and dead. Threading models include user-level threads managed by libraries, kernel-level threads with a one-to-one mapping to OS threads, and combinations using thread pools.

Uploaded by

Hemanth
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
60 views16 pages

Chapter 4 - Thread Concepts: 2004 Deitel & Associates, Inc. All Rights Reserved

The document discusses thread concepts including the definition of a thread, motivation for using threads, the life cycle and states of a thread, threading models, and common thread operations. A thread is a lightweight process that shares resources with other threads in a process and has its own program counter, registers, and stack. Threads allow for more natural expression of parallel tasks and improve performance on multiprocessor systems compared to separate processes. Thread states include ready, running, waiting, sleeping, and dead. Threading models include user-level threads managed by libraries, kernel-level threads with a one-to-one mapping to OS threads, and combinations using thread pools.

Uploaded by

Hemanth
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 16

Chapter 4 – Thread Concepts

Outline
4.1 Introduction
4.2 Definition of Thread
4.3 Motivation for Threads
4.4 Thread States: Life Cycle of a Thread
4.5 Thread Operations
4.6 Threading Models
4.6.1 User-Level Threads
4.6.2 Kernel-Level Threads
4.6.3 Combining User- and Kernel-Level Threads
4.7 Thread Implementation Considerations
4.7.1 Thread Signal Delivery
4.7.2 Thread Termination
4.8 POSIX and Pthreads
4.9 Linux Threads
4.10 Windows XP Threads
4.11 Java Multithreading Case Study, Part 1: Introduction to Java
Threads

 2004 Deitel & Associates, Inc. All rights reserved.

Objectives

• After reading this chapter, you should understand:


– the motivation for creating threads.
– the similarities and differences between processes and threads.
– the various levels of support for threads.
– the life cycle of a thread.
– thread signaling and cancellation.
– the basics of POSIX, Linux, Windows XP and Java threads.

 2004 Deitel & Associates, Inc. All rights reserved.

1
4.1 Introduction

• General-purpose languages such as Java, C#, Visual


C++ .NET, Visual Basic .NET and Python have made
concurrency primitives available to applications
programmer
• Multithreading
– Programmer specifies applications contain threads of execution
– Each thread designate a portion of a program that may execute
concurrently with other threads

 2004 Deitel & Associates, Inc. All rights reserved.

4.2 Definition of Thread

• Thread
– Lightweight process (LWP)
– Threads of instructions or thread of control
– Shares address space and other global information with its
process
– Registers, stack, signal masks and other thread-specific data are
local to each thread
• Threads may be managed by the operating system or
by a user application
• Examples: Win32 threads, C-threads, Pthreads

 2004 Deitel & Associates, Inc. All rights reserved.

2
4.2 Definition of Thread
Figure 4.1 Thread Relationship to Processes.

 2004 Deitel & Associates, Inc. All rights reserved.

4.3 Motivation for Threads

• Threads have become prominent due to trends in


– Software design
• More naturally expresses inherently parallel tasks
– Performance
• Scales better to multiprocessor systems
– Cooperation
• Shared address space incurs less overhead than IPC

 2004 Deitel & Associates, Inc. All rights reserved.

3
4.3 Motivation for Threads

• Each thread transitions among a series of discrete


thread states
• Threads and processes have many operations in
common (e.g. create, exit, resume, and suspend)
• Thread creation does not require operating system to
initialize resources that are shared between parent
processes and its threads
– Reduces overhead of thread creation and termination compared
to process creation and termination

 2004 Deitel & Associates, Inc. All rights reserved.

4.4 Thread States: Life Cycle of a Thread

• Thread states
– Born state
– Ready state (runnable state)
– Running state
– Dead state
– Blocked state
– Waiting state
– Sleeping state
• Sleep interval specifies for how long a thread will sleep

 2004 Deitel & Associates, Inc. All rights reserved.

4
4.4 Thread States: Life Cycle of a Thread
Figure 4.2 Thread life cycle.

 2004 Deitel & Associates, Inc. All rights reserved.

4.5 Thread Operations

• Threads and processes have common operations


– Create
– Exit (terminate)
– Suspend
– Resume
– Sleep
– Wake

 2004 Deitel & Associates, Inc. All rights reserved.

5
4.5 Thread Operations

• Thread operations do not correspond precisely to


process operations
– Cancel
• Indicates that a thread should be terminated, but does not guarantee
that the thread will be terminated
• Threads can mask the cancellation signal
– Join
• A primary thread can wait for all other threads to exit by joining
them
• The joining thread blocks until the thread it joined exits

 2004 Deitel & Associates, Inc. All rights reserved.

4.6 Threading Models

• Three most popular threading models


– User-level threads
– Kernel-level threads
– Combination of user- and kernel-level threads

 2004 Deitel & Associates, Inc. All rights reserved.

6
4.6.1 User-level Threads

• User-level threads perform threading operations in user space


– Threads are created by runtime libraries that cannot execute privileged
instructions or access kernel primitives directly
• User-level thread implementation
– Many-to-one thread mappings
• Operating system maps all threads in a multithreaded process to single
execution context
• Advantages
– User-level libraries can schedule its threads to optimize performance
– Synchronization performed outside kernel, avoids context switches
– More portable
• Disadvantage
– Kernel views a multithreaded process as a single thread of control
• Can lead to suboptimal performance if a thread issues I/O
• Cannot be scheduled on multiple processors at once

 2004 Deitel & Associates, Inc. All rights reserved.

4.6.1 User-level Threads

Figure 4.3 User-level threads.

 2004 Deitel & Associates, Inc. All rights reserved.

7
4.6.2 Kernel-level Threads

• Kernel-level threads attempt to address the limitations


of user-level threads by mapping each thread to its
own execution context
– Kernel-level threads provide a one-to-one thread mapping
• Advantages: Increased scalability, interactivity, and throughput
• Disadvantages: Overhead due to context switching and reduced
portability due to OS-specific APIs
• Kernel-level threads are not always the optimal
solution for multithreaded applications

 2004 Deitel & Associates, Inc. All rights reserved.

4.6.2 Kernel-level Threads

Figure 4.4 Kernel-level threads.

 2004 Deitel & Associates, Inc. All rights reserved.

8
4.6.3 Combining User- and Kernel-level Threads

• The combination of user- and kernel-level thread


implementation
– Many-to-many thread mapping (m-to-n thread mapping)
• Number of user and kernel threads need not be equal
• Can reduce overhead compared to one-to-one thread mappings by
implementing thread pooling
• Worker threads
– Persistent kernel threads that occupy the thread pool
– Improves performance in environments where threads are frequently
created and destroyed
– Each new thread is executed by a worker thread
• Scheduler activation
– Technique that enables user-level library to schedule its threads
– Occurs when the operating system calls a user-level threading library
that determines if any of its threads need rescheduling

 2004 Deitel & Associates, Inc. All rights reserved.

4.6.3 Combining User- and Kernel-level Threads

Figure 4.5 Hybrid threading model.

 2004 Deitel & Associates, Inc. All rights reserved.

9
4.7.1 Thread Signal Delivery

• Two types of signals


– Synchronous:
• Occur as a direct result of program execution
• Should be delivered to currently executing thread
– Asynchronous
• Occur due to an event typically unrelated to the current instruction
• Threading library must determine each signal’s recipient so that
asynchronous signals are delivered properly
• Each thread is usually associated with a set of
pending signals that are delivered when it executes
• Thread can mask all signals except those that it
wishes to receive

 2004 Deitel & Associates, Inc. All rights reserved.

4.7.1 Thread Signal Delivery


Figure 4.6 Signal masking.

 2004 Deitel & Associates, Inc. All rights reserved.

10
4.7.2 Thread Termination

• Thread termination (cancellation)


– Differs between thread implementations
– Prematurely terminating a thread can cause subtle errors in
processes because multiple threads share the same address space
– Some thread implementations allow a thread to determine when
it can be terminated to prevent process from entering
inconsistent state

 2004 Deitel & Associates, Inc. All rights reserved.

4.8 POSIX and Pthreads

• Threads that use the POSIX threading API are called


Pthreads
– POSIX states that processor registers, stack and signal mask are
maintained individually for each thread
– POSIX specifies how operating systems should deliver signals to
Pthreads in addition to specifying several thread-cancellation
modes

 2004 Deitel & Associates, Inc. All rights reserved.

11
4.9 Linux Threads

• Linux allocates the same type of process descriptor to


processes and threads (tasks)
• Linux uses the UNIX-based system call fork to
spawn child tasks
• To enable threading, Linux provides a modified
version named clone
– Clone accepts arguments that specify which resources to share
with the child task

 2004 Deitel & Associates, Inc. All rights reserved.

4.9 Linux Threads


Figure 4.7 Linux task state-transition diagram.

 2004 Deitel & Associates, Inc. All rights reserved.

12
4.10 Windows XP Threads

• Threads
– Actual unit of execution dispatched to a processor
– Execute a piece of the process’s code in the process’s
context, using the process’s resources
– Execution context contains
• Runtime stack
• State of the machine’s registers
• Several attributes

 2004 Deitel & Associates, Inc. All rights reserved.

4.10 Windows XP Threads

• Windows XP threads can create fibers


– Fiber is scheduled for execution by the thread that creates
it, rather than the scheduler
• Windows XP provides each process with a thread
pool that consists of a number of worker threads,
which are kernel threads that execute functions
specified by user threads

 2004 Deitel & Associates, Inc. All rights reserved.

13
4.10 Windows XP Threads
Figure 4.8 Windows XP thread state-transition diagram.

 2004 Deitel & Associates, Inc. All rights reserved.

4.11 Java Multithreading Case Study, Part I:


Introduction to Java Threads

• Java allows the application programmer to create


threads that can port to many computing platforms
• Threads
– Created by class Thread
– Execute code specified in a Runnable object’s run method
• Java supports operations such as naming, starting and
joining threads

 2004 Deitel & Associates, Inc. All rights reserved.

14
4.11 Java Multithreading Case Study, Part I:
Introduction to Java Threads
Figure 4.9 Java threads being created, starting, sleeping and printing. (Part 1 of 4.)

 2004 Deitel & Associates, Inc. All rights reserved.

4.11 Java Multithreading Case Study, Part I:


Introduction to Java Threads
Figure 4.9 Java threads being created, starting, sleeping and printing. (Part 2 of 4.)

 2004 Deitel & Associates, Inc. All rights reserved.

15
4.11 Java Multithreading Case Study, Part I:
Introduction to Java Threads
Figure 4.9 Java threads being created, starting, sleeping and printing. (Part 3 of 4.)

 2004 Deitel & Associates, Inc. All rights reserved.

4.11 Java Multithreading Case Study, Part I:


Introduction to Java Threads
Figure 4.9 Java threads being created, starting, sleeping and printing. (Part 4 of 4.)

 2004 Deitel & Associates, Inc. All rights reserved.

16

You might also like