lecture 3 threads erick pranata © sekolah tinggi teknik surabaya 1
TRANSCRIPT
![Page 1: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/1.jpg)
Operating System
Lecture 3 Threads
Erick Pranata© Sekolah Tinggi Teknik Surabaya
1
![Page 2: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/2.jpg)
Chapter 4: Threads» Overview» Multithreading Models» Thread Libraries» Threading Issues» Operating System Examples» Windows XP Threads» Linux Threads
2
© Sekolah Tinggi Teknik Surabaya
![Page 3: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/3.jpg)
Objectives» To introduce the notion of a thread — a
fundamental unit of CPU utilization that forms the basis of multithreaded computer systems
» To discuss the APIs for the Pthreads, Win32, and Java thread libraries
» To examine issues related to multithreaded programming
3
© Sekolah Tinggi Teknik Surabaya
![Page 4: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/4.jpg)
Motivation» Threads run within application» Multiple tasks with the application can be
implemented by separate threads˃ Update display˃ Fetch data˃ Spell checking˃ Answer a network request
» Process creation is heavy-weight while thread creation is light-weight
» Can simplify code, increase efficiency» Kernels are generally multithreaded
4
© Sekolah Tinggi Teknik Surabaya
![Page 5: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/5.jpg)
Multithreaded Server Architecture
5
© Sekolah Tinggi Teknik Surabaya
![Page 6: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/6.jpg)
Single and Multithreaded Processes
6
© Sekolah Tinggi Teknik Surabaya
![Page 7: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/7.jpg)
Benefits» Responsiveness» Resource Sharing» Economy» Scalability
7
© Sekolah Tinggi Teknik Surabaya
![Page 8: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/8.jpg)
Multicore Programming» Multicore systems putting pressure on
programmers, challenges include:˃ Dividing activities˃ Balance˃ Data splitting˃ Data dependency˃ Testing and debugging
8
© Sekolah Tinggi Teknik Surabaya
![Page 9: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/9.jpg)
User Threads» Thread management done by user-level
threads library» Three primary thread libraries:˃ POSIX Pthreads˃ Win32 threads˃ Java threads
9
© Sekolah Tinggi Teknik Surabaya
![Page 10: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/10.jpg)
Kernel Threads» Supported by the Kernel» Examples˃Windows XP/2000˃ Solaris˃ Linux˃ Tru64 UNIX˃Mac OS X
10
© Sekolah Tinggi Teknik Surabaya
![Page 11: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/11.jpg)
Multithreading Models» Many-to-One» One-to-One» Many-to-Many
11
© Sekolah Tinggi Teknik Surabaya
![Page 12: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/12.jpg)
Many-to-One» Many user-level threads mapped to
single kernel thread» Examples:˃ Solaris Green Threads˃ GNU Portable Threads
12
© Sekolah Tinggi Teknik Surabaya
![Page 13: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/13.jpg)
Many-to-One Model
13
© Sekolah Tinggi Teknik Surabaya
![Page 14: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/14.jpg)
One-to-One» Each user-level thread maps to kernel
thread» Examples˃Windows NT/XP/2000˃ Linux˃ Solaris 9 and later
14
© Sekolah Tinggi Teknik Surabaya
![Page 15: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/15.jpg)
One-to-one Model
15
© Sekolah Tinggi Teknik Surabaya
![Page 16: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/16.jpg)
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
16
© Sekolah Tinggi Teknik Surabaya
![Page 17: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/17.jpg)
Many-to-Many Model
17
© Sekolah Tinggi Teknik Surabaya
![Page 18: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/18.jpg)
Two-level Model» Similar to M:M, except that it allows a
user thread to be bound to kernel thread
» Examples˃ IRIX˃ HP-UX˃ Tru64 UNIX˃ Solaris 8 and earlier
18
© Sekolah Tinggi Teknik Surabaya
![Page 19: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/19.jpg)
Two-level Model
19
© Sekolah Tinggi Teknik Surabaya
![Page 20: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/20.jpg)
Thread Libraries© Sekolah Tinggi Teknik Surabaya
20
![Page 21: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/21.jpg)
Thread Libraries» Thread library provides programmer
with API for creating and managing threads
» Two primary ways of implementing˃ Library entirely in user space˃ Kernel-level library supported by the OS
» Tiga library populer:˃ POSIX Pthreads˃Win32 Threads˃ Java Threads 21
© Sekolah Tinggi Teknik Surabaya
![Page 22: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/22.jpg)
Java Threads» Java threads are managed by the JVM» Typically implemented using the
threads model provided by underlying OS
» Java threads may be created by:˃ Extending Thread class˃ Implementing the Runnable interface
22
© Sekolah Tinggi Teknik Surabaya
![Page 23: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/23.jpg)
Java Multithreaded Program
23
© Sekolah Tinggi Teknik Surabaya
![Page 24: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/24.jpg)
Java Multithreaded Program (Cont.)
24
© Sekolah Tinggi Teknik Surabaya
![Page 25: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/25.jpg)
Threading Issues© Sekolah Tinggi Teknik Surabaya
25
![Page 26: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/26.jpg)
Threading Issues» Semantics of fork() and exec() system
calls» Thread cancellation of target thread˃ Asynchronous or deferred
» Signal handling˃ Synchronous and asynchronous
26
© Sekolah Tinggi Teknik Surabaya
![Page 27: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/27.jpg)
Threading Issues (Cont.)» Thread pools» Thread-specific data
Create Facility needed for data private to thread
» Scheduler activations
27
© Sekolah Tinggi Teknik Surabaya
![Page 28: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/28.jpg)
Semantics of fork() and exec()» Does fork() duplicate only the calling
thread or all threads?
28
© Sekolah Tinggi Teknik Surabaya
![Page 29: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/29.jpg)
Thread Cancellation» Terminating a thread before it has
finished» Two general approaches:˃ Asynchronous cancellation terminates the
target thread immediately.˃ Deferred cancellation allows the target
thread to periodically check if it should be cancelled.
29
© Sekolah Tinggi Teknik Surabaya
![Page 30: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/30.jpg)
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 event2. Signal is delivered to a process3. 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 process30
© Sekolah Tinggi Teknik Surabaya
![Page 31: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/31.jpg)
Thread Pools» 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
31
© Sekolah Tinggi Teknik Surabaya
![Page 32: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/32.jpg)
Thread Specific Data» Allows each thread to have its own copy
of data» Useful when you do not have control
over the thread creation process (i.e., when using a thread pool)
32
© Sekolah Tinggi Teknik Surabaya
![Page 33: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/33.jpg)
Scheduler Activations» Both M:M and Two-level models
require communication to maintain the appropriate number of kernel threads allocated to the application
» Scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library
» This communication allows an application to maintain the correct number kernel threads 33
© Sekolah Tinggi Teknik Surabaya
![Page 34: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/34.jpg)
Lightweight Processes
34
© Sekolah Tinggi Teknik Surabaya
![Page 35: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/35.jpg)
Operating System Examples© Sekolah Tinggi Teknik Surabaya
35
![Page 36: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/36.jpg)
Operating System Examples» Windows XP Threads» Linux Thread
36
© Sekolah Tinggi Teknik Surabaya
![Page 37: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/37.jpg)
Windows XP Threads Data Structures
37
© Sekolah Tinggi Teknik Surabaya
![Page 38: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/38.jpg)
Windows XP Threads» Implements the one-to-one mapping, kernel-level» 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) 38
© Sekolah Tinggi Teknik Surabaya
![Page 39: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/39.jpg)
Linux Threads» Linux refers to them as tasks rather
than threads» Thread creation is done through clone() system call
» clone() allows a child task to share the address space of the parent task (process)
» struct task_struct points to process data structures (shared or unique) 39
© Sekolah Tinggi Teknik Surabaya
![Page 40: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/40.jpg)
Linux Threads» fork() and clone() system calls» Doesn’t distinguish between process and thread
˃ Uses term task rather than thread
» clone() takes options to determine sharing on process create
» struct task_struct points to process data structures (shared or unique)
40
© Sekolah Tinggi Teknik Surabaya
![Page 41: Lecture 3 Threads Erick Pranata © Sekolah Tinggi Teknik Surabaya 1](https://reader036.vdocuments.net/reader036/viewer/2022081603/5697bfd41a28abf838cacc5e/html5/thumbnails/41.jpg)
End ofLecture 3© Sekolah Tinggi Teknik Surabaya
41