operating system - ch5
TRANSCRIPT
![Page 1: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/1.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.1
Module 5: Threads
• Benefits
• User and Kernel Threads
• Multithreading Models
• Solaris 2 Threads
• Java Threads
![Page 2: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/2.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.2
• Responsiveness
• Resource Sharing
• Economy
• Utilization of MP Architectures
Benefits
![Page 3: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/3.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.3
Single and Multithreaded Processes
![Page 4: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/4.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.4
User Threads
• Thread Management Done by User-Level Threads Library
• Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
![Page 5: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/5.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.5
Kernel Threads
• Supported by the Kernel
• Examples
- Windows 95/98/NT
- Solaris
- Digital UNIX
![Page 6: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/6.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.6
Multithreading Models
• Many-to-One
• One-to-One
• Many-to-Many
![Page 7: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/7.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.7
Many-to-One
• Many User-Level Threads Mapped to Single Kernel Thread.
• Used on Systems That Do Not Support Kernel Threads.
![Page 8: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/8.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.8
Many-to-one Model
![Page 9: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/9.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.9
One-to-One
• Each User-Level Thread Maps to Kernel Thread.
• Examples
- Windows 95/98/NT
- OS/2
![Page 10: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/10.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.10
One-to-one Model
![Page 11: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/11.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.11
Many-to-many Model
![Page 12: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/12.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.12
Solaris 2 Threads
![Page 13: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/13.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.13
Solaris Process
![Page 14: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/14.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.14
Java Threads
• Java Threads May be Created by:
– Extending Thread class– Implementing the Runnable interface
![Page 15: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/15.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.15
Extending the Thread Class
class Worker1 extends Thread
{
public void run() {
System.out.println(“I am a Worker Thread”);
}
}
![Page 16: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/16.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.16
Creating the Thread
public class First
{
public static void main(String args[]) {
Worker runner = new Worker1();
runner.start();
System.out.println(“I am the main thread”);
}
}
![Page 17: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/17.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.17
The Runnable Interface
public interface Runnable
{
public abstract void run();
}
![Page 18: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/18.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.18
Implementing the Runnable Interface
class Worker2 implements Runnable
{
public void run() {
System.out.println(“I am a Worker Thread”);
}
}
![Page 19: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/19.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.19
Creating the Thread
public class Second
{
public static void main(String args[]) {
Runnable runner = new Worker2();
Thread thrd = new Thread(runner);
thrd.start();
System.out.println(“I am the main thread”);
}
}
![Page 20: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/20.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.20
Java Thread Management
• suspend() – suspends execution of the currently running thread.
• sleep() – puts the currently running thread to sleep for a specified amount of time.
• resume() – resumes execution of a suspended thread.
• stop() – stops execution of a thread.
![Page 21: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/21.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.21
Java Thread States
![Page 22: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/22.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.22
Producer Consumer Problem
public class Server {
public Server() {
MessageQueue mailBox = new MessageQueue();
Producer producerThread = new Producer(mailBox);
Consumer consumerThread = new Consumer(mailBox);
producerThread.start();
consumerThread.start();
}
public static void main(String args[]) {
Server server = new Server();
}
}
![Page 23: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/23.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.23
Producer Thread
class Producer extends Thread {
public Producer(MessageQueue m) {
mbox = m;
}
public void run() {
while (true) {
// produce an item & enter it into the buffer
Date message = new Date();
mbox.send(message);
}
}
private MessageQueue mbox;
}
![Page 24: Operating System - Ch5](https://reader034.vdocument.in/reader034/viewer/2022052305/58edadb81a28ab45428b4595/html5/thumbnails/24.jpg)
Applied Operating System Concepts Silberschatz, Galvin, and Gagne 1999 5.24
Consumer Thread
class Consumer extends Thread {
public Consumer(MessageQueue m) {
mbox = m;
}
public void run() {
while (true) {
Date message = (Date)mbox.receive();
if (message != null)
// consume the message
}
}
private MessageQueue mbox;
}