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