Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 4: Threads. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Typical Program Processor utilization?

Similar presentations


Presentation on theme: "Chapter 4: Threads. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Typical Program Processor utilization?"— Presentation transcript:

1 Chapter 4: Threads

2 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Typical Program Processor utilization?

3 4.3 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Why Multithreaded Processes Single app tasked with several tasks on which progress must be made simultaneously Examples  Web server servicing requests from multiple clients  GUI updating several panes simultaneously (financial charts, system status, etc.)

4 4.4 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Why not spawn processes? Could spawn a new process to handle each task Computationally expensive Full process overhead (creation, memory requirements, etc.) Must perform complete context switch Must communicate through IPC channels

5 4.5 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Benefits Responsiveness Resource Sharing Economy Utilization of MP Architectures (scalability)

6 4.6 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Without Kernel Support Why discuss in an OS course Without kernel support: Responsibility on the process Requires a thread manager  compiled as part of each multithreaded process Appears single-threaded to OS Responsibilities of thread manager  Primary control of the process  Determines – Which thread to execute – When to switch to another thread Thread Manager Threads Operating System

7 4.7 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Many-to-One Model Conceptually, no kernel support is many-to-one Many user-level threads mapped to single kernel thread Examples: Solaris Green Threads GNU Portable Threads Known as User Level Threading

8 4.8 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Drawback of User Level When an application requests I/O it is put in the waiting queue Even if thread manager suspends a thread just before an I/O request once the TM allows a single I/O request the entire process gets suspended A single I/O request from any thread causes the entire application to be suspended

9 4.9 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Kernel Support Thread-aware kernel Can avoid suspending a multi-threaded app on I/O When I/O complete  Determines if process is running  Informs process of I/O completion Thread aware kernel allows for more efficient use of resources particularly for high I/O applications

10 4.10 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Kernel Threads Idea of threads has even been extended to the OS, itself Thread models Many-to-One One-to-One Many-to-Many OS’s that support kernel threads Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

11 4.11 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 One-to-One Each user-level thread maps to kernel thread Examples Windows NT/XP/2000 Linux Solaris 9 and later Drawback: must generate a kernel thread for every user thread

12 4.12 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Many-to-Many Model Can generate a kernel thread for each logical task OS’s that support it Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package

13 4.13 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 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

14 4.14 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Thread Libraries Three primary thread libraries: POSIX Pthreads  Available with and without kernel Win32 threads  Kernel support Java threads  Kernel support depends upon host system  JVM written and compiled for each host

15 4.15 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Example Posix threads example #include pthread_t myThread; pthread_create( &myThread, pointerToFunction); pthread_join( myThread); #include pthread_t myThread; pthread_create( &myThread, pointerToFunction); pthread_join( myThread);

16 4.16 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Parallel calculation example Create an array of threads Put jobs in a list Create a thread for each job Each thread watches a list of available servers When a server becomes available, takes ownership of the server, and sends the job to the server When complete, thread puts job in completed list, and puts server in available server list Pending Jobs Servers Completed Jobs

17 End of Chapter 4


Download ppt "Chapter 4: Threads. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Typical Program Processor utilization?"

Similar presentations


Ads by Google