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


K. S.
Diese Lernkarten behandeln grundlegende Konzepte von Betriebssystemen auf Universitätsniveau, mit Fokus auf Prozesse, Threads, Speichermanagement und I/O-Operationen. Sie erklären die Unterschiede zwischen Prozessen und Threads, deren Verwaltung und Scheduling, sowie die Interprozesskommunikation und verschiedene Arten der Betriebssystemausführung. Die Karteikarten sind besonders nützlich für Studierende der Informatik, die ein tieferes Verständnis der Funktionsweise von Betriebssystemen erlangen möchten.
Cartes-fiches
62
Utilisateurs
6
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
22.06.2019 / 04.09.2023

Cartes-fiches

Scheduling

Problemstellungen um Scheduling kennen und diskutieren können

Problemstellung: Das grösste Problem des Scheduler ist, dass die benötigten Betriebsmittel für die einzelnen Prozesse nicht im Vorfeld bekannt sind. Darum lässt sich keine optimale Planung erstelle, sondern der Scheduler muss dynamisch auf geänderte Anforderungen reagieren.

Scheduler regelt die zeitliche Ausführung mehrere Prozesse in Betriebssystemen. Man kann in grob in unterbrechende(preemptive) und unterbrechende(nonpreemptive) aufteilen.

System und ihre Anforderungen an den Scheduler:

Batch-Systeme:

Ankommende Aufträge werde in eine Warteschlage eingereiht und jedes Mal, wenn in Job abgearbeitet ist, kommt der nächste aus der Schlange dran.

Interaktive Systeme (Desktop PC)

Der Benutzer legt Wert auf kurze Antwortzeit. Wenn er beispielweise in einem Texteditor eine Tastatureingabe tätigt, sollte der Text sofort erscheinen.

Real Time Systeme:

Das System muss garantieren, dass ein Prozess eine Aufgabe innerhalb einer vorgegebenen Zeitspanne abgearbeitet haben muss.

Hard --> in 100% Fällen garantiert

Soft --> Zeitlimit darf in kleinen Prozentsatz der Fälle überschritten werden.

Scheduling

Die wichtigsten Scheduling Algorithmen aufzählen, erklären und diskutieren können.

Man kann in grob in unterbrechende(preemptive) und unterbrechende(nonpreemptive) aufteilen.

Bewertungskriterien:

Antwortzeit: Wie lange geht es bis Task reagiert?

Durchsatz: Wie viel Tasks pro Zeit werden verarbeitet?

Fairness: werden Tasks vernachlässigt?

Starvation: können Tasks nie an die Reihe kommen?

Implementierung/Overhead: wie aufdenig ist die Implementierung des Verfahrens?

Nonpreemptive Scheduling

  • First Come First Served: Prozesse in ihrer Reihenfolge ihres Eingangs bearbeiten. Neuzuteilung der Prozess findet wieder statt, wenn der laufende Prozess zu warten beginnt oder seine Ausführung beendet ist.
  • Shortest Job First: Die kleine Prozesse werden bevorzugt.Es lässt sich in Fällen einsetzen, in denen die benötigte Rechenzeit für die einzelne Aufgaben aus Erfahrungswerten gut vorhergesagt werden kann
  • Priority Scheduling:Bei dieser Strategie wird jedem Prozess eine Priorität zugeordnet. Die Abarbeitung erfolgt dann in der Reihenfolge der Prioritäten.Diskussion: Prozesse mit tiefen Prioritäten können verhungern, mögliche Abhilfe --> dynamische Prioritäten, Prioritäten in Funktion der zeit anpassen.

Preemptive Scheduling

  • Round Robin:  Wie bei FCFS aber mit kurzen zeitspannen(q). Einem Prozess wird die CPU für eine Zeitspanne zugeteilt.
  • Multilevel Scheduling: In üblichen Systemen verschiedene Arten von Jobs: batch, interaktiv, systembezogen, rechenintesivJobs erhalten je nach Art verschiedene Prioritäten, für jede Priorität eine Queue, Scheduler wählt immer Jobs mit höchster Priorität
  • Multilevel Feedback Scheduling: Bei diesem Verfahren gibt es mehrere Warteschlangen unterschiedlicher Priorität. Prozesse werden in Abhängigkeit von ihrem bisherige Ressourcenverbrauch dynamisch in eine dieser Warteschlangen eingeordnet

Scheduling

Die Scheduling Verfahren der wichtigsten Betriebssysteme erklären und diskutieren können.

Unix Scheduling TRADITIONELL

Prioritäten:

  • Basiert auf Prozesstyp und Geschichte (verbrauchte CPU-Zeit)
  • Tiefer Wert = hohe Priorität

CPU und nice Komponenten so gewählt, dass Prioritätsband nicht verlassen werden kann.

Während dem Laufen:

        Wird ein Prozess mehrmals vom Zeitgeber unterbrochen(60 mal pro Sekunde)

        Der Usage Counter wird jeweils inkrementiert zu Beginn des Zeitintervalls

 

 

Unix fair Share Scheduling (FSS)

Versucht die CPU fair auf die verschiedenen Gruppen von Prozessen zu verteilen. Wenn beispielweise 4 Benutzer gleichzeitig jeweils einen Prozess ausführen teilt der Scheduler die verfügbaren CPU-Zyklen so, dass jeder Benutzer 25% aller Zyklen bekommt.

Scheduling

Problemstellungen um Real-Time Scheduling kennen und diskutieren können

Real Time Systeme (Robotik, Laborexperimente, Luftfahrt usw.)

Systeme die auf Ereignisse in der „äusseren Welt“ reagieren, Ereignisse finden in der „reellen Zeit“ statt. Es gibt Hard und Soft Real Time Systeme

Typische Eigenschaften:

  • zeitkritische Tasks wiederholen sich in regelmässigen Abständen
  • Dauer und die benötigten Betriebsmittel sind bekannt

Systeme verhalten sich korrekt, wenn

  • Das logische Resultat einer Berechnung stimmt
  • Das Resultat zum richtigen Zeitpunkt ausgeliefert wird

Hard Real Time Systeme(Flugzeugsteuerung, Landeanflug)

  • Deadlines müssen eingehalten werden, sonst Ausfall des Systems

Soft Real Time Systeme (Bank überweisung)

                Deadlines sollten eingehalten werden, sonst schwerwiegende Konsequenzen

3 Real Time Task Klassen

  • Kritische Tasks(periodische, asynchrone, sporadische Tasks)
  • Nicht kritische, aber notwendige Tasks
  • Nicht notwendige Tasks(nice to have)

Scheduling

Die wichtigsten Real-Time Scheduling Algorithmen aufzählen, erklären und diskutieren können 

Rate Monotonic Scheduling (RMS)

Für unterbrechbare, periodische Jobs. Die Prioritäten werden statisch anhand Periodendauer eines Jobs festgelegt, je kürzer Periodendauer eines Jobs, desto höher ist seine Priorität.

Task müssen unterbrechbar, periodisch und unabhängig sein.

Was ist daran so interessant? Grenze für erfolgreiches Scheduling kann berechnet werden.

Rechenzeit(C)/Periode(T) = Auslastung(U≤1)à zu optimistisch, nur bei perfektem Schedule möglich

Korrekter Scheduler für n Tasks

Garantiert bei Einhaltung folgender Grenze

Bei Einhaltung obiger Grenze:

                Schedule immer garantiert, aber eher konservativ für grosse n für 70% CPU Auslastung

Deadline Scheduling

Idee: Tasks zum richtigen Zeitpunkt starten resp. Beenden

Funktionsweise: Alle zu dem betrachteten Zeitpunkt bereitstehende Task werden nach aufsteigenden Fertigstellungsterminen geordnet.

Der Task der als erste fertig sein muss erhält den Prozessor,

 

RT-Linux

Antwortzeiten in der Grössenordnung von Mikrosekunden

  • Abhängig von Treibern: wie lange wird die CPU blockiert
  • Abhängig von anderen RT-Tasks

Kritische real-time Tasksà foreground tasks

                Threads

                Direktzugriff auf Hardware & Interrupts

Nicht kritische Tasksà background tasks

                Linux tradionell asl taks

                Visualisierung

                Vernetzung etc.

Synchronisation

Problemstellungen um Parallelverarbeitung kennen und diskutieren können  

Beispiel Vorlesung, Milch Kaufen gehen 2 Mitbewohner "Kühlschrank-Problem"

Race Condition

  • Mindestens 2 Tasks greifen auf gemeinsame Daten zu
  • Mindestens 1 Zugriff ist ein Schreibzugriff
  • Das Resultat hängt von Ausführungsreihenfolge der beteiligten Tasks ab

Mögliche Abläufe der Programme

  • Unabhängig
    • Keine gegenseitige Beeinflussung
    • Nutzung verschiedener Ressourcen
    • Keine Synchronisation/Koordination notwendig
  • Abhängig
    • Programm kooperieren
    • Nutzen Daten und Ressourcen gemeinsam
    • Zugriff muss synchronisiert bzw. koordiniert werden

Synchronisation

Das Konzept des kritischen Abschnitts erklären und diskutieren können 

Lösung für Kühlschrankproblem --> kritischer Abschnitt (abschliessbarer Kühlschrank, der, der einkaufen geht hat den Schlüssel)

Taskzugriff auf gemeinsame Daten/Ressourcen --> Task befindet sich in seinem kritischen Abschnitt

Aufenthalt im kritischen Abschnitt, muss gegenseitig ausschließend seinà zu jedem Zeitpunkt befindet sich höchstens ein Task im kritischen Abschnitt

Zutritt zum kritischen Abschnitt --> nur über „Erlaubnis“

Gegenseitiger Ausschluss --> Mutual exclusion = Mutex

 

Support für gegenseitigen Ausschluss muss folgende Anforderungen erfüllen:
- nur ein Task darf sich in seinem kritischen Abschnitt aufhalten (Tasks aus der
Menge der Tasks, die auf die gemeinsamen Daten oder Ressourcen Zugriff
haben)
- ein Task, der sich nicht im kritischen Abschnitt befindet und anhält, darf dies
nur tun ohne andere Tasks zu beeinflussen
- wartet ein Task auf Eintritt in den kritischen Abschnitt, muss ihm dieser irgend
wann auch gewährt werden
- wenn sich kein Task im kritischen Abschnitt befindet, muss jedem Task der in
den kritischen Abschnitt eintreten möchte, sofort Eintritt gewährt werden
- es dürfen keine Annahmen zur Abarbeitungsgeschwindigkeit von Tasks oder zur
Anzahl Prozessoren gemacht werden
- ein Task bleibt nur für eine endliche Zeit in seinem kritischen Abschnitt

Synchronisation

Mechanismen für die Implementation von kritischen Abschnitten und zur Lösung von Synchronisations-problemen aufzählen und erklären können 

  • Softwarelösung
  • Semaphore
  • Monitore

  • Reine Softwarelösungen
    • Software-Algorithmen, deren Korrektheit von keinen weiteren Bedingungen abhängt
  • Hardwarelösungen
    • Unterstützung durch spezielle Maschineninstruktionen
  • Lösungen mit Hilfe des Betriebssystems
    • stellen dem Anwender Funktionen und Datenstrukturen zur Verfügung
    • Semaphore, Mutexes, etc.
  • Lösungen zusammen mit Programmiersprache
    • Monitore, z.B. Java

Software Lösung 1

Mittels Busy Wait:

  • Task wartet aktiv
  • Er konsumiert Rechenzeit, bis Scheduler einen Task-Switch durchführt
  • Wird auch Spinnlock genannt

Diskussion:

  • Gegenseitiger Ausschluss wird zwar erreicht, aber Tasks können nur abwechselnd den kritischen Abschnitt durchlaufen

Semaphore

Der Semaphor ist eigentlich eine Datenstruktur(integer), die zugriff erlauben und verweigern kann auf eine Ressource in einer Multi-Processing Umgebung.

Operationen auf Semaphore:

  • Wait(S) Semaphor schliessen auch P(S), down(S)
  • Post(S) Semaphor öffnen auch V(S), Up(S),signal(S)

Vorteile:

  • Kein Busy wait
  • Wartende Tasks
    • In Queue eingereith
    • Blockieren bis Sperre Frei

Probleme:

  • Wait(s) & post(s) ev. Über mehrere Tasks verteilt
    • Schwierig den Überblick zu behalten à fehleranfällig
    • Fehler schwierig zu finden, treten nur unter bestimmten Bedingungen auf
    • Anwendung muss in allen Tasks korrekt sein

Monitore

Ist ein Softwaremodul, die Daten Prozeduren und eine Initialisierungssequenz enthält. Jedes Java Objekt ist ein Monitor. Eingänge in den Monitor sind synchronized Methoden

Funktionsweise:

  • Zugriff auf lokale Variable nur über Monitormethoden
  • Zutritt in Monitor mit Aufruf einer dieser Methoden
  • Nur ein Task kann Code innerhalb des Monitors ausführen
  • Andere Tasks: warten auf Eintritt, warten auf Bedingung im Wartebereich

 

Synchronisation

Hardwareunterstützung für Synchronisationsmechanismen erklären und diskutieren können

Unterstützung durch Prozessorhardware (Hardware unterstützt nur, ist keine Lösung!)

Verhindert, dass laufende Programme an beliebigen Stellen unterrbrochen werden können

Möglichkeiten:

  • Interrupt ausschalten
    • Problematisch in Multicore-Systemen
  • Atomare Instruktionen für
    • TAS: Test and Set
    • CAS. Compare And Swap
  • Neu: Transactional Memory(HW noch eher experimentell)

Interrupt ausschalten

  • Nur auf Uniprozessoren möglich bzw. sinnvoll, Performancebusse à kein Multiprogramming
  • Wird in Kernelprogrammierung angewendet
    • Kernel dürfen nur an sicheren Stellen unterbrochen werden
    • Unterbrüche, aber nur kurz

Idee: Nur Interrupts könne Instruktionsfluss unterbrechen, einfach zu implementieren, realisiert MUTEX

Interrupt abschalten -> keine Unterbrechungen -> mutual exclusion garantiert

InterruptOFF(); kritischeAbschnitt();InterruptOFF();)

Test and Set

Idee: Zutritt zu kritischem Abschnitt Lösung: Sperrvariable(Lock) gleichzeitig lesen & setzen

  • „Anfragen und Sperren“ nicht unterbrechbar
  • Sonst inkonsistente Sichten möglich

Funktionalität:

Initialisierung: lock = false -> offen

Rückgabewert:

                False, wenn „Test and Set“ erfolglos bzw. das Lock gesperrt war

                True, wenn „Test and Set“ erfolgreich bzw. das Lock offen war

Synchronisation

Die Begriffe Deadlock und Starvation erklären und diskutieren können

Deadlock (Verklemmung)
• Tasks warten gegenseitig auf Freigabe von Ressourcen
• kein Task arbeitet weiter
 Livelock (Threshing)
• Tasks arbeiten, aber Arbeit ist nicht produktiv
• Arbeit: ungewollter busy wait
Starvation (Verhungern)
• Prozess erhält keinen Zugriff auf Ressource(n)
• Ursache, z.B. unfaire Zuweisungspolicy: FILO (Stack)
• Abhilfe: nur faire Policies verwenden, z.B. FIFO

 

Synchronisation

Möglichkeiten zur Verhinderung von Deadlocks kennen und diskutieren können 

Voraussetzungen für einen Deadlock
1. Mutual exlusion
mindestens eine Ressource ist exklusiv reserviert
2. Hold and wait
mindestens ein Task hat eine Ressource exklusiv reserviert und wartet
auf weitere Ressourcen
3. No preemption
reservierte Ressourcen können dem Task nicht entzogen werden
(freiwillige Rückgabe nur, wenn Aufgabe gelöst)
4. Circular wait
geschlossene „Kette “ von Tasks existiert, in der jeder Prozess mindestens
eine Ressource reserviert hat, die auch von einem Nachfolger in der
Kette benötigt wird
• Auftreten eines Deadlocks
- Bedingungen 1-3 sind Vorbedingung, genügen aber nicht für einen Deadlock,
erst Bedingung 4 zusammen mit 1-3 konstitutiert einen Deadlock.
- Deadlock, wenn sich die Circular Wait Bedingung nicht lösen lässt
die Circular Wait Bedingung kann nicht gelöst werden, wenn Bedingungen
1, 2 und 3 gegeben sind
- alle 4 Bedingungen zusammen bilden eine notwendige und hinreichende
Bedingung für Deadlock

3 Möglichkeiten zur Verhinderung
• keine Deadlocks zulassen
- verhindern (prevention)
- vermeiden (avoidance)
• Deadlocks zulassen
- diesen Zustand lösen,
wenn er eingetreten ist
• das Problem ignorieren
- annehmen, dass kein
Deadlock auftritt
- "the ostrich algorithm"
- die meisten Betriebssysteme
inkl. UNIX, Linux, etc. verwenden diese Methode

Synchronisation

Ressourcengrafen erklären und diskutieren können

Stellen Ressourcenzuordnungn dar.

Ressourcengraf

- Kreise: Tasks

- Rechtecke: Ressourcen

- Pfeil von Ressource ->Task: Task hat Ressource alloziert

- Pfeil von Task -> Ressource: Task fordert Ressource an

- Ressourcen mit mehreren Instanzen: jede Instanz entspricht einem Punkt innerhalb des Rechtecks

 

• Deadlock existiert
- Prozess P2 wartet auf Ressource R2 , die von Prozess P3 gehalten wird
- Prozesse P3 wartet auf R3, die von den Prozessen P1 und P2 gehalten wird
- Prozess P1 wartet auf Ressource R1, die von Prozess P2 gehalten wird

Synchronisation

Abschätzen können, ob Deadlocks und Starvation kritisch oder unkritisch sind

Betriebssystem überprüft
• ob ein Deadlock aufgetreten ist
• falls ja
- Deadlock auflösen
- lauffähigen Zustand wiederherstellen

 Erkennen
• z.B. Verfahren von Coffman (siehe Stallings 5th ed., Brause)


Wann Überprüfung?
• wenn Task auf Ressource warten muss (eher zu aufwendig)
• z.B. jede halbe Stunde oder jede Stunde, etc.
• wenn CPU Auslastung unter bestimmten Wert (z.B. 40%) sinkt

 

Möglichkeiten zum Lösen von Deadlocks
1. alle beteiligten Tasks stoppen
2. alle beteiligten Tasks auf Checkpoint zurücksetzen
3. beteiligte Tasks der Reihe nach stoppen, bis Deadlock gelöst
4. beteiligten Tasks Ressourcen wegnehmen, bis Deadlock gelöst
Strategie zur Wahl von Tasks bei 3. und 4.
• Task, der am wenigsten CPU konsumiert hat
• Task, der am wenigsten Output produziert hat
• Task, der am wenigsten Ressourcen alloziert hat
• Task mit kleinster Priorität
• Task, der längste geschätzte Rechenzeit hat (?)

Interprozess Kommunikation

Den Begriff Interprozesskommunikation diskutieren können 

Interprozesskommunikation (IPC) bezeichnet verschiedene Verfahren des Informationsaustausches zwischen den Prozessen eines Systems.

2 Varianten von IPC:

  • Innerhalb eines System(1 BS)
    • Kommunikation zwischen Prozessräumen im gleichen Speicher
  • Zwischen verschiedenen Systemen(2 BS)
    • Kommunikation zwischen Prozessen über ein Netzwerk

Prozesse arbeiten zusammen um (für beide Datenaustausch notwendig):

  • Gemeinsam eine Aufgabe zu lösen
  • Gemeinsam Ressourcen zu nutzen

Gründe für Zusammenarbeit

  • Parallelverarbeitung
    • Leistungssteigerung (Rechenlast auf mehrere CPU verteilt)
    • Benutzerfreundlichkeit (mehrere Aufgaben gleichzeitig ausführen)
  • Vereinfachte Strukturierung von Anwendungen
    • Anwendungen in kleine Einheiten unterteilen
    • Einfachere Struktur (übersichtlich, geringere Fehleranfälligkeit)
  • Daten- und Informationsaustausch
    • Gemeinsame Datenhaltung
    • Client/Server Anwendungen
  • Echtzeitsysteme
    • Verschiedene Aufgaben müssen verschieden oft ausgeführt werden,aber gemeinsames Resultat notwendig

Interprozess Kommunikation

Das Erzeuger/Verbraucher erklären und diskutieren können 

Das Erzeuger/Verbraucher Problem thematisiert die Zugriffsregelung auf eine Datestruktu mit elemterzeugenden(schreibenden) und elemtverbrauchenden(lesenden) Prozessen.

Somit teilen sich zwei Prozesse einen Puffer mit fester Grösse.

Einer der Prozesse(Erzeuger) legt Informationen in den Puffer, der Verbraucher nimmt sie heraus.

Es soll verhindert werden das der Verabraucher den Puffer zugreift wenn dieser leer ist oder der Erzeuger auf diese Datenstruktur zugreift.

Eine mögliche Lösung dafür wäre, die Anzahl Nachrichten in einem Puffer mit einer Variable "count" zu verfolgen. Wenn count max ist geht Erzeuger schlafen und kann keine Nachricht mehr hinzufügen. Wenn count 0 ist geht Verbraucher schalfen und kann keine Nachricht entfernen.

Interprozess Kommunikation

Das Reader/Writer Problem erklären und diskutieren können

Man geht nun von der Situation aus, dass eine Menge von Lesern und Schreibern einen gemeinsamen kritischen Bereich betreten wollen. Dabei gilt es jedoch, folgende Bedingungen einzuhalten:

  • Im kritischen Abschnitt dürfen sich niemals Leser und Schreiber gleichzeitig aufhalten.
  • Im kritischen Abschnitt dürfen sich beliebig viele Leser gleichzeitig aufhalten.
  • Im kritischen Abschnitt dürfen sich niemals mehrere Schreiber gleichzeitig aufhalten

 

Eine Lösung dafür wäre mithilef eines Semaphors.

Eine Lösung bietet sich mit Hilfe eines Semaphors db an: Wenn ein Leser Zugriff auf die Datenbank bekommt, führt er ein down auf das Semaphor db aus. Wenn er fertig ist, führt er ein up aus. Solange mindestens ein aktiver Leser existiert, kann kein Schreiber in den kritischen Abschnitt eintreten. Ein Schreiber, der eintreten will, wird also solange stillgelegt, als es Leser im kritischen Abschnitt gibt. Falls jedoch fortlaufend neue Leser in den kritischen Bereich eintreten, kann es sein, dass ein Schreiber niemals Zugriff erhält. Er verhungert. Eine mögliche Lösung für dieses Problem besteht darin, dass ankommende Leser hinter bereits wartende Schreiber gestellt werden. Auf diese Weise braucht der Schreiber nur auf Leser zu warten, die vor ihm da waren, bis er zugreifen kann.

Interprozess Kommunikation

Message Passing erklären und diskutieren können

Grundfunktionen:

  • send(dest, message)
  • receive(src, message)
  • beide Funktionen können blockieren

 

Interprozess Kommunikation

Shared Memory erklären und diskutieren können

Bereich des physikalischen Speichers wird in den virtuellen Addressraum der Prozesse abgebildet.Shared Memory ist die schnellste Form der Interprozesskommunikation, da von 2 oder mehreren Prozessen ein bestimmter Speicherbereich gemeinsam benutzt wird, und somit das Kopieren zwischen Server und Clients nicht notwendig ist.

Shared Memory
• muss bei Betriebssystem angefordert werden
• keine implizite Synchronisation
- Synchronisation z.B. mit Semaphoren
• Zugriff sehr schnell: Speicherzugriff
• nur in Shared Memory Systemen verfügbar

Mittels Shared Memory können mehrere Prozesse auf einen gemeinsamen Datenspeicher zugreifen. Dies wird ermöglich, indem ein Prozess als Erstes ein gemeinsamen Datenspeicher anlegt. Dannach müssen Prozesse mit dem Datenspeicher bekannte gemacht werden um mit ihm kommunizieren zu können.

Dies geschiet indem der Speicherbereich im Adressraum der ensprechenden Prozesse eingefügt wird. Hier wird auch festgelegt wie sie auf ihn zugreifen können(lesen/schreiben).

 

Interprozess Kommunikation

Unix/Linux IPC Mechanismen kennen, erklären und diskutieren können  

TEST

Interprozess Kommunikation

Implementationsaspekte anhand der Unix/Linux IPC Mechanismen erklären und diskutieren können

test

Memory Management, Virtual Memory 

Sie können die Begriffe logische und physikalische Adresse erklären und diskutieren

Logische Adresse
• Referenz auf Speicherplatz, unabhängig von Speicherorganisation


Physikalische Adresse
• Referenz auf physikalischen Speicherplatz

Memory Management, Virtual Memory

Sie können erklären um was es beim Swapping geht  

Eine einfache Strategie , der Überlastund des Speichers zu begegnen, ist das sogenannte Swapping. Der Begriff bezieht sich auf die Datenverschiebung zwischen Arbeitsspeicher und Festplatte.

Swapping:.

  • auslagern eines Prozesses vom Speicher auf Disk resp. umgekehrt
  • gilt auch für Teile eines prozesses(virtual memory)

Heute: haben wir sehr viel Speicher zu Verfügung:

  • Es können sehr viele Prozesse im Speicher gehalten werden
  • der gesamte prozess kann im Speicher stehen

Memory Management, Virtual Memory

Sie können die grundlegenden Verfahren des Memory Managements aufzählen und diskutieren

• Zwei grundlegende Lösungsansätze


- einfaches Memory Management (basic memory management) --> kleine Systeme(Eingebettete Systeme, Echtzeitsystem etc.)

  •  ganzer Prozesse steht im Speicher
  •  traditioneller Ansatz
  •  Anwender oft selbst für Memory Management verantwortlich, z.B. mit overlays, etc.

-Virtual Memor(VM) --> grosse Systeme(Workstation,Server,PCs . etc.)

  • die aktiven Teile des Prozesses stehen im Speicher virtualisiert den Speicher
  • Anwender sieht gesamten Adressraum des Prozessors unabhängig von der Grösse des physikalischen Speichers
  • Betriebssystem verwaltet physikalischen Speicher transparent

Memory Management, Virtual Memory

Sie können Paging erklären und diskutieren 

Prozesse (logischer Adressraum) wird in Blöcke gleicher Länge aufgeteilt: Pages

Speicher (physikalischer Adressraum) wird in Blöcke gleicher Länge aufgeteilt: Frames

Pages werden von Memory Management Unit(MMU) auf Frames abgebildet.

 

Die Speicherverwaltung bildet Pages auf Frames ab:

  • Zuweisung beliebig
  • Frames müssen nicht zusammenhängen Block bilden -> Prozesse auf beliebige Frames verteilen

Wie weiss das Betriebssystem welche Frames zu welchen Prozess gehören?

-> Pro Prozess unterhält das Betriebssystem eine Page Tabelle

Liste mit freien Blöcken notwendig

Memory Management, Virtual Memory

Sie können die Adressbildung erklären

Man nimmt die ersten 6 Bit einer logischen Adresse und sucht den Wert in der Paging Tabelle. Dort speichert man den Wert der ersten 6 Bit der pysikalischen Adresse des entsprechenden Eintrages.

Memory Management, Virtual Memory

Sie können Segmentation erklären und diskutieren 

TEST

Memory Management, Virtual Memory

Sie können das Konzept des Virtual Memory erklären und diskutieren  

Vor Virtual Memory:

  • Musste der gesamte Prozess im Speicher stehen
  • Prozessgrössdr wird durch physikaliscchen Speicher bestimmt
  • Programmierer muss sich um Programmgrösse kümmern

Memory Management, Virtual Memory

Die können die Fetch, Placement und Replacement Policies erklären und diskutieren

TEST

Memory Management, Virtual Memory

Sie können die Page Replacementverfahren Optimal, LRU, FIFO und Clock erklären, diskutieren und anwenden 

TEST

Memory Management, Virtual Memory

Sie können Resident Set Management erklären und diskutieren und Sie können Algorithmen zur Verwaltung des Working Set erklären

TEST

I/O Management 

Die grundlegende I/O-Architektur erklären und diskutieren können 

Die wichtigsten Komponenten des Schichtenmodels sind die Device Drivers, standardisierte Schnittstellen zum Kernel I/O-Subsystem. Diese sind an die Gerätedetails angepasst und für initialisierung, lesen und schreiben der Daten zuständig. Es gibt keine vereinheitlich Schnittstellen für Device Driver in BS, jedes benötigt andere Treiber.
- Logical I/O der das Gerät als logische Resource betrachtet, Schnittstelle zur Benutzerprozess (API): read/write, put/get
- Device I/O wandelt angefordete Opertaionen in entsprechenden Sequenzen von I/O Instruktionen, Buffering
- Scheduling und Control, steuert den Ablauf der Interaktionen zwischen Gerät und Software, Interrupt Handling, I/O Status, etc.
- API bei den meisten Betriebsystemen und Geräten, zugriff wie auf Files open(), read(), write(), close()

I/O Management

Konzepte des Kernel I/O-Subsystems erklären können

Die wichtigsten Services des Kernels:
- I/O-Sheduling: I/O-Anfragen von Anwendungen erfolgen selten in optimaler Reihenfolge, das BS ordnet sie nach Anfragen und Optimierungskriterien. Performance, Fairness, Wartezeit.
- Buffering: Der Buffer fungiert als Temorärspeicher für Datenaustausch zwischen zwei Geräten oder Kernel und Applikation.
- Caching: Hält Kopien von Daten für einen schnelleren Zugriff
- Spooling: Ist ein Speicher mit Daten für Geräte die keinen überlappenden Datenströme erlauben, z.B. Drucker
- Reservation: Zugriffsreservation für nur exklusiv allozierbare Geräte, z.B. Tape, Scanner, Soundkarte, etc. 

I/O Management

Charakteristiken von I/O-Geräten aufzeigen und diskutieren können 

- Charakter (Byte) Streams vs, Block:
    Stream -> Datenübertragung Byte um Byte, z.B. serielle Schnittstelle, charakterischtes    Verhalten: spontan erzeugter Input
Zugriffsfunktionen: put(), get()
    Block -> Datenübertragung als Block von Bytes, z.B. Disk, charakteristisches Verhalten:          random access. Zugriffsfunktionen: read(), write(), seek()
- Netzwerkgeräte: Unterscheiden sich wesentlich von Disk, in Adressierung und Performance, zugriff meist über Sockets
- Sequentiell vs. Random Access: Datenübertragung in bestimmter Reihenfolge, die Anwendung bestimmt, welche Daten gelesen werden sollen.  

I/O Management

Die Linux Treiber-Architektur erklären können

Linux besitzt einen monolithischer Kernel, der ladbare Module besitzt die manuell oder on demand geladen werden können. Diese Module sind stapelbar und geladene Module sind teil des Kernels. Treiber gehören ebenfalls zum Kernel und werden als Module realisiert.

I/O Management

Problemstellungen bezüglich Disks aufzeigen und diskutieren können  

 SSD: Solid State Disks, nachteil ist das sie Teuer, eine kleine Kapazität haben und nur eine beschränkte Anzahl Schreibzyklen haben
- RAID: Redundant Array of Independent Disks, bringt viele Vorteile aber schützt nicht vor del *.*, Viren, Sofwarefehler, Naturkatastrophen, etc

File Systems

den Begriff File erklären und diskutieren 

File ist eine Sammlung von gleicher oder ähnlicher Recors. Records sind sammlungen von zusammengehörigen Feldern. Ein Feld ist die kleinste speicherbare einheit -> Byte. Files haben einen Namen und können erzeugt oder gelöscht werden. Es ist die Speichereinheit für Sekundärspeichermedien (optische Disks, Memory Sticks, etc).

 

File Systems

Anforderungen an das File System aufzählen und diskutieren  

Aufgabe ist die Bereitstellung von "Dienstleistungen" für Anwender und Anwendung. Soll folgende Funktionen besitzen:
- Files erzeugen, löschen und ändern
- Über symbolische Namen auf Files zugreifen
- Zugriffsart auf Files festlegen
- Kontrollierter Zugang zu Files anderer Benutzer
- Filestruktur an die Problemstellung anpassen können
- Daten zwischen Files kopieren / verschieben 
- Files sichern, bei Schäden wiederherstellen

Benutzeranforderungen:
- Persistenz: Das File bleibt erhalten, trotz Crashes und An- / Abschaltzyklen
- Einfach Benutzbarkeit: Files sind einfach zu finden, zu lesen, zu modifizieren, etc
- Effizienz: Disk Space wird gut ausgenutzt
- Geschwindigkeit: Daten stehen schnell zur Verfügung
- Schutz: Andere Benutzer haben keinen beabsichtigten oder unbeachtsichtigten Zugriff auf "meine" Files, ... ausser ich will es

File Systems

Operationen auf Files erklären und diskutieren 

erzeugen -> create() 
öffnen -> open() 
löschen -> delete() 
schliessen -> close() 
lesen -> read() 
schreiben -> write() 
positionieren -> seek() 

Beispiele:
- int fd = open("/home/tha/tmp.txt",O_RDWR | O_CREAT)
- read(fd, buffer, 32)

File Systems

den File Zugriff erklären und diskutieren können

Naming:
- Filezugriff wird über den Namen gemacht, jedes File muss einen eindeutigen Namen haben. Baumartiges Verzeichnisstruktur unterstüzt diese Forderung, files sind eindeutig durch den Pfadnamen definiert. 

 

File Systems

die File System Architektur aufzeigen und erklären

Applikation
File System -> Standardschnittstellen für verschiedene Filestrukturen und Fileorganistaionen
Logical I/O -> Übersetzt logische <-> physikalische Record, verwaltet grundlegende Daten zu Files
Basic I/O superviser -> Verantwortlich für gesammten physikalischen I/O, erzeugt Schreib-/Leserbefehle
Basic file system -> Primäre Schnittstelle zwischen Computer und Peripherie, kümmert sich um Austausch und Platzierung von Datenblöcken
Device drivers -> Kommunikation mit Geräten: low level commands zur Ansteuerung der HW, Interrupt Handler 

 

Study