multiple-choice-fragen.


aber auch dann stimmt 4 nicht, weil es ja formuliert wird: „können die verlorenen daten wiederhergestellt werden“… und wenn sie auf mehreren platten doppelt vorhanden sind, müssen sie ja nicht „wiederhergestellt werden“ … aber das ist natürlich auch wieder haarspalterei


bin da auch für drei … weil man ja nicht generell sagen kann dass er dazu nicht in den priviligierten modus schalten muss. also zumindest bei leicht und schwergewichtigen prozessen muss er es doch, oder?


Ihr habs recht 3 ist definitiv falsch.
Bei Prozessenumschaltung ist ein Wechsel in den priveligierten Modues nötig.
Bei Umschaltung von schwergewichtigen Threads auch, nur bei leichtgewichtigen (user-) Threads nicht.


Zum Thema RAID1 - die werden 1:1 gespiegelt. Wiederherstellung der Daten bedeutet wohl eher Wiederherstellen des RAIDs. Ich hab hier daheim ein RAID1 am Start und wenn eine Platte auseinanderfliegt kann man direkt von der anderen weitermachen. Nur das Wiederherstellen eines RAID1 (also die bitweise (!) Kopie von einer Platte auf die nächste) steht dann halt noch an und die ist extrem langsam.


Das ist zwar schon richtig, aber das muss man bei RAID 4,5 auch, nur mit dem Unterschied, das man da noch die Paritätsbits aus/umrechnen muss.
Aber um das neu beschreiben der ausgewechselten Festplatte kommt man bei keinem RAID rum (mal von RAID 0 abgesehen …)


So wie es für mich aussieht ist in dieser Aufgabe Raid1 (Mirror) mit Raid0 (Striping) vertaucht, da im Text vom >gestreiften< System die Rede ist. Setzt man Raid0 ein scheint b) das einzig richtige.


moin - klausur märz 2006

d) Welche der folgenden Aussagen bzgl. Threads istfalsch?
❏ DieEinlastung(dasDispatching)einesThreadsisteineprivilegierte
Operationundkanndeshalbgrundsätzlichimmer nur durchdas
Betriebssystem vorgenommen werden.
❏ DasBetriebssystemistnichtinderLage,eineneinzelnenUser-LevelThreadbei
einer fehlerhaften Operation (z. B. Segmentation fault) gezielt abzubrechen.
❏ EinAnwendungsprogrammierer kanndieSchedulingstrategiefür seineUser-
Level Threads selbst programmieren.
❏ DieErzeugungeinesKernel-Level Threadsist teureralsdieErzeugungeines
User-Level Threads

mir ist das irgendwie nicht ganz klar - ich mein antworten 2 und 4 sind definitiv richtig.
im forum stand bisher die nummer 1 ist falsch, was ich allerdings nicht ganz nachvollziehen kann.

eigentlich dachte ich, dass man nur koroutinen selber schedulen kann? darf ich mir das dann so vorstellen dass das auf einem monoprozessor system in der hinsicht nach der folge der prozeduraufrufe geht?

ansonsten, einlasten ist doch immer im priviligierten modus oder? (wenn nicht, was führt denn das bs priv und was nicht priv aus?) inwiefern kann ich denn das einlasten noch auslösen?

danke! :slight_smile:


also, Einlasten ist nicht Einplanen, wird auf jeden Fall dem BS überlassen.

2 ist definitiv falsch- BS kennt keine user-threads, deswegen SIGSEGV bei einer von denen bewirkt, dass der ganze Prozess mit allen seinen user- threads stirbt.

Koroutinen sind bloß ein Konzept, und man kann user- threads selber schedulen. Genauer gesagt, hat man da keine andere Wahl- BS kennt sie nicht einmal :slight_smile:


Die Antwort ist auf Seite C 10-15, das Einlasten von User-Level-Threads ist keine Betriebssystemfunktion.


deswegen ist 2 ja richtig ^^ … steht ja da: „ist nicht in er der Lage“

… ich würde 1 ankreuzen, weil das BS ja UserLevelThreads nicht selber einlastet. das muss man ja selber implementieren


Also, kleine Zusammenfassung:

  1. ist falsch, da das OS keine User-Level-Threads einlasten kann und somit das “grundsätzlich immer” falsch ist
  2. ist richtig, da das OS keine User-Level-Threads kennt
  3. ist richtig, siehe 2.
  4. ist eh richtig :wink:

so würd ich das sehen, ja :slight_smile:


also das lesen von RAID1 schneller ist wär mir neu - beide Platten müssen ja quasi synchron die Daten lesen um zu sehen ob es Unterschiede gibt → das kann ja wohl kaum schneller sein … bzw. mein RAID1 ist nicht schneller als wenn ich die Platten einzeln fahre - hab ich nur den falschen Controller drin … ? Weil die Wikipedia meint auch es wär schneller aber dann versteh ich nicht ganz warum weil das überprüfen ob beide Platten die selben Daten liefern muss doch dauern, oder wird das nur beim Schreiben gemacht?


Wikipedia: “Bei RAID 1 wird beim Lesen immer auf beide Festplatten zugegriffen. Wenn die Antworten vorliegen, werden die beiden Datenströme verglichen, und bei Unstimmigkeiten wird eine Fehlermeldung ausgegeben (da das Array dann nicht mehr synchron läuft).”
Scheint mir auch so, ausserdem steht bei Wikipedia doch nur bei Raid0 was von gesteigerten Transferraten.


deswegen sagte ja roland schon, dass es wohl RAID 0 heissen muss, damit das ganze nen sinn ergibt

MC 1 2006
c) Man unterscheidet zw. privilegierten und nicht privilegierten Maschinenbefehlen. Welche Aussage ist richtig?

  1. Privilegierte Maschinenbefehle dürfen in Anwendungsprogrammen grundsätzlich nicht verwendet werden
  2. Die Benutzung eines privilegierten Maschinenbefehls in einem Anwendungsprogramm führt zu einer asynchronen Programmunterbrechung
  3. Privilegierte Maschinenbefehle können durch Betriebssystemprogramme implementiert werden
  4. Mit nicht privilegierten Befehlen ist der Zugriff auf Geräteregister grundsätzlich nicht möglich

ich tippe mal auf 4 oder was denkt ihr?


Nö, ich sag 3.


3 ist richtig…

haben wir u.a. in der Übung durchgesprochen und der juk hat sich glaub ich auch hier im Board dazu geäußert…

bei 1) war die Begründung dass du es machen kannst aber dann eben nen Trap kriegst,z.b. wenn du die assemblerbefehle cli/sti nutzen würdest…also sperren von interrupts

2)da is ja klar dass es wenn schon, eine synchrone unterbrechung ist

  1. könnt ich dir jetz allerdings nicht begründet widerlegen…ist halt möglich

3 schien mir zu trivial zu sein, so wegen “privilegiert und Geräteregister” habe auf 4 getippt :open_mouth:


b) Welche Aussage zu Semaphoren ist richtig?

  1. Semaphore werden benutzt um in kritischen Abschnitten Interrupts
    zu sperren und so den gleichzeitigen Zugriff auf gemeinsame Datenstrukturen
    zu verhindern.
  2. P- und V-Operationen werden am besten eingesetzt, um Nebenläufigkeit zwischen Signalbehandlungsfunktionen und dem eigentlichen Programmablauf zu synchronisieren.
  3. Eine P-Operation kann in einem Anwendungsprogramm unter UNIX durch normale C-Anweisungen nicht implementiert werden.
  4. Die V-Operation dekrementiert den Semaphor um 1 und deblockiert andere in einer V-Operation blockierte Prozesse.

ich glaube 4. ist mit Sicherheit falsch, 2. auch falsch, 3.-? quatch!, dann bleibt nur 1. richtig oder?