Not logged in. · Lost password · Register

gabriel2029
Member since Nov 2018
52 posts
Subject: Fragen zur Ausnahmebehandlung
Hallo,

zur Miniklausur SS 2014 (https://www4.cs.fau.de/Lehre/SS14/V_SP2/Pruefung/2014s-MKl…), letzte Aufgabe, habe ich ein paar Fragen. Bei der b) wird nach den Varianten der Ausnahmebehandlung gefragt. Sind damit das Terminierungsmodell und das Wiederaufnahmemodell gemeint, oder, dass je nachdem, ob es sich um einen Maschinenbefehl oder einen System Call handelt, zuerst die CPU bzw. das Betriebssystem den Fehler als erstes bemerkt?

Zu der c): Es ist klar, dass der NULL-Pointer zum Beschreiben invalid ist, weshalb es dort zu einem Fehler kommt. Nach den Folien, Kapitel 3.4 (genauer https://www4.cs.fau.de/Lehre/SS19/V_SP1/Vorlesung/Folien/S…, ab Seite 26) ist es so, dass die CPU den Fehler erkennt und anschließend ein Ausnahme erhebt. Wie ist das genau zu verstehen? Mir ist auch nicht klar, was dort mit "die Operation wird abgefangen (trap) bzw. unterbrochen (interrupt)" gemeint ist, insbesondere, wieso hierbei sowohl Traps wie Interrupts möglich sind. Logischer wäre für mich allerdings, dass der eigentliche Fehler durch die MMU ausgelöst wird, welche einen Trap auslöst (dadurch wird dieser Fehler an das Betriebsystem weitergeleitet). Ist das korrekt?
Außerdem: Bin ich bei der c) a3) richtig in meiner Annahme, dass der Prozess in den Zustand blockiert gesetzt wird, bis die Fehlerbehandlung abgeschlossen ist, oder wird die Fehlerbehandlung innerhalb dieses Prozesses ausgeführt (d. h. es wird kein neuer Prozess erzeugt)?

LG Gabriel
This post was edited on 2019-10-26, 01:31 by gabriel2029.
KMB
Member since Nov 2016
66 posts
b) ja hier sind Beendigungs und Wiederaufnahmemodell gemeint.

Die von dir verlinkten Vorlesungsfolien behandeln das Thema Ausnahmen allgemein. Ein Trap ist immer auf die gerade ausgeführte Operation zurückzuführen, ein Interrupt hingegen kommt immer von außen, daher vermutlich die unterschiedliche Formulierung von wosch.
In Aufgabe c) ist der spezielle Fall der Dereferenzierung eines Nullpointers gefragt, hier wird natürlich von der MMU ein Trap ausgelöst.

c a3) das Betriebssystem läuft nicht in einem eigenen Prozess. Der laufende Prozess wird einfach unterbrochen und die Ausnahmebehandlung wird ausgeführt. Im Falle der Aufgabe ist die Behandlung den Prozess zu beenden.
gabriel2029
Member since Nov 2018
52 posts
Noch eine andere Frage: Wenn eine globale (oder auch static) Variable angelegt wird, ala
char *m = "irgendeintext";
dann liegt m ja im Datensegment. Wohin zeigt dieser Pointer? Auch ins Datensegment (hier haben sie mal (SS 14, Aufgabe a3) c) behauptet, es würde ins Textsegment zeigen, das macht für mich aber wenig Sinn, da ja der const-Bezeichner fehlt)?
KMB
Member since Nov 2016
66 posts
+1 Marcel[Inf]
der String liegt im Textsegment. Wenn du versuchst ihn zu modifizieren, beispielsweise mit m[1] = 'a'; führt das zu einem Segmentation fault. m liegt aber wie du schon richtig gesagt hast im Datensegment, die Anweisung m = "abc"; ist ja ok.
Marcel[Inf]
#faui2k15, GTI-Tutor a. D.
Member since Nov 2015
617 posts
Genau, hier reflektiert der Typ leider nicht die semantischen Constraints. D.h. obwohl `m[1] = 'a'` kompiliert, wirft das zur Laufzeit einen Fehler (vom der MMU aus).
Deswegen sollte man bei gutem Code auch den const-Bezeichner reintun: `const char *m = "..."`. Um dann trotzdem noch `m = "abc"` zu verhindern, brauchst du ein Doppelconst: `const char * const m = "..."` (lies: `m is a const pointer to a char const` mit der Spirale Rule).
gabriel2029
Member since Nov 2018
52 posts
Noch ne organisatorische Sache bzgl. der Miniklausur: Ist es erlaubt, wenn der Spickzettel bisschen kleiner als ein Din A5-Blatt ist oder man diesen selbst bastelt, indem man ein Din A4-Blatt zerteilt?
fbl
Member since Feb 2016
7 posts
Ein in der Mitte geteiltes DIN A4 Blatt ist - by design - genau DIN A5 groß und sollte daher ok sein.
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
288 posts
Man darf einen Spickzettel mitnehmen?
I hate Forumssignaturen
gabriel2029
Member since Nov 2018
52 posts
Ja, ein (doppelseitig) handbeschriebens Din A5-Blatt. Ich frage deshalb, weil mein Block in der Höhe etwas kleiner als Din A5 groß ist, ob das so ok ist, oder ob ich ein Din A4-Blatt zerlegen muss.
rudis
SPler
(Administrator)
Member since Apr 2010
649 posts
Quote by gabriel2029:
Ja, ein (doppelseitig) handbeschriebens Din A5-Blatt. Ich frage deshalb, weil mein Block in der Höhe etwas kleiner als Din A5 groß ist, ob das so ok ist, oder ob ich ein Din A4-Blatt zerlegen muss.

Solange der Zettel nah genug an A5 dran ist, ist das bei der Miniklausur kein Problem.

Bei der echten Klausur sollte es exakt ein A4-Zettel sein.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen