Sie sind auf Seite 1von 29

Chapter 3

Threads

Chapter 2.4: Threads


Chapter 2.5 : Threads

Process concept
Process scheduling
Interprocess communication
Deadlocks
Threads

Ceng 334 - Operating Systems

2.5-1

These lecture notes have been adapted from


How to program with threads
An introduction to multithreaded programming

By Bil Lewis and Daniel J. Berg

Ceng 334 - Operating Systems

2.5-2

Processes and Threads


Processes & Threads
Processes and threads are related concepts
A process is a kernel-level entity
Process structure can only be accessed through
system calls

A thread (or a lightweight process) is a


user-level entity
The thread structure is in user space
It is accessed directly with the thread library
calls, which are just normal user-level functions
(threads do not use system calls)
Ceng 334 - Operating Systems

2.5-3

Process-Threads and Data Structures


Process and Thread Data
Structures
TCB1

Code

TCB2

TCB3

Data

Stack

User Space

Kernel Space

PCB
Ceng 334 - Operating Systems

2.5-4

Chracteristics of Threads
Characteristics of Threads
The TCB (thread control block) consist of
program counter
register set
stack space
Thus the TCB is a reduced PCB
A traditional process is equal to a task with one
thread
All threads in a process share the state of that
process
Ceng 334 - Operating Systems

2.5-5

Characteristics of Threads
Characteristics of Threads (Cont.)
They reside in the exact same memory space (user
memory), see the same code and data
When one thread alters a process variable (say, the
working directory), all the others will see the
change when they next access it
If one thread opens a file to read it, all the other
threads can also read from it.
Ceng 334 - Operating Systems

2.5-6

Characteristics of Threads
Characteristics of Threads (Cont.)
Because no system calls are involved, threads are
fast
There are no kernel structures affected by the
existence of threads in a program, so no kernel
resources are consumed -- threads are cheap
The kernel doesn't even know that threads exist

Ceng 334 - Operating Systems

2.5-7

Thredas of a Taks
Threads of a Task
Threads
Threads
Program
Counter

Code segment
Ceng 334 - Operating Systems

Task

Data
segment
2.5-8

Multiple Threads
Single vs. Multiple Threads of
Execution
Single Thread
Start

Multiple Threads
Start

Edit Document
Edit Document

Print Document

Print Document

End
Ceng 334 - Operating Systems

End
2.5-9

10

Threads
The Thread Model (1)

(a) Three processes each with one thread


(b) One process with three threads
11

The Thread Model (2)

Items shared by all threads in a process


Items private to each thread
12

The Thread Model (3)

Each thread has its own stack


13

Thread Usage (1)

A word processor with three threads


14

Thread Usage (2)

A multithreaded Web server

15

Thread Usage (3)

Rough outline of code for previous slide


(a) Dispatcher thread
(b) Worker thread
16

Thread Usage (4)

Three ways to construct a server

17

Implementing Threads in User Space

A user-level threads package


18

Implementing Threads in the Kernel

A threads package managed by the kernel

19

Hybrid Implementations

Multiplexing user-level threads onto kernel- level threads


20

Scheduler Activations
Goal mimic functionality of kernel threads
gain performance of user space threads

Avoids unnecessary user/kernel transitions


Kernel assigns virtual processors to each process
lets runtime system allocate threads to processors

Problem:
Fundamental reliance on kernel (lower layer)
calling procedures in user space (higher layer)
21

Pop-Up Threads

Creation of a new thread when message arrives


(a) before message arrives
(b) after message arrives

22

Making Single-Threaded Code Multithreaded (1)

Conflicts between threads over the use of a global variable


23

Making Single-Threaded Code Multithreaded (2)

Threads can have private global variables


24

Some Benifits of Multi-Threading


Some Benefits of Writing
Multithreaded Programs:
Performance gains from multiprocessing
hardware (parallelism)
Increased application throughput
Increased application responsiveness
Enhanced process-to-process
communications
Ceng 334 - Operating Systems

2.5-10

25

Parallelism
Parallellism
Different threads can run on different
processors simultaneously with no special
input from the user and no effort on the part
of the programmer

Ceng 334 - Operating Systems

2.5-11

26

Througput
Throughput
When a traditional, single-threaded program
requests a service from the operating
system, it must wait for that service to
complete, often leaving the CPU idle
Multithreading provides progress even
though one or more threads wait for an
event as long as other threads are active
Ceng 334 - Operating Systems

2.5-12

27

Reponsiveness
Responsiveness
Blocking one part of a process need not block the
whole process. Single-threaded applications that
do something lengthy when a button is pressed
typically display a "please wait" cursor and freeze
while the operation is in progress
If such applications were multithreaded, long
operations could be done by independent threads,
allowing the application to remain active and
making the application more responsive to the
user
Ceng 334 - Operating Systems

2.5-13

28

Communication
Communications
An application that uses multiple processes to
accomplish its tasks can be replaced by an
application that uses multiple threads to
accomplish those same tasks
Processes-to-process communication through
traditional IPC (interprocess communications)
facilities (e.g., pipes or sockets)
The threaded application can use the inherently
shared memory of the process
Ceng 334 - Operating Systems

2.5-14

29

Das könnte Ihnen auch gefallen