Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03330.jsonl.gz/1820

||GUIDES UND TUTORIAL

Direkte Adressierung
Einfache universelle Betriebssysteme für den Einprogrammbetrieb verwalten
den gesamten Speicher i. a. als einen Block, der aus einem Systembereich für das Betriebssystem und einem Benutzerbereich besteht. Das aktuelle Programm belegt einen zusammenhängenden Teil des Benutzerbereichs. Der restliche Speicher ist frei: "Zusammenhängende Einzelzuteilung" oder "single contiguous allocation".
- Dedizierte SystemeDa der Beginn des Benutzerbereichs in einem solchen System festliegt, können die Programme gleich so geschrieben, Übersetzt und gebunden werden, daß sie genau in diesen Speicheradressen ablauffähig sind. Die benötigten Werkzeuge werden dadurch sehr einfach. Dies war zu Beginn der Mikroprozessoranwendungen
das übliche Verfahren und reicht auch heute noch für einfache
Problemstellungen aus.
- Universelle Systeme
Die wichtigsten Komponenten solcher einfachen Betriebssysteme sind ein sogenannter
"Job-Monitor", der eine Job-Warteschlange verwaltet und ein "Lader", der das zu
startende Benutzerprogramm ggf. zusammen mit (Teilen) einer Programmbibliothek
aus einem Hintergrundspeicher lädt. Da alle Adressen der geladenen Programme
(bzw. Programmteile) bereits im Objektcode als absolute Adressen vorliegen, nennt
man einen solchen Lader auch "Absolutlader".
Es gilt:
- Beim Einprogrammbetrieb befindet sich nur ein einziger Prozeß im Speicher,
er darf den gesamten Speicher benutzen. Diese Methode ist heute nicht mehr üblich.
Selbst beim Einprogrammbetrieb teilen sich Betriebssystem und Anwenderprozeß den
Speicher. Lediglich Mikroprozessorsteuerungen bilden eine Ausnahme.
- Beim Mehrprogrammbetrieb werden mehrere Prozesse in den Speicher geladen
und über den Scheduler der CPU zugeteilt.
Problem beim Mehrprogrammbetrieb:
Ein Prozeß darf den Speicherbereich anderer Prozesse nie beeinflussen.
Zu diesem Zweck sind Hard- und Softwaremaßnahmen nötig (Speicherschutz).
Der Mehrprogrammbetrieb erhöht zudem die CPU-Auslastung. Wenn ein Prozeß
auf das Ende einer E/A-Operation wartet, läuft die CPU im Einprogrammbetrieb
leer. Im Mehrprogrammbetrieb können in dieser Zeit andere Prozesse rechnen.
Der einfachste Weg ist die Aufteilung in feste Teile (Partitionen), die nicht
notwendig gleich groß sein müssen.
Zusätzlich zur Partitionierung sind Maßnahmen zur Relokation (Verschiebung)
der Programme beim Laden und zum Speicherschutz notwendig (siehe unten).
Prozesse dürfen nur auf Bereiche innerhalb der Partition zugreifen (gilt für
Code und Daten!), da sonst andere Prozesse unzulässig beeinflußt werden
könnten. Die Speicherverwaltungseinheit muß also entsprechende Schutzfunktionen
besitzen und Zugriffe auf "verbotene" Bereiche an den Betriebssystem-Kern melden.
Eine Lösung besteht beispielsweise in zwei zusätzlichen Registern des
Prozessors, Base- und Limit-Register. Das Baseregister enthält die Startadresse
der dem aktiven Prozeß zugeordnenten Partition und das Limitregister deren
Länge. Alle Adressierungsvorgänge im Programm erfolgen relativ zum Base-Register.
Eine Änderung der beiden Register erfolgt durch den Scheduler.