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 zu Monitoren und Threads
und noch eine E-Mail…
ich habe ein paar Probleme bei den MC-Fragen in Softwaresysteme und dachte mir, ich schreib’ Sie mal an - vielleicht können Sie mir ja
helfen!Bei folgenden Fragen habe ich Probleme:
Beim Blockieren in einem Monitor muss der Monitor freigegeben werden. Warum?
a) weil sonst die Monitordaten inkonsistent sind.
b) wei ein anderer Faden die Blockierungsbedingung nur aufheben kann, wenn
er den Monitor betreten darf.
c) weil kritische Abschnitte immer nur kurz belegt sein dürfen.
d) weil der Faden sonst aktiv warten ürded) glaub’ ich nicht, weil der Faden selbst sich ja bereits in einem Monitor befindet
na ja, ein Faden koennte sich schon blockieren und auch die CPU freigeben ohne den Monitor aufzugeben.
Dadurch wartet er nicht aktiv. Aber es darf keiner mehr den Monitor betreten und der Monitor schuetzt ja die
Datenstrukturen auf die man zugreifen muss, um den Blockierungsgrund zu beseitigen.
=> es kann niemand mehr den Blockierungsgrund beseitigen, weil niemand da ran kommt.
=> irgendwann sind alle blockiert (Deadlock), aber aktiv warten tut defnitiv keiner.
c) stimmt zwar, aber ist doch nicht der eigentliche Grund, oder?
kritische Abschnitte sollten kurz sein - aber letztlich kommt’s auf den Kontext an. Mit dem Thema „Blockieren im Monitor“ hat das aber gar nix zu tun.
a) verstehe ich nicht, deswegen würde ich das nicht wählen
versteh’ ich auch nicht, ich find’ aber es klingt ganz griffig. Wird auch immer wieder gerne mal angekreuzt :-))
b) klingt für mich gut - habe ich recht???
ja
und dann gleich noch eine MC-Frage, die mich in den Wahnsinn treibt:
och…Welche Aussage zu Fäden (Threads) ist falsch?
a) Kernfäden können als virtuelle Prozessoren zur Ausführung von Benutzerfäden eingesetzt werden.
ja, man kann ja sogar auf einem Kernfaden mehrere Benutzerfaeden abwechseln.
b) Der Synchronisationsbedarf im Anwendungsprogramm kann von der Ablaufplanung der Kernfäden abhängen
ja, wenn das Scheduling nicht praeemptiv ist, dann braucht man auch nicht synchronisieren wenn man im kritischen Abschnitt den Prozessor
nciht freiwillig abgibt.
c) Das Betriebssystem kann bei einem durch einen Benutzerfaden ausgelösten Seitenfehler nicht auf einen anderen Benutzerfaden umschalten
ja, weil es die Benutzerfaeden ja gar nciht kennt.
d) Das Betriebssystem führt Buch über Kernfäden und Benutzerfäden.
nein, nur ueber Kernfaeden.
Hier würde ich sagen: a) ist richtig, b) auch, c) auch, da dann gleich der ganze User-Level-Thread blockieren würde
kann also nur noch d) sein - liege ich richtig,
ja