0,99 €
Die Nebenläufigkeit ist eine der imposantesten Eigenschaften moderner Betriebssysteme, was diesen eine gewisse Faszination verleiht und wodurch sie ihre größte Wirkung erzieheln. Daher ist es für jeden Informatiker unerlässlich, sich damit auseianderzusetzen.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
von
Michael Ziegenbalg
Im Zusammenhang mit der Threadprogrammierung werden drei verschiedene Begriffe unterschieden:
Prozeß
Vorgänge
Thread
Im Rahmen einer allgemeinen Erläuterung des Begriffes Nebenläufigkeit, also ohne genaueren Bezug zu einer Umsetzung mit z.B. Java oder C++, sind in einem System mehrere relativ voneinander unabhängige Prozesse ausführbar. Parallelrechner, die mit vielen Prozessoren gleichzeitig Prozesse ausführen und verteilte Systeme werden hier nicht betrachtet. Auf einem Einzelprozessorsystem sind gleichzeitige Prozesse wie z.B. Drucken, Bildschirmausgaben und Tastatureingabe nur scheinbar unabhängig voneinander. Moderne Betriebssysteme stellen mit präemptiven Multitasking Mittel bereit, um Nebenläufigkeit zu organisieren. Dabei wird in diesem Zusammenhang von der Dornröschenmethode gesprochen. Ein Prozeß teilt dem Betriebssystem im Prinzip mit: „Weck mich auf, wenn das Ereignis, auf das ich warte, eingetreten ist“, und legt sich schlafen. Hierzu gibt es in modernen Betriebssystemen spezielle Techniken, die auf Unterbrechungen (Interrupts) basieren. Das Warten auf ein Ereignis ist oft, aber nicht zwangsläufig mit dem Deaktivieren des Prozesses verbunden. Moderne Betriebssysteme regeln dieses Warten mit Techniken, wobei wartende Prozesse deaktiviert werden, um sie beim Eintreten des erwarteten Ereignisses wieder zu aktivieren. Bei der Threadprogrammierung sollte man sich allgemein auf die Behandlung des Wartens konzentrieren und das Aktivieren/Deaktivieren dem Betriebssystem überlassen.
Bei einem Bezug zur Threadprogrammierung können mit Hilfsmitteln Programme erstellt werden, in denen mehrere Vorgänge „gleichzeitig“ ausgeführt werden können. In Java und C++ steht dafür ein direkt in die Sprache integriertes Hilfsmittel zur Verfügung, nämlich die Möglichkeit der Threadprogrammierung. Ein Thread ist ein eigenständiges Programmfragment, das parallel zu anderen Threads laufen kann. Man spricht deshalb in diesem Zusammenhang von Vorgängen, weil ein Thread auf einer feineren Ebene arbeitet. Während ein Prozeß das Instrument zur Ausführung eines kompletten Programmes ist, können innerhalb dieses Prozesses mehrere Threads parallel laufen. Ein wichtiger Unterschied zwischen Threads und Prozessen liegt darin, daß sich alle Threads eines Programmes einen gemeinsamen Adreßraum teilen, also auf gleiche Variablen zugreifen, während die Adreßräume unterschiedlicher Prozesse streng voneinander getrennt sind. Threads sollen u.a. die Implementierung grafischer Anwendungen erleichtern, die durch Simulationen komplexer Abläufe erheblich nebenläufig sind. Auch die Bedienbarkeit von Dialoganwendungen kann verbessert werden, indem rechenintensive Anwendungen im Hintergrund ablaufen.