Kapitel 12: Adressraumverwaltung

Ähnliche Dokumente
Speicherverwaltung (Swapping und Paging)

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

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Paging. Einfaches Paging. Paging mit virtuellem Speicher

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

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

Verteilte Echtzeit-Systeme

Vorlesung Rechnerarchitektur. Einführung

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Kapitel 11: Speicherverwaltung

Was machen wir heute? Betriebssysteme Tutorium 12. Organisatorisches. Frage 12.1.a. Programmieraufgaben Vorstellung. Antwort

Systeme 1. Kapitel 3 Dateisysteme WS 2009/10 1

Virtualisierter Terminalserver

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

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

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Einführung in die technische Informatik

Lösungsvorschlag zur 5. Übung

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

Übung 4 - Betriebssysteme I

Die Subnetzmaske/Netzwerkmaske

4.3 Hintergrundspeicher

Betriebssystem-basierte Virtualisierung

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de)

Black Box erklärt. Subnetzmasken

Systeme 1. Kapitel 10. Virtualisierung

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

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement

Betriebssystem (operating system)

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

Android DER SCHNELLE UND EINFACHE EINSTIEG IN DIE PROGRAMMIERUNG UND ENTWICKLUNGSUMGEBUNG. EXTRA: E-Book inside. dirk LOUIS peter MÜLLER. 2.

VIRTUALISIERUNG IN MIKROKERN BASIERTEN SYSTEMEN

Java für Embedded Systems

Installieren von Betriebssystemen

Systemprogramme bezeichnen alle Programme, die bestimmte Aufgaben unterstützen, die unabhängig von einer konkreten Anwendung sind

Mounten aber richtig!

Betriebssysteme Kap A: Grundlagen

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

Kapitel 13: Virtueller Speicher

Patagonia - Ein Mehrbenutzer-Cluster für Forschung und Lehre

Betriebssystem-basierte Virtualisierung

Grundlagen der Rechnerarchitektur

CSMA/CD: - keine Fehlerkorrektur, nur Fehlererkennung - Fehlererkennung durch CRC, (Jabber) Oversized/Undersized

Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1

Kapitel 9 Hauptspeicherverwaltung

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systemanforderungen ab Version 5.31

Betriebssysteme - Speicherverwaltung

Microsoft ISA Server 2004

Lösungsvorschlag zum 1. Übungsblatt Betriebssysteme

Hyper-V Grundlagen der Virtualisierung

Banner T 1 T 2. Bild T 7 T 8. Fließtext T 9

2.2 Rechnerorganisation: Aufbau und Funktionsweise

In den folgenden Kapiteln wird die Registrierung eines neuen K-Accounts und die Verwaltung eines bestehenden K-Accounts beschrieben.

Adressen im Internet (Wdh.)

Systemvoraussetzungen Werkstattplanungssystem WPS

Rechnernutzung in der Physik. Betriebssysteme

Systemvoraussetzungen MEV Mietwagensystem

Linux Paging, Caching und Swapping

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Hardware Virtualisierungs Support für PikeOS

Anleitung zur Installation von Thunderbird

3 Firewall-Architekturen

5 Speicherverwaltung. bs-5.1 1

Welt-IPv6 Tag Agenda

Computernetzwerke. Von den Grundlagen zur Funktion und Anwendung. von Rüdiger Schreiner. 2., überarbeitete Auflage. Hanser München 2007

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Berechnungen in Excel

Folge 13 - Quicksort

Programme deinstallieren,

4 Planung von Anwendungsund

Betriebssysteme Vorlesung im Herbstsemester 2009

Dateisystem: Einführung

Dateisystem: Einführung

Speicher Virtuelle Speicherverwaltung. Speicherverwaltung

Systemvoraussetzungen

Konzept für eine Highperformance- und Hochverfügbarkeitslösung für. einen Anbieter von Krankenhaus Abrechnungen

Daten schützen und Daten sichern - wie geht das? Teil 2 - Verschlüsselung ***

RAM-Dateisysteme. Proseminar Speicher- und Dateisysteme SoSe Christoffer Kassens

Die Mikroprogrammebene eines Rechners

Mehr Sicherheit im GÖNET durch Einsatz der privaten Netze

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Realisierung: virtueller Prozessor: der reale Prozessor wird periodisch dem Programm zugewiesen Im Prozessor: durch Task-Status Segment (TSS)

Referat von Sonja Trotter Klasse: E2IT1 Datum Jan Subnetting

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Hinweis zur Erreichbarkeit unserer Support-Hotline per Bitte nutzen Sie ab sofort zur Kontaktaufnahme per die folgende Adresse:

CSV-Import von Zählerständen im Energiesparkonto

32-Bit Microcontroller based, passive and intelligent UHF RFID Gen2 Tag. Zürcher Fachhochschule

OPERATIONEN AUF EINER DATENBANK

Technische Informatik 2 Software

Dateiformate CCS Leipzig 1

Das RSA-Verfahren. Armin Litzel. Proseminar Kryptographische Protokolle SS 2009

Mathematik: LehrerInnenteam Arbeitsblatt Semester ARBEITSBLATT 12. Erwartungswert, Varianz und Standardabweichung

Cloud Computing Übung 2 Fragen & Inhalte (1)

Aufbau einer Testumgebung mit VMware Server

Vortrag zum Seminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Bruno Kleinert 20. Juni 2007

Learning Suite Talent Suite Compliance Suite. Systemvoraussetzungen

Zahlensysteme Seite -1- Zahlensysteme

Transkript:

Kapitel 12: Adressraumverwaltung Motivation Basisbegriffe Abbildung Logischer Adressraum -> Hauptspeicher Adressraumverwaltungen o Einprogrammbetrieb o Mehrprogrammbetrieb o Adressräume größer als der Hauptspeicher 12.1 Motivation und Einführung Damit eine Anwendung korrekte Resultate liefern kann, sollte sie in einer sicheren Umgebung ablaufen, unbeeinflussbar durch gleichzeitig ablaufende andere Aktivitäten. Der Adressraum liefert uns diesen Schutz (siehe Vergleich zur Wohnung), ein Prozess oder eine Task bewahrt sich somit mit Hilfe ihres Adressraums eine Art "Privatsphäre". Andererseits kann es aus Effizienzgründen lohnend sein, gewisse Dinge gemeinsam zu benutzen (vergleiche Sauna in einem großen Wohnhaus). Typische Beispiele von gemeinsam verwendbaren Programmen stellen die Programmbibliotheken dar. 12.2 Basisbegriffe Sieht sich ein(e) Anwenderprogrammierer(in) seine(ihre) Applikation im Hinblick auf Erfordernisse im Zusammenhang mit der Speicherverwaltung an, dann wird er(sie) leicht Softwareabschnitte feststellen können, die aus Sicht des Prozessors unterschiedlich behandelt werden. Codeabschnitte sollen selbstverständlich ausführbar sein, einige Datenabschnitte sollen vielleicht nur lesbar, andere sowohl les- als auch beschreibbar sein. Die jeweiligen Größen dieser verschiedenartigen Softwareabschnitte können von Applikation zu Applikation höchst unterschiedlich sein. Es wird sich zeigen, dass wir die so unterscheidbaren Softwareabschnitte unterschiedlich auf den Hauptspeicher abbilden können. Sinn und Zweck von Adressräumen ist der Schutzaspekt. Anwenderprogrammierer wollen vor ihresgleichen geschützt sein, wobei hierbei weniger böse Absichten unterstellt werden sollen, sondern die vielen Möglichkeiten, die zu Adressierungsfehler führen können, vergessene Zeigerinitialisierung dienen häufig als Paradebeispiel von verbreiteten Programmierfehler von C/C++-Programmierern. Ein Adressraum schützt eine Applikation vor Einbruch etc., wie auch eine Wohnung einen gewissen Schutz des Wohnungsinhabers vor Diebstahl bietet. 12.2.1 Adressrahmen Ein logischer Adressraum umfasst also alle zugelassenen logischen Adressen des logischen Adressrahmens (address scope). Der Unterschied wird an folgendem Schaubild klar: Ein 32 Bit Rechner hat einen logischen Adressenumfang von Adresse 0 bis 2 32 = 4 GByte. Der Adressraum einer typischen Anwendung wird aber nicht jede dieser 4 GB Adressen umfassen, denn zum einen benötigt ja auch der Kernadressraum Platz, der von WindowsXP beansprucht beispielsweise die letzten 2 GB (+ ein paar Bytes aus dem ersten beiden GB), der von Linux gibt sich mit nur einem GByte zufrieden. Zunächst ist es interessant zu eruieren, wie groß der potentielle Rahmen für die Programmierung von Anwender- und Systemsoftware ist. Der so genannte Adressrahmen (address scope) einer 32-Bit Maschine wird durch eben diese 32-Bitadressen limitiert, man spricht in diesem Zusammenhang auch von der Adressbreite des Prozessors. In den heutigen 64-Bit Maschinen wird i.d.r. noch nicht mit den vollen 64-Bit Adressen, sondern i.d.r. nur mit 48-Bit-Adressen operiert. Wie dieser potentielle Adressrahmen unterteilt wird, um beispielsweise System und Anwender voneinander zu trennen, bleibt dem Systemarchitekten

überlassen. Die folgende Abbildung zeigt die mögliche Aufteilung des 4 GB großen Adressrahmen bei einer Intel x86 32-Bit Maschine, wie sie beim Windows NT System verwendet wird. 12.2.2 Adressraum Wie man aus obiger Skizze entnehmen kann, gibt es zumindest zwei logisch getrennte Adressrahmenabschnitte, den so genannten Kernadressraum und den Anwenderadressraum Definition: Ein logischer Adressraum ist der Adressbereich im Adressrahmen, der für die jeweilige Softwareeinheit (Kern oder Anwender) benutzbar ist. Wie erreicht man jedoch, dass sowohl in Linux als auch in Windows gleichzeitig mehrere Tasks gleichzeitig aktiviert sein können, und trotzdem keine unbeabsichtigte bzw. bösartige Beeinflussung der Anwendertasks untereinander stattfinden kann? Man definiert für jede Anwendertask bzw. jeden Anwenderprozess einen eigenen logischen Adressraum (In Windows von jeweils 2 GB, in Linux von jeweils 3 GB Größe). Beispielsweise würde in einem Linuxsystem mit drei gleichzeitig aktivierten Anwendertasks die Aufteilung wie folgt aussehen: Man muss nun allerdings noch dafür sorgen, dass die Applikationsadressräume so auf den Hauptspeicher abgebildet werden, dass sie sich nicht stören. Diese Abbildungsvorschriften müssen per Hardware unterstützt werden, da ansonsten zuviel Verwaltungsaufwand (overhead) damit verknüpft wäre. Es gilt nun auszuloten, wie Adressräume prinzipiell implementiert werden können. Ein zusammenhängender logischer Adressraum enthält keine Adressraumlöcher, wird aber i.d.r. trotz allem nicht den gesamten zur Verfügung stehenden Adressrahmen ausschöpfen (siehe folgende Skizze).

Diskutieren Sie Vor- und Nachteile des zusammenhängenden logischen Adressraums. Man kann sich jedoch auch Platzierungen von Programmabschnitten innerhalb des 3 GB großen Adressrahmens von Linuxanwendungen vorstellen, die sich an anderen Gegebenheiten orientieren. 12.2.3 Regionen Im Allgemeinen müssen wir somit davon ausgehen, dass es innerhalb eines Adressraumes unterschiedliche Zonen gibt, solche, die definiert sind und somit benutzt werden können, und so genannte Adressraumlöcher (address space holes), die somit nicht benutzt werden dürfen. Auch in den definierten Zonen mag es noch unterschiedlich benutzbare Adressregionen geben, z.b. bildet Linux seine Bibliotheken und den Anwendercode auf die niedersten Adressen ab, während initialisierte Daten und der Heap abgesetzt und auf Megabytegrenzen ausgerichtet abgebildet werden, und schließlich der Stapel (stack) auf die obersten gültigen Anwenderadressen abgebildet wird (s.u.). Zusammenhängende Adressbereiche, die gleichartig benutzt werden können, nennt man Regionen (regions), oder mit anderen Worten, innerhalb einer Region gibt es keine Adressraumlöcher. Ferner muss natürlich angemerkt werden, dass nur wenige Anwendungen wirklich 3 GB Platz benötigen, vielmehr wird es häufig genug so sein, dass diese Anwenderadressraume nur zu einem Bruchteil mit wirklicher Information gefüllt sind, also z.b. mit einer Coderegion von zig KByte, einer Stackregion von einigen KByte und den globalen Daten von vielleicht 1 MByte. Der Rest sind Adressraumlöcher, die von der Anwendung nie benötigt werden. 12.3 Abbildung von logischen Adressräumen auf den Hauptspeicher Es gibt ein Fülle von Kombinationen wie man logische Adressräume auf den physischen Adressraum (=Hauptspeicher) abbilden kann, u.a.: Zusammenhängender AR Nicht zusammenhängender AR Zusammenhängender AR Regionen Seiten -> zusammenhängender Speicherblock (Partition) -> zusammenhängender Speicherblock (Partition) -> nicht zusammenhängende Speicherblöcke -> nicht zusammenhängende Speicherblöcke -> nicht zusammenhängende Kacheln Zusätzliche kann man noch unterscheiden, wie häufig man diese Abbildungen im Laufe der Abarbeitung der Task verrichten muss, einmalig oder u.u. auch öfters. 12.3.1 Einmaliges Transferieren des Taskraums in den Hauptspeichers Diese Methode ist insbesondere dann angebracht, wenn nur eine statische Anzahl von Prozessen vorliegt oder in besonders einfach und robust zu haltenden Systemen (embedded devices etc.).

12.3.2 Mehrmaliges Ein- und Auslagern des Taskadressraums Je komfortabler die Abwicklung von Prozessen und Tasks ist, desto wünschenswerter mag es auch sein, dass die Benutzer oder auch das System zwischendurch eine Task oder einen Prozess mittel- oder auch langfristig aus dem System auslagern wollen, damit andere dringlichere Aufgaben zwischendurch erledigt werden können. Hierbei wird es außerdem eine Rolle spielen, ob dabei die Task oder der Prozess nur komplett oder auch teilweise ausgelagert sein dürfen. 12.4 Adressraumverwaltung 12.4.1 Aufspaltung des Hauptspeichers zwischen Kern und Anwendung(en) So genannte Einprogrammsysteme sind relativ einfach zu verwalten, es mag nur noch darum gehen, an welchen physischen Adressen bestimmte Systemtabellen (z.b. die Unterbrechungsvektortabelle oder bestimmte Geräteregister) aus technischen Gründen im Hauptspeicher abgebildet sein müssen, dementsprechend wird man dann in deren Umgebung auch die zugehörigen Systemkomponenten (Kern bzw. Gerätetreiber platzieren). In Mehrprogammbetriebssystemen geht es darum, möglichst effektiv und effizient eine Platzierungsvorschrift für die n>1 gleichzeitig im System vorhandenen Anwendungen zu finden. 12.4.2 Fixe Partitionierung Robuster und einfacher ist es, eine fixe Partitionierung des Hauptspeichers einzuführen, andererseits wird hierbei u.u. viel Hauptspeicher effektiv überhaupt nicht genutzt, wenn zufällig gleichzeitig nur sehr kleine Anwendungen mit wenig Platzbedarf geladen worden sind. Man spricht in diesem Fall vom internen Speicherverschnitt (internal fragmentation). 12.4.3 Dynamische Partitionierung Demgegenüber ist die dynamische Partitionierung flexibler, andererseits aber auch aufwendiger zu implementieren. Hierbei kann es zu einer anderen Art von Speicherverschnitt kommen, wenn nämlich in der Summe zwar genügend viel freier Speicher vorhanden ist, jedoch kein einziges dieser freien Stücke groß genug ist, um die aktuelle Speicheranforderung zu erfüllen (external fragmentation). 12.4.4 Speicherallokation für dynamisch große Partitionen 12.4.4.1 First Fit Im Mittel wird nur der vordere Speicher benutzt, d.h. insbesondere dass am Ende des Speichers relativ große freie Stücke übrig bleiben. 12.4.4.2 Next Fit Next-Fit ist langsamer als First-Fit ist, obwohl es eine etwas gleichmäßigere Speicherallokation durchführt. Der Grund hierfür ist, dass mit großer Wahrscheinlichkeit vor dem Next-Fit-Zeiger sein relativ großes freies Speicherstück liegt, das dann auch bei kleinen Anforderungen aufgeteilt wird, so dass bei höherer Speicherauslastung relativ schnell keine großen freien Stücke mehr übrig sind. 12.4.4.3 Best Fit Auf den ersten Blick das beste Verfahren, aber man sucht u.u. jedes Mal den ganzen Freispeichervektor ab, ehe man das passendste freie Stück gefunden hat. Darüber hinaus tendiert dieses Verfahren dazu, dass häufig

relativ kleine Speicherstückchen noch übrig bleiben, die zu klein für jegliche neue Anforderung sind, was u.u. zu einer großen Speicherzerstückelung (à la Schweizerkäse) führen kann. 12.4.4.4 Nearest Fit Hierbei wird vom aktuellen Nearest-Fit Zeiger in beiden Richtungen nach dem nächst gelegenen freien Stück gesucht, dass größer als die Anforderung ist. 12.4.5 Swapping und Overlay Wenn also Tasks bzw. Prozesse bzw. Teile von ihnen zwischen Platte und Hauptspeicher ein- und ausgelagert werden sollen, dann braucht man eine Verwaltung im Hauptspeicher und auf Platte. Wenn man also schon Teile von Adressräumen ein- und auslagern kann, dann könnte man diesen Mechanismus auch darauf anwenden, dass man Teile von zu großen Adressräumen je nach Bedarf aus- und einlagert. Dies wurde in Systemen, die noch ohne virtuellen Speicher gearbeitet haben, mit Erfolg mittels der Überlagerungstechnik (overlay) durchgeführt. In den -zu großen- Anwenderprogrammen musste dem Binder (linker) mitgeteilt werden, welche Stücke der Anwendung resident bleiben sollten, und welche bei Bedarf ein- und wieder ausgelagert werden konnten.