Created by David Bratschke
almost 7 years ago
|
||
Question | Answer |
Warum gibt es häufig zwei Stapelzeiger und wie heißen diese? | Zum Schutz des Betriebssystems, diese heißen User- und Supervisor- Stapelzeiger |
Ergänze: Ein Stapel ist ein wichtiges Hilfsmittel, das die Verarbeitung von ....., ..... ermöglicht? | Unterprogrammen (Subroutines) und Unterbrechungen (Interrupts) |
Auf welche zwei Arten kann ein Stapel grundsätzilch realisiert werden? | entweder direkt in Hardware auf dem Prozessorchip oder mit Hilfe eines Stapelzeigers im Hauptspeicher |
Welchen Vorteile und Nachteile hat die Realisierung eines Stapels direkt in der Hardware im Prozessor? | Vorteil: Geschwindigkeit Nachteil: braucht mehr Chipfläche |
Welchen Vorteil bietet die Realisierung des Stapels im Hauptspeicher? | dass die Speichergröße des Stapels durch zusätzlichen Hauptspeicher beliebig vergrößert werden kann |
Ergänze: Ein Stapel arbeitet nach dem: ... -Prinzip? | LIFO (Last in First Out) |
Welche zwei Operationen werden von einem Stapel unterstützt? | PUSH und POP |
Was macht die PUSH-Operation beim systemeigenen Stapel? | Diese legt ein Maschinenwort auf den Stapel |
Was macht die POP-Operation beim systemeigenen Stapel? | Diese holt ein Maschinenwort vom Stapel |
Welche zwei Varianten zur Realisierung eines Stapels gibt es? Welche ist am meisten verbreitet? | Beginnend am Ende des Hauptspeichers oder am Anfang, verbreitet ist der Beginn am Ende |
Was ist ein Stapel-Überlauf (Stack-Overflow)? | Wenn der Stapel so groß wird, dass er in dem Daten, bzw. Programmbereich hineinragt |
Welche zwei Möglichkeiten gibt es, um den Stapelzeiger zu verändern? | 1. bei PUSH vor dem Schreiben in, bei POP nach dem Lesen oder 2. bei PUSH nach dem Schreiben, bei POP vor dem Lesen |
Wann ist es nötig, andere Prozessorregister (als Datenregister) kurzzeitig auf dem Stack zwischenzuspeichern ( "bzw. zu retten") ? | wenn diese Register von einem Unterprogramm oder einer Unterbrechung benutzt werden. |
Wie funktioniert das "Retten" auf dem Stack? | die betreffenden Register mit PUSH-Operationen auf den Stapel gebracht. Vor dem Rücksprung an die Aufruf-bzw. Unterbrechungsstelle werden sie dann durch POP-Operationen in umgekehrter Reihenfolge in den Prozessor zurückgeholt. |
Ergänze: Die Zahl der PUSH- und POP-Operationen muss ...? | in einem (Unter-) programm immer gleich sein |
Wozu dienen Unterprogramme (Subroutines)? | (Wiederverwendbarkeit von Code) sich immer wieder wiederholende Befehlsfolgen / die gleichen Funktionen, können in einem Unterprogramm (engl. Subroutine) zusammen gefasst werden |
Welchen Vorteil bietet die Verwendung von Subroutinen? | Dadurch wird nicht nur Speicherplatz gespart, sondern auch die Programmierung modularisiert. |
Auf welche zwei Arten können Parameter und Ergebnisse von Subroutinen übergeben werden? | entwder über bestimmte Register oder über den systemeigenen Stapel |
Was ist eine Laufzeitbibliothek? | diese enthält lauffähige Maschinenprogramme, die in Anwenderprogrammen eingebunden werden können. |
Was muss der Programmierer wissen, wenn er Unterprogramme über eine Laufzeitbibliothek einbinden möchte? | die Einsprungadresse und die Schnittstelle für die Eingabe der Parameter bzw. Ausgabe der Ergebnisse kennen. |
Mit welchem Befehl wird ein Unterprogramm aufgerufen? | mit dem CALL-Befehl |
Mit welchem Befehl wird ein Unterprogramm abgeschlossen? | Mit dem RETURN-Befehl |
Welche vier Teilschritte werden bei einem CALL-Befehl ausgeführt, nachdem der CALL-Befehl selbst geholt und der Opcode dekodiert wurde? | - PC wird inkrementiert: (PC++) Verzweigungsadresse in Adressregister retten: ( AR←Ziel) Rücksprungadresse auf Stapel legen: ( SP ←SP −1 ;M[SP] ←PC) - Startadresse des Unterprogramms aus AR in PC laden: ( PC ←AR) |
Welche Teilschritte werden bei dem RETURN-Befehl ausgeführt? | die Rücksprungadresse wird durch eine POP-Operation vom Stapel geholt und in den Programmzähler geschrieben. |
Wie lauten die Teilschritte zur Ausführung des RETURN-Befehls in RTL-Notation? | PC ←M[SP] SP ←SP +1 |
Welches Mnemonic wird in der Regel für den RETURN-Befehl in Assemblersprachen verwendet? | "RTS" (Return from Subroutine) |
Ergänze: Der RETURN-Befehl bewirkt eine Umkehrung von Schritt .... des CALL-Befehls. | Nr. 3 |
Kann Rekursion ebenfalls durch Subroutinen realisiert werden? | Ja |
Was muss bei der rekursiven Verwendung von Subroutinen beachtet werden? | diese sind nur dann zulässig, wenn die im Unterprogramm benutzten Registerinhalte zu Beginn auf den Stapel gerettet und am Ende des Unterprogramms durch POP-Befehle wiederhergestellt werden. |
Welchen Nachteil hat die Verwendung von Subroutinen? | Der dynamische Aufbau einer Verbindung zwischen dem Haupt und Unterprogramm mit Hilfe der Befehle CALL und RETURN erhöht den Zeitbedarf zur Ausführung einer Funktion. |
Welches Mittel kann man für zeitkritische Anwendungen anstatt von subroutinen verwenden? | Makros |
Wie funktioniert ein Makro im Gegensatz zu einem Unterprogramm? | an Stelle eines CALL-Befehls werden alle Maschinenbefehle der auszuführenden Funktion eingefügt |
Welchen Vorteil bieten Makros gegenüber Unterprogrammen ? | Es wird die Zeit für den Aufruf des Unterprogramms und für die Rückkehr zum Hauptprogramm eingespart |
Welchen Nachteil haben Makros gegenüber Unterprogrammen? | erhöhter Speicherplatzbedarf |
Wie werden Assembler genannt, welche die Verwendung von Makros unterstützen? | Makroassembler |
Was ist eine "Unterbrechung" (Interrupt)? | Besondere Ereignisse inner- oder außerhalb des Prozessors, die zu einer Unterbrechung des normalen Programmablaufs führen |
Wie reagiert der Prozessor auf einen Interrupt? | Der Prozessor verzweigt zu einem Programmteil, der auf das eingetretene Ereignis reagiert (Interrupt Service Routine) |
Wodurch unterscheiden sich Interrupts von Subroutinen? | Durch die Art des Aufrufs. Es gibt keinen CALL-Befehl, sondern der Aufruf eines Interupts erfolgt durch intern oder extern erzeugte (Hardware)Signale |
Wann können die Hardwaresignale die zum Aufruf einer Interruptserviceroutine führen auftreten? | Jederzeit, auch asynchron zum Prozessortakt |
Welche Anwendungsfälle gibt es für die Verwendung von Interrupts? | - Ein-/Ausgabe - Zuteilung von Prozessorzeit durch das Betriebssystem |
Was sind Softwareinterrupts? | Maschinenbefehle, welche die gleiche Wirkung haben wie durch Hardware ausgelöste Interrupts. |
Wozu werden Software-Interrupts verwendet? | damit kann der Benutzer bestimmte I/O-Operationen aufrufen, die das Betriebssystem bereitstellt (System Calls) und die nur im System-Modus erlaubt sind. |
Was sind sog. "Traps" bzw. "Exceptions"? | Softwarefehler, die zu kritischen Zuständen des Systems führen können und deshalb abgefangen werden müssen |
Was sind typische Exceptions, die durch geeignete Hardware abgefangen werden müssen? | z.B.: Division durch 0, Überschreitung des darstellbaren Zahlenbereichs, Ausführen nicht existierender Maschinenbefehle |
Was sind Beispiele für externe Fehlerquellen, die ebenfalls Exceptions auslösen können? | z.B. Einbruch der Betriebsspannung , Speicherdefekte, Verletzung von Zeitbedingungen bei Busprotokollen |
Wie werden i.d.R. Exceptions, die auf externe Fehlerquellen beruhen, abgefangen? | In der Hardware, durch sogenannte Watchdogschaltungen |
Wie realisiert der Prozessor, dass er jederzeit auf ein Interruptrequest (IRQ) reagieren kann? | die Ablaufsteuerung der Holephase muss erweitert werden, sodass eine Interruptanforderung zunächst in einem Flipflop zwischengespeichert werden kann (vereinfacht) |
Wie wird die Startadresse für die jeweilige Interruptserviceroutine festgelegt? | Implizit, durch den Opcode des Interrupts |
Was ist der Interruptvektor? | die Startadresse der Service-Routine zur Behandlung eines Interrupts |
Mit welchem Signal bestätigt der Prozessor dem anfordernden Gerät die Interrupt-Anforderung? | Mit dem Quittungssignal: INTA (Interrupt Acknowledge) |
Wie nennt man den Status eines Interrupts, wenn dieser eine Anforderung an den Prozessor gesendet hat, diese allerdings noch nicht mit dem INTA Signal bestätigt wurde? | Dann ist der Interrupt "hängend" (pending) |
Wann kann das IRQ-Flipflop bei der Behandlung von Interrupts zurückgesetzt werden? | Mit dem INTA-Signal |
Was passiert mit dem Statusregister während der Behandlung eines Interrupts durch den Prozessor? | Dieses wird zunächst auf den Stapel gerettet und vor Wiederaufnahme des eigentlichen Programms wiederhergestellt |
Wie wird die Sicherung des Statusregisters bei der Interruptbehandlung in der Regel realisiert? | normalerweise automatisch durch die Ablaufsteuerung (Mikroprogramm) |
Welcher Befehl steht am Ende einer Interrupt-Service-Routine? | Der RETI-Befehl ("Return from Interrupt") |
Wodurch unterscheidet sich der RETI-Befehl von einem Return-Befehl eines Unterprogramms? | Es wird zusätzlich auch das zuvor auf den Stack gerettete Statusregister vom Stack geholt und zurückgeschrieben |
Welche zwei Probleme gilt es zu lösen, wenn ein Prozessor in der Lage sein soll, mehrere Interrupt-Quellen zu berücksichtigen? | - Jedem Interrupt muss eine eigene Startadresse für die Service-Routine zugeordnet werden - Wenn mehrere Interrupts gleichzeitig hängend sind, muss eine Entscheidung getroffen werden, welcher Interrupt vorrangig bearbeitet wird |
Wie wird bei mehreren Interruptquellen i.d.R. entschieden, welcher Interrupt vorrangig bearbeitet wird? | In der Regel durch eine Priorisierung. Ausserdem wird zwischen maskierbaren und nicht maskierbaren Interrupts entschieden. |
Was sind maskierbare Interrupts und wofür können diese sinnvoll sein? | maskierbare Interrupts können vom Programmierer freigegeben oder gesperrt werden. Das kann z.B. für zeitkritische Programmabschnitte ratsam sein. |
Was sind nicht maskierbare Interrupts (NMI)? | diese können nicht gesperrt werden. Sie dienen zur Fehlerbehandlung und müssen deshalb unverzüglich bearbeitet werden |
Was sind Beispiel für nicht maskierbare Interrupts? | - Reaktion auf einen Abfall der Betriebsspannung (watchdog-Schaltung) - prozessorinterne Traps/Exceptions (Div by 0 , etc. ) |
Welche drei Möglichkeiten gibt es die Startadresse der Service-Routine bei mehreren Interruptquellen zu bestimmen? | 1. die Abfragemethode, 2. die Vektormethode, 3. die Codemethode. |
Wie funktioniert bei mehreren Interruptquellen die "Abfragemethode" zum Bestimmen der Startadresse der Interruptserviceroutine? | Das IRQ-Flag wird durch eine OR-Verknüpfung der einzelnen Anforderungsbausteine gesetzt. Ein Interrupthandler prüft dann nacheinander die Statusregister der Quellen und kennt die dazugehörenden Adressen der Serviceroutinen |
Wie kann eine Priorisierung von Interrupts bei der Abfragemethode (Polling) realisiert werden? | Da der Interrupthandler die einzelnen Devices nacheinander abfragt, kann darüber auch eine Reihenfolge im Sinne von Prioritäten gesetzt werden |
Welchen Nachteil hat das Polling bzgl. der Erkennung von Interrupts? | der hohe Zeitbedarf zur Abfrage der einzelnen Devices und die Ermittlung des richtigen Device Handlers |
Welche Methode zur Behandlung mehrerer Interruptquellen benötigt den meisten Hardwareaufwand? | Die Vektormethode |
Was wird für die Vektormethode zur Behandlung mehrerer Interruptquellen zusätzlich zum Statusregister benötigt? | ein extra Register (ISRQ) , wo die IRQs aufgefangen und mit einer Interrupt-Maske (IM) als Teil des Statusregisters bitweise AND-verknüpft werden können |
Wozu dient das ISRQ- Register bei der Vektormethode? | darüber kann die Ablaufsteuerung der betreffenden Anforderungsleitung einen Maschinenbefehl zuordnen, der implizit die Startadresse für die Interrupt-Service-Routine festlegt |
Was ist der Vorteil der Vektormethode? | damit können IRQs sehr schnell beantwortet werden, da die Startadresse des Device Handlers spätestens nach einem Befehlszyklus bekannt ist |
Was ist der Nachteil der Vektormethode zur Behandlung mehrerer Interruptquellen? | dass jeder Anforderungsleitung nur ein Device Handler zugeordnet werden kann. Abhängig von ihrem momentanen Zustand benötigen Peripheriegeräte jedoch verschiedene Device Handler |
Welchen Vorteil bietet die Codemethode zur Behandlung von mehreren Interruptquellen? | Diese bietet ein hohes Maß an Flexibilität |
Wie funktioniert die Codemethode bei Behandlung mehrerer Interruptquellen? | Jedem \( IRQ_i \) wird ein Signal \( INTA_i \) zugeordnet, auf welches das Device mit einem Codewort auf dem Datenbus antwortet. Aus dem Codewort wird dann die Startadresse des Device Handlers bestimmt |
Auf welche zwei Arten kann der Prozessor bei der Codemethode aus dem Codewort eines Devices die Startadresse der Interruptserviceroutine ermitteln? | Unterstützt der Prozessor vektorisierte Interrupts, so entspricht dem Codewort eine Vektornummer aus der Interrupt-Tabelle. Das Codewort kann aber auch einen CALL-Befehl darstellen, dann übergibt das Device im Anschluss daran die Startadresse direkt an den Prozessor |
Was ist ein Interruptcontroller? | Eine Hardwarelösung zum Behandeln von Interruptrequests mit Prioritäten (bei mehreren Interruptquellen) |
Aus welchen Kernkomponenten besteht ein Interruptcontroller? | Ein ISRQ-Register Ein Prioritätenencoder, Ein Vergleicher, Eine Ablaufsteuerung (mit Interrupttabelle) |
Was steht in der Interrupttabelle? | Die Startadressen zu den verschiedenen Interrupts |
Welche Aufgabe hat der Prioritätenencoder im Interruptcontroller? | Dieser gibt die Nummer der Anforderung mit der höchsten Priorität als Dualzahl aus. Wenn keine Anforderung hängend ist, wird eine 0 ausgegeben. |
Wofür ist der "IM"-Teil im Statusregister da? | Zum maskieren oder desmaskieren der einzelnen Interrupts. Ist ein "IM"-Bit gesetzt, so wird das Signal des Requests aus dem IRQS-Register durch eine AND-Verknüpfung an den Prioritätenencoder weitergeleitet |
Wofür sind die "IS"-Bits im Statusregister da? | Dort ist die aktuelle Prioritätsebene gespeichert, in der sich der Prozessor gerade befindet, nur IRQs mit höher Priorität als dieser können den Prozessor unterbrechen |
Wie muss der Prioritätenencoder im Interruptcontroller mit dem "IS"-Bits des Statusregisters verknüpft werden, damit der Prozessor abhängig von der jeweiligen Priorität des IRQ unterbrochen werden kann? | Mit einem Vergleicher, nur wenn der Ausgang aus dem Prioritätenencoder größer als der Wert im "IS"-Teil ist, darf der Prozessor unterbrochen werden |
Was passiert nachdem das INTA-Signal für ein Interrupt (Steuerung durch Interruptcontroller) ausgelöst wurde? | Die Rücksprungadresse wird zusammen mit dem alten IS-Code (Statusregister) auf den Stapel gerettet |
Was passiert bei der Interruptbehandlung mittels IR-Controller nachdem das "alte" Statusregister auf den Stapel gerettet wurde? | 1.) Startadresse der Service-Routine in den PC laden und 2) IS-Teil des Statusregisters aktualisieren |
Wie wird eine IR-Service-routine bei IR-Behandlung mittels IR-Controllers abgeschlossen? | Mit einem RETI-Befehl (Da dieser das alte Statusregister wiederherstellt) |
Want to create your own Flashcards for free with GoConqr? Learn more.