Lösungsvorschlag für Übung September 2009

Ähnliche Dokumente
Tutorium Rechnerorganisation

RO-Tutorien 15 und 16

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Virtueller Speicher und Memory Management

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 9 und Präsenzaufgaben Übung 10

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Zwei Möglichkeiten die TLB zu aktualisieren

Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging

Technische Informatik 1 - HS 2017

Echtzeitbetriebssysteme

Betriebssysteme Vorlesung im Herbstsemester 2009

Proseminar Konzepte von Betriebssystem-Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging Von Christian Hubert

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

Betriebssysteme. Wintersemester Kapitel 3 Speicherverwaltung. Patrick Kendzo

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

Speicherverwaltung (Swapping und Paging)

Leichtgewichtsprozesse

2.3 Prozessverwaltung

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

Einführung in die technische Informatik

RO-Tutorien 17 und 18

Lösungsvorschlag zur 6. Übung

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

(Cache-Schreibstrategien)

Übung 4 - Betriebssysteme I

Speicher Virtuelle Speicherverwaltung. Speicherverwaltung

Übung zu Einführung in die Informatik # 10

Computer-Systeme Teil 15: Virtueller Speicher

7. Speicherverwaltung

Tutorium Rechnerorganisation

Wie groß ist die Page Table?

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Betriebssysteme. Vorlesung im Herbstsemester 2010 Universität Mannheim. Kapitel 6: Speicherbasierte Prozessinteraktion

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Teil 1: Prozessorstrukturen

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Prof. Dr. Sharam Gharaei. Inhaltsverzeichnis. 1 Einleitung 1. 2 Grundlage der Realisierung 2. 3 Die Realisierung 3. Literaturverzeichnis 7

Rechnergrundlagen SS Vorlesung

Betriebssysteme Sommersemester Betriebssysteme. 5. Kapitel. Adressumsetzung. Dr. Peter Tröger / Prof. M. Werner. Professur Betriebssysteme

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

Übung zu Grundlagen der Betriebssysteme. 13. Übung

Grundlagen der Informatik III Wintersemester 2010/2011

Grundlagen der Informatik III Wintersemester 2010/2011

5 Kernaufgaben eines Betriebssystems (BS)

4. Übung - Rechnerarchitektur/Betriebssysteme

1. Speicher. Typische Nutzung eines Adreßraums. Systemsoftware. Textbereich relativ klein. Sehr großer Abstand zwischen Heap und Stack

1. Welche Speichereinheiten werden belegt, wenn die folgenden Strategien eingesetzt werden?

Echtzeit-Multitasking

é Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus

Echtzeit-Multitasking

5.6 Segmentierter virtueller Speicher

Betriebssystemtechnik

Lösung von Übungsblatt 2

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme. Vorlesung 4: Memory. Wintersemester 2001/2002. Peter B.

Lösung von Übungsblatt 5

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

B1 Stapelspeicher (stack)

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Dynamisches Binden in Multics

Konzepte von Betriebssystemkomponenten

Rechnerstrukturen Winter SPEICHER UND CACHE. (c) Peter Sturm, University of Trier 1

2017/01/23 15:50 1/5 Bedienung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

, SS2012 Übungsgruppen: Do., Mi.,

Speicherverwaltung III

Speicher- und Cacheverwaltung unter Linux. Ralf Petring & Guido Schaumann

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

Wunschvorstellung der Entwickler vom Speicher

Definitionen zum Verschnitt

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Betriebssysteme SS Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. SB 3 ( , v2) Speicherverwaltung Ein-/Ausgabegeräte und Schnittstellen

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13.

Grundlagen Rechnerarchitektur und Betriebssysteme

Betriebssysteme I WS 2016/2017. Betriebssysteme / verteilte Systeme Tel.: 0271/ , Büro: H-B 8404

Cache. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

Intel x86 Bootstrapping

5 Speicherverwaltung. bs-5.1 1

"Organisation und Technologie von Rechensystemen 4"

Parallele und verteilte Anwendungen in Java

1. Von-Neumann-Architektur (7/66 Punkte)

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Teil 1: Prozessorstrukturen

Hauptspeicherverwaltung - Memory Management

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

, WS2012 Übungsgruppen: Mo., Do.,

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Betriebssysteme. Speicherverwaltung - Grundlegende Konzepte. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.

Sommersemester Implementierung I: Struktur

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Rechnerorganisation. Überblick über den Teil 13

Besprechung der Probeklausur Übungsscheine, inoffizielle Evaluation Übungsaufgaben Noch Fragen?

4.3 Hintergrundspeicher

Freispeicherverwaltung

Vorlesung Programmieren

Transkript:

Universität Mannheim Vorlesung Betriebssysteme Lehrstuhl für Praktische Informatik 1 Herbstsemester 2009 Prof. Dr. Felix Freiling Dipl.-Inform. Jan Göbel Lösungsvorschlag für Übung 2 25. September 2009 Einfacher seitenbasierter virtueller Speicher: Decodierung einer Seitentabelle In dieser Übung soll ein einfacher seitenbasierter virtueller Speicher mit einem Prozess implementiert werden. Die zur Verfügung stehende Hardware ist ähnlich zu der aus der 1. Übung, d.h. wir betrachten eine einfache CPU mit den üblichen Registern PC, PSW, USP, SSP und zwei Ausführungsmodi (User Mode und Supervisor Mode). Das System besitze einen Adressbus der Breite 7 Bit und einen Datenbus der Breite 8 Bit. Zusätzlich haben wir nun auch noch eine einfache MMU (Memory Management Unit) zur Verfügung, die eine 7 Bit virtuelle Adresse umsetzt in eine 7 Bit physische Adresse. Zur Veranschaulichung der Mechanismen nehmen wir eine künstlich kleine Größe der verwalteten Hauptspeicherseiten an, und zwar genau 2 Byte (d.h. der Offset d aus der virtuellen Adresse ist gerade ein Bit breit). Die MMU verwendet eine dreistufige Seitentabelle. Die Tabelle ist immer dreistufig ausgebaut, d.h. Deskriptoren, die sich auf Stufe 1 und 2 befinden, sind immer Seitentabellendeskriptoren (wenn es sich nicht um Nulldeskriptoren handelt). Für jede Stufe der Seitentabelle steht genau 2 Bit der Adresse zur Verfügung (d.h. p1 = p2 = p3 = 2). Ein Deskriptor in der Seitentabelle besteht aus zwei Einträgen: 1. Ein Bit FLAG, das anzeigt, ob der Deskriptor ein Nulldeskriptor ist (0) oder nicht (1). 2. Eine Adresse mit folgender Bedeutung: Falls der Deskriptor ein Seitentabellendeskriptor ist, zeigt die Adresse auf die Seitentabelle der nächsten Stufe. Falls der Deskriptor ein Seitendeskriptor ist, zeigt die Adresse auf eine Hauptspeicherkachel. Die MMU besitzt zwei Seitentabellenregister, eines für den User Mode (UPTR, User Page Table Register) und eines für den System Mode (SPTR, System Page Table Register). In diesen Registern ist jeweils der Zeiger auf die Wurzel der Seitentabelle gespeichert, die für den aktuellen Modus gilt (d.h. im User Mode verwendet die MMU beispielsweise die Seitentabelle zur Umsetzung, auf die UPTR zeigt). Betrachten Sie den folgenden Speicheraufbau. Einträge der Seitentabelle sind in der Notation FLAG Adresse angegeben. Die Einträge "OPx" bezeichnen Maschinenbefehle. Adresse Inhalt Adresse Inhalt 10 1 26 26 1 16 11 0 0 27 1 20 12 0 0 28 1 18 13 0 0 29 0 0 1

14 0 3 0 15 0 31 0 0 16 OP2 32 0 0 17 OP3 33 1 14 18 OP5 34 0 0 19 JMP 0 35 0 0 20 OP1 36 0 0 21 OP4 37 1 30 22 1 10 23 0 0 24 0 0 25 1 34 Aufgabe 1: Zeichnen Sie schematisch den durch den Speicheraufbau definierten Seitentabellenbaum. Das aktuell relevante Seitentabellenregister UPTR habe den Wert 22. Lösungsvorschlag: Die Decodierung beginnt man am besten an der Stelle im Speicher, auf die UPTR zeigt. Dort steht die Wurzel des Seitentabellenbaums (Seitentabellenbaum 1. Stufe). Da der Index für diese Stufe genau zwei Bit lang ist (p1), hat diese Seitentabelle genau vier Einträge. Diese kann man ab Adresse 22 im Speicher auslesen: Der erste Eintrag lautet 1 10 und der vierte Eintrag 1 34. Die beiden mittleren Einträge lauten 0 0. Die beiden erstgenannten Einträge sind keine Nulldeskriptoren, enthalten also gültige Verweise auf weitere Seitentabellen (Seitentabellenbaum 2. Stufe). Wenn man beispielsweise den ersten Eintrag weiterverfolgt, dann kommt man auf eine Seitentabelle (ab Adresse 10), bei der der erste Eintrag 1 26 lautet und alle weiteren Einträge 0 0. Dieser erste Deskriptor zeigt auf eine Seitentabelle der 3. Stufe. Dort verweisen die Einträge dann auf Hauptspeicherkacheln. Am Ende ergibt sich etwa die folgende schematische Zeichnung: Aufgabe 2: Geben Sie zu den folgenden logischen (virtuellen) Adressen x jeweils die physische Adresse y an, auf die x durch die MMU bei obigem Speicheraufbau umgesetzt wird: 0, 1, 2, 8, 0x7E. Lösungsvorschlag: Wir führen mit Hilfe der in Aufgabe 1 entwickelten Seitentabelle die Adressumsetzung durch. Beispielhaft sei der Vorgang für die virtuelle Adresse 2 dargestellt. Virtuelle Adresse 2 hat das Bitmuster 00010. Diese können gemäß der Aufteilung der virtuellen Adresse durch die MMU zerlegt werden in vier Teile: p1 = 00, p2 = 00, p3 = 01, d = 0. Der Wert p1 2

wird nun als Index in die Seitentabelle erste Stufe benutzt. Man folgt also dem Verweis auf die Seitentabelle zweiter Stufe ab Adresse 10. Hier wird der Index p2 als Index verwendet. Man folgt also dem ersten Verweis auf die Seitentabelle dritter Stufe an Adresse 26. Dort benutzt man den Wert p3 als Index, der 01 lautet. Man folgt also nicht dem ersten Verweis sondern dem zweiten und gelangt schließlich zur Kachel an Adresse 20. Der Offset d lautet 0, die finale physische Adresse lautet also 16. Hier die anderen Werte: virtuelle Adresse 0 16 1 17 2 20 physische Adresse 8 nicht definiert 0x7E (0111 1110) 14 Transparentes Paging Die durch die MMU implementierte Abbildung von logischen auf physische Adressen ist frei programmierbar. Beim so genannten transparenten Paging wird jede (logische) Adresse x auf dieselbe (physische) Adresse x abgebildet, d.h. die MMU implementiert die identische Abbildung. Aufgabe 3: Wie muss der Speicheraufbau prinzipiell aussehen, damit bei der Adressumsetzung durch die MMU die identische Abbildung entsteht? Lösungsvorschlag: Beim transparenten Paging muss die Adressumsetzung die identische Abbildung ergeben. Wir betrachten ein konkretes Beispiel mit einem 4-Bit breiten Adressbus, bei dem p1, p2, p3 und d jeweils nur 1 Bit breit sind. Die Umsetzung muss derart sein, dass sie virtuelle Adresse 0000 auf die physische Adresse 0000 abgebildet wird, die virtuelle Adresse 0001 auf die physische Adresse 0001 und so weiter. Schematisch ergibt sich ein Seitentabellenbaum der folgenden Art: 3

Man beachte, dass bei 4 Bit Adressbus maximal 16 Adressen im Hauptspeicher existieren. Es besteht also gar kein Platz für die ganzen Seitentabellen. Das Beispiel ist also wirklich hypothetisch. In der Abbildung ist der Speicher sogar nur bis einschliesslich Adresse 11 mit RAM hinterlegt, damit im Beispiel auch Nulldeskriptoren auftauchen können. Aufbau einer Seitentabelle Ein Seitendeskriptor besteht aus 8 Bit (1 Byte). 7 Bit werden für die Seitenumsetzung, das verbleibende Bit wird zur Identifikation eines Nulldeskriptors verwendet. Genau beschreiben wir den Seitendeskriptor mit der folgenden Typbeschreibung (angelehnt an die Programmiersprache Java): class page_descriptor { } bit[7..0] frame_addr; // number of associated frame bit used; // F = null descriptor, // T = normal page descriptor Eine Seitentabelle kann dann definiert werden als page_table = new array[0..size] of page_descriptor; Wir ignorieren also hier die in der Praxis üblichen weiteren Einträge im Deskriptor, wie beispielsweise das R-Bit, das P-Bit etc. Selbstverständlich besitzt die MMU einen Schalter, mit dem man das Paging an und aus schalten kann. In der folgenden Aufgabe wollen wir den virtuellen Speicher komplett statisch initialisieren, d.h. wir betrachten keine Seitenfehler und keine Seitenverdrängung. Das Seitenlayout des Speichers ist wie folgt gegeben (wir gehen davon aus, dass die angezeigten Adressen immer an geraden Byte- Grenzen ausgerichtet sind, d.h. die Adressen der angezeigten Speicherzellen haben im niederwertigsten Bit eine 0): 0 // Interrupttabelle a1 // Hauptspeicherkachel 0 a1+2 // Hauptspeicherkachel 1 a1+4 // Hauptspeicherkachel 2 a1+(k-1)2 // Hauptspeicherkachel k-1 // (insgesamt k Kacheln) a2 // Betriebssystemcode a3 // Betriebssystemdaten, darin: a4 a5 a6 a7 a8 a9 a10 // Betriebssystem Stack a11 // folgender Speicherbereich Der Code des Prozesses soll so aussehen (jede Zeile benötige genau 1 Byte): 0 JSR 2 1 JMP 0 2 OPA // irgendeine Maschinenoperation 3 RTS Aufgabe 4: Initialisieren Sie den Speicher (d.h. die Hauptspeicherkacheln) mit dem Code und dem 4

Stack des Prozesses. Antwort: Zur Initialisierung des Speichers muss man sich zunächst überlegen, wieviele Hauptspeicherseiten der Prozess genau belegt? Da jede Maschinenoperation genau 1 Byte lang ist, benötigt man insgesamt 4 Byte für den Code des Prozesses, also insgesamt 2 Seiten. Die erste Seite enthält die beiden Befehle JSR 2 und JMP 0, die zweite Seite die Befehle OPA und RTS. Natürlich benötigt man noch Hauptspeicher für den Stack des Prozesses. Im Stack wird die Rücksprungadresse des Benutzerprogramms abgelegt, bei 32 Bit Adressraum also 4 Byte. Wir müssten also mindestens zwei Seiten einrichten, werden der Einfachheit halber aber dafür zunächst nur eine Hauptspeicherkachel vorsehen. Wie soll nun die konkrete Zuteilung von Seiten zu Kacheln aussehen? Im Prinzip kann sie beliebig sein. Um die Mächtigkeit seitenbasierter Verfahren zu verdeutlichen, wählen wir eine besonders abwegige Zuordnung: In Hauptspeicherkachel 0: 2. Seite des Prozesscodes In Hauptspeicherkachel 1: Stack des Prozesses In Hauptspeicherkachel 2: 1. Seite des Prozesscodes Wir initialisieren den Hauptspeicher entsprechend (der Stack soll mit Null-Bytes initialisiert werden): a1 OPA // 2. Seite des Codes a1+1 RTS a1+2 0 // Stack a1+3 0 a1+4 JSR 2 // 1. Seite des Codes a1+5 JMP 0 Aufgabe 5: Zeichnen Sie den Seitentabellenbaum zunächst schematisch und leiten Sie daraus die konkrete Speicherbelegung ab für die Seitentabelle im Hauptspeicher. Sie können dafür den Datenbereich des Betriebssystems ab Adresse a3 verwenden. Lösungsvorschlag: Wir zeichnen zunächst die logische Darstellung des virtuellen Adressraums und der entsprechenden Seitentabellen: Beachten Sie die Ausweisung der Nulldeskriptoren in den "inneren" Teilen des Seitentabellenbaums 5

sowie die Verweise auf die Anfangsadresse der jeweiligen Kacheln in der dritten Stufe der Seitentabelle. Die Seitentabellen müssen nun nur noch in den Speicher "sequentialisiert" werden. Dies kann auf verschiedene Arten geschehen. Wichtig ist nur, dass die internen Verweise konsistent bleiben und das Wurzelregister UPTR auf die richtige Wurzeltabelle zeigt. Eine Art der Sequentialisierung betrachtet die Seitentabellen entsprechend ihrer Reihenfolge (a) bis (e) in der obigen Abbildung. Dies liefert folgendes Speicherlayout: a4 a1+4 1 // Seitentabelle (a) a1 1 a5 a4 1 // Seitentabelle (b) a6 a5 1 // Seitentabelle (c) a7 1 a7 // Seitentabelle (d) a8 1 a8 a1+2 1 Die genauen Längen der mit bezeichneten Speicherbereiche hängen von der Aufteilung der virtuellen Adresse in die Anteile p1, p2 und p3 ab, also von den Größen der Seitentabellen der jeweiligen Stufe. Hinweis: Die Reihenfolge, in der die einzelnen Seitentabellen sequentialisiert werden, ist nicht eindeutig. Die Ergebnisse der folgenden Aufgaben können also von den in der Übung (oder auch von Ihnen) erarbeiteten Ergebnissen in diesen Punkten leicht abweichen. Nehmen Sie nun an, der Speicher ist bereits mit dem Code und den Daten für die Seitentabellen des Prozesses initialisiert. Gehen Sie davon aus, dass der PC initial auf a2 und der SSP auf a11-1 steht. Die MMU ist initial ausgeschaltet und die CPU läuft im Supervisor-Mode. Betrachten Sie den folgenden Initialisierungscode des Betriebssystems: a2 UPTR = a6 a2+1 USP = 0xFF a2+2 MM[--SSP] = 0 a2+3 <paging on> a2+4 RTI Aufgabe 6: Welcher Fehler passiert beim Anschalten des Pagings in Zeile a2+3? Korrigieren Sie den Code entsprechend. Gehen Sie davon aus, dass ein Seitentabellenbaum für transparentes Paging ab Adresse a9 im Speicher liegt. 6

Lösungsvorschlag: Das Problem tritt beim Befehl <paging on> auf. Hierbei wird nämlich nicht nur das Paging für den User Mode sondern auch für den System Mode eingeschaltet. Da sich der Rechner gerade noch im System Mode befindet, wird die MMU für die Adressumsetzung des nächsten Befehls aktiv. Der PC steht dabei gerade auf a2+4. Die MMU versucht nun anhand der entsprechenden Seitentabelle diesen "virtuellen" PC in den effektiven physischen PC umzusetzen. Die Seitentabelle, die dafür verwendet wird, ist die System-Seitentabelle, die wir natürlich noch nicht initialisiert haben. Die MMU würde trotzdem schematisch vorgehen: Lade den Wert aus dem Register SPTR (das ohne Initialisierung einen beliebigen zufälligen Wert haben kann) - Interpretiere den Speicherbereich dort als Seitentabelle erster Stufe usw. Wir müssen also die Seitentabelle für das Betriebssystem noch initialisieren. Der Einfachheit halber soll das so geschehen, dass das Paging für das Betriebssystem transparent abläuft. Eine virtuelle Adresse soll also auf dieselbe physische Adresse abgebildet werden. Wie muss dafür die Seitentabelle aussehen? Prinzipiell so wie in der folgenden schematischen Abbildung: Natürlich wird der Speicherausbau des Rechners nicht vollständig in eine Seitentabelle dritter Stufe passen. Die Inhalte der hier schematisch gezeichneten Tabelle werden über noch mehr Seitentabellen verteilt werden müssen. Dies hängt wieder von den konkreten Größen der Seitentabellen ab, die durch die Werte p1, p2 und p3 bestimmt sind. Prinzipiell wird aber deutlich, wie eine transparente Realisierung des Paging im virtuellen Adressraum des Betriebssystems organisiert werden kann. Nehmen wir nun an, die obigen Seitentabellen sind im Speicher ab Adresse a9 eingetragen. Jetzt kann auch der vollständige Initialisierungscode ausprogrammiert werden: a2 UPTR = a6 a2+1 SPTR = a9 a2+2 USP = 0xFFFFFFFF a2+3 MM[--SSP] = 0 a2+4 <paging on> a2+5 RTI 7

Aufgabe 7: Führen Sie einen manuellen Trace des Initialisierungscodes und des Programmcodes vor, bis der Befehl JSR 2 zum zweiten Mal ausgeführt wird. Geben Sie dabei mindestens folgende Werte an: PC, effektiver PC, SSP, effektiver SSP, USP, effektiver USP, Modus (S/U), Paging (on/off), UPTR, SPTR. Antwort: Siehe nächste Seite. 8

PC eff.pc SSP eff.ssp USP eff.usp Modus Paging UPTR SPTR Kommentar (nächster Befehl) -------------------------------------------------------------------------------------------------- a2 a2 a11-1 a11-1 - - S off - - UPTR = a6 a2+1 a2+1 a11-1 a11-1 - - S off a6 - SPTR = a9 a2+2 a2+2 a11-1 a11-1 - - S off a6 a9 USP = 0xFFF a2+3 a2+3 a11-1 a11-1 0xF 0xF S off a6 a9 MM[--SSP] = 0 a2+4 a2+4 a11-2 a11-2 0xF 0xF S off a6 a9 paging on a2+5 a2+5 a11-2 a11-2 0xF 0xF S on a6 a9 RTI 0 a1+4 a11-1 a11-1 0xF a1+3 U on a6 a9 JSR 2 (Adresse 1 auf den Stack) 2 a1 a11-1 a11-1 0xE a1+2 U on a6 a9 OPA 3 a1+1 a11-1 a11-1 0xE a1+2 U on a6 a9 RTS (Rücksprungadresse 1) 1 a1+5 a11-1 a11-1 0xF a1+3 U on a6 a9 JMP 0 0 a1+4 a11-1 a11-1 0xF a1+3 U on a6 a9 JSR 2 (usw.)