Klausur Lsg Ansammlung 2010-2013

Alles! Naja fast…

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.

Klausur Lsg Ansammlung 2010-2013
Hallo :slight_smile:

ich bin gerade dabei Loesungen fuer die Klausuren aus den letzten 3 Jahren (April 2010 - Juli 2013) zusammenzuschreiben.
Darunter sind:
 Verifizierte Loesungen fuer die Multiple-Choice Aufgabe in anschaulicher Form. Gesammelt aus Forenbeitraegen, ergattert aus Musterlsgen vom LS (hust hust :smiley:), nachgeschlagen in den Vorlesungsfolien und verifiziert durch Mr. Brain (logischem Denken).
 Begruendungen, warum die Loesungen valide sind und die falschen Antworten falsch sind, mit Quellenangabe (Skript/Forumpost/Weitere) [Noch im Kommen…]
 Selbstgeschriebene Loesungen zu den Programmieraufgaben - mit anschaulicher Aufgabenvorgabe. [Muss noch ergaenzt werden…]
 Verifizierte Loesungen fuer die Textaufgaben [Noch im Kommen…] <— Siehe Edit

Einen ersten Einblick gibt es >>>hier<<<.

Versionshistory

Damit wird die Suche nach den richtigen Loesungen der Aufgaben einfacher und man muss sich nicht durch das ganze Forum klicken bzw den Suchdienst im Forum und sich selbst zum Verzweifeln bringen.

Wer Fehler findet, hier posten. Wird dann gefixt.
Fragen und Anregunge? Nur her damit! :smiley:

Ich wuerd mich freuen, wenns Feedback gibt und jemand der Ahnung hat mal drueber guckt :).

An dieser Stelle mach ich gleich noch mehr Werbung fuer sinnvolles/hilfreiches fuer Personen, die noch folgende Faecher schreiben:

SP1 Ansammlung an SP1 Miniklausur Loesungen ← nicht fehlerfrei :smiley:
SoSy Ansammlung an SoSy Loesungen + Sonstigem

Edit: Die Aufgabentypen A3-A4 werden nicht oeffentlich gestellt. Copy pasta aus den Loesungen vom DIN A4 Blatt auf die Klausur ist nicht das Ziel. Man will ja, dass die Studenten auch was lernen!

13 Likes

April 2010 1.l)
Aaalso, ich hätte gleich mal zur ersten Klausur (April 2010) eine Frage zu Aufgabe 1 l): “Der Prozess ist grundsätzlich lauffähig und wird im Rahmen der mittelfristigen Prozesseinplanung eingelagert”? Ist das so richtig? Also entweder, er wurde bereits eingelagert (swap in), bzw. wird ausgelagert(swap out) oder es ist “eingelastet” gemeint und dann passt das mittelfristig nicht, oder täusche ich mich da? Davon abgesehen verstehe ich Folie IX-1-18 nicht, warum dieser Übergang von schwebend bereit zu bereit nicht erwähnt wird. Aber vielleicht ist das dann auch der Schüssel warum ich die Aufgabe falsch gelöst hätte?
Edit:
Wenn ich mir Folie IX-1-5 so anschaue scheint mir außerdem das mit der Tastatureingabe gar nicht so unwahrscheinlich


Juli 2012 bei den Mehrfachauswahl-Fragen sind Fehler drin. Siehe hier: https://fsi.informatik.uni-erlangen.de/forum/thread/11072-Klausur-Juli-2012

1 Like

Habs mal geaendert auf die 4te Antwort.

Ich wuerde sagen, dass der Adressraum des Prozesses ja nicht unbedingt wegen der Tastatureingabe umgelagert wurde, sondern der Prozess zunaechst blockiert wird und dann ein Signal bekommt, dass eine Tastatureingabe stattfindet.
Dadurch geht der Prozess wieder in den Zustand bereit.

Da fehlt haltanders als bei einer aehnlichen Frage damals (welche hier beantwortet wurde: Unklare MC Aufgaben SysProg Sept04 und März05 - #8 von juk - Systemprogrammierung - FSI Informatik Forum ) die Information, dass das Signal gekommen ist und der Prozess sich nicht im Zustand blockiert befindet.
Ansonsten wartet er ja immer noch auf die Tastatureingabe und ist damit in blockiert bzw evtl in schwebend blockiert(/bereit?).

Wenn das noch jemand bestaetigen koennte waere es optimal.

Es haben auch noch weitere Aenderungen in der Loesungssammlung stattgefunden, die hier zu sehen sind :).
Danke hierbei an die hilfreiche Kritik von julupu und kara!

Edit: Sehe gerade die Statistiken und die kurze Uebersicht ueber die Antworten stimmt dann nicht mehr ueberein, wird gleich gefixt…


Danke, dass du dir die Mühe machst, die ganzen SP Lösungen zusammenzutragen!

August 2011: 1.1 j) ist Option 2 sollte richtig sein.

1 Like

Das glaube ich nicht. RAID1 ist gemirrort, da werden auf alle Platten exakt die gleichen Daten geschrieben, was nicht schneller geht als es auf eine einzelne Platte zu schreiben. Lediglich der Lesezugriff ist schneller (Unterschiedliche Blöcke können von unterschiedlichen Platten gelesen werden).

Option 4 passt. Da die Daten vollständig gespiegelt werden reicht bei einem RAID1 eine einzige Platte aus um nach wie vor alle Daten zu haben. Sprich alle bis auf eine können ausfallen ohne dass ein Datenverlust auftritt.

1 Like

Und es steht sogar in den Folien:

SP2-13 S.53 aka IV S. LIII (Fuer Leute die diese lateinische Zahlen so lieben!)


Sorry, ihr habt natürlich recht! Hab das „Schreib-“ irrtümlich als (Lese)zugriff gelesen.


Klingt auch ziemlich logisch. Kannst ja auch beides grün machen oder so ^^ Wirklich wichtig sind solche Fragen(„was ist falsch“) ja eh nicht, weil sie nicht mehr gestellt werden dürfen. (wie wir sehen, aus gutem Grund)


Beim multiple choice von der Klausur August 2011 hast du bei der b) einen Fehler glaube ich…

es muesste 3,4,6,8 richtig sein.

1 ist falsch, weil ob das Buddy-Verfahren externen oder internen Verschnitt erzeugt haengt laut:
https://www4.cs.fau.de/Lehre/WS13/V_SP2/Vorlesung/Folien/SP2-122-A4.pdf Folie 13 von der MMU ab.

6 ist richtig, weil wenn beim Worst-Fit Verfahren Speicher angefordert wird, der gerade 1Byte kleiner ist, als der ganz vorne stehende Speicherblock, dann muss der uebrig bleibende 1Byte Block ganz hinten in die Liste einsortiert werden und damit muss die ganze Liste durchlaufen werden.

Die Antwort bei der mit !TODO! markierten Frage 1c) in der Klausur Februar 2013 ist vermutlich:

1 ist richtig, weil https://www4.cs.fau.de/Lehre/WS13/V_SP2/Vorlesung/Folien/SP2-123-A4.pdf Folie 18

Noch eine Sache ist mir aufgefallen: Klausur Juli 2013 Aufgabe 1b)
1 ist falsch, weil lokale static Variablen im bss bzw. im init data (je nach Initialisierung) und damit im Datensegment liegen.
2 ist richtig, weil alle static Variablen (je nach Initalsisierung) in unterschiedlichen Teilen des Datensegments landen.


Juli 2012

Du hast da unter anderem

angekreuzt. Nach gestoppt kommt man in dem Modell aus der VL aber nur von laufend, dh. der Thread müsste zuvor gedispatcht werden.

Hier meinst du

Da bin ich mir nicht so sicher. M. E. könnte man das auch in Software realisieren, da der logische (!= virtuelle) nicht zwingend größer ist als der physikalische Adressraum ist (Harvard-Architektur).


Wir können dem Prozess ja mit der Guillotine zu Leibe rücken, damit sollte er auch von blockiert nach gestoppt übergehen können :slight_smile:

Sowas in der Art hat wosch glaub auch in der Fragestunde geäußert, allerdings finde ich das befremdlich. Ohne MMU müsste doch dann jeder Speicherzugriff über das Betriebssystem laufen, dass dann die Adressen überprüft.


Ich seh gerade auch den Grund für seine Annahmen.


Ich weiß nicht was genau wosch da gesagt hat, aber ich denke nicht, dass das sinnvoll ohne Hardwareunterstützung funktioniert. Natürlich geht das ohne MMU, denn die kann ja deutlich mehr als eine MPU (Memory-Protection-Unit, die macht nur Protection, aber z.B. kein Paging oder so), aber für einen logischen Adressraum braucht man „Hilfe“, damit es keine ungültigen Adressen mehr gibt. Ohne Hardwareunterstützung kann das Betriebssystem eine Anwendung ja nicht daran hindern, dass sie auf beliebige Adressen zugreift, denn wenn die Anwendung läuft, dann läuft ja (meist) das BS nicht.

Natürlich könnte ein BS theoretisch jeden Befehl der Anwendung interpretieren und prüfen und erst dann ausführen, wenn der logischen Adressraum einhalten wird, aber das wäre extrem langsam (noch langsamer als Qemu und Co.). Edit: Stimmt nicht, das wäre dann nach Definition kein BS mehr sondern ein Interpreter - die Frage ging aber nicht um BS sondern um Adressraumkonzepte.

Also theoretisch ja, sinnvoll IMHO nein - und MMU vs. MPU.

2 Likes

Mag rudis dazu noch etwas sagen, nachdem er doch meinte [m]kill[/m]? =)
Sollen wir uns dann nicht an dem Modell der VL orientieren? Dass es in einigen Implementierungen, vorallem bei denen mit Singlecore, anders aussieht bezweifelt ja niemand.

Geht es hierbei nicht vielmehr darum, ob es ohne möglich ist?


Ich sehe jetzt keinen Grund warum das BS einen Prozess noch auf die Ready-Liste setzen muss, wenn ein [m]SIGKILL[/m] an den Prozess geschickt wird, bevor der Prozess sterben kann. Deswegen denke ich, dass die Antwort da schon so richtig ist (die Musterlösung hat das auch so). Notfalls kann man bei solchen Sachen auch immer in der Einsicht drüber reden, muss nur die passenden Argumente haben.

Edit: Hab mich da verlesen und gestoppt mit beendet verwechselt, tut mir leid. [m]SIGSTOP[/m] geht natürlich, siehe auch die Vorlesungsfolie 16 (von dem obigen Link „17“).

Eigentlich hast du Recht. Damit wäre die Antwort falsch und dürfte nicht angekreutzt werden. Ich frag da aber nochmal nach.

Edit: Nachgefragt: Sind beides nicht perfekt präzise gestellte Fragen, die in der Klausur wenn dann eindeutiger gestellt werden würden.

1 Like

Weil die Implementierung hierdurch extrem vereinfacht wird.
Singlecore: einfach den Thread von der Ready-Liste entfernen, bzw. beim resume einfach nicht in die Liste einhängen.
Bei Multicores noch n bisl mit IPIs rumfuchteln etc. Aber das weißt du ja eigentlich alles besser als ich. :wink:

Edit: hab jetzt doch noch das entsprechende Modell auf Folie17 rausgesucht.


Eine Folie zuvor wird am Ende noch in einem Satz erwähnt, dass ein Prozess auch aus den Zuständen „bereit“ oder „blockiert“ in den Zustand „gestoppt“ überführt werden kann.
Ich sehe das quasi so als Erweiterung zu dem Modell in dem Bild. Damit wäre die Aussage „bereit/blockiert → gestoppt geht direkt“ richtig.


Antwort vom Jürgen hinsichtlich [m]kill[/m]. Um das Aufräumen in UNIX zu vereinfachen, muss der Thread vorher noch gedispatcht werden, bevor der Thread beendet (wird).

Edit: Polymath machte mich soeben darauf aufmerksam, dass das Aufräumen ja primäre für den Zustand beendet relevant ist, nicht jedoch zwingend für gestoppt. Die Begründung ist somit womöglich noch etwas lückenbehaftet.
Edit2: Nach weiteren Überlegungen und Disskussionen sind wir der Meinung, dass die Begründung insofern durchgeht, da der Thread für die Fälle, in denen er vor dem Stoppen etwas freigeben “möchte”, dies auch tun kann.