21.07.2013 Aufrufe

Klausur zum Präsenzmodul Systemnahe Programmierung (Info 3)

Klausur zum Präsenzmodul Systemnahe Programmierung (Info 3)

Klausur zum Präsenzmodul Systemnahe Programmierung (Info 3)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Aufgabe 4 (7 Punkte)<br />

(a) Bei der direkten Abbildung von Programm- auf Maschinenadressen treten Probleme bzgl.<br />

folgender drei Punkte auf (siehe Skript S. 165-167):<br />

• Verschiebbarkeit<br />

Die Programme werden beim Laden fixiert und müssen bis zu ihrem Ende an derselben<br />

Stelle bleiben, da der Benutzer mit Adressen rechnen kann und deshalb positionsabhängige<br />

Adressen in seinen lokalen Variablen hat. Bei der Beendigung eines<br />

Programms passen neue Programme u.U. nicht in die zurückgebliebene Lücke<br />

(Problem der externen Fragmentierung). Verdrängte Programme müssen wieder an<br />

dieselbe Stelle geladen werden, was in der Regel nicht mehr möglich ist, da andere<br />

Programme im benötigten Speicherbereich stehen können.<br />

• Programmgröße<br />

Programme können wesentlich größer als der verfügbare Arbeitsspeicher werden. Der<br />

Benutzer muss sein Programm selbst in Segmente zerlegen und diese bei Bedarf nachladen<br />

(Overlay-Technik). Dies ist sehr aufwändig, schwierig und damit fehleranfällig.<br />

• Speicherausnutzung<br />

Es ist kein Mechanismus vorgesehen, um die Lokalitätseigenschaft von Programmen<br />

auszunutzen, d.h. nur die momentan bzw. in naher Zukunft notwendigen Ausschnitte<br />

eines Programms in den Arbeitsspeicher zu laden. Damit könnten mehr Programme<br />

im Arbeitsspeicher untergebracht und parallel verarbeitet werden.<br />

Durch die Seitenadressierung werden diese Probleme behoben: Die Zuordnung einer Seite<br />

zu einer Kachel ist nicht fix, der Programmadressraum kann wesentlich größer als der<br />

Maschinenadressraum sein und momentan nicht benötigte Seiten können aus dem Arbeitsspeicher<br />

verdrängt werden.<br />

(b) Angenommen, es gibt die Seiten 0, 1, 2 und 3. Der Arbeitsspeicher bestehe aus den drei<br />

Kacheln k1, k2 und k3. Auf die Seiten sei in der Reihenfolge 0 1 2 0 zugegriffen worden<br />

und die Belegung des Arbeitsspeichers sei k1 : 0, k2 : 1, k3 : 2<br />

Es soll nun auf die Seite 3 zugegriffen werden, d.h. eine Seite muss aus dem Arbeitsspeicher<br />

verdrängt werden.<br />

Drei Beispiele für Seitenverdrängungsstrategien (siehe Skript S. 178):<br />

• FIFO (first-in first-out): Verdrängen der ältesten Seite<br />

Die älteste Seite ist 0. Damit ergibt sich die Arbeitsspeicherbelegung<br />

k1 : 3, k2 : 1, k3 : 2<br />

• LIFO (last-in first-out): Verdrängen der jüngsten Seite<br />

Die jüngste Seite ist 2. Damit ergibt sich die Arbeitsspeicherbelegung<br />

k1 : 0, k2 : 1, k3 : 3<br />

• LRU (least recently used): Verdrängen der am längsten nicht genutzten Seite<br />

Die am längsten nicht genutzte Seite ist 1. Damit ergibt sich die Arbeitsspeicherbelegung<br />

k1 : 0, k2 : 3, k3 : 2

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!