multithreading - facweb.iitkgp.ac.inisg/os/slides/08.pdf · recap: multi level feedback queue...
TRANSCRIPT
![Page 1: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/1.jpg)
Multithreading
Indranil Sen Gupta (odd section)and Mainack Mondal (even section)CS39002
Spring 2019-20
![Page 2: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/2.jpg)
But first, we will do some problem
solving and recap
![Page 3: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/3.jpg)
Scheduling criteria• CPU utilization – keep the CPU as busy as possible
• Throughput – # of processes that complete their execution per time unit
• Turnaround time – amount of time to execute a particular process
• Waiting time – amount of time a process has been waiting in the ready queue
• Response time – amount of time it takes from when a request was submitted until the first response is produced, not output (for time-sharing environment)
• Burst time – amount of time a process is executed
![Page 4: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/4.jpg)
Recap: Multi level feedback queue• Three queues:
• Q0 – RR with time quantum (!) 8 ms
• Q1 – RR with ! = 16ms
• Q2 – FCFS
• A process in Q1 can execute only when Q0 is empty
• A process in Q0 can pre-empt a process in Q1 or Q2
• If the CPU burst of a process exceeds ! its moved to lower priority queue
![Page 5: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/5.jpg)
Issue with Multi level feedback queue scheduling• Long running processes may starve
• Permanent demotion of priority hurts processes that change their behavior (e.g., lots of computation only at beginning)
• Eventually all long-running processes move to FCFS
![Page 6: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/6.jpg)
Issue with Multi level feedback queue scheduling• Long running processes may starve
• Permanent demotion of priority hurts processes that change their behavior (e.g., lots of computation only at beginning)
• Eventually all long-running processes move to FCFS
• Solution
• periodic priority boost: all processes moved to high priority queue
• Priority boost with aging: recompute priority based on scheduling history of a process
![Page 7: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/7.jpg)
Ex 1: First Come First Serve scheduling (FCFS)
Example 1
Draw Gantt chart and calculate average waiting time for two schedules: P1, P2, P3 and P2, P3, P1 (Ans: 17 ms and 3 ms)
Process P1 P2 P3Arrival time 0 0 0CPU burst 24ms 3ms 3ms
![Page 8: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/8.jpg)
Ex 2: Another FCFS
Example 2
Draw Gantt chart and calculate average waiting time
(Ans: 11/5 ms)
Process P1 P2 P3 P4 P5Arrival time
0 2ms 3ms 5ms 9ms
CPU burst
3ms 3ms 2ms 5ms 3ms
![Page 9: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/9.jpg)
Ex 3: SJF
What is the SJF schedule and corresponding wait time?
Compare with the following FCFS schedule: P1, P2, P3, P4
(Ans: SJF – 7 ms and FCFS – 10.25 ms)
Process P1 P2 P3 P4Arrival time
0 0 0 0
CPU burst 6ms 8ms 7ms 3ms
![Page 10: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/10.jpg)
Ex 4: Shortest remaining time first
• Pre-emptive version of SJF
• A smaller CPU burst time process can evict a running process
• Draw preemptive gantt chart and computing waiting time.
(Ans: 6.5 ms)
Process P1 P2 P3 P4Arrival time
0 1ms 2ms 3ms
CPU burst 8ms 4ms 9ms 5ms
![Page 11: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/11.jpg)
Ex 5: Priority scheduling
• A priority is assigned to each process
• CPU is allotted to the process with highest priority
• SJF is a type of priority scheduling
What is the average waiting time?
(Ans: 8.2 ms)
Process P1 P2 P3 P4 P5Arrival time 0 0 0 0 0CPU burst 10ms 1ms 2ms 1ms 5msPriority 3 1 4 5 2
![Page 12: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/12.jpg)
Ex 6: RR scheduling
Example:
If time quantum ! = 4 ms, then what is the avg. wait time? (schedule P1, P2, P3,…)
(Ans: 5.66ms)
Process P1 P2 P3Arrival time 0 0 0CPU burst 24ms 3ms 3ms
![Page 13: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/13.jpg)
Try this Exercise
Compute average turnaround time for ! = 1,2,3,4,5,6,7ms
Compute average wait time for ! = 1,2,3,4,5,6,7ms
Assume the schedule is P1, P2, P3, P4
Process P1 P2 P3 P4Arrival time
0 0 0 0
CPU burst 6ms 3ms 1ms 7ms
![Page 14: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/14.jpg)
Now let’s go into multithreading
![Page 15: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/15.jpg)
Rest of today’s class
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 16: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/16.jpg)
Rest of today’s class
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 17: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/17.jpg)
What is a thread?• Process is a program in execution with single thread of control
![Page 18: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/18.jpg)
What is a thread?• Process is a program in execution with single thread of control
• All modern OS allows process to have multiple threads of control
![Page 19: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/19.jpg)
What is a thread?• Process is a program in execution with single thread of control
• All modern OS allows process to have multiple threads of control
• Multiple tasks within an application can be implemented by separate threads
• Update display• Fetch data• Spell checking• Answer a network request
![Page 20: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/20.jpg)
How is a thread created?
• Can be considered a basic unit of CPU utilization
• Unique thread ID, Program counter (PC), register set & stack
![Page 21: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/21.jpg)
How is a thread created?
• Can be considered a basic unit of CPU utilization
• Unique thread ID, Program counter (PC), register set & stack
• Shares with other threads from same process the code section, data section and other OS resources like open files
![Page 22: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/22.jpg)
How is a thread created?
• Can be considered a basic unit of CPU utilization
• Unique thread ID, Program counter (PC), register set & stack
• Shares with other threads from same process the code section, data section and other OS resources like open files
• Essentially same virtual memory address space
• Process creation is heavy-weight while thread creation is light-weight
![Page 23: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/23.jpg)
Comparison: single and multi threaded processes
registers
code data files
stack registers registers registers
code data files
stackstackstack
thread thread
single-threaded process multithreaded process
![Page 24: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/24.jpg)
Comparison: single and multi threaded processes
registers
code data files
stack registers registers registers
code data files
stackstackstack
thread thread
single-threaded process multithreaded process
![Page 25: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/25.jpg)
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 26: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/26.jpg)
Thread: The benefits• Context switching among threads of same process is faster
• OS needs to reset/store less memory locations/registers
![Page 27: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/27.jpg)
Thread: The benefits• Context switching among threads of same process is faster
• OS needs to reset/store less memory locations/registers
• Responsiveness is better (important for interactive applications)
• E.g., even if part of process is busy the interface still works
![Page 28: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/28.jpg)
Thread: The benefits• Context switching among threads of same process is faster
• OS needs to reset/store less memory locations/registers
• Responsiveness is better (important for interactive applications)
• E.g., even if part of process is busy the interface still works
• Resource sharing is better for peer threads
• Many possible threads of activity in same address space• Sharing variable is more efficient than pipe, shared memory
![Page 29: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/29.jpg)
Thread: The benefits• Context switching among threads of same process is faster
• OS needs to reset/store less memory locations/registers
• Responsiveness is better (important for interactive applications)
• E.g., even if part of process is busy the interface still works
• Resource sharing is better for peer threads
• Many possible threads of activity in same address space• Sharing variable is more efficient than pipe, shared memory
• Thread creation:10-30 times faster than process creation
![Page 30: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/30.jpg)
Thread: The benefits• Context switching among threads of same process is faster
• OS needs to reset/store less memory locations/registers
• Responsiveness is better (important for interactive applications)
• E.g., even if part of process is busy the interface still works
• Resource sharing is better for peer threads
• Many possible threads of activity in same address space• Sharing variable is more efficient than pipe, shared memory
• Thread creation:10-30 times faster than process creation
• Better scalability for multiprocessor architecture
![Page 31: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/31.jpg)
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 32: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/32.jpg)
Thread: The applications
• A typical application is implemented as a separate process with multiple threads of control
• Ex 1: A web browser• Ex 2: A web server• Ex 3: An OS
![Page 33: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/33.jpg)
Thread example: Web browser
• Think of a web browser (e.g., chrome)
• Thread 1: retrieve data
• Thread 2: display image or text (render)
• Thread 3: waiting for user input (your password)
• …
![Page 34: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/34.jpg)
Thread example: Web server
• A single instance of web server (apache tomcat, nginx) may be required to perform several similar tasks
• One thread accepts request over network• New threads service each request: one thread per request• The main process create these threads
![Page 35: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/35.jpg)
Thread example: OS
• Most OS kernels are multithreaded
• Several threads operate in kernel• Each thread performing a specific task• E.g., managing memory, managing devices, handling
interrupts etc.
![Page 36: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/36.jpg)
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 37: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/37.jpg)
User threads and kernel threads• User threads: management done by user-level threads
library
• A few well extablished primary thread libraries• POSIX Pthreads, Windows threads, Java threads
![Page 38: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/38.jpg)
User threads and kernel threads• User threads: management done by user-level threads
library
• A few well extablished primary thread libraries• POSIX Pthreads, Windows threads, Java threads
• Kernel threads - Supported by the Kernel
• Exists virtually in all general purpose OS• Windows, Linux, Mac OS X
![Page 39: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/39.jpg)
User threads and kernel threads• User threads: management done by user-level threads
library
• A few well extablished primary thread libraries• POSIX Pthreads, Windows threads, Java threads
• Kernel threads - Supported by the Kernel
• Exists virtually in all general purpose OS• Windows, Linux, Mac OS X
As you might have guessed: Even user threads will ultimately need kernel thread support
![Page 40: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/40.jpg)
Multithreading Models• There are multiple models to map users to kernel threads
• Many-to-One• One-to-One• Many-to-Many
![Page 41: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/41.jpg)
Many-to-One• Many user-level threads mapped
to single kernel thread
• Blocking one thread causes all to block
• Multiple threads may not run in parallel on multicore system because only one may be in kernel at a time
• Old model: Only few systems currently use this model
user thread
kernel threadk
![Page 42: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/42.jpg)
One-to-One• Each user-level thread maps to one kernel thread
• A user-level thread creation -> a kernel thread creation
• More concurrency than many-to-one
• #threads per process sometimes restricted due to overhead on kernel
• Windows. Linux user thread
kernel threadkkkk
![Page 43: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/43.jpg)
Many-to-Many Model
• Allows many user level threads to be mapped to many kernel threads
• Allows the operating system to create sufficient number of kernel threads
• Windows with the ThreadFiber package
user thread
kernel threadkkk
![Page 44: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/44.jpg)
• What is a thread?
• Why do you need threads?
• How are threads used in real-world?
• Multithreading models
• POSIX Pthread library
![Page 45: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/45.jpg)
POSIX Pthread: basics
• May be provided either as user level or kernel level library
• Global data: Any variable/data declared globally are shared among all threads of the same process
• Local data: Data local to a function (running in a thread) are stored in thread stack
• Example:
• A separate thread in created that calculates the sum of N natural numbers (N is an input)
• The parent thread waits for the child thread to end
![Page 46: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/46.jpg)
Now the code#include<stdio.h>#include<pthread.h>
![Page 47: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/47.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
![Page 48: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/48.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){
}
void *runner (void *param){
}
![Page 49: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/49.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributes
}
void *runner (void *param){
}
![Page 50: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/50.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the thread
}
void *runner (void *param){
}
![Page 51: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/51.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the threadpthread_join(tid, NULL); //wait for the thread to exit
}
void *runner (void *param){
}
![Page 52: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/52.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the threadpthread_join(tid, NULL); //wait for the thread to exitprintf(“\n sum = %d”, sum); // print accumulated sum
}
void *runner (void *param){
}
![Page 53: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/53.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the threadpthread_join(tid, NULL); //wait for the thread to exitprintf(“\n sum = %d”, sum); // print accumulated sum
}
void *runner (void *param){int I , N = atoi(param); // get input valuesum = 0;
}
![Page 54: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/54.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the threadpthread_join(tid, NULL); //wait for the thread to exitprintf(“\n sum = %d”, sum); // print accumulated sum
}
void *runner (void *param){int I , N = atoi(param); // get input valuesum = 0;for(i = 1; i<=N;i++){sum = sum+i;}
}
![Page 55: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/55.jpg)
Now the code#include<stdio.h>#include<pthread.h>
int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t tid; pthread_attr_t attr;pthread_attr_init (&attr); // get default attributespthread_create(&tid, &attr, runner, argv[1]); // create the threadpthread_join(tid, NULL); //wait for the thread to exitprintf(“\n sum = %d”, sum); // print accumulated sum
}
void *runner (void *param){int i , N = atoi(param); // get input valuesum = 0;for(i = 1; i<=N;i++){sum = sum+i;}pthread_exit(0); // terminate the thread
}
![Page 56: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/56.jpg)
You can also create many threads#include<stdio.h>#include<pthread.h>#define N_THR 10Int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t mythreads[N_THR]; ……for (int i=0; i< N_THR; i++)
pthread_create(&mythreads[i], &attr, runner, argv[1]); // create the threads
}
void *runner (void *param){…}
![Page 57: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/57.jpg)
You can also create many threads#include<stdio.h>#include<pthread.h>#define N_THR 10Int sum; // data shared over threads
void *runner (void *param); // child process calls this
int main(int argc, char *argv[]){pthread_t mythreads[N_THR]; ……for (int i=0; i< N_THR; i++)
pthread_create(&mythreads[i], &attr, runner, argv[1]); // create the threadsfor (int i=0; i< N_THR; i++)
pthread_join(mythreads[i], NULL); //wait for the threads to exitprintf(“\n sum = %d”, sum); // print accumulated sum
}
void *runner (void *param){…}
![Page 58: Multithreading - facweb.iitkgp.ac.inisg/OS/SLIDES/08.pdf · Recap: Multi level feedback queue •Three queues: •Q 0–RR with time quantum (!) 8 ms •Q 1–RR with != 16ms •Q](https://reader030.vdocuments.us/reader030/viewer/2022040511/5e5da6d3932e5b44a22cc050/html5/thumbnails/58.jpg)
Next class
• More on POSIX Pthread library• Thread scheduling• Thread cancellation• Signal handling