1 / 25

Understanding Threads: Models, Issues, and Management

This chapter provides an overview of multithreading models, explores various threading issues, and discusses thread management. Topics include user threads, kernel threads, multithreading models, Java threads, and thread-specific data.

efrainj
Download Presentation

Understanding Threads: Models, Issues, and Management

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 4: Threads

  2. Chapter 4: Threads • Overview • Multithreading Models • Threading Issues • Java Threads

  3. Single and Multithreaded Processes A Thread is a lightweight process

  4. Examples • Word program • Web servers

  5. Benefits • Responsiveness • Resource Sharing • Economy • Creation • Context switch • Utilization of Multiprocessor Architectures

  6. User Threads • Thread management done by user-level threads library • Library provides support for thread creation scheduling and managing with no support from kernel • User thread is fast to create and manage • Drawback • If the kernel is single thread then any blocking system call will cause the entire process to block

  7. Kernel Threads • Supported by the Kernel • Kernel threads is slower to create and manage than user threads • If a thread performs a blocking system call, the kernel can schedule another thread • The kernel can schedule threads on different processors. • Examples • Windows XP/2000 • Solaris • Linux

  8. Multithreading Models • Many-to-One • One-to-One • Many-to-Many

  9. Many-to-One • Many user-level threads mapped to single kernel thread

  10. One-to-One • Each user-level thread maps to kernel thread • Examples • Windows NT/XP/2000 • Linux • Solaris 9 and later

  11. One-to-one Model • More concurrently • allow multiple threads to run in parallel on multiprocessor • high overhead which affect the performance of the system.

  12. 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 • Depending on the application or machine.

  13. Many-to-Many Model

  14. Java Threads • Java threads are managed by the JVM • Java threads may be created by: • Extending Thread class • Implementing the Runnable interface

  15. Threading Issues • Semantics of fork() system call • Thread cancellation • Signal handling • Thread pools • Thread specific data

  16. Semantics of fork() and exec() • Does fork() duplicate only the calling thread or all threads?

  17. 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

  18. 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 • Signal is generated by particular event • Signal is delivered to a process • 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 process

  19. 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

  20. 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)

  21. End of Chapter 4

More Related