Zeit insgesamt: 90 Minuten TEIL A Multiple Choice ? bedeutet, dass eine weitere Frage gab, die ich vergessen habe. Prozessormodi Der User-Modus ist der einzige unprivilegierte Modus. Der User-Modus kann ausschließlich durch eine Ausnahme verlassen werden. Der System-Modus kann ausschließlich durch eine Ausnahme verlassen werden. ? Bei einer Ausnahme... wird das CPSR automatisch im SPSR des entsprechenden Ausnahmemodus gesichert. wird das Linkregister des entsprechenden Ausnahmemodus automatisch gesetzt. ? Eine L1-Tabelle für die MMU . . . ist die Haupttabelle der MMU. ist Teil einer übergeordneten Seitentabelle. muss der MMU über ihre Adresse bekannt gegeben werden. ? Das CPSR hat ein Bit, das Interrupts maskiert/demaskiert. hat ein Bit, um die MMU an/aus zu schalten. hat Bits, die den aktuellen Prozessormodus anzeigen. ? Der FAULT-Eintrag in einer Seitentabelle . . . führt zu einem Prefetch/Data Abort beim Zugriff auf die entsprechende Seite. ist nur nötig bei aktivem Cache. ? sollte initial für unbenutzte Adressen verwendet werden. Systemrufe . . . erlauben den Zugriff auf privilegierte Ressourcen aus einer unprivilegierten Anwen- dung heraus. funktionieren nur bei Mikrokernelsystemen. werden aus dem User-Modus mittels eines Software-Interrupts aufgerufen. werden vollständig im User-Modus ausgeführt. ? ? Arm-Kern Die MMU ist ein essentieller Bestandteil des ARM-Kerns TEIL B Kurzantworten Mit welcher Befehlsabfolge kann ein Wechsel von einem privilegierten Modus in einen anderen vorgenommen werden? (Assemblerbefehle sind nicht Pflicht, jedoch sollte die Antwort jeden in Assembler notwendigen Schritt beschreiben.) Der folgende Code soll dem AAPCS folgen. Tragen Sie genau die Register ein, die auf dem Stack gesichert werden müssen. Begründen Sie Ihre Entscheidung. foo: stmfd sp!, {____________________________} mov r7, r0 mov r8, r1 add r0, r7, r8 ldmfd sp!, {____________________________} mov pc, lr Welche Schritte müssen vorgenommen werden, damit ein Interrupt, der am Gerät anliegt, vom ARM Kern angenommen wird? Welche möglichen Zugriffsrechte außer (P)XN können in einem L1-Tabellen-Eintrag für eine im User-Modus laufende Anwendung gestellt werden? Nennen Sie für jedes Zugriffsrecht außerdem einen sinnvollen Anwendungsfall. Welche Rolle spielt der TLB bei der Adressübersetzung und weshalb muss er gelegentlich invalidiert werden? Was ist der Unterschied zwischen einem Data und einem Prefetch Abort? Warum ist bei der Ansteuerung von Geräten in C das volatile Keyword notwendig? Nennen Sie 4 Ausnahmen, und beschreiben Sie, wann Sie von ARM Kern ausgelöst werden. Angenommen, es gibt ein Geräteregister CR, wie kann dann das Bit nr gesetzt und später wieder gelöscht werden? Zeigen Sie anhand des Beispiels der Addition zweier Zahlen, wie eine Assemblerfunktion von C aus aufgerufen wird. Geben Sie dazu eine Codeskizze mit Kommentaren an, was jeweils in Assembler und C beachtet werden muss. TEIL C Komplexe Aufgaben Es soll die Kernel-Funktion execute_later(int delay_in_milliseconds, void (*action)()) implementiert werden. Diese soll eine Aktion nach einem variablen Timeout die angegebene Aktion action ausführen. a) Welche Datenstruktur kann zur Speicherung der nötigen Aktion verwendet werden? Was passiert bei Ausführung von execute_later und beim Eintreten des Timer Interrupts mit der Datenstruktur? b) Es soll ein Systemruf Warte-Auf-Tastendruck-bis-Timeout implementiert werden. Dieser soll eine variable Zeit (wird vom user angegeben) auf einen Tastendruck warten, und entweder die gedrückte Taste oder andernfalls eine Fehlermeldung zurückgeben. Wie muss dieser Systemruf aussehen? Wie kann der kernel die Funktion execute_later hierfür verwenden? Was passiert, wenn der Systemruf ausgelöst, eine Taste gedrückt, oder der Timer interrupt ausgelöst wird?