4.2, 4.3, 4.4 - Multithreading Models, Thread Libaries, Java Threads (p.157, 159, 162)

  • Verschil tussen user threads en kernel threads
  • Kernel threads worden ondersteund door het OS, terwijl user threads dat niet hebben.
  • System Calls worden geregeld door de kernel.
  • Verschillende manieren op een relatie tussen user en kernel threads te realiseren.1
    1. Many-to-One model
      • Meerdere user threads aan een kernel thread.
      • Management door de thread libary.
      • Het hele proces blokkeert wanneer er een blocking system call wordt gedaan.
      • Een thread kan bij de kernel per keer.
      • Threads kunnen niet parallel lopen.
    2. One-to-One model
      • Een user thread aan een kernel thread.
      • Andere threads kunnen doorlopen wanneer een blocking system call wordt gedaan.
      • Threads kunnen parrallel lopen.
      • De performance van een applicatie wordt minder door de overhead die het creeren van een kernel thread veroorzaakt.
      • Meestal bestaat er in het OS een thread limiet.
    3. Many-to Many model
      • Meerdere user threads op hetzelfde of minder kernel threads.
      • Threads kunnen parallel lopen, omdat het systeem een nieuwe kernel thread maakt wanneer een bestaande thread een blocking system call maakt.
    4. Two-level model
      • Combinatie van de One-to-One en Many-to-Many models.

Thread Libaries

  • Thread Libary = Voorziet de programeur met een API voor het maken en beheren van threads.
  • APIs: POSIX Pthreads, Win32, Java

Java Threading

  • Een Thread object implementeert een Runnable object.
  • Runnable.run() moet worden geimplementeerd, en Thread.start() moet worden gecalled om de thread te starten

results matching ""

    No results matching ""