F) CPU-Scheduling

Werbung
Akademielehrgang Netzwerkadministration
1
Vorlesung „Betriebssystem“
BETRIEBSSYSTEME
Quellen:
„Handouts zur Vorlesung Betriebssysteme für Informatiker“ von J. R. Mühlbacher
Mitschrift der Vorlesung „Betriebssysteme“
„Taschenbuch der Informatik“ Kap. 7 („Betriebssysteme“)
„Fachwörterbuch Datenverarbeitung Englisch-Deutsch“
Überblick
A) Grundlagen
B) Klassifikation von Systemen
Betriebsarten
Benutzersicht
Art der CPU Zuteilung
Technisch-Interner Aufbau
C) Speicherverwaltung (Memory Management)
Address binding
Freispeicherverwaltung
Paging
D) Virtueller Speicher
E) Prozesse
F) CPU-Scheduling
J) Fallstudie Windows 2000
A) Grundlagen
Ein Betriebssystem
- ist das Bindeglied zwischen der Hardware und dem Anwender bzw. der
Anwenderprogramme
- steuert und überwacht die Abwicklung von Programmen
- nutzt die Hardware in effizienter Weise
Ein Computersystem kann grob in 4 Teile gegliedert werden:
- Hardware (z. B. CPU, Hauptspeicher, ...)
- Betriebssystem (bestehend aus eigentlichem System u. systemnahen Programmen)
- Anwenderprogrammen
- Anwender (Personen, Maschinen, andere Computer)
Betriebsarten:
- Batchprocessing (Stapelbetrieb): Eine Reihe von Aufgaben wird der Reihe nach
abgearbeitet (z. B. in DOS die *.bat - Dateien). Es gibt aber eine Technik
Ein- und Ausgabegeräte parallel zu betreiben („spooling-process“)
- Multiprogramming (= Multitasking): Muss die CPU aus irgend einem Grund warten, wird
inzwischen ein anderer Prozess ausgeführt.
- Timesharing: Im Hauptspeicher sind eine Reihe von Prozessen zum abarbeiten. Die CPU
benutzt eine „Zeitscheibe“. Jeder kriegt eine bestimmte Zeit -> wechselt
zum Nächsten -> bleibt bestimmte Zeit - > zum Nächsten ...
- Real Time System (Echtzeitsystem): Es wird in Echtzeit auf ein Signal reagiert.
75924440
©B.C.G.
2
Akademielehrgang Netzwerkadministration
Vorlesung „Betriebssystem“
Nach diesen Betriebsarten wurde die BSe früher eingeteilt. Moderne Systeme verwenden
Mischformen dieser Betriebsarten.
Das Betriebssystems dient zur Verwaltung und Nutzung von Ressourcen: Anweisung und
Freigabe von Ressourcen, Verwaltung von geteilten Ressourcen (shared resources),
Ausführung und Nutzung von Ressourcen.
Es gibt Hardware-Ressourcen (Hauptspeicher, CPU, Festplatten, ...) und Software-Ressourcen
(Compiler, Linker, Loader, Dateisystem, ausführbare Dateien).
Man kann die Ressourcen auch nach ihrer Nutzung unterteilen:
- Aktive Ressourcen, die gleichzeitig benutzt werden können (z. B. CPUs)
- Aktive Ressourcen, die nicht gleichzeitig benutzt werden dürfen (z. B. bestimmte
Programme)
- Passive Ressourcen, die gleichzeitig benutzt werden können (z. B. Hauptspeicher)
- Aktive Ressourcen, die nicht gleichzeitig benutzt werden dürfen (z. B. Drucker)
Eingabe und Ausführung eines Programms
Die Eingabe von Programm und Daten ist nötig (kommt an eine fixe Adresse im
Hauptspeicher (typische Adressen: „0000“ oder „0001“). Eine Instruktion ist an einer
bestimmten Stelle gespeichert. Man setzt auch den Instruktions-Pointer auf diese Adresse. Er
rückt dann entsprechend weiter.
Der Programm-Counter wird auf die erste ausführbare Instruktion gesetzt und ausgeführt. Der
Von Neumann-Zyklus beginnt zu laufen.
Von Neumann-Zyklus
Instruktion holen
Hochzählen
Instruktion ausführen
Interrupt behandeln, wenn vorhanden
Moderne Hardware verwendet das Prinzip des „pipelining“, d. h. mehrere Instruktionen
können parallel bzw. überlappend ausgeführt werden.
Das passiert, wenn ein Rechner eingeschalten wird:
Bootstrap-Loader
Jedes System hat ein kleines Programm im ROM-Speicher (firmware), den Bootstrap-Loader
(„Stiefelanzieher“). Wird gestartet, wenn der Rechner eingeschalten wird. Die Daten werden
eingelesen und als Maschinencodebefehle angesehen. Setzt den Programmzähler dann auf die
erste Instruktion des Programms. Der von Neumann Zyklus läuft ab, bis die letzte Instruktion
eine „Halt“-Instruktion ist.
Das Betriebssysten wird gestartet: Folien A21 – A23
Struktur einer Harddisk (A24):
75924440
©B.C.G.
3
Akademielehrgang Netzwerkadministration
Vorlesung „Betriebssystem“
Unterteilt in Partitionen (logische Einteilung). Sinnvoll bei mehreren Betriebssystemen. Muss
zu Beginn entscheiden, welche Partition aktiv sein soll -> „active partition“.
Nachteil von Partitionen: eingeschränkter Platz je Partition.
Der Master Boot Record (MBR) weiß, welche Partition aktiv ist und wie groß die
Partitionen sind.
Das Betriebssystem ist selbst ein Programm:
- residiert als ausführbares Maschinenprogramm z. B. im Massenspeicher
- wird vom Bootstrap-Loader geladen und gestartet
- führt elementare Initialisierungen aus
- startet den Kommandointerpreter (= Schnittstelle zum Benutzer, z. B. C: im DOS)
Einfachstes Betriebssystem: Monitor
(hat nichts mit dem Bildschirm zu tun, bedeutet nur sehr kleines, einfaches BS)
Rechner einschalten
Initialisierung
Kommandointerpreter
(ist bei der ersten ausführbaren Instruktion zu finden)
BIOS
Der Kommandointerpreter enthält eine Liste von Befehlen. Prüft die eingehenden Befehle,
ob er sie in seiner Liste findet (z. B. „copy“). Diese Tabelle enthält auch die Adressen, wo
sich die Befehle befinden.
Führt ständig die „Nichts-tun“ Prozedur aus. Wartet immer auf den nächsten Tastendruck. Bei
einem Tastendruck kommt Interrupt-Signal, Der „Nichts-Tun“-Prozess bricht ab (NeumannZyklus). Der „Interrupt“ wird ausgeführt. Dann wartet er auf die nächste Befehlseingabe.
Das Betriebssystem kann ein anderes Betriebssystem aktivieren. Es ist für den User eine
„Virtuelle Maschine“ (=Begriff aus der Softwaretechnik), die die Hardware „verbirgt“. Das
Betriebssystem simuliert den Computer, z. B. mit einem Tastatur-Treiber (baut virtuelle
Tastatur, unabhängig von der tatsächlichen Tastatur).
Typischerweise wird ein BS in „C“ programmiert.
Es können auf einem Betriebssystem mehrere BSe aufgesetzt werden.
Der Microkernel ist der „primitive“ Kern, der die elementaren Funktionen eines BS
beherrscht. Auf ihm bauen die anderen Funktionalitäten des BS auf.
Verteilte Betriebssysteme:
- Das BS wird aufgabenorientiert in autonome Subsysteme unterteilt (BS zum Beispiel
internetweit „gestückelt“. Ist noch nicht auf dem Markt!).
- Dies kommunizieren durch Nachrichtenaustausch unteeinander
- können auf Knoten ine einem Computer-Netz verteilt sein.
Komponenten eines Betriebssystems:
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
4
Vorlesung „Betriebssystem“
- Lieferumfang:
Man kann ein Betriebssystem nach seinem Lieferumfang beschreiben.
Ist gut für den Verkäufer. Gibt dem User Information, was er erwirb
(Preis/Leistungsverhältnis)
- Betriebsmodus:
Jene Programmteile die immer laufen bilden den Kern („kernel“) des
Systems. Alles andere sind Applikationen. Manche davon systemnahe
(z. B. File-System), manche anwenderbezogen (Compiler,
Textverarbeitung)
- Strukturelle Sicht: Programmen, insbesondere den Anwendungsprogrammen sollen die
Dienste des Betriebssystems verfügbar gemacht werden. Dafür hat das
Betriebssystem eine eigene Schnittstelle: API
API = Application Programming Interface
Programmen, insbesondere den Anwendungsprogrammen sollen die Dienste des
Betriebssystems verfügbar gemacht werden. Dafür hat das Betriebssystem eine eigene
Schnittstelle: API
Auch Komponenten des Betriebssystems können vom API Gebrauch machen. Sie müssen
aber in der Ebene „über“ dem API liegen oder das API ist als eigenes Subnetz angelegt.
Beispiele für API: Ausgabe eines Textes am Bildschirm oder Drucker, speichern einer Datei,
starten eines parallelen Prozesses. (Diese Befehle muss das Betriebssystem umsetzen können,
unabhängig von der Hardware.)
Die APIs sind bei verschiedenen Betriebssystemen unterschiedlich (z. B. MacIntosh,
Windows)
B)
Klassifikation von Systemen
Es gibt folgende Klassifikationsmerkmale:
- Betriebsarten (z. B. Timesharing)
- Benutzersicht (Benutzerschnittstelle graphisch oder kommandozeileninterpretiert)
- Art der CPU Zuteilung (Scheduling Strategy)
- Technischer- Interner Aufbau
Betriebsarten:
1) Batch Systeme (Stapelverarbeitung)
Mehrere Aufträge werden zu einem Stapel („batch“) zusammengefasst. Um dem System
Bearbeitungsinformationen über die einzelnen Aufträge mitzuteilen, fügt man zusätzlich
Steuerinformationen ein. Verwendet dazu die Sprache JCL (Job Control Language). Zum
Beispiel sind das die BATCH-Kommandos unter DOS, die in einen BATCH-File
zusammengefasst werden.
Wenn ein Job (=Auftrag) als prozess abläuft, hat er die Kontrolle der kompletten
Maschine. Es ist keine andere Benutzerinteraktion möglich. Ist der Auftrag abgearbeitet,
wird die Kontrolle an das Betriebssystem zurückgegeben und der nächste Job im Stapel
wird bearbeitet.
2) Multiprogramming (=Multitasking)
Bei großen Systemen ist im Hauptspeicher genügend Platz für mehrere Benutzeraufträge
gleichzeitig. Die CPU kann bei Bedarf (Interrupt, Scheduling) zwischen den einzelnen
Prozessen hin und her geschalten werden.
Multiprogramming ist direkt aus der Stapelverarbeitung hervorgegangen. Der erste Schritt
dazu war spooling (es gibt einen Job-Pool und damit ein Abweichen von der Regel „First
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
5
Vorlesung „Betriebssystem“
in – First out“; konnte die Reihenfolge ändern). Ein Job-Scheduling war möglich und
brachte eine bessere CPU-Auslastung.
Long Term Scheduling: Das Betriebssystem muss hier für den Benutzer Entscheidungen
treffen. Alle Jobs liegen zunächst einmal in einem Pool auf einem Massespeicher und
warten auf freien Platz im Hauptspeicher. Wenn im Hauptspeicher zuwenig Platz ist, muss
das Betriebssystem entscheiden, welche Jobs ausgewählt werden.
3) Timesharing
Das Timesharing ist mit einer Schach-Simultanpartie vergleichbar. Die CPU ist sehr
leistungsfähig und der Hauptspeicher „genügend“ groß. Die CPU wird jedem Prozess t
Zeiteinheiten (typisch: Millisekunden) zyklisch zugeteilt. Damit können sich viele User
über Terminals anschliessen und glauben subjektiv die CPU für sich zu haben.
Ein Job löst im System einen Prozess aus. Ein Programm, das in den Speicher geladen und
ausgeführt wird, läuft als Prozess ab.
Probleme des Timesharings:
Speichergröße (Was ist, wenn der Speicher für alle Programme zu klein ist?),
Speicherschutz (Programm x darf nicht in den Bereich von Programm y schreiben / lesen),
Periphere Geräte (Welcher Prozess erhält wann welches Gerät?)
Die Lösungen dieser Probleme führen zu einer Vergrößerung des Betriebssystems. Je
größer das Betriebssystem, desto weniger Platz ist für die Anwenderprogramme!
4) Real Time Systems
Die Benutzeraufträge müssen innerhalb einer vordefinierten Zeitspanne ausgeführt werden
bzw. muss das System innerhalb einer vordefinierten Zeit reagieren.
„Hard“ Real Time Systeme garantieren, dass Aufträge (= tasks) tatsächlich in Echtzeit
ausgeführt werden. Sie benutzen hauptsächlich den nichtflüchtigen Speicher (ROM), statt
eines Massespeichers.
Ihr Aussehen unterscheidet sich deutlich von „gewöhnlichen“ Betriebssystemen.
Sie werden verwendet in der Medizin (Intensivstation), zur Prozesssteuerung in
Flugzeugen, Robotern und anderen industriellen Bereichen.
Bei „Soft“ Real Time Systemen erhält ein kritischer Prozess Vorrang vor anderen
Prozessen bis er abgearbeitet ist. Dieses Konzept wird heutzutage in den meisten neuen
Betriebssystemen in erweiterter bzw. modifizierter Form verwendet (z. B. Windows NT)
Benutzersicht
Heutzutage ist ein Betriebssystem meist dialog-orientiert. Eine Interaktion mit dem Benutzer
ist vorgesehen. Der User kann jederzeit ein Programm unterbrechen und andere Aufgaben
vorziehen.
Es gibt zwei verschiedene Arten von Benutzerschnittstellen (= user interfaces): graphisch (z.
B. Windows) oder kommandozeilenorientiert (z. B. DOS).
Art der CPU Zuteilung (CPU Scheduling)
CPU Scheduling = Zeitablaufplanung (Lexikon) = „steuern im Ablauf der Zeit“ (Mühlbacher)
= „...allows several users to share the use of a CPU“ (Lexikon)
Non Preemptive Scheduling (Nicht-unterbrechende Steuerung): Es erlaubt im Prinzip keinen
Prozesswechsel. Es gibt aber kleine Ausnahmen, wie spezielle Interrupts und wenn es leicht
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
6
Vorlesung „Betriebssystem“
möglich ist, dürfen auch zwei Prozesse gleichzeitig ablaufen. Dieses System verwenden alle
Batch Systeme wie z. B. MS-DOS.
Cooperative CPU-Scheduling: Der Prozess gibt freiwillig unter bestimmten Bedingungen
die CPU für einen anderen Prozess frei. Verwendete z. B. Windows 3.x
Preemptive Scheduling (Unterbrechende Steuerung): Die CPU kann einem Prozess
„jederzeit“ zu Gunsten eines anderen Prozesses (temporär) entzogen werden.
Wird zum Beispiel bei Handys verwendet. Auch alle modernen Betriebssysteme verwenden
es. Ist aber nur bei entsprechenden hardwaremäßigen Voraussetzungen möglich.
Technische Interne Struktur
Es geht darum, wie die interne Struktur eines Betriebssystems beschaffen ist: handelt es sich
um ein nicht unterteiltes Betriebssystem (Monolithic System) oder um ein geschichtetes
Modell, wobei die unteren Schichten den oberen Schichten Dienste zur Verfügung stellen
(Layered System). Anderes existierendes System: Client-Server Model + (Micro-) Kernel
Monolithic Systems: Hat man früher verwendet (erinnert an „Spaghetti-Code“Programmierung). Es gab eine Trennung zwischen Anwendungsprogrammen und
Betriebssystem-Komponenten. Es kam zum allmählichen Übergang zu strukturierteren
Systemen.
Das Betriebssystem bestand aus vielen kleinen Teilbereichen. Wird ein Teilbereich geändert,
muss er trotzdem zu allen anderen kompatibel sein. Passiert hier ein Fehler, kann es zu vielen
Fehlern führen. (Folie B30)
Man begann das Ganze in Schichten einzuteilen, wobei jede Schicht auf alle
darunterliegenden Schichten zugreifen können. Das Problem ist, das man dabei für eine
Aufgabe eventuell alle Schichten durchlaufen muss. Dauert eine Zeit! Man wollte aber nicht,
dass Schichten übersprungen werden können, daher entwickelte man das Layerd Operating
System.
Layerd Operating System: Dieses System ist vom „strukturierten Programmieren“ stark
beeinflusst. Man konnte die einzelnen Schichten nicht überspringen. Es war aber schwierig
diese Regel einzuhalten.
Die Schichten: Hardware – CPU Scheduling – Memory Management – Command Interpreter
– Buffering for I/O Devices – User Programs.
Vorteile:
- Jede Schicht hat nur Zugang zur direkt darunterliegendenen Schicht
- Fehler zu korrigieren ist leichter: man beginnt an der untersten Schicht
- Hinzufügen und Teilen von Schichten ist möglich
- Es ist möglich eine Schicht zu ersetzen ohne andere Teile des Systems ändern zu müssen
Client-Server Model + (Micro)-Kernel
Diese technische Struktur ist heute Standard. Wird von Windows NT und 2000 verwendet.
Das Betriebssystem wird in verschiedene Prozesse unterteilt (aufgabenorientiert, nicht
schichtorientiert). Jeder Prozess implementiert eine bestimmte Anzahl von Diensten.
Möglichst alle Dienste werden im „user mode“ ausgeführt, die anderen im „kernel mode“. Die
Dienste im „kernel mode“ können vom User nicht verändert werden.
Auf Anfrage werden dem Client vom Server Dienste zugewiesen.
Die Begriffe Client und Server sind fließend. Der was will, ist der „Client“, der was bietet ist
der „Server“. Betriebssystemkomponenten können somit beides sein! (Hat nichts mit Client
und Server von Netzwerken zu tun!)
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
7
Vorlesung „Betriebssystem“
Der Mikrokernel erhält eine Anfrage von einem Client (= Komponente des Betriebssystems
oder Anwendungsprogramm). Er überprüft die Rechte und übermittelt die Nachricht an den
Server. Der Server führt den Dienst aus und schickt das Ergebnis an den Kernel. Dieser leitet
es an den Client weiter.
Im Idealfall bearbeitet jeder Server einen eigenen „usermode process“.
Aus Leistungsgründen (Performancegründen) werden aber auch im Kernel Dienste ausgeführt
(Grafiktreiber, GDI = Graphic Device Inerface). Der Grafiktreiber wird in den Kernel geladen
-> fehlerhafter Treiber -> ev. System-Crash. Virengefahr! Microsoft zertifiziert Treiber, d. h.
sie garantieren, dass er problemlos funktioniert.
Vorteile dieser Struktur:
- Die einzelnen Teile des Betriebssystems sind klein und in sich abgeschlossen
- Ein einzelner Dienst (Server) kann ausfallen und neu gestartet werden, ohne das das ganze
Betriebssystem crashed.
- Verschiedene Dienste (Server) können auf verschiedenen Prozessoren oder Computer
laufen (wichtiger Schritt in Richtung „Verteilte Systeme“)
C) Speicherverwaltung (Memory Management)
Der Hauptspeicher (= RAM = main memory) ist von zentraler Bedeutung für die Arbeit eines
Computers.
Wenn wir vom Betriebssystem sprechen, wird der Hauptspeicher als Feld ( = array = Vektor)
von Bytes oder Wörtern betrachtet, die alle ihre eigene Adresse haben.
Der Hauptspeicher nimmt die Daten auf. Programme gelten auch als Daten. Aufgabe:
Speicher zur Verfügung zu stellen. Ist grundsätzlich zu klein. Muss immer ein- und
ausgeräumt werden. Dafür braucht man das main-mainboard-management. Das ist die
Aufgabe des Betriebssystems.
Man braucht auch ein File-Management (Dateisystemverwaltung). Dateien müssen angelegt,
verwaltet und gelöscht werden. Verzeichnisse müssen erstellt werden: DirectoryManagement.
Address binding:
Logischen Adressen werden physische Adressen zugewiesen. Diesen Vorgang nennt man
„address binding“.
Logische Adresssen: Adresse aus der Programmsicht
Physische Adressen: tatsächliche Adresse zur Ansteuerung der Speicherbänke.
Die logischen Adressen bilden den log. Adressraum, die physischen Adressen, den
physischen Adressraum. Daher kann der logische Adressraum größer sein, als der tatsächlich
vorhandene physische Speicher.
Die Umwandlung von logischen in physische Adressen erfolgt durch eine einfache
Umrechnung in der Memory Management Unit, die oft ein Teil der CU ist. (Folie C38)
Die Umwandlung kann zu verschiedenen Zeitpunkten erfolgen:
- Beim Kompilieren (Compile Time Binding)
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
8
Vorlesung „Betriebssystem“
- Beim Laden (Load Time Binding)
- Beim Ausführen (Run Time Binding)
Hier das ganze noch einmal etwas genauer erklärt:
Viele Systeme erlauben es, dass die Prozesse irgendwo im physikalischen Speicher ablaufen.
Also muss die erste Adresse eines Prozesses nicht „0000H“ sein. Ein mapping (map =
abbilden) von den symbolischen (= logischen) auf die physikalischen Adressen muss
stattfinden, d. h. den logischen Adressen werden physikalische Adressen zugewiesen. Diesen
Vorgang nennt man „adress binding“.
Dieser Vorgang kann stattfinden beim Kompilieren, Laden oder zum Zeitpunkt der
Ausführung eines Programms.
Statische, absolute Adressierung (absolute addresses):
Die physikalischen Adressen werden bereits zur Programmierzeit vollständige festgelegt. Das
wurde früher gemacht und ist auch heute noch in kleinen Systemen üblich. Es wird außerdem
verwendet, wenn man in Maschinencode programmiert.
Auch Compiler (setzt Programm in Maschinencode um) und Assembler (setzt AssemblerProgramme in Maschinencode um) können „absolute addresses“ (= physikal. Adressen)
erzeugen, die nicht mehr geändert werden können („compile time binding“). Normalerweise
erzeugen sie aber „relative addresses“.
Dynamische, relative Adressierung (relative addresses):
Relative Adressen ermöglichen es, das „address binding“ aufzuschieben, bis eine tatsächliche
physikalische Adresse bekannt ist. Zur relativen Adresse wird dann eine entsprechende Zahl
dazuaddiert (vom relocation-register), um auf die tatsächliche physikalische Adresse zu
kommen. Die Umwandlung erfolgt, wenn das Programm geladen wird: Load Time Binding.
Zur Kompilierzeit sind die Speicheradressen noch unbekannt. Der Compiler erzeugt
verschiebbaren Code (relocatable). Der Programmlader(Loader) des Betriebssystems fügt
dann die korrekten Adressen beim Laden des Programms in den Hauptspeicher ein.
Loader: Ein Programm liegt auf der Festplatte und muss in den Hauptspeicher gebracht
werden, um ausgeführt werden zu können. Das macht der Loader!
Freispeicherverwaltung
Das Betriebssystem selbst und jedes laufende, im Speicher liegende Programm benötigt
Speicher für den Code und die Daten.
Die Aufgaben des Betriebssystems sind:
- Verwaltung des verfügbaren Speichers
- Zuteilung des Speichers an die Programme
- Schutzmechanismus gegen unerlaubte Zugriffe auf bereits benutzten Speicher
(Hardwareunterstütung nötig)
Speicherbelegung: siehe Folie C43. Gibt verschiedene Zuordnungsstrategien:
- First Fit: erster passender Block wird genommen
- Best Fit: Minimaler Speicherplatz bleibt über -> viele kleine Überbleibsel
- Worst Fit: größter Block wird genommen
- Buddy Methode: Blöcke der Größe 2x werden genommen
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
9
Vorlesung „Betriebssystem“
Probleme, wenn zwischen den belegten Speicherplätzen immer wieder was frei bleibt, die
Einzelteile aber z. B. zu klein sind um von neuen Programmen /Daten genutzt werden zu
können.
Typische Probleme bei der Speicherverwaltung: Fragmentierung und Verschiebbarkeit
Fragmentierung: Speicherverschnitt durch nicht nutzbare Teile.
Interne Fragmentierung: einem Prozess wird verfahrensbedingt mehr Speicher zugeteilt, als er
benötigt
Externe Fragmentierung: der Speicher wird so in freie und belegte Teile zerstückelt, dass kein
genügend großer, zusammenhängender, freier Bereich zu finden ist.
Durch Defragmentierung erfolgt eine Umordnung, wobei alle belegten Teile „dicht“ ans Ende
des Speichers und alle freien Teile zusammen an den Anfang verschoben werden.
Verschiebbarkeit (relocation): Programmteile müssen verschiebbar sein, damit sie in jedem
beliebigen freien Bereich gespeichert werden können. Dies erfordert entsprechende
Adressierungsverfahren und einen geeigneten Programm-Lader.
Paging
Beim Paging wird der Hauptspeicher in gleich große Blöcke (=Seiten = Frames) geteilt.
Die Seitengröße wird durch die Hardware festgelegt. Sie ist eine Zweierpotenz.
Die optimale Seitengröße ist ein Kompromiss zwischen der Häufigkeit von Seitenwechseln
und der Größe internen Fragmentierung. Sie liegt in der Praxis oft zwischen 2 und 32 KByte.
Die logische Adresse wird geteilt in die Seitennummer und dem Offset (= „quantity added to
a number or adress to give a final number. Ausgleichszahl“ laut Lexikon).
Die logische Adresse wird in zwei Teile geteilt. Ein Teil wird reserviert für die Beschreibung
der Straße, der Rest für die Hausnummer. (Erklärung von Dr. Mühlbacher)
Ein im logischen Adressraum durchgehender Bereich muss nicht auf einen durchgehenden
Bereich im physischen Speicher abgebildet werden! Die Programmteile werden an beliebigen
Stellen gespeichert. Man braucht ein Verzeichnis, das sich merkt, wo was ist: page table (=
Seitentabelle). Hat dadurch längere Zugriffszeiten. es wird ständig versucht zu optimieren.
Die Seitentabelle liegt in der CPU (nur kleine Seitentabellen möglich) oder im Hauptspeicher
(große Seitentabellen, aber längere Zugriffszeit). Jeder Prozess hat seine eigene Seitentabelle.
In einer Seitentabelle sind die Startadressen aller Seiten im physischen Hauptspeicher
gespeichert.
Beispiel siehe Folie C 57.
Vorteile des Paging:
- Externen Fragmentierung wird vermieden (nicht jedoch interne)
- Paging ist vor Anwenderprogrammen völlig verborgen
- Anwenderprogramm sieht eigenen Speicher als kontinuierlichen Block
- Das Betriebssystem kann den Zugriff auf „fremden“ Speicher verhindern (eigene
Seitentabelle pro Prozess)
- Das Auslagern von Seiten auf die Platte ist einfacher und effizienter als das Auslagern
variabel großer Speicherblöcke.
Paging & Speicherschutz:
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
10
Vorlesung „Betriebssystem“
Die Einträge in den Seitentabellen werden erweitert, um die Einträge nur lesen,
lesen/schreiben, nur ausführen, gültige Adresse. Es erfolgt eine Gültigkeitsprüfung beim
Übersetzen der logischen Adresse in die physische Adresse. Erfolgt ein illegaler Zugriff, wird
ein Hardware Trap ausgelöst.
(Hardware Trap = that will catch something, such as a variable, fault or value. Fangstelle. …
Unterbrechung während einer Ablaufverfolgung)
Shared Pages:
Wird zum Beispiel eine DLL von zwei verschiedenen Programmen benutzt, erhält sie die
gleiche Adresse in der Seitentabelle. Siehe Folie C 63 und 64. Das bringt eine
Speicherersparnis.
Gemeinsam benutzter Code wird also in Shared Pages gelegt.
Voraussetzungen dafür sind ein re-entrant code (= „wierververnbarer Code“ = ein Programm,
das von mehreren Usern gleichzeitig benutzt wird muss unterbrochen werden können, bzw.
von einem anderen User gestartet werden können, bevor es seine derzeitige Arbeit beendet
hat) und der Code sollte über Read only / Execute only Flag (=Anzeiger, markieren) geschützt
werden können.
Der Datenaustausch zwischen verschiedenen Prozessen über Shared Pages bringt aber auch
Probleme, z. B. welche CPU darf wann zugreifen (symmetric multiprocessing)?
D) Virtueller Speicher
Oft ist kein genügend großer physischer Speicher vorhanden. Wenig benutzte Teile werden
nicht geladen. Man schafft daher einen virtuellen Speicher, der natürlich viel langsamer ist.
Das Betriebssystem muss herausfinden, wie der virtuelle Speicher in den Hauptspeicher
kommt, Meist on-demand (= bei Bedarf).
Ein virtueller Speicher erlaubt das Ausführen von Prozessen, die nicht zur Gänze im
physischen Hauptspeicher stehen.
Vorteile:
- Programmierer müssen nicht auf den tatsächlich vorhandenen Hauptspeicher Rücksicht
nehmen.
- Programme sind nicht länger durch die Grenzen des physischen Speichers eingeschränkt.
- Es wird nicht das gesamte Programm geladen, damit gibt es schnellere Ladezeiten
- Es wird pro Prozess weniger physischer Hauptspeicher belegt, d. h. mehrere Prozesse
können den Hauptspeicher gleichzeitig nutzen. Das führt zu einer besseren CPUAuslastung und somit zu einem höheren Durchsatz.
Begriffe:
- Seite (=Page): Teilausschnitt eines logisch konsekutiven Adressbereichs, der auch
physikalisch konsekutiv abgebildet wird.
- Seitenrahmen (= Frame): physikalischer hauptspeicherbereich, der eine Seite aufnehmen
kann.
- Page-Reference-String: Abfolge jener Seiten, die ein Prozess anspricht.
Ein virtueller Speicher wird meist über Paging implementiert. Vorteile:
- Die Algorithmen für das ein- und auslagern von Pages sind einfacher, da Pages fixe Länge
haben (z. B. 4 KB ist typisch)
- Externe Fragmentierung fällt weg
- Verschieben von Seiten entfällt, sobald sie einmal platziert sind.
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
11
Vorlesung „Betriebssystem“
Es muss mitprotokolliert werden, welche Sachen sich im Hauptspeicher befinden und welche
im virtuellen Speicher. Das wird in der Seitentabelle vermerkt.
Außerdem braucht jedes Betriebssystem eine Ladestrategie (= fetch policy): Wann wird was
geladen? Üblich ist eine Ladestrategie, genannt „Demand Paging“. Die Seiten werden„Ondemand“ (=nach Bedarf) geladen, meist kombiniert mit „look ahead“ (=Vorschau; nicht nur
die benötigten, sondern auch „benachbarte“ Seiten werden auf Verdacht mitgeladen)
Auch muss festgelegt werden in welchen Rahmen (frame) eine Seite (page) gelegt werden
soll: placement strategy
Replacement-Strategy: zu wenig physischer Speicher -> welche Seiten sollen ausgelagert
werden.
Page Fault (Seitenfehler):
Ein Seitenfehler tritt auf, wenn ein Prozess eine Seite benötigt, die sich nicht im
physikalischen Hauptspeicher befindet. So eine Seite wird „invalide page“ genannt. Es kommt
zu einem Interrupt. Der „Lazy Swapper“ tritt in Aktion und lädt die Seite aus dem virtuellen
Speicher in den Hauptspeicher.
Je größer der physische Hauptspeicher, desto weniger Seitenfehler gibt es!
E) Prozesse
Was ist ein Prozess? Wenn ich ein Programm im System zur Ausführung bringe, dann
entsteht ein Prozess.
- Ein Prozess ist eine Folge von Zuständen.
- Ein Prozess braucht Betriebsmittel: CPU, Speicher. Die CPU spult Prozesszustände ab,
d. h. „CPU scheduling“ (=steuern im Ablauf der Zeit).
- Ein Prozess muss zuerst einmal erzeugt (created) werden.
- Manchmal muss ein laufender Prozess angehalten werden können (z. B. arbeitet mit einem
Programm. Email kommt an. Bekommt Meldung. Dazu muss das Programm kurz
angehalten werden.)
- Prozess-Synchronisation: z. B. gibt man Text ein und gleichzeitig läuft die
Rechtschreibprüfung. Diese beiden Tätigkeiten müssen von der CPU synchronisiert
werden. Das macht das Betriebssystem (nicht das Textverarbeitungsprogramm!).
- Inter-Process-Communication: Kommuniziert auch im Netz. Gibt auch Prozesse zwischen
Rechnern
Scheduling:
Normalerweise bezieht sich „scheduling“ auf die Aufgabe, die Nutzung von Ressourcen zu
planen:
Wann werden / können / sollen Ressourcen genutzt werden?
Welche Bedingungen sind bei der Nutzung zu beachten?
CPU scheduling: die CPU wird einem Prozess zugewiesen bzw. planen von Prozessen.
Disk scheduling
Was sind Ressourcen? CPU, Hauptspeicher, Festplatte, periphere Geräte (z. B. Drucker),…
Die wichtigste Ressource ist die CPU!
Die Ausführung eines Programms startet einen Prozess. Im Normalfall werden viele Prozesse
gestartet.
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
12
Vorlesung „Betriebssystem“
Aber wir vereinfachen es einmal auf einen Prozess. Zu jedem bestimmten Zeitpunkt wird
genau eine Anweisung (instruction) ausgeführt.
Die CPU kann nun zwei Prozesse parallel ausführen, indem sie diese „verzahnt“: zuerst wird
die erste Anweisung des Prozesses A abgearbeitet, dann die erste Anweisung des Prozesses B.
Nun kommt die zweite Anweisung des Prozesses A an die Reihe, dann die zweite Anweisung
des Prozesses B und so weiter (Folie E 7).
Natürlich können auch mehrere CPUs parallel arbeiten.
Man spricht von zwei parallel ausgeführten Prozessen, wenn die erste Anweisung des einen
Prozesses gestartet wird, bevor die letzte Anwesung des anderen Prozesses beendet worden
ist. (Diese Aussage ist unabhängig von der Anzahl der CPUs. Sie trifft auch bei nur einer
CPU zu!)
Manchmal sagt man statt Prozess auch „Task“, wobei der Begriff „task“ in der Literatur nicht
exakt definiert ist.
Prozesszustände
Wenn ein Prozess ausgeführt wird, ändert sich sein Zustand (state). Der Prozess kann
folgende Zustände annehmen:
- new:
Neuer Prozess wird gestartet
- active: Der Prozess ist aktiv. Da die CPU von mehreren Prozessen gleichzeitig benutzt
werden kann, unterteilt man die aktiven Prozesse noch einmal in „running“ (der
Prozess läuft; Instruktionen werden ausgeführt) und „ready“ (der Prozess ist
bereit, muss aber auf die CPU-Zuweisung warten).
Von den aktiven Prozessen können viele „ready“ sein, aber nur einer ist
„running“.
- waiting:
Wartezustand. Der Prozess wird z. B. gerade nicht benötigt, eine Ressource
fehlt, wartet auf Vollendung eines Inputs oder eines Outputs.
- terminated: Der Prozess ist beendet.
Auslöser für einen Prozesswechsel können sein:
- Der Scheduling-Algorithmus weist der CPU einen „ready“-Prozess zu.
- Ein Interrupt taucht auf und wird von der CPU ausgeführt
- Ein Prozess erfordert einen Input oder Output und muss warten (z. B. schickt Sachen an
den Drucker und muss warten bis der Druckerpuffer wieder leer ist und dann die nächsten
Sachen schicken)
- Die Wartebedingung ist beendet (z. B. input/output ist fertig. Könnte z. B. sein:
Druckerpuffer füllen). Der Prozess kommt in den „ready“-Status.
- Der Prozess ist beendet.
(Siehe Folie E15)
F)
CPU-Scheduling
Ein Scheduler sorgt für die Zuteilung von Betriebsmitteln an die Prozesse. Man unterscheidet
zwei Stufen: „Long Term Scheduling“ und „Short Term Scheduling“.
Long Term Scheduler:
Er legt fest, welche Aufträge (Jobs) aus dem Jobpool zur Verarbeitung in den Hauptspeicher
geladen werden.
In einem Stapelverarbeitungssystem fallen oft mehr Jobs an, als zugleich im Hauptspeicher
gehalten werden können: Die Jobs werden daher zuerst auf den Massenspeicher kopiert. Der
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
13
Vorlesung „Betriebssystem“
Long Term Scheduler wählt Jobs aus diesem Job Pool. Diese werden dann in den
Hauptspeicher geladen, um dort ausgeführt zu werden. Die Reihenfolge in der Auswahl kann
durchaus unterschiedlich sein von „First in – First out“.
Short Term Scheduler:
Er wählt von jenen Prozessen, die im Zustand „ready“ sind, einen aus und ordnet diesem die
CPU zu. (Prozesse im Zustand „ready“ befinden sich im Hauptspeicher!)
Es gibt verschiedene Forderungen an die CPU, die sich gegenseitig widersprechen:
- CPU-Auslastung (CPU utilisastion): Die CPU-Auslastung sollte sich zwischen 40 %
(lightly loaded) und 90 % (heavily loaded system) bewegen.
- Durchsatz (throughput):
Der Durchsatz gibt die Anzahl der fertig gerechneten Jobs pro
Zeiteinheit an. Ein Job kann eine Stunde beanspruchen, während
hingegen bei kurzen Jobs zehn in einer Sekunde erledigt werden
können.
- Verweilzeit (turnaround time): Die Verweilzeit ist die Zeitspanne von der Übergabe eines
Jobs an das System bis zu dessen Fertigstellung. Da die Verweilzeit auch
die Zeit für die Ausgabe des Ergebnisses enthält, spielt auch die
Geschwindigkeit der Ausgabegeräte ein wesentliche Rolle.
- Antwortzeit (response time): Die Antwortzeit ist die Zeitspanne vom Abschluss einer
(Benutzer-)Eingabe an einen Prozess, bis zum Beginn der nachfolgenden
Ausgabe. Sie ist ein besseres Kriterium als die Verweilzeit.
- Wartezeit (waiting time): Die Wartezeit ist jene Zeitspanne, die ein Prozess im Zustand
„ready“ ist.
Die CPU-Auslastung und der Durchsatz sollen maximal sein. Verweilzeit, Antwortzeit und
Wartezeit sollen minimal sein.
Bei Scheduling-Systemen gibt es zwei Varianten: preemptive Scheduling (= unterbrechende
Steuerung) und nonpreemptive Scheduling (=nicht unterbrechende Steuerung).
Nonpreemptive Scheduling (= nicht unterbrechende Steuerung)
Die CPU bleibt einem Prozess zugeteilt, bis dieser sie von sich aus zurückgibt, z. B. wegen
einer I/O-Anforderung.
Wichtige nonpreemptive Scheduling Algorithmen:
- First Come First Serverd: Der Prozess, der zuerst kommt, wird zuerst bearbeitet. Nicht
sehr effektiv, da weder die zu erwartende Laufzeit, noch die
benötigten Betriebsmittel oder Prioritäten berücksichtigt
werden.
- Shortest Job First: Die Prozesse werden danach gereiht und ausgeführt, wie lange sie die
CPU benötigen. Der Prozess mit der kürzesten Dauer wird zuerst
ausgeführt. Ist die Prozesslänge von zwei Prozessen gleich, so wird
nach „First Come First Serverd“ entschieden. Diese Methode
minimiert die Wartezeit der Jobs. Wie lange die CPU jedoch
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
14
Vorlesung „Betriebssystem“
tatsächlich von den einzelnen Jobs belegt wird ist nicht vorhersehbar.
Man behilft sich daher mit einer Schätzung.
- Priority Scheduling: Jedem Prozess wird eine Priorität zugeordnet. Die CPU erhält jenen
Prozess zugeteilt, der die höchste Priorität hat. Bei Prozessen mit
gleicher Priorität wird nach „First Come First Serverd“ entschieden.
Basis für die Vergabe von Prioritäten sind Kenngrößen der
Ressourcen-Nutzung wie Zeitlimits, Speicherbedarf, Anzahl der
offenen Dateien, aber auch Faktoren, die außerhalb des Rechners
liegen und häufig politischer Natur sind.
„Shortest Job First“ ist ein Spezialfall von Priority Scheduling: die
Priorität wir in Abhängigkeit von der Länge der Nutzung der CPU
vergeben.
Es kann vorkommen, das ein Prozess „verhungert“, da immer
Prozesse mit höherer Priorität kommen. Dieses Problem wird durch
„Aging“ gelöst: die Priorität wird entsprechend der Wartezeit vom
Betriebssystem periodisch erhöht.
Preemptive Scheduling Algorithmen
Die Algorithmen “Shortest Job First” und “Priority Scheduling” funktionieren genauso wie
beim Nonpreemptiv Scheduling, aber:
Fordert ein Prozess die CPU an, der einen kürzeren CPU-Burst bzw. eine höhere Priorität als
der gerade laufende Prozesse hat, so wird letzterem die CPU entzogen!!!
Das führt aber zu vielen Problemen:
- Wechsel des TCB erforderlich (retten des Prozesszustandes)
- Speicherverwaltung?
- Kann zu jedem beliebigen Zeitpunkt unterbrochen werden? Nein!
- Häufiges Umschalten führt zu Zeitproblemen
- ...
Im Zusammenhang mit Prozessumschaltung benötigt man eine spezielle
Betriebssystemkomponente, den Dispatcher. Er weißt einem Prozess die CPU zu oder
entzieht ihm die CPU.
Round Robin Verfahren
Jedem Prozess wird die CPU eine gewisse Zeit zugeteilt. Dann bekommt sie der nächste
Prozess. Nach einiger Zeit wird die CPU wieder dem ersten Prozess zugeteilt. So entsteht der
Eindruck, dass alle Prozesse gleichzeitig abgearbeitet werden.
Dieses Verfahren eignet sich vor allem für Timesharing-Systeme.
Moderne Systeme (z. B. Windows 2000, Linux) verwenden normalerweise das preemptive
priority scheduling. Innerhalb einer Klasse mehrerer gleichrangiger Prozesse, aber das Round
Robin Verfahren. Dabei verwenden sie variable Zeitspannen.
J) Fallstudie Windows 2000
Von Windows 2000 gibt es vier Versionen: Professional, Server, Advanced Server und
Datacenter Server.
Sie unterscheiden sich durch ...
- die Anzahl der verwendbaren Prozessoren (zwei oder mehrere CPUS: ein Master und
Slaves oder alle gleichberechtigt = symmetrisches Processing)
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
15
Vorlesung „Betriebssystem“
- die Größe des Hauptspeichers
- die Anzahl der Rechner im Netz
- die Anzahl der mitgelieferten Services
Prozess
Eine simple Beschreibung eines Prozesses wäre: „Wenn ein Programm ausgeführt wird,
erzeugt es einen Prozess“. Eigentlich ist das aber die Beschreibung eines Threads.
Ein Prozess (= task) ist ein Container für ein Set von Ressourcen, die von Threads verwendet
werden, die die Befehle eines Programms ausführen. Ein Programm ist eine statische Sequenz
von Instruktionen.
Ein Prozess besteht aus:
- einem „private virtual address space” = ein Set von virtuellen Speicheradressen ist, die der
Prozess benutzen kann
- einem ausführbaren Programm
- einer Liste von Zugängen zu verschiedenen Systemressourcen, wie Dateien
(Originaltext: „A list of open handles to various system resources, such as semaphores,
communication ports, and files)
- Ein Prozess fragt die Rechte ab, die mit ihm zusammenhängen, bevor er abläuft
(identifiziert den Benutzer, Sicherheitsgruppen, Privilegien)
- Jeder Prozess wird intern durch eine Nummer identifiziert.
- Ein Prozess besteht aus mindestens einem Thread.
Ein Prozess wird gestartet. Zuerst wird überprüft, worauf er zugreifen darf. Gibt mehrere
Threads, die ein Prozess erzeugen kann (z. B. Tastendruck verarbeiten, Rechtschreibprüfung,
...).
Ein Thread ist ein kleiner Prozess. Ein Prozess besteht aus mehreren Threads. Jeder Prozess
hat bestimmte Rechte. Die Threads erhalten diese Rechte auch. Die Rechte müssen nicht jedes
Mal neu angelegt, geladen werden. Es wird nur mehr der jeweilige Thread aufgerufen.
Bei DOS waren die Begriffe „Prozess“ und „Thread“ ident, da ein Prozess nur aus einem
Thread bestehen konnte.
Adressraum
In Windows 2000 können 4 Gigabyte (!) Hauptspeicher adressiert werden ( 4 GB = 232).
Üblich sind aber nur 256 MB bzw 512 MB!
Die obere Hälfte ist für das Betriebssystem, die unteren 2 GB für den Anwender. Das spielt
sich alles im virtuellen Speicher ab.
Windows 2000 benutzt das Paging um logischen Adressen physische Adressen zuzuweisen.
Verwendet werden außerdem der „user mode“ und der „kernel mode“.
Im „kernel mode“ laufen Komponenten des Betriebssystems, wie Systemdienste und
Gerätetreiber, ab. Vorsicht: Wird ein fehlerhafter Treiber installiert, kann das zu großen
Problemen führen! Innerhalb des Kernels gibt es keine Security.
Komponenten des „kernel mode“ sind :
- Executive (Ausführung): beinhaltet die Basisdienste des Betriebssystems wie memory
management, process management, thread management, interprocess
communication (zwei Prozesse tauschen Daten aus), security, Input/Output
- Kernel: grundlegende Funktionen des Betriebssystems, wie thread scheduling,
Behandlung von Interrupts, Multiprocessor Synchronisation. Es ist kein MicroKernel, weil er auch noch für andere Prozesse (tasks) zuständig ist.
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
16
Vorlesung „Betriebssystem“
- Device Drivers and HAL: Die Gerätetreiber (device drivers) übersetzen Ein- und
Ausgabeanforderungen der User für die Hardware. Der Hardware
abstraction layer (HAL) isoliert den Kernel und die Treiber vor
plattformspezifischen Hardwareunterschieden, wie z. B. die Unterschiede
zwischen Motherboards.
- GUI und GDI:
GUI = Graphic User Interface, GDI = Graphic Device Interface. Früher
waren dieser Prozesse im user mode. Aus Performance-Gründen sind sie
jetzt ein Teil des kernel mode. Sie sind zuständig fürs Zeichnen, die
Fenster und user interface controls, wie z. B. die Maus.
Im „user mode“ laufen die Anwenderprogramme und weniger wichtige Komponenten des
Betriebssystems.
Es gibt Schutzmechanismen, sogenannte Ringe. Aus historischen Gründen gibt es davon nur
zwei: ring 0 und ring 3. Windows 2000 benutzt den Ring 0 für den „kernel mode“ und den
Ring 3 für den „user mode“.
Die Architektur des Intel x86 Prozessors verwendete 4 Ringe um Programme und Daten vor
dem Überschreiben durch weniger privilegierte Programme zu schützen.
Architektur von Windows 2000
Einerseits ist Win2000 ein „monolithic system“, in dem Sinn, dass der Großteil des
Betriebssystems und die Gerätetreiber sich den gleichen Speicherplatz teilen, nämlich im
Kernel.
Andererseits in das System sehr geschichtet („layered design“).
Auch ist Win2000 Client-Server orientiert und unterstützt wichtige Kommunikationsmechanismen: die „Local Procedure Calls“ werden verwendet um Nachrichten zwischen
Threads auszutauschen. Dieser Austausch erfolgt über Ports und auch über geteilten Speicher
(„shared memory“).
Multiprocessing:
Symmetric Multiprocessing:
Man hat mehrere gleichberechtigte CPUs. Grundlegende Philosophie: Jede CPU verwendet
eine identische Kopie des Betriebssystems. Wenn nötig, kommunizieren diese Kopien
miteinander.
Asymmetric Multiprocessing:
Es gibt mehrere CPUs. Es besteht eine Art Master-Slave Beziehung zwischen den CPUs.
Jeder CPU wird ein spezieller Prozess (task) zugewiesen. Ein Master-Prozess kontrolliert das
System. Der Master-Prozess teilt den Slave-CPUs die Arbeit zu. Im speziellen: Das
Betriebssystem wählt eine CPU aus um das Betriebssystem auszuführen, während die anderen
CPUs user code abarbeiten.
Vergleich symmetric und asymmetric multiprocessing: Folien J 41 und J 42.
Windows 2000 unterstützt symmetrical multiprocessing. Wie viele CPUs unterstützt werden,
hängt von der Version ab die man hat: Professional (2 CPUs), Server (4 CPUs), Advanced
Server (8 CPUs), Datacenter Server (32 CPUs).
75924440
©B.C.G.
Akademielehrgang Netzwerkadministration
17
Vorlesung „Betriebssystem“
Windows 2000 Scheduling funktioniert auf Grundlage des Preemptive scheduling und der
Priority. Es gibt 32 priority-levels: 16 “real time“-levels, 15 variable levels und 1 system
level (idle = bereit = wird nicht genutzt, aber wartet auf Einsatz). Außerdem hat jeder Thread
eine Priorität auf Grund seiner Erzeugungszeit (creation time).
Es kann immer nur ein Prozess laufen. Laufen zwei Prozesse gleichzeitig, dann bedeutet das,
dass der Rechner zwei CPUs besitzt!
„Foreground Process”: In Windows hat ein Fenster den Focus, und somit dessen Thread
eine hohe Priorität. Das heißt, der User kann bestimmen, welche Prozesse (und somit welche
Programme) eine hohe Priorität haben. Diese Priorität kann aber von „real time“ Prozessen
zurückgesetzt werden.
Unterstützte file systems:
FAT 12: max. 32 MB, für Disketten, Speichermedien
FAT 16: max. 4 GB
FAT 32: max. 32 GB, verwendet von Win98
NTFS:
New Technology File System, verwendet von Win2000
UDF:
Universal Disk Format. Neuer Standard für read-only Medien.
(Zukünftiges Format)
Bei FAT 16 und FAT 32 kann man viele Sicherheitsvarianten nicht verwenden!
75924440
©B.C.G.
Herunterladen