1 / 9

CS 3214 Introduction to Computer Systems

This lecture covers the differences between processes and threads in the context of multi-threading. It discusses the advantages and disadvantages of cooperative and preemptive multi-threading models, as well as the use cases for application-level concurrency.

mconrad
Download Presentation

CS 3214 Introduction to Computer Systems

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. CS 3214Introduction to Computer Systems Godmar Back Lecture 16

  2. Announcements • Read Chapter 8 + 11 • Project 3 has been published • Due Oct 30 • Exercise 10 coming soon CS 3214 Fall 2009

  3. Some of the following slides are taken with permission from Complete Powerpoint Lecture Notes forComputer Systems: A Programmer's Perspective (CS:APP) Randal E. Bryant and David R. O'Hallaron http://csapp.cs.cmu.edu/public/lectures.html Part 5 Threads and Processes CS 3214 Fall 2009

  4. MULTI-THREADING CS 3214 Fall 2009

  5. Processes vs Threads • Processes execute concurrently and share resources: • Files on disk; Open files (via inherited file descriptors); Terminal, etc. • Kernel-level concurrency • but do not (usually) share any of their memory • cannot share data easily by exchanging pointers to it • Threads can • Different models and variations exist • Application-level concurrency CS 3214 Fall 2009

  6. Cooperative Multi-threading • Support multiple logical execution flows • Each needs own stack  so has its own (procedure-) local (automatic) variables • But share address space  so shares heap, global vars (all kinds: global, global static, local static) • In cooperative multi-threading, a context switch can occur only if a thread • Voluntarily offers the CPU to (any) other thread (“yield”); later resumes and returns • Can layer resources on top of it where threads yield if they cannot obtain the resource • This is called a “non-preemptive” model • If yield is directed (“yield to x”) this model is called “co-routines” CS 3214 Fall 2009

  7. Cooperative Multi-threading (cont’d) • Advantages: • Context switch superfast (usually involves only saving callee-saved regs + stack pointer) • Reduced potential for certain types of race conditions • E.g., i++ will never be interrupted • Requires no OS support • Used in very high-performance server designs & discrete event simulation • Disadvantages • OS sees only one thread in process, system call blocks entire process • Cannot make use of multiple CPUs/cores CS 3214 Fall 2009

  8. Use Cases forApp-level Concurrency • Overlap I/O with computation • E.g. file sharing program downloads, checksums, and saves/repairs files simultaneously • Parallel computation • Use multiple CPUs • Retain interactivity while background activity is performed • E.g., still serve UI events while printing • Handling multiple clients in network server apps • By and large, these are best handled with a preemptive multi-threading model CS 3214 Fall 2009

  9. Preemptive Multi-Threading • Don’t require the explicit “yield” to switch between threads • Add mechanism that will switch • Mechanism can be implemented at user-level or kernel-level • User-level threads: can be built using signal handlers (e.g. SIGVTALRM) • Requires advanced file descriptor manipulation techniques to avoid blocking entire process in system call • Kernel-level threads: natural extension for what OS already does when switching between processes • Integrated with system calls – only current thread blocks • Hybrids • Kernel-level threads is the dominant model today CS 3214 Fall 2009

More Related