BSY - Betriebssysteme
Betriebssysteme
Betriebssysteme
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Was versteht man unter Multithreading?
Mehrere Threads pro Prozess
Was sind die Vorteile von Threads?
- Threadwechsel weniger aufwendig bzw. billiger
- Aufgabenteilung
- Unterstützt Multicore-Prozessoren
Was ist Single Threading?
Das BS kennt das Konzept des Threads nicht.
Warum werden Threads verwendet?
- Kann schnell erzeugt und verwendet werden. Er braucht nur Stack und Speicher für die Register
- Threadweschsel sind schnell
- Threads benötigen wenig Ressourcen, keinen neuen Adressraum, keinen eigenen Datenbereich oder Programmcode und keine zusätzlichen BS-Ressourcen.
=> Thread ist "billig"
Wo kommen Threads zur Anwendung?
- Daten Server
- mehrere Anfragen "gleichzeitig" innerhalb kurzer Zeit bearbeiten
- pro Anfage ein Thread ist effizienter als ein Prozess
- Spreadsheet
- Ein Thread behandelt Anzeige und Input
- ein Thread fürht Befehle aus (im Hintergrund)
- Parallelverarbeitung mit viel Kommunikation
- Zugriff auf gemeinsame Datenbereiche ist effizienter
- Matrixmultiplikation auf mehrere Threads verteilen
- Programme mit Vorer- und Hintergrundaktivitäten
- z.B. in regelmässigen Abständen Daten sichern
Wo ist eine Anwendung von Threads ungeeignet?
Wenn kein Multiprozessing notwendig ist doer wenn mehrere Prozesse notwendig sind, z.B. Sicherheit, etc.
Welche Zustände kann ein Thread haben?
- New
- Ready
- Running
- Blocked
- Stopped
Warum gibt es bei Threads keinen Zustand Suspend?
Weil alle Threads im gleichen Adressraum sind.
Was geschieht mit den Threads, wenn ein Prozess terminiert?
Alle Threads terminieren.
Was geschieht, wenn ein Thread blockiert?
- user level threads: der Prozess blockiert
- kernel level threads: der Thread blockiert
Welche Thread-Typen gibt es?
- User-Level Threads (ULT)
- Kernel-Level Threads (KLT)
Was ist ein User Level Thread (ULT)?
Hierbei ist die Anwendung verantwortlich für das Threadmanagement (Bibliotheksfunktionen)
Theradwechsel benötigt keine Kernel Mode Privilegien und Threadscheduling ist applikationsspezifisch wählbar
Thread Bibliothek
- Speichern und Rückspeichern des Threadkontextes
- Threas erzeugen und beenden
- Scheduling
Was macht der Kernel bei User-Level Threads?
Der Kernel weiss nichts von Threadaktivitäten, kontrolliert aber nach wie vor die Prozessaktivitäten
Thread macht ein System Call. Der ganze Prozess blockiert, auch die anderen Threads dieses Prozesses. Die meisten System Calls haben diese Wirkung.
Aus Sicht des Threadscheduliers ist der Thread nach wie vor am Laufen. Die Thread Zustände sind unabhängig von Prozesszuständen.
Threads können nicht unterbrochen werden. Sie können nur freiwillig die Kontrolle über CPU abgeben.
Was sind die Vor- und Nachteile von User-Level Threads?
Vorteile:
- Threadwechsel involviert Kernel nicht
- Läuft auf jedem BS (Bibliothek notwendig)
- Schedulingverfahren kann anwendungsspezifisch gewähtl werden, aber oft nicht preemptive
- Schnell und einfach
Nachteile:
- Die meisten System Calls blockieren. Prozess blockiert und damit auch die anderen Threads des Prozesses
- Nur der Kernel kann Prozesse zuweisen, d.h. Parallelverarbeitung ist nicht möglich
- Page Fault eines Threads blockiert ganzen Prozess
Was sind Kernel Level Threads (KLT)?
Thread Management geschieht durch Kernel.
- Keine Bibliothek, sondern API zu Threadfunktionen des Kernels
- Kernel verwaltet Kontextinformationen von Prozessen und Threads
- Threadwchsel erfordert Intervention des Kernels
- Schedulierbare Einheit: Therad
- Threads können auf mehrere Prozessoren verteilt werden
Was sind die Vor- und Nachteile von Kernel-Level Threads?
Vorteile:
- Kernel kennt alle Threads. Ein Prozess mit 10 Threads kann anders behandelt werden als ein Prozess mit einem Thread
- Scheduling auf Thread Basis
- geeignet für Anwendungen, die häufig blockieren, z.B. Server mit viel Interprozesskommunikation.
- Kernelfunktionen können selbst Multithreaded sein
- geeignet für SMP
Nachteile:
- Threadwechsel innerhalb eines Prozesses durch Kernel kostet 2 Mode Switches
- spürbarer Overhead und höhere Kernelkomplexität. Jeder Thread benötigt Thread Control Block (TCB)
- sprürbar langsamer bei 1 CPU
Was geschieht bei einer Kombination von KLT und ULT?
Therads werden im User Space erzeugt. Scheduling und Synchronisation geschehen hauptsächlich im User Space.
Programmierer kann zur Optimierung die Anzahl KLTs anpassen.
Threads verwenden gemeinsame Ressourcen. Was ist dabei ein Problem?
Es gibt keinen Schutz der Daten gegen unbeabsichtigten Zugriff.
Was ist eine Synchronisation von Threads?
Koordination der Ausführung von Threads. Es garantiert die Datenkonsistenz (keine Race-Conditions)
Was ist eine Race Condition?
Gleichzeitiger Zugrif von 2 oder mehr Threads, davon 1 Schreibzugriff.
Erkläre den Begriff Monitor und gib ein Beispiel für einen komplexen Monitor.
Ein Monitor ist ein Programm, welches bei Hardwre-Reset des Prozessors gestartet wird. Er initialisiert Interruptvektoren und die Kommunikation mit dem Anwender (beides nur falls vorhanden) und, in komplexeren Systemen, Speicher / IO-Schnittstellen, Cache, MMU, Disk-Controller, etc.
Ausserdem stellt er Debugging Hilfen und einfache Funktionen zur Verfügung.
Beispiel: BIOS bei PCs
Erkläre den Begriff Monitor in Zusammenhang eines Batch-Systems. Was macht der Monitor? Was machen die Monitor-Instruktionen?
Der Monitor liest Job um Job vom Eingabegerät und legt den Job im Anwenderprogramm-Bereich ab.
Die Monitor-Instruktionen starten das Anwenderprogramm und warten auf die Instruktion "END OF PROGRAMM" oder auf Fehler.
Was geschieht bei der Batch-Verarbeitung?
Der resident Monitor steuert den Ablauf, der immer im Speicher steht.
Hilfsfunktionen, etc. werden nach Bedarf mit Anwenderprogrammen geladen.
Wenn ein Job in den Speicher geladen wurde wird die Kontrolle an den Job abgegeben. Sobald der Job terminiert, geht die Kontrolle zurück an den Monitor (Bei END OF PROGRAM oder Fehler).
Die Resultate werden an entsprechende Ausgabegeräte weitergegeben.
Was weisst du über Uniprogramming in Bezug auf Batch Systeme?
I/O Operationen sind langsam im Vergleich zur Ausführung von Instruktionen (CPU oft idle).
Programme mit vielen I/O Operationen verbingen die meiste Zeit mit Warten und die CPU-Auslastung ist sehr schlecht.
Was weisst Du über Multiprogramming in Bezug auf Batch Systeme?
Mehrere Programme sind im Speicher. Während ein Programm auf I/O Operationen wartet, führt der Monitor ein anderes Programm aus (interleaving, concurrent).
Dies benötigt HW-Unterstützung:
- I/O Interrupts und (wenn möglich) DMA, damit Instruktionen während I/O Operationen ausgeführt werden.
- Speicherverwaltung (Memory Management) um mehrere lauffähige Jobs im Speicher zu halten.
Und SW-Unterstützung:
- Scheduling, damit klar ist, welcher Job als nächstes ausgeführt wird.
- Steuerung und Kontrolle des Zugriffs auf Ressourcen, um Konflikte zu vermeiden, bzw. zu lösen.
Welche HW-Unterstützung benötigt Multiprogramming?
- Interrupts
- Programmunterbruch -> Programmumschaltung möglich
- Timer
- verhindert, dass Job unendlich lange läuft
- time-out Interrupt -> Rückkehr in Monitor
- Speicherschutz
- Anwenderprogramm kann nicht versehentlich in Speicherbereich des (residenten) Monitors schreiben.
- Privilegierte Instruktion
- Nur vom Monitor ausführbar, z.B. I/O Instruktionen
- von den meisten modernen Prozessoren (und BS) unterstützt
Was ist ein Batchsystem?
Die ersten Betriebssysteme waren Batchsysteme.
Wie funktioniert ein Batchsystem?
Der Anwender übergibt einen Job (Lochkarte oder Band) an den Operator. Der Operator reiht mehrere Jobs sequentiell in einem Eingabegerät auf. Das nennt man dann Batch.
Ein spezielles Programm, der Monitor, kontrolliert die Ausführung der Jobs im Batch (sequentielle Verarbeitung).
Der für die Steuerung wichtige Teil des Monitors nennt man Resident Monitor. Er ist immer im Speicher.
Hilfsprogramme werden nach Bedarf geladen.
Erkläre den Begriff Time Sharing.
Bei Batch Multiprogramming ist keine Interaktion mit dem Anwender möglich.
Time Sharing erweitert Multiprogramming. Es ermöglicht die gleichzeitige (concurrent) Ausführung mehrerer interaktiver Programme. Die CPU-Zeit wird auf mehrere Benutzer verteilt und es ist ein "gleichzeitiger" Zugriff durch mehrere Benutzer möglich.
Nenne 3 Gründe weshalb Time Sharing Systeme funktionieren.
- Der Mensch hat "lange" Reaktionszeiten
- TSS benötigen ca. 2 sec. Rechenzeit pro Minute
- Der Anwender erhält Rechenleistung nur für gewisse Zeitdauer
Fazit:
ca. 30 Anwender könnten ohne wahrnehmbare Verlängerung der Reaktionszeit (<= 100ms) das System gemeinsam nutzen.
Weil es mehrere Benutzer gibt, wird aber ein Schutz des File Systems und des Arbeitsspeichers notwendig.
Was wird durch Time Sharing Systeme notwendig und weshalb?
Schutz des File Systems und des Arbeitsspeichers, da es mehrere Benutzer gibt.
Das erste Time Sharing System am MIT war das CTSS (Compatible Time Sharing System).
Was weisst du darüber?
Das CTSS war sehr einfach im Vergleich zu heutigen TS-Systemen.
- Monitor war klein
- Jobs immer vollständig in Speicherbereich geladen
- Auslagern von suspendierten Jobs nur wenn notwendig
- max. 32 Benutzer
Vergleiche Uni- und Multiprogramming Batch Systeme und Time Sharing Systeme miteinander.
Uniprogrammed Batch System
- Job aus Batch im Speicher
- sequentielle Verarbeitung der Jobs
- Monitor zur Steuerung, keine Interaktion mit Anwender
Multiprogrammed Batch System
- mehrere Jobs im Speicher
- benötigt Scheduler, Interrupts und Speicherverwaltung
Time Sharing System
- Gleichzeitige Verarbeitung mehrerer interaktiver Jobs
- benötigt Schutz des Filesystems und des Arbeitsspeichers
- benötigt Mutex (gegenseitiger Ausschluss), z.B. Zugriff auf Drucker
Frühere Betriebssysteme hatten einige Probleme. Zähle 4 davon auf.
- nichtdeterminischtisches Programmverhalten
- Das Resultat der Berechnung war abhängig von anderen aktiven Programmen.
- Gegenseitiger Ausschluss
- mehr als ein Programm greift gleichzeitig auf Ressource zu
- Synchronisation
- Signale beim Warten verloren.
- Deadlocks
- Programme warten gegenseitig, z.B. auf Freigabe von Ressourcen
Zähle die 5 Grundkonzepte moderner Betriebssysteme auf.
- Prozesse
- Scheduling und Ressourcenverwaltung
- Datenmanagement
- Speicherverwaltung
- File-Systeme
- Schutz und Sicherheit
- System-Architektur
Prozess ist ein Grundkonzept moderner Betriebssysteme. Was versteht man unter einem Prozess?
Das Programm in Ausführung.
Scheduling ist eines der Grundkonzepte moderner Betriebssysteme. Was versteht man darunter?
Die Zuteilung von Rechenleistung. Das Betriebssystem unterhält dafür Queues (Wartelisten).
Für das Scheduling unterhält das Betriebssystem Queues (Wartelisten).
Zähle diese auf.
- Ready Queue
- Prozesse warten im Speicher auf CPU
- Wait Queues
- Prozesse warten auf entsprechendes I/O Gerät oder I/O Operation
- Long Term Queue
- Prozesse warten auf Zulassung zum System
- Lässt beschränkte Anzahl von Prozessen zu
Ressourcenverwaltung ist ein Grundkonzept moderner Betriebssysteme. Was versteht man darunter und was berücksichtigt sie?
Die Verwaltung und Zuteilung von Ressourcen.
Sie berücksichtigt:
- Fairness
- Alle Prozesse haben grundsätzlich gleiche Zugriffsrechte
- differenzierte Behandlung
- verschiedene Klassen von Prozessen berücksichtigen globale Aspekte
- z.B. Prozesse, die auf I/O Daten warten, sofort einplanen, wenn Daten verfügbar
- Effizienz
- max. Durchsatz, min. Antwortzeit
- möglichst viele Benutzer bedienen
Speicherverwaltung ist eines der Grundkonzepte moderner Betriebssysteme. Was beinhaltet sie?
- Prozessisolation
- Kein gegenseitiger Zugriff auf Speicher und Daten möglich
- automatische Speicherallokation
- Programmierer muss sich nicht um Speicher kümmern
- Betriebssystem weist Speicher nach Bedarf zu
- Schutz und Zugriffskontrolle
- Zugriffskontrolle und Schutz bei gemeinsamer Nutzung des Speichers
-
- 1 / 162
-
Lernkarten
Was ist eine Synchronisation von Threads?
Koordination der Ausführung von Threads. Es garantiert die Datenkonsistenz (keine Race-Conditions)
Was ist eine Race Condition?
Gleichzeitiger Zugrif von 2 oder mehr Threads, davon 1 Schreibzugriff.