7. Betriebsystem
in denen gewartet werden muß, bis der Kommunikationspartner bereit für den
Datenempfang ist. In einem Computersystem mit ausschließlich sequentieller Abarbeitung
des Programmes ist es praktisch unmöglich, in diesen Wartezuständen auf weitere
Ereignisse zu reagieren. So kann es passieren, daß ein Alarmzustand aufgrund einer
Übertemperatur nicht oder nicht rechtzeitig erkannt wird, während das System auf die
Bereitschaft eines angeschlossenen Druckers wartet.
Beim Multithreading der C-Control II kann ein Programm in bis zu 255 Threads ("Fäden")
aufgetrennt werden. Jedem Thread wird vom Kern des Betriebssystems reihum eine Portion
Rechenzeit zugeteilt. Wieviel Rechenzeit ein Thread erhält, kann über seine Priorität
gesteuert werden. Bei Priorität 0 wird sofort zum nächsten Thread weitergeschaltet. Der
höchstmögliche Prioritätswert ist 255. In einem Umlauf führt der Binärcodeinterpreter für
jeden Thread maximal so viele Operationen aus, wie es dessen jeweiligem Prioritätswert
entspricht. In Wartesituationen erfolgt die Weiterschaltung vorzeitig. Die Priorität jedes
Threads kann während des Programmablaufes den aktuellen Leistungsanforderungen
angepaßt werden. Die Schwierigkeit bei der Erstellung eines Programms mit
Multithreading liegt in der ausgewogenen Vergabe der Prioritätswerte. Bei bis zu 255
Threads und 256 Prioritätsstufen gibt es nahezu unzählige Möglichkeiten, Rechenzeit zu
verteilen. Mit der Zuteilung von sehr niedrigen Prioritäten an alle Threads ergeben sich
schnelle Umlaufzeiten und somit eine relativ geringe Verzögerung, bis ein einzelner
Thread auf ein Ereignis reagieren kann. Dafür sinkt die Performance des Gesamtsystems,
da pro Zeiteinheit mehr Rechenleistung der virtuellen Maschine für das Umschalten von
Threads verbraucht wird. So ist es nicht sinnvoll, allen Threads die Priorität 1 zu erteilen. Die
Performance steigt mit der Vergabe von hohen Prioritäten. Das wird jedoch durch längere
Reaktionszeiten erkauft. Im nicht zu empfehlenden Extremfall haben alle Threads die
Priorität 255. Es hat sich bewährt, die meisten Threads mit einer eher niedrigen
Standardpriorität (z.B.32) laufen zu lassen. Nur einigen Programmabschnitten, die lange
Zeit auf ein Ereignis warten, dann aber mit hoher Geschwindigkeit reagieren müssen,
sollte ein höherer Wert zugeteilt werden.
Anmerkung -Multithreading vs. Multitasking:
Von Tasks spricht man in der Regel im Zusammenhang mit parallel unter einem
Betriebssystem laufenden, unabhängigen Programmen, z.B. einer Textverarbeitung, einem
E-Mail-Client und einer Datenbank, die gleichzeitig auf einem PC gestartet wurden.
Threads hingegen sind sogenannte "leichtgewichtige Prozesse" innerhalb eines
Programms. Mehrere Threads eines Programms teilen sich einen gemeinsamen
37