Herunterladen Inhalt Inhalt Diese Seite drucken

Multithreading - Conrad C-Control II Unit Handbuch

Kompakter steuerungscomputer
Inhaltsverzeichnis

Werbung

C-Control II Unit

4.4.3 Multithreading

Ein Hauptmerkmal der C-Control II Unit ist die Unterstützung von Multithreading in
Anwenderprogrammen. Verschiedene Programmteile können quasi gleichzeitig und von-
einander unabhängig abgearbeitet werden. Dadurch lassen sich komplexe, in der
Applikation parallel und asynchron ablaufende Vorgänge auf einfache Weise behandeln.
Beispiel:
verschiedene Digitalports sollen ständig überwacht werden; bei Eintreten einer bestimm-
ten Kombination ist eine Pulsfolge mit vorgegebenem Timing auszugeben; gleichzeitig
sind ständig einige A/D-Kanäle zu überwachen und bei Überschreitung von Grenzwerten
soll ein Alarm ausgelöst werden; von der seriellen Schnittstelle werden in einem bestimm-
ten Rhythmus Datenrahmen erwartet, die ausgewertet und beantwortet werden sollen;
über den Drucker sollen Meßwerte ausgedruckt werden ...
In Programmteilen, die mit anderen Geräten kommunizieren, kann es Situationen geben,
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 Über-
temperatur nicht oder nicht rechtzeitig erkannt wird, während das System auf die
Bereitschaft eines angeschlossenen Druckers wartet.
Beim Multithreading der C-Control II Unit 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 Leistungs-
anforderungen angepaßt werden.
Die Schwierigkeit bei der Erstellung eines Programms mit Multithreading liegt in der aus-
gewogenen 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
40

Quicklinks ausblenden:

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis