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.
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?
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
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.
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
könnt ich dir jetz allerdings nicht begründet widerlegen…ist halt möglich
Semaphore werden benutzt um in kritischen Abschnitten Interrupts
zu sperren und so den gleichzeitigen Zugriff auf gemeinsame Datenstrukturen
zu verhindern.
P- und V-Operationen werden am besten eingesetzt, um Nebenläufigkeit zwischen Signalbehandlungsfunktionen und dem eigentlichen Programmablauf zu synchronisieren.
Eine P-Operation kann in einem Anwendungsprogramm unter UNIX durch normale C-Anweisungen nicht implementiert werden.
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?