Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » BS 2020/03/10   (Übersicht)

BS 2020/03/10

Prüfer: Sieh

Wie zu erwarten sehr angenehme Prüfung. Ich bin jemand der sich gerne mal verquatscht und sich korrigieren muss, wurde aber nicht negativ gewertet. Und man wird auch nicht aufs Glatteis geführt.

Zum Lernaufwand: Ich hab Donnerstag angefangen [Braindump ging am Dienstag ein] und es hat gut gelangt, da man ja das Meiste durch die Übung schon kennt. Bin sehr zufrieden mit dem Ergebnis.

Interrupts:

- Wozu braucht man überhaupt Interrupts?

- Welche Arten von Interrupts gibt es? Wer löst sie aus? Edge, Level CPU → IPI (meine Antwort war das es Typ Edge ist, hat wohl gestimmt) IO Geräte → je nach dem ob man was abholt Level oder Edge Timer → nichts abzuholen also Edge

- Ablauf Interrupt: Wollte er wirklich ausführlich wissen. Steht aber auch genau wie er es hören wollte in den Folien. Wichtig war im vor allem das die CPU die nicht-flüchtigen sichert und der Interrupt Handler die flüchtigen.

- Wie entscheidet man bei Multi Core wer den Interrupt verarbeitet? Round Robin Festes Zuweisen

- Was ist schneller: Eine die alle abarbeitet oder Round Robin? Hab ein bisschen gebraucht, aber Caching war die Lösung. Eine für Alles ist besser.

- Dann noch kurz Prolog/Epilog aufgemalt

- Was macht man wenn ein Interrupt kommt, der Datenpuffer aber voll ist? Muss man dann doch im Interrupt warten? Nein, weil man sich deadlocken könnte. Die Daten gehen verloren.

IPC:

- Nachrichten vs Shared Memory: Vor- und Nachteile?

- Dualität erklären

- Mailbox Klasse für ein byte als Nachricht implementieren mit Puffer fester Größe:

  // so oder so ähnlich
  class Mailbox {
   byte p[N];
   Mutex m;
   Semaphore ready(0);
   Semaphore platz(N-1); // verwaltet Größe
   int i=0;
   void send(byte x){
      platz.p();
      mutex.lock();
      p[i++] = x;
      mutex.unlock();
      ready.v();
   }
   byte receive(){
      ready.p();
      mutex.lock();
      byte ret = p[i--];
      mutex.unlock();
      platz.v();
      return ret;
   }
  }

Geträtetreiber:

Wozu braucht man Treiber? Um eine einfacher Abstraktionsebene für Geräte für den Programmierer und dann Nutzer zu schaffen. Wozu einheitliche Schnittstellen? s.o. Wozu stackt man Treiber? (über und nebeneinander)

- Er wollt hier explizit USB Stack und Raid Stack hören und halt ein bisschen Erklärung