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