5.5 Computersysteme I, Anwendungen des Stapelzeigers

Beschreibung

Informatik (Computersysteme I) Karteikarten am 5.5 Computersysteme I, Anwendungen des Stapelzeigers, erstellt von David Bratschke am 24/11/2017.
David Bratschke
Karteikarten von David Bratschke, aktualisiert more than 1 year ago
David Bratschke
Erstellt von David Bratschke vor etwa 7 Jahre
75
2

Zusammenfassung der Ressource

Frage Antworten
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)
Zusammenfassung anzeigen Zusammenfassung ausblenden

ähnlicher Inhalt

ein kleines Informatik Quiz
AntonS
Informatik
Tom Kühling
PHP Grundlagen
chrisi.0605
Wirtschaftsinformatik Teil 2
Sabrina Heckler
Informatik 1 - Einführung
Svenja
Codierung
Tom Kühling
Wirtschaftsinformatik Teil 1
Sabrina Heckler
Einführung in das Studium Informatik
Daniel Doe
Lernplan
Sandra K
Datenstrukturen
Ann-Kathrine Buchmakowsky