Betriebssysteme - iks.hs

Werbung
Betriebssysteme
Literatur: Tannenbaum, A.S. Moderne Betriebssysteme
Software
Anwender SW
System:
System SW (steuert d. System)
- Prozessor
- Hauptspeicher
- Taktgeber
- Bildschirm (Datensichtgerät)
- Plattenlaufwerke
- E/A Geräte
- Netz-Komponente
Virtuelle Maschine wird dem Benutzer und der Anwendungsprogrammen angeboten
Anwendungsprogramme
Kommandointerpreter
Grafische
Benutzeroberfläche
Editoren
Systemprogramme
Betriebssystem
Maschinensprache
Mikroprogrammierung
Hardware
Physikalische Geräte
2 Operationszustände
- Benutzermodus
- Kernmodus
Betriebssystem
- Hardware-Architektur erweitern
Top-down / Buttom-up
Geschichte
•
1. Generation 1945- 1955
Röhren
Aiken (Harvard), Eckert Manchley (Pennsylvania)
Zuse (Berlin)
© - André Schika – INF02
1
•
In 50er Jahren
- Lochkarten
•
1955-1965
Transistoren
Simplex-Alg. (von Danzig) Æ um Ressourcen zu optimieren
Batch-Jobs
•
3. Generation
Integrierte Schaltungen
IBM/ 360 Familie von Rechnern mit IC’s OS 360; Komplex, verschiedene Peripherie
in dieser war die Ursache
Mehrprogrammbetrieb (multiprogramming, multitasken)
Spooling (Simultaneous)
Peripheral Operatin OnLine
Mehrfachbenutzerbetrieb (Multiuser)
(Schutzmechanismus war für Akzeptanz entscheidend)
Bell Labs
General Electronic
Betriebssystem Multics
Digital-Eyuipment Coperation
DEC – PDPA (1961)
Preis 120.000$ (1961)
Letzte der Serie PDPM
Thompson (Bell Labs)
Unics (Uniplexed Information and computing Service) (für Uni’s kostenlos)
• 4. Generation
Personalcomputer
Hardware: LSI (Large Scale Integration)
Grafische Benutzeroberfläche, Bildschirme, Benutzerfreundlichkeit
Apple basiert auf XEROX Star
Netze, remote logen, remote file access
verschiedene Netz-Modelle
Quellcode von Unix erhältich
Die Schnittstelle zw. Den Betriebssystem und er Anwendungsprogrammen verläuft mit
Systemaufrufen.
- Prozessverwaltung
- Signale
- Dateiveraltung
- Schutzmechanismen
- Zeitverwaltung
© - André Schika – INF02
2
A
Prozesse (Tasks)
Prozesstabelle
Prozessadressraum
Prozessbaum
B
init
init
PID1
PID 424
C
Sh
getup
D
E
PID 424
F
PID 424
fork
login
Sh
PID563
PID563
Pfadname
/Lehrer/ProfA/Vorl/inf
exec
grep
root
Lehrer
geschützt mit rwx (Read-Write-Execute)
ProfA
Vorl
inf
Ein- und Ausgabe wird bei Unix wie bei Dateien behandelt Zeichenorientierte /
Blockorientierte.
Standart-Eingabe
Standart-Ausgabe
Standart-Fehlerausgabe
0
1
2
Pipe
Shell (Kommando-Interpreter)
A
B
Whle(TRUE)
{
read_command(command, parameter);
if(fork!=0)
wait(&status);
else {execure(coammnd, parameter,0);
}
}
© - André Schika – INF02
3
Signale
Abbruch
SIGINT
SIGQUIT
SIGKILL
SIGPIPE
SIGALRM
SIGTERM
(in Literatur mit „DEL“-Taste)
(signalinterrupt) „DEL“-bestätigt
Quit-Signal
Abbruch des Prozesses
Ausgabe auf ein Pipe durchgeführt
Weckalarm, nach einer gewisser Zeit
Endsignal
man Signal
Manual
#include<signal.h>
SIG_IGN:
Signal ignorieren
SIG_DAL: alles abbrechen wenn Signal kommt
Will man nicht , dass mit DEL abgebrochen wird, setzt man
signal (SIGINT,SIG_IGN) und signal (SIGQUIT,SIG_IGN)
Dateiverwaltung
fd=create („abc“, 0751) führende Null, bedeutet Oktal Æ Zugriffsrechte; 7=Eigentümer;
5=Gruppe; 1=Welt (stellenwertig)
öffnet zum schreiben
Setzt bei existierenden Daten die Länge auf 0
Spezielle Dateien
Fd = mknod(„/dev/tty2“, 020744,0x0402) [4==only read; letzter Block == Gerätenummer]
Superuserrechte erforderlich
Open, read, write, close , dseek ändert cursor
Pipe Bsp cat file1 file2 /sort (cat gibt Files aus)
Pipe /&fd[0]); //hier wird von fd[0] gelesen und in fd[1] geschrieben
Bsp.:
pipeline (char *prozess1, char *prozess2) {
int fd[2];
pipe(&fd[0]); //pipe erzeugen
if(fork ()!=0)
{ close (fd[o] // Prozess liest aus den pipe
close (STD.OUTPUT)
dup(fd[1]); //stellt status her
© - André Schika – INF02
4
close (fd[1]);
exece(prozess1, prozess2,0)
}
else
{
//kindprozess
close(fd[1]);
close(STD.INPUT);
dup(fd[0]);
close(fd[0]);
exece(prozess1,prozess2,0);
}
}
Benutzermodus
Betriebssystemstrukturen
Monolitische Struktur „ohne struktur“
Benutzerprozess
User Modus, Kernl Modus
Betriebssystem
Kernlmodus
Dienstprogramm
Schichtenmodell
5 Benutzer (Systemadministration)
4 Benutzerprogramm
3 Ein- und Ausgabe
2 Benutzer-Prozesskommunikation
1 Hauptspeicher-, Plattenspeicher-Verwaltung
0 Prozessverwaltung
virtuelle Maschine
CMS
CMS
CMS
conversationell monitoring system
virtuelles Betriebssystem
Hardware
© - André Schika – INF02
5
Client-Server-Modell
Client
Prozess
Server
Prozess
Benutzermodus
KernelModus
Nachricht
Kernel richtet die Kommunikationsmöglichkeit ein. Dieses Modell wird auch bei verteilten
Systemen angewendet.
Client
Prozess
Server
Prozess
Nachricht
Netz
Prozesse (Tasks)
Mehrprogrammbetrieb (multitasking)
Zuteilung (scheduling)
Prozessbaum
Abgehängte Prozesse (detachedprocess)
Zustände
1) Laufend
2) Blockiert (wartet auf ein Ereignis)
3) Bereit
Unterste Schicht der Betriebssystem befasst sich mit Prozessunterbrechung und Zuteilung.
Implementierung mit Hilfe einer Prozesstabelle Kontext (einschließlich Datei-Infos) Status.
E/A Geräte erzeugen Unterbrechungen und ändern den Status.
Vorgang beim Prozesswechsel
1.
2.
3.
4.
5.
6.
Programmzähler sichern
Interrupt-Routine aufrufen
Register sichern
neuer Stack eingerichtet
neuer Prozess bereitgestellt
neuer Prozess gestartet
© - André Schika – INF02
Deamons
Dämonen
kritische
Abschnitte
LD R1, anz_tickets
LD R2, belegt
ADD R1, R2
LD belegt, R2
6
PETERSONsche Algorithmus
#define Flase 0
#define True 1
#define N
2 //Anzahl Prozesse
int turn;
//Wer an der Reihe ist
int interested[N]; //alle Werte mit False vorbesetzt ={False,False}
void enter_region(int prozess)
//Prozess ist 0 oder 1
{
int other;
other=1-prozess;
interested[prozess]=True;
turn=prozess;
while(turn==prozess && interested[other]==True);
}
void leave_region(int prozess)
{ interested[prozess]=False; }
turn
interested[prozess]
prozess True
other
True
interested[other] prozess
False
go
True
warten
other
other
False
True
True
True
warten
Bereits in krit.
Abschnitt
other
egal
In 1 Schritt
bei go
egal
warten
nicht
möglich
Assembler Befehl
TSL (Test and Set Lock)
Führt lesen und schreiben durch, ohne eine Unterbrechung zuzulassen
enter_region
tsl reg,flag
cmp reg,0
jnz enter_region
ret
leave_region
mov flag,0
ret
busy waiting
Ein Prozess verbringt seine CPU-Zeit mit warten.
Im Gegensatz: Blockieren
© - André Schika – INF02
7
Bsp.:
Produzent-Konsument
Produzent
Konsument
Sleep
wake
deadlock
Semaphore
Zusätze für höhere Prgrammiersprachen. Wird ein Prozess in ein kritischen Abschnitt
einschreiten, setzt er ein Semaphore.
Das Betriebssystem sorgt dafür, dass ein Prozess den kritischen Abschnitt durchschreiten
kann ohne das ein Prozess in diesem Abschnitt reingeht.
Beim verlassen des krit. Abschnittes setzt man den Semaphore zurück.
Monitore
Botschaften
Zuteilung der CPU (Scheduling)
Kriterien
- jeder Prozess sollte irgendwann an die CPU kommen
- Effizierung: CPU sollte ausgelastet werden
- Interaktive Benutzer sollten nicht zu lange warten
Batchaufträge (Stapel-Aufträge)
Sollten nicht zu lange auf die Ausgabe warten
- Durchsatz
Round Robin
- Prozesse kommen der reihe nach an die CPU
Wichtitge Frage: Wie lang?
Alte Daten: Ist Zeitscheibe 20 ms, ist die Verwaltungszeit 5ms d.h. CPU ist effektiv
75% der Zeit ausgelastet.
Je länger die Zeitscheibe dauert, desto länger die Wartezeit.
Kompromis: Zeitscheibe 1/10 s
© - André Schika – INF02
8
Prioritäten
t1
t2
t3
t4
t5
t10
t11
t15
t13
Priorität
4
7
1
3
2
2
2
3
10
Zeitpunkt Wann Prozess gestartet wurde
1
2
Waren
geordnet
3
lange nicht
nach Zeit
dran
4
5
10
11
hatten kürzlich
geordnet
15
CPU
nach Priorität
10
Andere Strategien
Bei BatchKürzeste Zeit/Job zuerst
(jetzt muss, dass Betriebssystem wissen wie lange der Prozess braucht)
Ein- und Ausgabe
Eine Hauptaufgabe des Betriebssystem.
Es gibt zu E/A eine Hardware- und Software-Seite.
E/A Geräte
Blockorientiert (128 oder 1024 Byte)
Bsp.: Plattenlaufwerke
Zeichenorientierte Geräte
„Strom von Zeichen“,
Kontrollen- mechanisch wie auch elektronische Komponenten.
Betriebssystem befasst sich mit den Controllern
Festplatte
CPU
Haupt
speicher
Platten
controller
Bildschirm
Grafik
Tastatur
Systembus
Schnittstelle
Paralell/Seriell/USB
z.B. Drucker
© - André Schika – INF02
9
Für Plattencontroller sind typische Befehle:
READ,WRITE, FORMAT, SEEK
Bei einer Platte:
- Kontroller leist ein Block in den Puffer
- Prüfziffer kontrolliert
- Interrupt erzeugt
- CPU liest Block aus dem Puffer
Bei Speichern gibt es eine Technik (DMA) Hardware-Schaltung um zu kopieren ohne die
CPU zu beschäftigen.
Einfache Plattenkontroller können nicht gleichzeitig lesen und schreiben
7
3
6
2
0
5
4
1
Prinzipien
Ziel:
„enterleaving“
vorm „leave“
Geräte-Unabhängigkeit
Einheitliche Namensgebung
Fehlerbehandlung möglichst in den unteren Schichten haben
Synchron /Asynchron –E/A
Mehrbenutzerfähigkeit
Schichten
1.
2.
3.
4.
Interrupts
Treiber
Geräteunabhängige gestalltung (BS)
Benutzerebene
Interrupts:
- wecken Prozesse auf, die auf E/A warten
Treiber:
- Geräteunabhängiger Code
- Kontroller haben Register für Kommandos
-
Geräteunabhängiger Code
o einheitlich Schnittstellen zum Treiber gestalten
o Namensgebung
o Zugriffsschutz
o gerätunabhängige Blockgröße ermöglichen
o Puffer
o Speicherzuordnung
o Vergabe/Freigabe
o Fehler berichitgen
© - André Schika – INF02
10
E/A in Benutzerschicht
printf / fprintf
stdio.h Standard-E/A-Header
Spooling - Aufträge werden in Warteschlänge gelegt
Daemon - einzigster Prozess, der den Treiber bedient, nimmt Aufträge von d. Warteschlange
Verklemmungen (engl. Deadlocks)
könnten vorkommen, wenn mehrere Prozesse gleichzeitig mehrere
Ressourcen brauchen
P1
P2
geht alles nicht weiter, denn P1 braucht G1 und G2 , P2 ebenfalls
G1
G2
und kein Prozess gibt das Gerät frei
Charakterisierung von Deadlocks
1.
2.
3.
4.
Gegenseitiger Ausschluss
Belegen und dann warten
nicht entziehbarkeit
geschlossene Kette
P1
G2
G1
P2
Strategien
1. Ignorieren (Unix)
2. Entdecken und Beheben
Prozesse in Zyklen suspendieren
Betriebsmittel nach einer gewissen Zeit einziehen (Batch)
3. ein oder ein anderer der Voraussetzung nicht zulässt
- spooling
- alle oder keine Ressoursen
- Nummerierung
4. Bankers Algorithmus
Platten
i.a. führen Kontroller mehrere Suchaufträge gleichzeitig aus
Suchstrategien
-
First come first served
Shortest seek first
Fahrstuhl-Algorithmus
© - André Schika – INF02
11
Fehlerhafte Blöcke
Eine Datei bilden, die alle fehlerhaften Blöcke einschließt (nicht kopieren bei der Erstellung
von Sicherheitskopien)
Reserven sparen
Der Kontroller ersetzt einen fehlerhaften Block mit einem Reserveblock 1 2 3 4 R
3
Timer
passen nicht in d. Klassen zeichen- / blockorientiert
Timer lösen lediglich Interrupts aus
Zähler
Register
Querg
Aufgaben:
- Tageszeit
- Prozesskontrolle
- Weckfunktion übernimmt d.h. Benutzerprogramm wecken
- Überwachung des Systems (Watch-Dog-Timer)
- Sammeln statistischer Daten
Speicherverwaltung
Einprogrammbetrieb
Benutzerprogramm
Programm
BS in Rom
Treiber Rom
Bios
Benutzerprogramm
BS
Benutzerprogramm
BS
Overlays
Pn Anteil das n Prozesse warten, gegeben, dass 1 Prozess ein Anteil von
P wartet und es angenommen wird, dass warten unabh. Auslastung = 1-Pn
O=< p < 1
© - André Schika – INF02
12
Auslastung
p=0,2
p=0,5
p=0,8
Anz. Prozesse
Feste Partitionen
700
400
__
_
oder
200
_
BS
mmu – memory management unit
100
Adressierung – wie?
move reg (4716)
Adresse festegelegt durch den Linker.
A
BS
B
A
BS
C
B
A
BS
C
D
D
BS
© - André Schika – INF02
C
D
BS
C
E
D
BS
C
B
BS
Zusätzlicher Platz für
ein Prozess vorhanden
13
Verkettete Liste
F oder P
Anf.
Größe
Schnell zu aktualisieren
Algorithmen
- First-Fit der erste freie Platz der passt wird genommen
- Next-Fit ....
- Best-Fit vergeudet Speicher, denn die Freiräume werden kleine und somit
undbrauchbar
- Worst-Fit schlecht in der Simulation
- Quick-Fit benutzt eine sogenannte Liste v. gebräuchlichen Größen
Buddysystem
Man halbiert einen freien Speicher solange bis der Prozess gerade passt. Bei Freigabe werden
womöglich freie Bereich veschmelzen.
Statische: Bei n Prozessen gibt es n/2 Freiräume.
Virtueller Speicher
Idee: Dem Prozess sollte es erscheinen, als ob er den ganzen Speicherbereich zur Verfügung
hat. Die Speicherverwaltung des BS übersetzt die virtuelle Adresse in physikalische Adressen.
0-4
4-8
60 - 64
virtuelle Seite
Seitenrahmen
„page fault“
virtueller Adressraum
physikalischer
Adressraum
Seitenersetzungsalgorithmus NRU (not recently used)
Jede Seite hat ein Referenzbit und ein Modifikationsbit,
ursprünglich sind die R- und M-Bits 0
R
0
0
1
1
M
0
1
0
1
Nach einer gewissen Zeit löscht das BS das R-Bit aber nicht das M-Bit
ausgeworfen werden zuerst Seiten mit R=M=0
Älteste Seite zuerst mit R=0
Kann es sein, dass mit mehr Seitenrahmen mehr Seitenfehler entstehen?
Antwort: Ja! Belady’sches Beispiel
© - André Schika – INF02
14
FIFO Speicherverwaltung
(Belady’sche Anomalie)
Bsp.:
4 virtuelle Seiten
Angesprochen in folgernder Reihenfolge
012301401234
neuste Seite 0
0
älteste Seite
1
1
0
2
2
1
0
P
3
3
2
1
P
0
0
3
2
P
1
1
0
3
P
4
4
1
0
0
4
1
1
1
4
1
0
2 3 4
2 3 3
4 2 2
1 4 4
P P
Insgesamt 9 Seitenfehler
3
3
2
1
0
P
0
3
2
1
0
1
3
2
1
0
4
4
3
2
1
P
0
0
4
3
2
P
1
1
0
4
3
P
2 3 4
2 3 4
1 2 3
0 1 2
4 0 1
P P
Insgesamt 10 Seitenfehler
P
P
neuste Seite 0
0
1
1
0
2
2
1
0
P
P
älteste Seite
P
LRU(least recently used) Bez.des Arrays M
r
0 2 1 3 5 4 6 3 7 4 7 3
0 2 1 3 5 4 6 3 7 4 7 3
0 2 1 3 5 4 6 3 7 4 7
m
0 2 1 3 5 4 6 3 3 4
0 2 1 3 5 4 6 6 6
0 2 1 1 5 5 5 5
0 2 2 1 1 1 1
0 0 2 2 2 2
0 0 0 0
P P P P P P
P
3
3
7
4
6
5
1
2
0
5
5
3
7
4
6
1
2
0
P
5
5
3
7
4
6
1
2
0
3
3
5
7
4
6
1
2
0
1
1
3
5
7
4
6
2
0
P
1
1
3
5
7
4
6
2
0
1
1
3
5
7
4
6
2
0
7
4
1
3
5
4
6
2
0
2
2
7
1
3
5
4
6
0
P
3
3
2
7
1
5
4
6
0
4
4
3
2
7
1
5
6
0
P
1
1
4
3
2
7
5
6
0
P
M(m,r)<=M(m+1,r) Hier tritt die Belady’Sche Anomalie nicht auf.
Realisierungsmöglichkeiten für LRU - Algorithmus mit Hardware, jede Seite hat einen 64Bit
Zähler, der bei ansprechen inkrementiert wird.
2. Algorithmus
Bei n Seiten hat man eine n x n Bit-Matrix. Wird Seite K angesprochen, wird die K-te Zeile
zu eins und die K-te Spalte zu null gesetzt.
0123210323
0 1 2 3
0 0 1 1 1
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
Seite 0
© - André Schika – INF02
0
1
2
3
0 1 2
0 0 1
1 0 1
0 0 0
0 0 0
Seite 1
3
1
1
0
0
0
1
2
3
0 1 2
0 0 0
1 0 0
1 1 0
0 0 0
Seite 2
3
1
1
1
0
15
Software-Realisierung
(wenn R- und M-Bits vorhanden sind)
Bei jeder regelmäßigen Untersuchung (vom Taktgeber) wird R zu einem Zähler addiert.
Besser: Zähler nach rechts verschieben und R zum höchstwertigen Bit hinzufügen..
„Deamand Paging“
(eine Seite wird erst geladen wenn sie angefordert wird)
„Locality of Reference“, d.h. die Referenzen variieren, reicht in der Regel aus.
Die Menge der im Speicher vorhandenen Seiten heißt „working set“
„Threesharin“ ist das Phänomen, wo ein Prozess fortwährend Seitenfehler verursacht. Das hat
zur Folge, dass der Prozess sehr langsam läuft.
Die Praxis zeigte, dass es besser ist, wenn gegebenenfalls Seiten vonanderen Przessen beim
auslagern mit berücksichtigt werden.
Seitengröße? i.a. ein Vielfaches von 512Byte ab 4K
Praktische Erwägungen
Wiederholungen des Befehls beim Seitenfehler
Bsp.: DJNZ (dekrementiere und springe wenn Register ungleich 0)
Nicht zweimal dekrementieren.
Andere Probleme bei E/A, DMA
Auslagern wenn Seite von mehreren Prozessen benutzt wird.
Dateisysteme
1. Bytefolge
2. Satzfolge
3. Baum
Ziel:
Block hat Schlüssel und mehrere Sätze.
Voller Block wird beim erweitern geteilt
Geräteunabhängigkeit
Der Benutzer muss wissen, auf welchen Datenträger die Dateien sind.
MS PC : ja
Unix: nein
Namen mit Namenserweiterungen
MS-Dos
8.3 –Namensroutine
Erweiterung; i.d.R. gibt die den Typ der
Datei an
Bis 8
Zeichen
Bis 3
Zeichen
© - André Schika – INF02
16
*.c C-Quelldatei
*.bas Basic
In Windows: *.exe ausführbare Datei
In Unix: *.e ausführbare Datei
Dateien werden in Ordnern zusammengefasst.
Ordner == Directory (Verzeichnis)
Organisiert: hierarchisch als Baum
Wurzel (root)
Link
Entwurf des Dateisystems
Man teilt die Platten in Blöcke auf.
Wie groß soll ein Block sein?
Mittlere Dateigröße etwa 2K groß. Zugriffszeit Millisekunden
Maschinenbefehle brauchen ~10ns
Dieses System wird noch heute benutzt. CD-Rom
Datei als Folge von Bytes,
alles Nebeneinander.
Alternative als verketette Liste von Blöcken.
1
2
7
-1
7
1
Name
a.dat
| 1 Block der Datei
|2
:
n
Bootsektor
Fat
Bitfolge
MBR
Windows
Partition
MasterBootSektor – enthält Informationen darüber wie die Platte ...
© - André Schika – INF02
17
IndexKnoten
(i-Nodes)
Verwaltungsinfo für Statistik
10 Verweise auf 10 Plattenblöcke
1. indirekter Verweis
2. indirekter Verweis
3. indirekter Verweis
Plattenknoten
i-node
Bis 256 i-nodes
i-node
Index
Bei 2k Blockgröße ist die maximale Größe einer Datei 256Gigabyte
Ordner
Microsoft-Dos-Eintrag
Dateien Erweiterung Attribute Zeit/Datum 1.Block Größe
Unix
i-node
Name
Zugriff in Unix auf /usr/ast/mbox
Dateinamen
. = Nummer der i-node des aktuellen Ordners
.. = Nummer der i-node des Elternteils
© - André Schika – INF02
18
Probleme bei Änderung der Blocknummern
Links
A
Ansätze:
- neue Dateistrukturen einfügen
- nachträgliche Links werden mit einem
Verweis vernetze
B
gemeinsam
genutzte Dateien
Beim 1. Ansatz: Einrichter gilt als Eigner, Link ändert nicht die Eigentumsverhältnisse,
erhöht den Linkzähler
Problem: Wie löscht man eine Datei mit Links? Will der Eigentümer die Datei löschen, so
wird diese aus seinem Verzeichnis gelöscht. Bei dem anderen Benutzer
bleibt sie vorhanden.
Beim 2. Ansatz: Andere Benutzer haben nur Pfade
Problem: Große Anzahl von Plattenzugriffen.
Zuverlässigkeit
„Schlechte Blocks“
Hardware: Ein Sektor besitzt eine Liste von schlechten Blöcken. Bei der Initialisierung wird
in die Liste Ersatzblöcke eingetragen
Software: Eine Datei wird angelegt die lauter unbrauchbare Blöcke enthält. Besondere
Maßnahmen der Datensicherung vornehmen.
Datensicherung: gespiegelte Platte / Inkrementalsicherung
Integrität
Probleme beim Abstürzen bevor Verwaltungsinfos (z.B. i-Nodes, Liste der freien Blöcke)
zurück geschrieben werden
Dienstprogramme überprüfen die Integrität ausgehend von i-Nodes
Zugriffszeiten auf eine Platte
Lesen in Hauptspeicher 10ns
Lesen auf der Festplatte erfolgt bei 10MB/s
Liest man 32bit von der Platte, muss man 40x langsamer und zusätzlich 5-10ms rechnen
Cache:
Ein Teil des Hauptspeichers, welcher Blöcke von der Platte, welche gebraucht werden,
zwischen speichert.
Algorithmen für die Speicherverwaltung lassen sich beim Cach-speichern verwenden.
Um Blöcke im Cache zu suchen gibt es eine Hash-Table.
© - André Schika – INF02
19
(most
recently
used)
Problematik:
Zurückschreiben und Rechnerabsturz
Write-through-cache speichert sofort alle Anwendungen
Idee:
Statt die modifizierte Blöcke regelmäßig auf die Platte zu schreiben, wird ein Log von
Änderung in einem Schreibzugriff auf die Platte geschrieben (Log basiertes DS)
Vergleichsweise schnell (engl. Log-structured file system LSF)
Für die Kopf-Bewegung optimieren.
Vermittlungsinfos z.B. i-Nodes in der Mitte der Platte positionieren.
Atome Transaktionen
Realisierung mit doppelten Platten
Schnappschuss auf eine 2. Platte
Im DMBS „Commit“ „Rollback“ „Savepoint“
Sicherheit:
Gegen was? Gegen wen?
Geheimhaltung
Sasser-Virus
Bedrohung
Vertraulichkeit - unerwünschte Preisgabe
Datenintegrität
Systemverfügbarkeit – Denial-of-service (DOS)
Passwörter:
Strategien:
physikalische Identifizierung:
© - André Schika – INF02
- frei wählbar
- vorgeschlagen bzw. vom System festgelegt
- Frage-und-Antwort-System
- Magnet-Chip-Karten
- Unterschrift
- Fingerabdruck / Augenscan
20
Schutzmechanismen
Objekte:
Hard- oder Software
Menge von Paaren (Objekte, Rechte)
Rechte:
Operationen, die erlaubt sich z.B. RWX
Prozess (Benutzerkennnummern uid); Gruppenkennnummern gid)
Liste der Dateien und Geräten mit jeweiligen Zugriffsrechten.
Ein Prozess durchläuft verschiedene Teilsysteme (Kern/Benutzer). Bei einem Übergang findet
eine Änderung der Rechte statt.
Schutzmatrix:
Obj.
1
D1
D2
D3
R
RW
-
2
In Unix rwx-Bits für Eigner, Gruppe, Welt
Entwurfsprinzipien für Sicherheit
1.
2.
3.
4.
5.
Systementwurf sollte public sein
Zugriffsverwaltung
Aktualität
ein Prinzip sollte so wenig Rechte haben, wie möglich
Schutzmechanismen sollten einfach, einheitlich und in den unteren Schichten
eingebaut sein
DOS (Disk Operating System)
1. PC stammt von 1975
$400 8-Bit Intel CPU 8080
256 Byte Speicher
keine Tastatur, kein Bildschirm, kein Bandgerät, keine Platte
Vorgänger CP/M (Digital Research)
1975-1980 PC für Hobby Markt
1980 entschied IBM PC mit Standartbauteilen herzustellen
Intel hat ein 16-Bit CPU
8086 8-Bit CPU
Bill Gates kaufte CP/M und modifizierte es
PC war als Spielzeug gedacht
Offenes System (alles war verfügbar, Schaltpläne, code-listings)
SW-Entwickler konnte entwickeln
PC-Hardware
© - André Schika – INF02
21
1MB Adressraum (zuerst 640KByte Rom)
RestRom
Erste Machine hat 64KByte
Kein HW-Schutz
MS-Dos 1.0 (1981)
Größe 12K (etwa so groß wie CP/M)
4000 Zeilen Assemblercode
Vor dieser Zeit gab es 8Zoll-Disketten.
Zu dieser Zeit 5 ¼ -Zoll-Disk
Betriebssystem bestand aus
ibm bio.com – Platten-, Zeichen- E/A
ibm dos.com – Platten und Datenverwaltung
BIOS (Basic Input Output System)
Im Rom, enthält Gerätetreiber
(log im oberen Bereich des 1MB-Adressraumes)
- nur ein einziger Ordner
- Batch Files
- MS-Dos 2.0 (Mai 1983)
- Neu geschrieben
- Systemaufrufe für E/A open, read, wite, close
- 360K Disks
- 20.000 Assemblercodes
- Kommerzielle Anwendung Dos 2.11 mit Uhrzeit, Datum, japanische Schrift
(Kanji)
- MS-Dos 3.0 (Aug. 1984)
- Neue Bauteile
- Dos 3.0 hat nicht alle Leistungen der Hardware unterstützt
- 1,2MB Disks
- Uhr mit Batterie
- 40.000 Zeilen Code
- Version 3.2 mit 3 ½ Zoll-Disks
- MS-Dos 4.0 (Juli 1988)
- OS/2 – ein Flop
- Platten bis 2GB
- 16MB RamDisk
- MS-Dos 5.0 (April 1991)
- Erweiterter Speicher (oberhalb 1MB)
- Help
- edlen (Zeiten-Editor) wurde abgeschafft
- Ähnlichkeiten mit Unix-Kommandos
DOS
Unix
copg
CP
date
date
del
run
dir
es
mkdir
mkdir
renamemr
rundir
rundir
type
cat
cd
cd
© - André Schika – INF02
22
-
-
Benutzercode zum Betriebssystemkern hinzufügen
Neue Treiber
Config.sys
o Gerätetreiber
o Nationalsprache
o Von wo das BS geladen wird
o Infos über Cache
o Kommandointerpreter
o Höchstanzahl offener Dateien
Autoexec.bat (in Unix entsprach das /e/c/re)
In Dos
o Prozess fest mit Speicher verbunden
o Ein Zwischending zwischen 1- und Mehrprozess-System
•
Files von Typ *.com
1 zu 1 im Speicher abzubilden und auszuführen
Größe bis 64K
Stack
Erzeugt man neuen Prozess wurde Speicher abgegeben oder es
erschien eine Fehlermeldung
Pro
•
Files von Typ *.exe
Könnten an verschiedenen Adressen geladen werden. Besaßen ein Text-,
Daten- und Stacksegment.
*.com und *.exe sind Files unterscheiden sich in den ersten 2 Bytes
PSP (Programm Segement Prefix)
256 Byte-Block (Adresse 0-255)
(*.com-Dateien fingen mit Adressen 256 an. Bei *.exe-Files wurde PSP getrennt gehalten)
PSP enthielt:
- Größe des Programms
- Adresse die angesprochen werden sollte, wenn das Programm von Benutzer
unterbrochen wurde
- PSP des Elternteils
- Daten, die angesprochen werden sollten
- Kommando zum Starten
- Kommando-Interpreter-Variablen
- Andere Infos von MS
- Kindprozess erbt die offenen Dateien des Elternprozesses
© - André Schika – INF02
23
MS-Dos hat kein Paging
Bsp:
Command.com
Editor
Command.com
Stack
PSP
PSP
Stab
Command.com
MS DOS
PSP
Command.com
PSP
MS DOS
PSP
MS DOS
Interrupt-Vektor-Routine
Normalerweise wurde der Speicher freigegeben, wenn sich ein Prozess verabschiedet.
Ausnahme: TSR-Programme (Terminate and Stay-Resistent)
Windows NT (New Technology)
Fähigkeiten
rein 32Bit
Sicherheit
Sichere Dateiverwaltung
Eigener Adressraum pro Prozess
Unicode
Prozessor
Mulitprozesse
„Recentrant“ Kern
Plug and Play
Power Management
NTFS
Win32 API
Laufen alte Dos-Programme
Kritischer Bereich von Benutzer geschützt
Windows 9x
Nein
Nein
Nein
Nein
Nein
Intel 80x86
Nein
Nein
Ja
Ja
Nein
Ja
Ja
Ja
Windows NT
Ja
Ja
Ja
Ja
Ja
80x86, Alpha, Mips
Ja
Ja
Nein
Nein
Ja
Ja
Nein
Nein
Win32 API (Aplication Progamming Interface)
Erzeugt man ein Objekt mit API-Aufruf, bekommt man eine Zeiger- bzw. Datenstruktur,
welche auf dieses Objekt zeigt, Handle genannt.
Registry ist ein Dateiensystem. Dateien heißen Keys. Am obersten sind die HKey-*. (auch
„root keys“), sub keys (unterordnen)
© - André Schika – INF02
24
Key
HKey_Local_MACHINE
Hardware
SAM (=Security Account Manager)
Security
System
HKey_users
Software
HKey_Performance_Data
HKey_Classes_Root
HKey_current-config
HKey_current-user
Beschreibung
Eigenschaften von Hard- und Software
Gerätebeschreibung, Zuordnung von Hardware zu
Treibern
Security- und Zugangsinfos für Benutzer
Systemweite Sicherheitsrichtlinien
Infos zum Systemstart
Infos über jeden Benutzer
Ein Key für jeden Benutzer
Benutzereinstellungen für MS-Software
Performancezählerverwaltung
Link zum local-Maschine/Software/Classes
Link zur aktuellen Hardware
Link zum aktuellen Benutzer
Kern Modus
HAL (Hardware-Abstraction-Layer)
-
Ziel:
o verschiedene Hardware-Plattformen
-
Aufgabe:
o Abstrakte Hardware-Schnittstellen zu schaffen
o Zugriff auf Gerätetreiber
o Busunabhängige Geräteaddressierung (ISA, SCSI, PCI, USB,...)
o Behandlung von Unterbrechungen von Geräten
o DMA
o Uhren
o Spinlocks, Multiprogramming, Synchronisation
o Schnittstellen zum Bios, SMOS Konfiguration
hal.dll im Windows\System32\
© - André Schika – INF02
25
Betriebssystemkern:
„Kern“ hat eine andere Bedeutung als bei Unix.
Beim Kern in Windows fehlen speicherverwaltende Dateisysteme.
Teile vom Kern und von der Hal sind permanent im Hauptspeicher.
Der Kern kann ein vollständigen Kontexwechsel durchführen, Seite wechseln, Cache löschen,
Threads in Tabelle eintragen. Kern besitzt den Thread, der als nächstes laufen soll.
Abstraktionselement:
Kontrollelemente
- Prozessobjekt
- Unterbrechungsobjekt
- DPC (=defered procedure call) trennt zeitlich kritische Vorgänge von zeitlich
unkritischen Vorgängen
- APC (=asynchronous procedure call)
o Wie PC aber in Prozesskontext
- Dispatcherobjekt
o Semaphore, Ereignisse, Uhren
Executive:
- Sammlung von Prozeduren, welche von Threads aus geführt werden können
(Ausnahmen)
o PNP (Plug and Play), Power Management
- Objektmanager
o Prozesse, Threads
o Verzeichnisse, Semaphore
o E/A Geräte usw
- E/A Manager
o Bietet Geräteunabhängige E/A
o Bestimmt richtigen Treiber
o Schließt FAT, NTFS ein
- Prozessmanager
o Prozess Threads: Erzeugung, Vernichtung
o Steht in Verbindung mit dem Kern
o Verwaltet Multiprogramming
- Speicher-Verwaltung
o Virtuelle Seiten, physikalische Seitenrahmen
- Security-Manager:
o (eingerichtet um Anforderungen des Verteidigungsministeriums zu
berücksichtigen)
o Benutzer-Anmeldungen
o Zugriffskontrolle
o Virtuelle Seiten mit 0 vorbesetzen
- Cache-Manager
o Entscheidet, welche Blöcke im Hauptspeicher bleiben
- PuP
- Power Konfigurationsmanager
o Für Registry-Einträge zuständig
- LPC (=local-procedure-call) Manager
o Interprocesskommunikation
- GDI (=graphics-device-interface)
o Windows-Manager Gerätetreiber für Grafik
© - André Schika – INF02
26
Kernel und Executive finden sich im \Windows\System32\4toskrnl.exe
Win32 und GDI finden sich im \Windows\System32\Win32K.sys
2. Objekte (Zugriff erfolgt über Handles)
-
Objekt-Name
Verzeichnis, Wo das Objekt liegt?
Sicherheitsinformationen, Wer darf dieses Objekt benutzen?
Quoten, Was kostet die Benutzung?
Referenzzähler
Zeiger auf ein Typobjekt
o Typname
o Zugriffsrechte
o Zugriffstyp
o Quoten
o Sychronisierbar
o Paging möglich
open-, close-, delete-Methode, usw
Objekte zentralisieren die Sicherheitsprüfungen
- verwaltet die gemeinsame Benutzung von Ressourcen einheitlich
- erleichtert die Verfolgung, welche Objekte benötigt werden
- alle Objekte befinden sich im Hauptspeicher
beim Hochfahren sind nur Leerlauf- und System-Prozesse (utoskrnl.exe)
Objekte werden dynamisch verwaltet
Typen
- Process
- Thread
- Semaphore (Zählsemaphore)
- Mutex (Binärsemaphore)
- Ereignis
- Uhr
- Queue
- Offene Daten
- Access token (Benutzer, Sicherheit)
- Profil (epu Belastung)
- Sektor (Dateien im virtuellen Speicher)
- Key (Register)
- usw.
Es gibt ein Namensraum für Objekte
- es gibt 3 verschiedene Namensverwaltungen
o Objekte
o Registrierung
o Dateien
alles hierarchisch geordnet
Es gibt Werkzeug mit dessen Hilfe man die Objekte ansehen kann: winobj.
© - André Schika – INF02
27
Kostenlos erhältlich www.sys
Verzeichnisse von Objekten
„??“ MS-Dos helfen Geräte zu finden
Device
Driver
Windows
usw
Ein Thread besitzt:
- Befehlszähler
- Register
- Stack
Ein Prozess besitzt:
- Adressraum mit Programmcode
- Datum
- Dateien + weitere Ressourcen
- ggf. Kindprozesse
- Alarm, welcher noch zugestellt werden muss
- Signalhändler
- Verwaltungsinfo
- Prozesse bündeln
- Ressourcen
- Threads sind Einheiten, welche die CPU-Ausführung verwalten
Threads in einem Prozess teilen sich einen Adressraum, geöffneter Dateien.
Getrennte Prozesse teilen sich den physischen Speicher, Festplatten, Drucker usw.
Zustände für Threads (wie bei Prozessen): rechnend, blockiert, rechenbereit, beendet.
Da Threads keine Ressourcen zugewiesen bekommen, sind sie etwa 100x schneller
aufzustelen als ein Prozess.
Im Windows
- Job
o Gruppe von Prozessen, welche Quoten und Limits teilen
- Prozess
o Behälter für Ressourcen
- Threads
o Wird Kern eingeplant (gescheduled)
- Fiber (Faser)
o Leichtgewichteter Thread, der von Benutzer verwaltet wird
Jeder Prozess hat UGB virtuellen Adressraum
Benutzerprogramme haben unter ZGB (Bei Server IGB)
© - André Schika – INF02
28
Interprozesskommunikation
- Pipes (Byte-Modus, Nachrichten-Modus)
- named-Pipes
- mailshots (wie Pipes, aber unidirektional)
- sockets (normalerweise auf versch. Rechner)
- Remote-Prozess-Calls
- shared Memory
Prozesssynchronisationsmechanismen
- semaphore (mit Zähler)
- Mutex(e) (ohne Zähler)
- Kritische Bereiche (nur lokal im Adressraum eines Threads)
- Ereignisse
• Alle sind Kernobjekte, außer kritische Bereiche
Realisierung von Prozessen
Create Process -> kernel32.del (im Benutzer-Modus)
(hat die meisten Kernsystemdienste bis auf d.Geräte)
1. Auszuführende Datei
- Wird geöffnet (ist Parameter von Geräteprozess)
- Registry wird überprüft, ob eine Sonderbehandlung erforderlich ist (z.B. Dateitypen)
2. NT Create Process
- Kreiert ein leeres Projektobjekt
- Trägt den Namen im Namensraum ein
- (Kern-Objekt und Executive-Objekt)
- Prozess-Manager erzeugt ein Process-controll-block mit Prozess-ID, Kontingenten,
Access, usw.
- Auch Section-Objekt wird erzeugt, um Adressraum zu verwalten
© - André Schika – INF02
29
3. Kernel32.del ruf NT Create Thread auf
- Benutzer- und Kern-Stack für den Thread werden angelegt
4. Kernel32.del teilt Win32- Umgebungssubsystem
- Mit einer Nachricht, dass es einen neuen Prozess gibt
- Überprüft die Prozess- und Thread-Handles
- Diese werde in eine Tabelle eingetragen
- Das Subsystem erzeugt einen Cursor mit einer Sanduhr
- Wenn der Prozess im Fenster kreiert wird, wird dieser Cursor entfernt oder erst nach
2 Sekunden
5. Der Thread startet, indem er eine Prozedur des Laufzeitsystems zur Initialisierung
aufruft
6. Das Laufzeitsystem setzt die Priorität des Threads, teilt den Dll´s mit, dass es einen
neuen Thread gibt, usw.
Als letztes wird mit der Ausführung des Codes im Hauptprogramm des Prozesses
gestartet.
Analog für Threads
Scheduling
Kann ein Thread nicht mehr laufen, wird zum Kernmodus gewechselt. Dann wird der
Scheduler aufgerufen, um zum nächsten Thread zu wechseln.
Bedingungen dafür sind folgende:
1. Ein Thread wird durch ein Semaphore oder Mutex blockiert
*
2. Er schickt ein Signal an ein Objekt (z.B. ein up-Signal an ein Semaphore)
3. Die Zeitscheibe ist abgelaufen
*
*
(Der Thread befindet sich bei * im Kernmodus)
Der Scheduler wird aufgerufen, wenn:
1. eine E/A Operation zu Ende geht
2. eine gewisse Wartezeit abläuft
*
*
Warte ein Thread darauf, wird ein DPC (= defened-prozedure-call) abgesetzt.
Set Priority Clas (bezieht sich auf alle Threads im einem Prozess)
Set Thread Priority
16-37 sind Systemprioritäten
© - André Schika – INF02
30
Aktuelle Priorität kann höher als die Basispriorität (in der Tabelle) sein. Nie höher als 15,
wenn eine E/A-Operation fertig ist.
+1 Platte
+2 seriell
+6 Tastatur
+8 Soundkarte
gilt nur für eine Zeitscheibe
Nach Semaphore oder Mutex wird Priorität auf 8 angeboten.
Wartet ein Prozess länger als ein Schwellenwert, wird seine Priorität auf 15 für 2 Zeitscheiben
gesetzt.
Zeitscheibe: 20ms auf Einzelprozesser, Server 120ms
Starten von Windows 2000
Hardware-Boot
1. Master Boot Record (bei Sektor 0)
Diese hat einen Partitionstabelle der Platte
2. In den aktiven bootfähigen Partitionen wird der Bootsektor gelesen und ausgeführt.
Das Bootsektorprogramm liest das Wurzelverzeichnis, sucht das ntldr
3. ntldr lädt Windows 2000
4. ntldr liest eine Datei boot.ini
5. hal.dll und ntoskrnl.dll werde geladen
6. bootvid.dll (Standard Video-Treiber) wird geladen
7. ntldr liest die Registry
8. Das Betriebssystem wird gestartet. Komponente der Executive werden aufgerufen;
Initialisierungen werden vorgenommen
9. Session-Manager smss.exe 8erster Prozess im Benutzer-Modus) Damit ist der BootVorgang abgschlossen
10. Win32-Umgebung mit csrss.exe wird gestartet Dateien mit Registry-Einträge (heres)
werden gelesen . Objekt im Objekt-Namensraum werden gestartet. Dll’s werden
gestartet.
11. winlogon.exe (Anmeldedienst) wird gestartet.
12. Domänen im Benutzermodus werden gestartet
13. Authentifizierungsmanager lsass.exe und der Vaterprozess aller Dienste services.exe
werden gestartet.
© - André Schika – INF02
31
14. Anmeldedialog wird von msgina.dll übernommen
15. explorer.exe wird gestartet
Speicherverwaltung
Virtuelle Adressen haben 32Bit, d.h. jeder Prozess hat 4GB Adressraum
Zustände einer virtuellen Seiten
-
frei
belegt (Referenzen hierauf wäre erfolgreich, wenn die Seite sich im physischen
Speicher befindet, sonst wird die Seite geladen)
- reserviert (für Stack, bis 1 MB)
(virtuelle Seitengrößen beim Pentium 4KB) Attribute: lesbar,
schreibbar, ausführbar)
Stackseiten, die ursprünglich nicht mehr auf der Platte waren, werden erst auf die
Platte geschrieben, wenn sie ausgelagert werden. Freie und reservierte Seiten haben
kein Abbild auf der Platte.
Abbilder von Dateien die im virtuellen Adressraum vorhanden sind, sind die Dateien
selbst.
© - André Schika – INF02
32
Position-Independent-Code
d.h. nur relative Adressen sind erlaubt.
Zu wenig virtueller Speicher:
früher Bank-Switch
heute: Adress-Windowing-Extensions
© - André Schika – INF02
33
Implementierung der Speicherverwaltung
Seitengröße:
- Pentium 4KB (jeder Prozess hat 1 Million Seiten)
- Itanium 8 oder 16 KB
Das Betriebssystem kann Seiten von der Größe von 4MB benutzen
- Speicher ist dem Prozess und nicht dem Thread zugeordnet.
- VAD (Virtual Address Description) Daten-Rekord für Speicherverwaltung
Seitenfehler
1. nicht belegt
//Fatal
2. Schutzverletzung // Fatal
3. Auf eine von mehreren Prozessen geteilten Seite geschrieben wird.
(copy-on-write)
4. Stack wächst (Seiten mit Nullen werden gefragt)
5. Seite belegt aber nicht eingelegt
Seitenfehler verursacht einen Plattenzugriff. I.d.R. werden dabei 8 Seiten gelesen bzw.
geschrieben.
© - André Schika – INF02
34
Seiteneinsetzungsalgorithmus
Idee: möglichst viel freier Speicher
Menge der eingelagerten virtuellen Seiten, die zu einem Prozess gehört, heißt der
Working-Set (WS)
Minimaler WS 20-50; Maximaler 45-345 je nach RAM-Ausbau
Balance-Set-Manager
Prüft ob genügend freier Speicher vorhanden ist.
Wenn nicht, räumt WS –Manager auf.
© - André Schika – INF02
35
http://www.in.fh-merseburg.de/~buchanan/bs
© - André Schika – INF02
36
Herunterladen