Frage 14 zu Threads aus Tanenbaum-Buch

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Frage 14 zu Threads aus Tanenbaum-Buch
habe folgende Frage per Mail bekommen (und auch erst mal kraeftig nachdenken und
nachlesen muessen, weil der Kontext, auf den Tanenbaum raus will, mir aus der Fragestellung
nicht unmittelbar klar war)

hallo jürgen kleinoeder,
ich lese gerade das buch moderne betriebssysteme von Tanenbaum und kann die Aufgabe Nummer 14 auf Seite 171 nicht lösen.
Können Sie mir bitte sagen, welches Problem auftreten kann, in einem System, in welchem Threads vollständig im Benutzeradressraum implementiert sind und das
System einmal pro Sekunde ein Zeitsignal (ein Interrupt ?) bekommt, wenn solch ein Signal während ein Thread im Laufzeitsystem ausgeführt wird passiert ?

— mein ad-hoc-Antwort-Versuch -----
Hmmm,
so ganz klar ist mir momentan nicht, auf was er mit der Frage rauswill

(auch wenn man Seite 167-168 liest wird der Zusammenhang nicht ganz deutlich).

Signale und user-level-Threads haben vor allem immer das Problem, dass das Signal „irgendeinen“ Thread unterbricht. Wenn das System da nichts
von weiss, wird der Zustand des unterbrochenen Threads nicht in dessen Thread-Kontrollblock gesichert, sondern irgendwo im Prozesskontrollblock.
Man kann dann nicht einfach im Rahmen der Signalbehandlung auf einen anderen Thread umschalten sondern muss erst mal den gesicherten Zustand
an die richtige Stellen bringen usw.

Aber ich weiss nicht recht ob er auf solche Sachen raus will.

Vor allem ist auch nicht recht klar, ob er sich an sowas wie UNIX-Signalen anlehnt, weil die Frage ja allgemein gehalten ist.
(Die UNIX-Signalbehandlung haette ja z.B. auch noch das Problem, was fuer einen Stack man fuer den Signalhandler
nun nehmen soll).

----- nach etwas intensiverem Nachlesen … --------
also ich hab’ noch etwas gesucht.
Tanenbaum bezieht sich offenbar auf Seite 109 oben.

Die Frage 14 ist nun, was passiert, wenn so ein Signal reinkommt waehrend ein Thread im Laufzeitsystem ausgefuehrt wird.
Damit meint er wohl, dass ein Thread gerade eine Funktion des Laufzeitsystems (also z.B. ein thread_yield oder sowas) aufgerufen hat.
Ich gehe mal davon aus, dass der Sinn der Zeitsignalbehandlung ist, ein praeemptives Scheduling zu realisieren. Wenn nun der Thread der
evtl. verdraengt werden soll, gerade dabei ist, die Datenstrukturen zu bearbeiten, die im Rahmen der Zeitsignalbehandlung auch angefasst
werden, dann bekommt man natuerlich echten Aerger (sie koennten ja gerade in einem inkonssistenten Zustand sein).
Loesung waere also, das Zeitsignal zu blockieren waehrend ein Thread eine Funktion des Laufzeitsystems (also der
Threadverwaltungsbibkliothek) ausfuehrt.


Welche Ausgabe / Auflage vom Tanenbaum-Buch ist das denn? In der englischen von 2001 (second edition) und in der deutschen von 1995 (2. Auflage) hab ich die Frage jedenfalls nicht gefunden.


Moderne Betriebssysteme, 2. Auflage von 2002
(2. Auflage 1995 muss ein anderes Buch sein?)


Möglicherweise ist es die 2. Auflage der deutschen Übersetzung der First Edition der englischen Ausgabe. Es ist “Moderne Betriebssysteme” von Andrew S. Tanenbaum.