Betriebssystem ZHAW
Betriebssystem wird hier gelehrt --> Willkommen in der Hölle meine Damen und Herren
Betriebssystem wird hier gelehrt --> Willkommen in der Hölle meine Damen und Herren
-
- 1 / 62
-
Lernkarten
File Systems
File Allocation und Free Space Managment erklären und diskutieren
Auf einer Disk hat es viele Files, die Diskspace nutzung und der Filezugriff sollen effizient sein. Folgende Lösungsmöglichkeiten:
- Contigous Allocation: Zusammenhängende Blöcke hintereinander speichern, unterstützt sequential acces und direct random access. Führt zum Problem vom finden von freien Speicher, häufig verwendete Strategie ist First-Fit und Best-Fit, führt zu extremer Fragmentierung. Ein weiterer Nachteil ist wieviel Space soll asoziert werden, beim Kopieren kein Problem aber wenn das File vergrössert wird.
- Linked Allocation: Die Blöcke eines Files bilden eine verkette Liste, löst alle Probleme von Contigous Allocation. Ist aber immernoch ineffizient für Direct (Random) Access und Pointer benötigen auch Disk Space.
- Indexed Allocation: Speichert die Blockzeiger in einem Index Block, keine Fragmentation und effizienter Direct (Random) Access. Wieder das Problem, Zeigerblöcke brauchen wieder speicher.
- Performance: Ist abhängig davon welches Filesystem benutzt werden soll, Sequential Access -> Linked Allocation und falls Direct (Random) Access -> Contigous oder Indexed Allocation. Oft trifft man eine Mischung zwischen Contagious für kleine und Indexed für grosse Files an.
- Free Space Management: Freie Blöcke müssen auf der Disk verwaltet werden, BS führt eine Liste Free Space List. Dies kann gelöst werden mit Bit Vector jeder Block entspricht einem Bit, Linked List durch alle freien Blöcke oder Grouping im ersten freien Block die Adresse von N freien Blöcken.
File Systems
File Management erklären und diskutieren
Record Locking:
- Multiuser Umgebungen -> Es sind merfahzugriffe möglich, deshalb Mutex auf Files anwenden, bei z.B. Datenbanksystemen, Daemonen, etc.
- Exklusiver Zugriff -> Ganze Dateien zu sperren ist ineffizient, dehalb Record-Locking welches nur Teile des Files sperrt. BS-Unterstützung notwendig, z.B. bei Unix/Linux über Befehl fcntl()
- Datenbanken: Am effizientesten mit eigener Fileverwaltung
Journaling:
- Journaling: Verhindert Inkonsistenzen des File Systems bei Crashes dadurch, dass sämtliche Änderungen am File System mit Transaktionen gemacht werden. Moderne Betriebsysteme ünterstützen Journaling, Linux -> ext3, reiserfs, Windows -> NTFS
- z.B. ext3 Journaling-Modi: ext3 unterstützt 3 modi:
ordered -> nur Metadaten werden im Journal gespeichert
writeback -> nur Metadata, ordered aber nicht synchron
journal -> auch Daten im Journal eintragen, wesentlich langsamer wegen zweifachem Speichern
Memory Mapped Files:
- Memory Mapped Files: Werden im Virtual Memory des Prozesses abgebildet und mit "demand paging" in physical Speicher gelesen. Filezugriff = Speicherzugriff. Vorteile sind einfacher Zugriff durch Speicherzugriff und Filesharing ist schnell und einfach.
Quotas:
Quoates legen die Grenzen für Disk-Usage (Patritions) fest, im Allgemeinen pro Anwender
File Systems
das Unix File System erklären und diskutieren können, Filegrössen bestimmen
Unterstüzt diverse File Systeme
UNIX -> ufs (fast file system), rfs (remote file system), nfs (network file system)
LINUX -> ext2 (extended file version 2), ufs (dito), nfs (dito)
Grundsätzlich werden remote Filesysteme in den lokalen Verzeichnisbaum gemountet. NFS ist eine Implementation oder eine Spezifikation.
Filesystem: Systemschicht
- Bootblock: Bootcode zum starten des BS
- Superblock: Beschreibt aufbau des Filesystems
- Inode Liste: Inodes enthalten Informationen zu Files
- Datenblöcke: Beginnen nach der Inode Liste, enthalten echte Daten
- Directory Blocks: Gehören zu Directory Files, enthalten die I-Node Nummer und den Filenamen
- I-Node: Enthält sämtliche Informationen zum File, Zugriffsrecht, Datum, Open Count, etc
# Filegrössen bestimmen
NFS:
- kleine Files direkt Zeiger auf Datenblöcke
- grosse Files Zeiger auf Blöcke
NTFS:
- kleine Files -> im Datenfeld des MFT-Records
- grosse Files -> indexed allocation von Clustern
Befehl: ls -al Filename
-rw-rw-r-- 1 tha tha 531 <- Grösse
File Systems
(das Windows File System erklären und diskutieren)
Wiederherstellbares File System, Daten in Cluster gespeichert, unterstützt mehere Datenströme. Clustering heisst dass mehrere Sektoren in einem Cluster gespeichert werden. Ein Sektor sind 512 Bytes und Clustergrössen zwischen 512B - 4KB. Es gibt ein Master Table File als Array von 1KB of Records, ähnlich wie I-Nodes. Die MFt iist eine Sammlung von Atrribut/Wert Paaren.
Security: Jedes File hat eine ACL (access control list)
Computer Systeme
Aufgaben und Funktionsweise der CPU kennen und erklären können
Bus Interface
- Ansteuerung der externen Einheiten
Recheneinheiten
- Logische und Arithmetische Rechenleistung der CPU
Adress-, Daten, und Statusregister
- Für Benutzer sichtbar
- Von System- und Anwenderprogrammen genutzt
Instruction (Control) Unit
- Steuereinheit : Interpretation und Ausführung der Instruktionen
Computer Systeme
Interrupts verstehen und diskutieren können
- Er unterbricht aktuelle Instruktionsausführung des Prozessors
- KOntrolle geht an den Interrupt Handler über
- evtl. wird zu einem anderen Programm umgeschaltet
Asynchrone Interrupts
- Timer
- I/O Devices
- Hardwarefehler
synchrone Interrupts
- Programmfehler z.B Division durch 0
- Trap --> Exception durch einen User-Prozess
- SWI (Software Interrupts)
Mit den Interrupts wird die CPU last besser verteilt. Wenn ein Programm auf I/O wartet, dann kann es auf den Interrupt warten und muss kein busy waiting betreiben
Computer Systeme
Für Betriebssysteme wichtige Rechnerkomponenten kennen und erklären können
CPU
Hauptspeicher (Code & Memory)
I/O Module
- Sekundärspeicher
- Monitore & Tastaturen
- Kommunikation
Bus
- Verbindung zwischen i/O Geräten
Das sind die Ressourcen die das Betriebssystem uns zur Verfügung stellt.
Computer Systeme
System / User Mode erklären und diskutieren können
Usermode
- Code kann nicht direkt auf Hardware oder Referenzspeicher zugreifen.
- Code muss an System-Apis delegiert werden um Hardware oder Speicher zuzugreifen
- Dadurch können Sitzungen aus Abstürzen wieder hergestellt werden.
- Der Grossteil des ausgeführten Codes im PC ist im Bereich des Benutzermodus
Kernel Mode:
- Uneingeschränkter Zugriff auf Hardware
- Jeder CPU Befehl ausführen und auf jede Speicheradresse verweisen
- Ist die vertrauenswürdigste Funktion der untersten Ebene des Betriebssystem.
- Abstürze in Kernelmodus sind katastrophal --> Ganze PC geht hops
Computer Systeme
Die Funktionsweise von System Calls kennen
System Calls:
- Schnittstelle zwischen Anwendersoftware und Systemsoftware
- rufen System-funktionen auf
- Schalten zwischen Kernel und Usermode um
Ablauf
- Anwenderprogramm stellt Parameter bereit(Register, Stack)
- Ruft Bibliuotheksfunktion auf: normaler Prozerduraufruf
- Kernler überprüft Parameter
- Kernel ruft den System Call handler auf
- Handler wird ausgeführt
- Rücksprung in die Bibkiotheksfunktion
- Rückkehr ins Anwenderprogramm
Computer Systeme
I/O Module und I/O Kommunikation kennen und diskutieren können
Drei Techniken für Kommunikation mit I/O Geräten
Programmen I/O oder synchroner I/O
- CPU wartet bis jede I/O Operation beendet wird -->busy wait
Interrupt Driven I/O oder asynchroner I/O
- CPU führt währen I/O Operation Code aus, wird unterbrochen wenn I/O Operation fertig ist
- CPU kann andere Arbeiten ausführen
Direct Memory Access
- Speicherblock mit Daten wird vom/zum Speicher übertragen ohne Rechenleistung der CPU zu beanspruchen
Computer Systeme
Die Funktion des Stacks kennen und erklären können
Ist eine dynamische Daternstruktur, wird von den meisten Mikroprozessoren in der Hardware direkt unterstüzt
push(das objekt oben auf den Stapel legen)
pop(liefert das obesrte objekt und ernfertn es vom Stapel)
peek(nachsehen, liefert das erste objekt ohne es zu entfernen)
In Mikroprozessoren gibt es oft ein spezielles Register, den Stackpointer (Stapelzeiger). Dieses Register enthält eine Speicheradresse, die auf den aktuellen Stapeleintrag (des aktuellen Prozesses) zeigt. Viele Befehle/Operationen des Mikroprozessors nutzen diesen Stapeleintrag. Unter anderem gibt es Befehle, mit denen man in den Stack schreiben (z. B. push beim x86-Prozessor) oder von ihm lesen kann (z. B. pop). Dabei wird automatisch der Stapelzeiger verringert oder erhöht.
Prozesse Threads
Definition des Begriffs " Prozess" kennen und erklären können
Unit of Resource Ownership
- Eine Einheit, die Ressourcen besitzt
- ein virtueller Adressraum, in dem das Prozess Image steht
- hat Kontrolle über Ressourcen ( Files, I/0 Geräte, etc)
Unit of Scheduling
- Eine Einheit die schedulierbar ist
- CPU-Scheduler weist der CPU einen Prozess zu (dispatch)
- zum Prozess gehören der Execution State (PC, SP, Register) und eine Ausführungspriorität
Prozesse Threads
Verstehen und erklären kännen, wie Prozesse auf einer CPU ausgeführt werden
- Prozesse werden gleichzeitig "concurrent" ausgeführt
- Sie können mitten der Ausführung unterbrochen und später weiterverarbeitet werden
- Erhalten von CPU vorgegebene Zeitintervall --> abhängig von Schedulingverfahren
Dispachter: Teilt die CPU zu
Scheduler: Plant CPU Zuteilung so das :
- kein Prozess die CPU als Geisel nimmt
- wer als nächster kommt und schaltet zwischen Prozesse um
Prozess können wir aus Sicht der Warteschlangen-Diagramm :
- Beschreibt wo sich ein Prozess befindet
- Mehrere Prozesse können sich im gleichen Zustand befinden -->"Not Running" und würden somit in der Warteschlange
Zustandsmodell:
- Beschreibt den momentanen Zustand eines Prozesses
new - Prozess ist erzeugt, aber noch nicht gestartet
ready - Prozess kann ausgeführt werden
running -Prozess wird gerade ausgeführt (ist aktiv)
blocked - Prozess wartet auf Ereignis z.B I/O etc.
suspend blocked - Prozess wurde ausgelafert, wartet auf Ereignis
suspend ready - Prozess ist ausgelagert aber bereit für Aktivierung
Prozesse Threads
Erklären können, wie Prozesse beschrieben, gesteuert und verwaltet werden
Das Betriebssystem unterhält & verwaltet verschiedene Tabellen für die Verwaltung von Prozessen & Ressourcen
- Speicher Memory Tabellen
- Geräte I/O Tabellen
- Files File Tabellen
- CPU Prozess Tabellen
Prozess Image besteht aus
- Benutzerprogramm (Code) , Daten, Stack, Heap
- Kontext, im (PCB) Prozesskontrollblock gespeichert
Das BS hat nur Zugriff auf Prozessdaten, wenn der Prozessimage teilweise im physikalischen speicher steht.
Prozessimage sind im virtuellen speicher abgelegt und werden mittel MMU auf der physikalischen speicher abgebildet
Prozesse Threads
Die verschiedene Arten der Betriebssystemausführung aufzählen und diskutieren können
Kernel mit eigenem Kontext (ältere BS)
- nur Benutzerprogramme sind Prozesse
- innerhalb eines Benutzer-Prozesskontextes wied nie Betriebssystemcode ausgeführt
- Betriebssystemcode
- eigenständiges Programm mit eigenem Kontext
- wird im System Mode ausgeführt
BS-Funktionen im Kontext der Benutzerprozesse
- Context Switching meist ausserhalb von Prozessen
- BS stellt "nur Funktionen" zur Verfügung
- Betriebssystemcode im Kontext des Benutzerprozesses
- System Calls, Interrupts, Traps
- CPU schaltet in System Mode, Ausführung aber im Benutzerkontext
Prozessbasiertes Betriebssystem
- BS ist eine Sammlung von Systemprozessen
- kleine Anzahl von Systemfunktionen (Prozesswechsel, IPC)
- grösere Kernel Funktionen sind eigenständige Prozesse
Vorteile
- Fördert modulare BS Implementation mit sauberen Schnittstellen
- nicht kritische Funktionen problemlos als Prozesse implementierbar
- implementieren z.B. Funktionen, die nicht einen speziellen Service anbieten, sondern allgemeiner sind: accounting
- gut geeignet für Multiprozessorsysteme
- schlanker Kernel
- leicht erweiterbar
Prozesse Threads
Den Unterschied zwischen Thread und Prozess erklären und diskutieren können
Prozess : unit of resource ownership
- Schwergewicht Prozesse
- virtueller Adressraum, Programmcode, Daten, Betriebssystem-BRessourcen
- single-thread of execution
Thread : unit of scheduling
- leichtgewicht prozess
- immer an Prozess gebunden
- unabhängiges Stück Code innerhalb eines Prozesses
- teilt sich mit anderen Threads: Adressraum, Daten, Kontext
- hat eigene: lokale Variablen, Register, PC, Stack, Stackpointer
- speichert Threadkontext wenn inaktiv
Multithreading --> mehrere Threads pro Prozess
Vorteile :
- Threadwechsel weniger aufwendig --> günstig
- Aufgabenteilung
- unterstützt Multicore-Prozessoren
Prozesse Threads
Das Threadverhalten erklären und diskutieren können
Wir wissen das aus einen Prozess mehrere Threads entstehen können. Dies erlaubt uns die arbeiten innerhalb eines Prozess auf mehrere Threads aufzuteilen oder uns nur auf bestimmte Aufgaben zu konzentrieren wenn uns Bedingungen gegeben werden.
Threads werden gebraucht bei :
- DatenServer bei mehreren Anfragen gleichzeitig zu verarbeiten
- Befehle im Hintergrund auszuführen
- Parallelverarbeitung mit viel Kommunikation
- Programme mit Vorder- und Hintergrundaktivitäten
- Repetitive nummerische Aufgaben
Prozesse Threads
Threadtypen kennen und diskutieren können
User Level Threads
- Kernel weiss nicht, das dies ein Thread ist
- Laufen im Benutzerbereich
- Realisiert mit Bibliotheken
- Anwendung verantwortlich für Threadmanagement
- Threadsheduling applikationspezifisch wählbar
- Bei Blockade --> Prozess blockiert
Kernel Level Threads
- Kernel weiss, das es Threads gibt
- Kernel stellt Systemfunktionen für Threadverwaltung zu Verfügung
- API zu Threadfunktionen im Kernel
- Kernel verwaltet KOntextinformationen von Prozessen und Threads
- Threadwechsel erfordert Intervention des Kernels
- Thread is ein Schedulierbare Einheit
- Thread können auf mehreren Prozessoren verteilt werden
- light weight prozess
Prozesse Threads
Vor- und Nachteile User-Level Threads
+
- Threadwechsel involviert Kernel nicht
- Läuft auf jedem BS ( Bibliothek)
- Schedulingverfahren kann anwendungsspezifisch gewählt werden
- schnell und einfach
-
- Die meisten System Calls blockieren --> Prozess blockiert und damit auch die anderen Threads des Prozesses
- NUr der Kernel kann Prozesse den Prozessoren zuweisen, d.h Parallelverarbeitung nicht möglich