Title: betriebssysteme
Tags: File Management Security

Q: 3 Strategien I/O Funktionalität zu realisieren:
A: (1) Programmed I/O
(Programm/Task selbst führt die I/O Operation aus)
(2) Interrupt-driven I/O
(Task setzt I/O command ab und geht in den wait-Zustand. Das Betriebssystem übernimmt die I/O Abwicklung und benachrichtigt Task mittels Interrupt.)
(3) Direct Memory Access Controller
(Ein eigener Baustein, der I/O für das Betriebssystem erledigt. Prozess schickt I/O Kommando an Controller, dieser kopiert autonom Daten zwischen Speicher und I/O und sendet Interrupt an den Prozess, wenn fertig. DMA ist sehr effizient, da kein Kontext Switch in der CPU notwendig ist.)

Q: I/O Channel
A: Eine Erweiterung von Direct Memory Access Controller. .. Ein zusätzlicher low-cost Prozessor der nur für I/O zuständig ist (I/O ist das Bottleneck des Computers) ...

Q: I/O Schichten des Betriebssystems
A: Die Struktur von I/O in einem Betriebssystem ist oft geschichtet aufgebaut:
LOGICAL I/O
DEVICE I/O
SCHEDULING AND CONTROL
Logical I/O ist die oberste Ebene und für alle Geräte gleich: open, close, read, write, ...
Device I/O: Übersetzt die logischen Operationen in Gerät-spezifischere Kontroll Kommandos + Buffering
Scheduling and control: hier passiert die direkte Ansteuerung der I/O-Geräte (Queueing, Interrupt Handling, ...)

Q: Unterschied zwischen Synchroner und Asynchroner I/O (oder auch: Blocking / Non-Blocking)
A: Synchron: Prozess schickt I/O Request und wartet in der Blocked Queues auf die Response. ... Asynchron: Prozess schickt I/O-Request und bleibt RUNNING (arbeitet an anderer Stelle weiter), während auf die Response gewartet wird.

Q: Was ist Buffering?
A: Buffering ist das Zwischenspeichern von Daten. Es wird verwendet um (das leidige, langsame) I/O zu beschleunigen. Mehrere I/O-Daten (z.B. Zeichen) werden in einem Zwischenspeicher gesammelt, bevor sie weiter verarbeitet werden. Das erhöht Performance, aber bringt zusätzliche Arbeit: Buffermanagement (Zuordnung von Buffer zu Prozessen) sowie Buffer-Overflows. Es gibt meistens mehr als einen Buffer.

Q: Wozu Disk I/O Scheduling?
A: Plattenzugriffe sollen beschleunigt werden. ... Minimierung der Seek-Time (die Zeit die es braucht bis der Plattenarm an der richtigen Spur ist) durch Ordnen der I/O-Requests.

Q: Disk I/O Scheduling Strategien:
A: FIFO (erster IO request zuerst),
LIFO (letzer IO request zuerst),
Priority (IO Requests bekommen Priorität nach der vorgegangen wird),
Shortest Seek Time First (IO Requests die am nähesten zur aktuellen position sind),
SCAN (Elevator Algorithmus - Variationen: C-SCAN, N-step-SCAN, FSCAN)

Q: Disk I/O, Wie funktioniert der SCAN Algorithmus?
A: Beim SCAN (oder Elevator) Algorithmus bewegt sich der Lesekopf immer in eine Richtung, zunächst nach Innen, dann nach Außen - so wird die Reihenfolge definiert, in der Requests abgearbeitet werden. Nachteil der Strategie ist, dass die Requesets an den Rändern benachteiligt werden (weil die Mitte zweimal passiert wird). --> C-SCAN geht immer nur in eine Richtung (damit die in der Mitte nicht zweimal dran kommen) ................. N-step-SCAN: Requests werden in Queues der Länge N aufgeteilt, die dann mit den SCAN Alg. abgearbeitet werden. FSCAN hat zwei Queues, eine die aktuell abgearbeitet wird, eine in die neue Requests kommen (die erst abgearbeitet werden, wenn die alte queue leer ist)

Q: Was ist Disk Caching?
A: Eine gewisse Menge RAM wird verwendet um Disk I/O zu beschleunigen. Der RAM ist entweder im Hauptspeicher oder in der Festplatte eingebettet. Riskant am Disk Caching kann sein, dass er Computer abstürtzt und Daten dadurch verloren gehen - der Disk Cache muss in regelmäßigen Intervallen auf die Platte zurückgespeichert werden.

Q: Wozu Scheduling?
A: Ziel ist es die Abarbeitungsreihenfolge von Prozessen so zu organisieren, dass Response Time, Durchsatz und Auslastung der CPU optimiert werden.

Q: Unterschiedliche Schwerpunkt-Setzungen des Scheduling:
A: (1) Fairness (kein Prozess soll unverhältnismäßig lange warten müssen),
(2) Balance (nicht nur CPU sondern auch andere Ressourcen wie Festplatte, Netzwerk, .. sollen durch die Abarbeitungsreihenfolge von Prozessen optimal ausgelastet sein.)
(3) Einhaltung der Systemregeln (?)

Q: 3 Scheduling Ebenen:
A: (1) Long-Term
(2) Mid-Term
(3) Short-Term
----
(1) Long-Term Scheduling bezieht sich auf die Entscheidung, welche Prozesse erstellt werden/ Bestimmt Grad der Parallelität, (2) Mid-Term ist Memory Management (Regelt Ein- Auslagern von Prozessen) und (3) Short-Term Scheduling ist die Ebene des Dispatchers/CPU Schedulers. Hier wird bestimmt welcher Prozess als nächstes zur CPU kommt.

Q: Scheduling Strategien
A: (1) First Come First Serve, (2) Round Robin, (3) Shortest Process Next, (4) Shortest Remaining Time, (5) Highest Response Ratio Next, (6) Feedback Scheduling, (7) REAL TIME Earlies Deadline First, (8) REAL TIME Rate Monotonic Scheduling

Q: Scheduling Strategie: First Come First Serve
A: non-preemptive. Prozess der am längsten in der Ready Queue ist wird ausgewählt. Begünstigt lange und CPU intensive Prozesse.

Q: Scheduling Strategie: Round Robin
A: preemptive - wie FCFS aber mit Time Slicing fixer Länge. Wenn die Zeit um ist, wird er Prozess ans Ende der Ready Queue gesetzt. I/O-intensive Prozesse werden benachteiligt ---> VIRTUAL Round Robin hat deshalb eine zusätzliche Auxiliary Queue für Prozesse die auf I/O-Events warten. Diese Queue hat höhere Priorität als die Ready Queue.

Q: Scheduling Strategie: Shortest Process Next
A: non-preemptive - gewählt wird der Prozess mit der kürzesten zu erwartenden CPU-Zeit (wird geschätzt). Bessere Response Time als FCFS, aber Schätzung der Remaining Time ist ein Problem. Kann zu Starvation von Prozessen führen die lange dauern. Da NON-PREEMPTIVE ist es nicht für den interaktiven Betrieb geeignet, ein CPU-intensiver Prozess, der früh drankommt, kann die CPU für sich monopolisieren.

Q: Scheduling Strategie: Shortest Remaining Time
A: preemptive - wie Shortest Process Next, aber preemptive, d.h. Prozesswechsel sobald ein Prozess in der Queue auftaucht, der eine kürzere Ausführungszeit hat als die anderen. Kürzere Prozesse werden fair behandelt, ABER Starvation möglich und ebenso Protokollieren von Service Time notwendig.

Q: Scheduling Strategie: Highest Response Ration Next
A: non-preemptive - Immer der Prozess mit der höchsten Response Ration kommt dran. Response Ratio berechnet sich durch (Laufzeit + Wartezeit)/Laufzeit. Der Algorithmus bevorzugt Prozesse mit geringer CPU-Zeit, keine Starvation, ABER wieder Schätzung der Servicezeit notwendig.

Q: Scheduling Strategie: Feedback Scheduling
A: preemptive - je mehr Zeit ein Prozess schon bekommen hat, umso niedriger wird seine Priorität. Starvation möglich, kann aber mit Hilfe von "Anheben der Priorität nach bestimmter Zeit" behoben werden.

Q: Real Time Scheduling Strategien
A: (1) Earliest Deadline First, (2) Rate Monotonic Scheduling

Q: Scheduling Strategie: Earliest Deadline First
A: preemptive - real time scheduling / ECHTZEITSCHEDULER - es werden prozesse zuerst ausgeführt, die die geringste Deadline haben. Voraussetzung dafür ist, dass die Prozesse statische Deadlines haben und dass die eintreffenden Tasks unabhängig sind. Es ist ein OPTIMALER scheduler - d.h. scheduling funktioniert nur, ~wenn es auch theoretisch möglich ist.~

Q: Scheduling Strategie: Rate Monotonic Scheduling
A: preemptive - REAL TIME scheduling - Die Prioritäten der Tasks werden statisch nach Periodendauer festgelegt. Je kürzer die Periodendauer (= Deadline) eines Jobs, desto höher die Priorität. Anforderungen: Tasks müssen periodisch sein, die Ausführungszeit muss bekannt sein und die Tasks sollten unabhängig sein. (viele Auflagen, schwierig zu erfüllen)

Q: Was ist ein Schedulability Test?
A: Bei diesem Test wird überprüft, ob alle Deadlines eingehalten werden können. Wenn der Test die Auslastungsschranke übersteigt, dann ist das zu schedulende Set nicht schedulbar.

Q: Was sind die Anforderungen/Aufgaben der Speicherverwaltung/ Memory Management eines Betriebssystems?
A: (1) Partitioning
(Speicheraufteilung auf Prozesse)
(2) Relocation
(Referenzen auf physikalischen Speicher müssen veränderbar sein, wegen Swapping)
(3) Protection
(Speicherschutz)
(4) Sharing
(gemeinsamer Zugriff auf Speicher muss möglich sein)
(5) Performance

Q: 3 Arten von Partitioning:
A: (1) Fixed
(2) Dynamic
(3) Buddy System

Q: Fixed Partitioning
A: Der Hauptspeicher wird in (nicht überlappende) fixe Menge an unterschiedlich große Partitionen aufgeteilt (möglichst viele verschiedene Größen). NACHTEIL: Interne Fragmentierung - fixe Partitionsgrößen werden eventuell nicht ausgefüllt/Speicherplatz wird verschwendet.

Q: Dynamic Partitioning
A: Partitionen sind variabel in ihrer Größe, je nach Prozess-Bedarf. Wenn ein Prozess terminiert, entstehen Löcher zwischen Partitionen. Um größeren zusammenhängenden Speicher zu bekommen müssen die Partitionen verschoben werden (Compaction). NACHTEIL: externe Fragmentierung - Speicherplatz wird durch Zerstückelung unbenutzbar.

Q: Buddy System Partitioning
A: Speicher wird in 2°k große Blöcke eingeteilt. Bei Allokierung wird immer der kleinste, bereits belegte, Block geteilt, so dass Allokierung und Freigabe immer nach Größe geordnet passieren.

Q: Relocation
A: Ist eine der Anforderungen an das (Virtual) Memory Management eines Betriebssystems.
Es geht darum physischen Speicher, logisch addressierbar zu halten.
Referenzen auf physikalischen Speicher müssen veränderbar sein.

Q: Segmentierung
A: Prozesse werden in Blöcke(=Segmente) unterschiedlicher Länge unterteilt. Beim Laden eines Prozesses werden die Segmente im Speicher platziert. Es gibt eine Segmenttabelle in der für jedes Segment Start und Länge vermerkt sind.

Q: Paging
A: Verwaltet die Segmentierung. Paging ist die Methode der Arbeitsspeicher-Verwaltung per Seitenadressierung. Der Hauptspeicher wird in FRAMES (gleicher Größe) eingeteilt, Prozesse werden in PAGES (gleicher Größe) unterteilt. PAGES passen genau in FRAMES. In einer Page Table pro Prozess wird notiert welche Framenummer welche Page hat (wobei die Page Number + Offset die LOGISCHE Adresse, in eine Frame Number+Offset PHYSISCHE Adresse umwandelt. Offset bleibt gleich!). Die Free Frame List verweist auf freie FRAMES im Speicher.

Q: Was tut ein Page Table? Woraus besteht er?
A: Übersetzt logische Adresse (Page) in physische Adresse (Frame).
Besteht aus:
(1) Present Bit (befindet sich die Seite im Hauptspeicher?),
(2) Frame Number,
(3) Modified Bit (wurde die Seite seit dem Laden verändert?),
(4) Control Bits (r/w, Locking, Kernel vs User Page)

Q: Virtual Memory
A: Ist ein zum tatsächlich vorhandenen Arbeitsspeicher unabhängiger Adressraum. Das Betriebssystem stellt jedem Prozess einen scheinbar zusammenhängenden lokalen Speicherbereich zur Verfügung. Die Memory Management Unit verwaltet den Zusammenhang zwischen virtuellen und physischen Adressen.

Q: Page Fault
A: Tritt auf wenn ein Prozess auf eine nicht vorhandene (weil ENTWEDER ausgelagerte Page, ODER nicht-existente/verbotene Page) zugreifen möchte.

Q: Thrashing
A: Durch häufige Page Faults verbringt der Prozessor sehr viel Zeit mit dem Einlagern von Pages aus dem Sekundärspeicher. Passiert wenn das RESIDENT SET (die im Hauptspeicher vorhandenen Teile des Prozesses) zu klein ist.

Q: Multilevel Page Tables
A: Bei großen Prozessen besteht die Page Table selbst aus mehreren Pages. Es gibt eine root/outer page table, die auf page of page table verweist in der dann der gesuchte offset steht.

Q: Fetch Policy des Paging
A: Bestimmt wann eine Page in den Hauptspeicher geladen wird. Man unterscheidet zwischen (1) DEMAND PAGING und (2) PRE PAGING. Beim Demand Paging werden Seiten geladen, wenn sie referenziert werden --> viele Page Faults beim Start eines Prozesses. Beim Pre Paging werden Pages nach Lokalitätsprinzip geladen, eventuell unnötigerweise

Q: Replacement Policy beim Paging
A: Bestimmt welche Page beim vollen Hauptspeicher überschrieben werden soll. LOKAL (nur pages desselben Prozesses überschreiben) oder GLOBAL (pages eines anderen prozesses dürfen auch überschreiben werden).
4 Policies: (1) OPT (doesn' exist)
(2) Least Resently Used
(3) FIFO
(4) Clock

Q: Pro/Cons der Replacement Policy: Least Resently Used
A: Pages die am längsten nicht benutzt worden sind werden überschrieben. Page Faults kaum höher als bei OPT Policy, aber die Implementierung ist sehr aufwändig (Speichern der Zugriffszeit, Suche nach page)

Q: Pro/Cons der Replacement Policy: FiFo
A: First in first out, berücksichtigt nicht, ob die page dauernd verwendet wird, aber einfache implementierung (zyklischer pointer)

Q: Pro/Cons der Replacement Policy: Clock Policy
A: Dabei handelt es sich um einen "Ring Puffer" mit Frames die für den Austausch in Frage kommen und einem Pointer. Jedes Frame hat ein Bit das beim Laden oder Referenzieren auf 1 gesetzt wird. Bei Page Fault läuft der Zeiger einmal im Kreis und setzt alle besuchten 1er Bits auf 0 bis er ein Bit findet das schon 0 war.

Q: Translation Lookaside Buffer
A: ein sehr kleiner, schneller speicher in der cpu, mit den letzten aktiven frame nummern des prozesses.
Die Page Tables sind im hauptpeicher. Eine Adressübersetzung beim Paging braucht zwei Zugriffe auf den physikalischen Speicher: einmal Page Table und einmal wegen der physikalischen Adresse. Um das performanter zu machen, wird ein Translation Lookaside Buffer eingeführt, ein Cache für ein Einträge der Page Table des aktuellen Prozesses.
Der Translation Lookaside Buffer weiß die Frame Number der letzten aktiven Pages. Bei Prozess Switch wird TLB gelöscht.

Q: Working Set als Optimierung von Paging
A: Diese Stategie beschreibt die variable Allokation von Frames für einen Prozess aufgrund der Lokalitätsannahme. Das Working Set ist die Menge and Pages eines Prozesses, die im letzten Zeitintervall referenziert worden sind. Wenn das Resident Set (das Set im Hauptspeicher) kleiner ist als das berechnete Working Set, werden Frames für den Prozess allokiert. ... Beim Start eines Prozesses ist das Working Set groß, aber die Größe stabilisiert sich mit der Zeit. ... Es ist eher kompliziert in der Umsetzung (page references müssen gelogged und geordnet werden) - in der praxis ist es einfacher die page faults pro prozess zu zählen und darauf hin mehr Frames zuzuteilen.

Q: Deadlock detection
A: Nach jeder Ressourcenanforderung wird geschaut ob ein Deadlock aufgetreten ist → entweder alle Prozesse abbrechen oder auf Deadlock freien Zustand zurücksetzen oder nur nach der Reihe Prozesse abbrechen bis Deadlock aufgehoben ist. Dann aber: DEADLOCK RECOVERY

Q: Deadlock avoidance
A: Ein Prozess wird entweder gar nicht erst gestartet, wenn bei Ressourcenanforderungen ein Deadlock auftreten könnte →oder Ressourcenanforderung wird nicht gewährleistet wenn Deadlock auftreten könnte → Banker’s Algorithm

Q: Deadlock prevention
A: INDIRECT: Verhindern der Bedingungen (2) Hold and Wait und (3) No Preemption. Ad (2) anstatt "Hold and Wait" gilt "ganz oder gar nicht": Alle benötigten Ressourcen müssen auf einmal angefordert werden. Ad (3) statt "No Preemption" muss ein Prozess entweder seine Ressourcen sofort freigeben (achtung: beispiel drucker), wenn er eine andere nicht bekommt ODER (problematisch) Anforderungen können Prozessen Ressourcen einfach wegnehmen. DIRECT: Verhindern von (4) Circular Wait: Es wird eine lineare Ordnung der Ressourcenarten angelegt, alle Ressourcen einer Ordnung müssen gemeinsam angefordert werden, dann nächste Ordnung, usw.
allgemeiner nachteil: einschränkung der parallelität

Q: Starvation
A: Ein Prozess kann auf bestimmte Ressourcen nicht zugreifen, weil immer zuerst andere Anfragen abgearbeitet werden. Prozess kann auch nicht weiter im Ablauf da die Ressourcen fehlen

Q: Lifelock
A: Prozess wird Eintritt in kritischen Abschnitt nie gewährt; ein Prozess kommt nie an die Reihe

Q: Deadlock
A: Durch zyklische Abhängigkeit beim Zugriff auf Ressourcen, kann kein Prozess die notwendigen Ressourcen anfordern, gibt diese aber wegen no-preemption auch nicht wieder ab, sodass ein anderer Prozess darauf zugreifen kann

Q: Bei der Deadlock-Vermeidung spricht man von einem Safe State bzw. einem Unsafe State. Erklären Sie die Bedeutung dieser Begriffe.
A: Safe State:
  Es gibt eine Möglichkeit alle Prozesse abzuarbeiten, ohne dass ein Deadlock entstehen kann.
Unsafe State:
  Es bestehen Abhängigkeiten zwischen den Prozessen, eventuell tritt ein Deadlock auf. (Banker's Algorithmus)

Q: Nennen Sie die Bedingungen für das Eintreten eines Deadlocks und erklären Sie diese.
A: Mutual Exclusion (Nur ein Prozess darf gleichzeitig im kritischen Abschnitt sein), Hold and Wait (Prozesse dürfen Ressourcen halten während sie auf andere Ressourcen warten), No Preemption (Prozesse geben Ressourcen erst wieder frei, wenn sie fertig sind), Circular Wait (Kette an Abhängingkeiten wie mit den Gabeln der Philosophinnen, ist nicht Auflösbar, wenn 1-3 gilt)

Q: Was ist Swapping? Wann wird es angewandt?
A: Das Auslagern eines Prozesses in den Sekundärspeicher. Zwei zusätzliche Prozesszustände: Ready Suspended, Blocked Suspended.

Q: Welche Execution Modes von Prozessen gibt es?
A: Pivileged (System Mode), User Mode - Mode Switch bedeutet nicht automatisch Process Switch. Notwendig um Datenstrukturen des Betriebssystems (z.B. den PCB des Process Image) zu schützen.

Q: Erklären Sie die Begriffe Process Switch und Mode Switch, sowie die Beziehung, in der diese beiden Konzepte stehen. Zählen Sie weiters die drei Klassen von Ereignissen auf, die einen Mode Switch nach sich ziehen.
A: Mode Switch muss vor und nach Process Switch passieren, damit Kernel mit elevated Privileges einen neuen Prozess dispatchen kann. Prozess selbst läuft im User Mode. Process Switch, ausgelöst durch: supervisor call, trap oder interrupt, bedeutet, dass ein Prozess aus dem Runnig State nach Blocked, Ready oder Ready Suspend verschoben wird und ein anderer Prozess (aus dem Ready State) CPU Zeit bekommt.

Q: Was ist Swapping?
A: Auslagerung der Prozessdaten auf Sekundärspeicher (Ready Suspend, Blocked Suspend)

Q: Gegeben sei ein Computersystem, in dem Ihnen zur Synchronisation bzw. Kommunikation von Prozessen nur Nachrichten zur Verfügung stehen (d.h., es gibt keine Semaphore oder andere Synchronisationskonstrukte). Nennen Sie zwei verschiedene Möglichkeiten, wie Sie in diesem Computersystem einen konsistenten Datenaustausch zwischen parallelen Prozessen realisieren können.
A: Message Passing oder auf Hardware-Ebene disable Interrupt, wenn Prozesse im kritischen Abschnitt sind.

Q: Blockierendes Message Passing:
A: Beim empfangen und senden wird gewartet bis der Kommunikationspartner alles empfangen hat

Q: Nicht-Blockierendes Message Passing:
A: Prozess sendet nachricht und arbeitet gleich weiter ohne auf richtiges zustandekommen der kommunikation zu warten

Q: Für die Lösung des Problems des geregelten Eintritts in einen kritischen Abschnitt werden drei Eigenschaften gefordert. (a) Nennen Sie diese drei Eigenschaften und erklären Sie deren Bedeutung. (b) Wodurch werden die drei Eigenschaften gewährleistet, wenn Semaphore zum Schutz eines kritischen Abschnitts verwendet werden?
A: (1) Mutual Exclusion, (2) Progress (alle kommen dran), (3) Bounded Waiting (anzahl der eintritte beschränkt) ---- Bei Semaphoren geschieht Mutual Exclusion so: init(S1,1); init(S2,1); ... P(S1); a(); V(S2); | P(S2); a(); V(S1); ... Progress geschieht durch FiFO Queue .... Bounded Waiting geschieht über die Werte der Semaphoren.

Q: Wie unterscheidet sich das Blockierverhalten von Kernel Level Threads und User Level Threads?
A: User Level Threads sind für den Kernel unsichtbar. Für Thread-Switching ist kein Mode-Switch notwendig (geschieht im User Mode), wenn User Level Thread blockiert, blockieren alle Threads des Prozesses. KERNEL LEVEL THREAD: Der blockierende Thread blockiert nur sich selbst, Multi-Threading ist auf Kernel Level möglich (auf User Level nicht), aber da 2 Mode Switches bei Thread-Switch notwendig sind, ist es weniger performant als User Level Thread.

Q: Wozu braucht es Mutual Exclusion und Synchronisation?
A: Um bei parallelem Zugriff auf gemeinsame Daten Inkonsistenz zu vermeiden. Mutula Exclusion und Condition Synchronisation erfüllen unterschiedliche Zwecke und können einzeln oder kombiniert verwendet werden.

Q: Was bedeutet Mutual Exclusion?
A: Wechselseitiger Ausschluss. Verhinderung des gleichzeiten Ressourcenzugriffs.

Q: Was bedeutet Condition synchronisation (Bedingungssynchronisation)?
A: Die Ausführungsreihenfolge von Prozessen wird mit Bedingungen versehen, um eine geregelte Abfolge von Ereignissen herzustellen.

Q: Nennen Sie 3 höhere (vom Betriebssystem bereitgestellte) Synchronisations Konstrukte:
A: Semaphoren, Monitor, Message Passing

Q: Was lässt sich mit Semaphoren realisieren?
A: Mutex, condition synchronisation auch counting semaphore .... mit Semaphoren gelöste Probleme: Producer-Consumer-Problem (Schreiben/Lesen aus (Ring)Buffer, Consumers können nur lesen, wenn Daten zuvor produced worden sind), Reader-Writer-Problem (beliebige Leser parallel, Schreiber exklusiver Zugriff), Dining Philosophers

Q: Nachteile von Semaphoren?
A: Operationen sind über Prozesse verteilt, das macht es unübersichtlich in der Handhabung; es können leicht Fehler passieren. Stattdessen: Monitor

Q: Woraus besteht und wie funktioniert ein Semaphor?
A: Integer Value, Prozess Queues und Flags. Operationen: Init (muss ein Wert >=0 sein, wenn Mutex muss es init(1) sein), wait (dekrementiert value um 1, wenn value <0 kommt der Prozess in die blocked-queue), signal (increment um 1, prozess kommt in die ready-queue)

Q: Algorithmen zur Mutual Exclusion OHNE SEMAPHOREN
A: Dekker Algorithmus (Flags die immer wieder gecheckt werden - Busy Waiting),
Peterson Algorithmus,
Bakery Algorithmus (für mehr als 2 Prozesse möglich, aber immer noch beschränkt) .... ODER Hardwareunterstütze Lösungen: z.B. Interrupt Disable während ein Prozess im k.A. ist

Q: Was ist Busy Waiting?
A: Ein Prozess wartet auf die Freigabe einer Ressource/das Eintreten eines Ereignisses und anstatt in einer Blocked Queues zu warten, ist der Prozess Running und ~fragt kontinuierlich "und jetzt!?"~

Q: Wodurch unterscheiden sich die Prozesszustände Ready und Blocked?
A: Ein Prozess der den Zustand Ready hat ist bereit zur Ausführung und wartet auf Zuteilung der CPU. Ein Prozess im Blocked State wartet auf ein Ereignis (z.B. Ressourcenfreigabe, Beenden einer I/O Operation, ..)

Q: Erklären Sie die Aktionen, die vom Betriebssystem bei einem Process Switch durchzuführen sind. Welche Arten von Ereignissen können zu einem Process Switch führen?
A: Dem im User-Mode laufendem Prozess muss die Kontrolle entzogen werden (supervisor call, trap, interrupt). Es findet ein Mode-Switch in den Privileged Mode statt. Das Betriebssystem aktualisiert PCB und führt den Process Switch durch. Anschließend findet wieder ein Mode Switch in den User Mode statt und der neue Prozess läuft. Die Ereignisse die zu einem Process Switch fürhen: Supervisor Call (expliziter Aufruf durch Programm), Trap (z.B. Fehler im Programm), Interrupt (Ursache außerhalb des Prozesses)

Q: Was versteht man unter einem Microkernel?
A: Eine Betriebssystemarchitektur, bei der nur die wichtigsten Funktionen im Kernel enthalten sind. Alles andere wird auf User-Level ausgeführt und kann mit dem Kernel kommunizieren.

Q: Welche Services stellt ein Microkernel zur Verfügung?
A: Process Switching, Basic Memory Management, Interrupts und Hardware Access (I/O), Nachrichtenaustausch und -kontrolle

Q: Welche Vor- bzw. Nachteile ergeben sich bei der Verwendung eines Microkernel Betriebssystems?
A: Vorteile: Einheitliches Interface, Flexibilität und Erweiterbarkeit, Portabilität, Unterstützung von Verteilung. Nachteile: Schlechtere Performance im Vergleich zu z.B. (veraltet) Monolithic Kernel

Q: OS Implementations (in respect to processes):
A: (-) Nonprocess Kernel: Prozess nur für User Programs, Betriebssystem läuft getrennt von den Prozessen im Privileged Mode (eigener Speicherbereich) , (-) Prozessbasiertes Betriebssystem: Betriebssystem ist eine Sammlung von Systemprozessen, nur die Basisservices (Process Switching, Interrupts, ...) sind nicht als Prozess implementiert

Q: Welche Kernel-Architekturen kennen Sie?
A: Micro Kernel (Basisfunktionalitäten: Process Switching, Simple Memory Management, Interrupts, I/O, Nachrichtenaustausch+Kontrolle),
Monolithic Kernel (schneller als Microkernel, aber veraltet),
Layered Kernel (Schalenmodell, Mehrheit der Schichten exekutieren im Kernel Mode, Unix)

Q: Was ist ein Process Image?
A: Kontrollstruktur des Betriebssystems, gelagert in Process Tables. Liegt im virtual memory, kann teilweise ausgelagert sein. Besteht aus PCB, System Stack (Parameter und Call Address von System Calls - aus Sicherheitsgründen getrennt von User Data), User Data (modifizierbarer Bereich: Daten, User Stack), User Program, (eventuell) Shared Adress Space

Q: Was versteht man unter einem Process Control Block?
A: Neben User Stack, Private User Address Space (Programs, Data), Kernel Stack, Optional: Shared Address Space ist der PCB Teil des Process Images. Es wird vom Betriebssystem zur Verwaltung von Prozessen herangezogen.

Q: Beschreiben Sie, aus welchen Teilen der PCB besteht und welche Informationen in diesen Teilen jeweils verwaltet werden.
A: Process Identification (PID, User-ID für Zugriffsrechte, Parent Process Identifier), Processor State Info (Registers, Programm Counter, Stack Pointers), Process Control Info (Zustand, Priorität, Ereignis worauf ev. gewartet wird, Querverweise auf andere Prozesse, verwendete Ressourcen/IO, Privileges, Interprozesskommunikation, Verweise auf Segment- und Seitentabellen)

Q: Worin liegt der grundlegende Unterschied zwischen Prozessen und Threads?
A: Prozesse haben eigenen Adressraum mit Process Image, Threads verwenden die Ressourcen von einem Prozess. Ressourcenverwaltung und Dispatching werden entkoppelt. Process (Task): Einheit der Ressourcenverwaltung, Thread (Lightweight Process): Einheit für das Dispatching.

Q: Welcher Vorteil ergibt sich aus der Einführung von Threads für den Benutzer und worauf muss der Benutzer achten?
A: Thread Switch ist viel schneller als Process Switch. Die Prozessorressourcen bleiben die gleichen. Kommunikation zwischen Threads eines Prozesses ist ohne Einschaltung des Kernels möglich // ABER: Threads teilen die Ressourcen eines Prozesses, daher muss Synchronisation von Programmierer*in gewährleitst werden.

Q: Was versteht man unter Deadlock Avoidance? Geben Sie zwei Strategien für Deadlock Avoidance an und beschreiben Sie diese.
A: Deadlocks sollen verhindert werden, indem vorab entschieden wird ob das Starten eines Prozesses oder die Ressourcenfreigabe an einen Prozess zu einem Deadlock führen KÖNNTE. 1) Process Initiation Denial 2) Ressource Allocation Denial. /// Problem: Der Ressourcenbedarf der Prozesse muss vorab bekannt sein. Ein bekannter Algorithmus: Banker's Algorithmus.

Q: Was versteht man unter einem Monitor zur Prozesssynchronisation? Nennen Sie die wichtigsten Komponenten und Eigenschaften des Monitors.
A: Ein Monitor ist ein Softwaremodul, in dem die von Prozessen gemeinsam genutzten Daten und ihre Zugriffsprozeduren zu einer Einheit zusammengeführt sind. Der Monitor "kapselt" shared memory, Prozeduren, Initialisierung und Synchronisation.

Q: Prozesssynchronisation: Was ist Message Passing?
A: Eine Methode zur Interprozesskommunikation. Eine Nachricht ist eine atomare Datenstruktur, Charakteristika: send/receive kann blocking/non-blocking sein, Warteschlage/Empfangene Daten überschreiben alte Werte, Addressierung 1:1 oder 1:N (Portadressierung vs Mailbox)

Q: Welche Aufgaben hat das File System?
A: - Naming
- Struktur
- Lokalisierung
- Protection

Q: File Organisation in Form eines Piles?
A: Im einfachsten Fall werden Daten als unstrukturierte Sequenz von Bytes gespeichert. Files werden im Pile organisiert, wenn sie in der Reihenfolge ihres Ankommens gespeichert werden. Piles sind Records variabler Länge mit chronologischer Reihenfolge.

Q: Sequential file organisation
A: Ein sequential file beinhaltet Records fixer Länge, die in der Reihenfolge geordnet sind in der sie angekommen sind. Der Unterschied zu Pile ist, dass die Records eine fixe Länge haben. Records in sequential file organisation können nur sequentiell gelesen oder beschrieben werden.

Q: Indexed-Sequential File
A: Records werden nach einem Key sortiert. Jeder Record hat ein Feld in dem dieser Key steht.

Q: Indexed file
A: Ein indexed file enthält Indizes für alle Suchfelder.

Q: Direct (hashed) file
A: Um das Suchen der Files zu beschleunigen werden oft direct files verwendet. Hierbei wird eine Hashfunktion über das Key-Feld gebildet, direct files haben keine sequentielle Reihenfolge der Dateien.

Q: File Typen
A: - Regular Files
  ASCII files, binary files
- Directories
- Special Character Files
  Repräsentation sequentieller I/O Geräte
- Block Special Files
  Repräsentation von Platten
- Jedes Betriebssystem muss ein EXECUTABLE Format interpretieren können. Ob ein File executable ist, wird meistens im Header durch eine "Magic Number" gekennzeichnet

Q: File Attributes
A: z.B. Protection, Password, Creator, Owner, Read-Only Flag, Hidden flag, System flag, Archive flag, ASCII/binary flag, Random Access flag, Temporary flag, Lock flags, Record length, key position, key lenght, creation time, time of last access, time of last change, current size, maximum size

Q: File-Operations
A: Create, Delete, Open, CLose, Read, Write, Append, Seek, Get Attribute, Set Attribute, Rename, Lock

Q: Wie werden Directories realisiert?
A: In älteren Betriebssystemen als einfache Liste, in praktisch allen modernen Betriebssystemen wird ein Directory als eine hierarchische Baumstruktur realisiert. Weiters werden die Directories als Hash-Struktur gespeichert um Zugriffszeit zu verkürzen.

Q: File System Layout
A: Ein Filesystem besteht i.d.R. aus:
- MBR (Master Boot Record):
  --> Boot Code
  --> Partitionstabelle
- Partitionen
Jede Partition besteht aus:
- Boot block - falls OS hier startet
- Super block - Filessystembeschreibung
- Free mgmt - gibt an wo freie Blöcke sind
- I-Nodes - Info für Dateiverwaltung
- Root-Dir - Definition
- Files + Directories

Q: Wie werden Dateien implementiert?
A: Eine Datei besteht im sekundär Speicher als Sammlung von Blöcken. Die Frage ist: Wo sind diese Blöcke zu finden? Zur Block-Allokierung gibt es verschiedene Strategien.

Q: Strategien zur Block Allocation
A: - Continuous Allocation
- Chained Allocation
- Indexed Allocation
- I-Nodes (Index Node)

Q: Contiguous Block-Allocation
A: Ist das klassische Memory Allocation Modell. Eine Datei belegt eine Menge aneinander angrenzender Blöcke.
+ gute Performance
- Platzprobleme beim Vergrößern/Verkleinern einer Datei (Interne/Externe Fragmentierung)

Q: Chained Block-Allocation
A: Eine Datei belegt eine Menge von Blöcken, die über Pointer miteinander verbunden sind.
+ keine externe Fragmentierung (Dateien können wachsen)
- bei Random Access ist dieses Verfahren sehr langsam und Pointer verbrauchen Speicher

Q: Indexed Block-Allocation
A: (Erweiterung von Chained-Allocation)
Pointer auf Folgeblock wird nicht im Block selbst gespeichert, sonder in einer extre Tabelle: FAT (File Allocation Table)
+ Blöcke werden nur für Nutzdaten verwendet
- Platzbedarf für FAT im Arbeitsspeicher

Q: FAT (File Allocation Table)
A: Wird bei Indexed Block-Allocation verwendet, damit die Pointer auf Folgeblöcke nicht (wie bei Chained Allocation) im Block selbst gespeichert werden.
FAT liegt im Arbeitsspeicher (und braucht dort Platz)

Q: I-Nodes
A: In den meisten Unix-Betriebssystemen werden Files über I-Nodes (Index Nodes) verwaltet.
Jedes File verweist auf ein I-Node. Ein I-Node ist eine Datenstruktur, die alle wichtigen Attribute und die Referenzen auf die Blöcke der Datei enthält.
Das erste I-Node verweist auf das root-directory.
+ I-Node wird nur im Speicher gebraucht, wenn das File verwendet wird.
- Anzahl der möglichen Referenzen ist begrenzt. Bei großen Dateien (die viele Blöcke brauchen), entsteht eine Verkettung von I-Nodes.

Q: Strategien zu Blocking in Sequential Files
A: - Fixed Blocking
  Blöcke werden mit Records fixer Länge aufgefüllt --> zu kleiner Rest bleibt leer
- Variable Length Spanned Blocking
  Records variabler Länge können über mehrere Blöcke gehen (spanned)
- Variable Length Unspanned Blocking
  Records variabler Länge, aber NICHT über Blöcke hinaus (unspanned) --> zu kleiner Rest bleibt leer

Q: Security Objectives
A: Confidentiality  (Geheimhaltung/Zugriffsschutz)
Integrity  (Daten dürfen sich nicht ändern)
Availability   (Verfügbarkeit der Daten)
Authenticity   (Identität der Verfasser*innen)

Q: 2 Typen von Security Threats
A: Active Threats:
   manipulative Angriffe -- zielen auf Integrity, Availability, ..
Passive Threats:
  Abhören von Informationen --- zielen auf Confidentiality

Q: Klassen von Security Threats
A: DoS (Denial of Service) - Überlastung von Infrastruktur --> Availability
Exposure/Interception - Nicht autorisierter Zugriff --> Confidentiality
Modification/Fabrication - Manipulation von Daten --> Integrity

Q: Was ist Malware?
A: Eine Menge von Software die Computersysteme bedrohen.
Z.B.:
- Virus (Im Programm versteckter Code, kopiert sich in andere Programme)
- Wurm (Verbreitet sich selbst über das Netz, z.B. Email)
- Trojaner (Programm mit Funktionalität, das Zugriff auf anderes unerwünschtes ermöglicht)
- Logic Bomb (Programmstück das sich bei bestimmten Ereignis selbst aktiviert)
- Trapdoor (Ein geheimer Einstiegspunkt in ein System/Umgehung von Zutrittskontrolle)
- ....

Q: Standard Attacken/ Typische Methoden von Attacken
A: - Social Engineering (z.B. Phishing)
- Cross Site Scripting
- Stack/Buffer Overflow um Speicher auszulesen
- Fälschen von Log-In Routinen
- ...

Q: Design Prinzipien für Security
A: Open Design (Gegenteil: Security by Obscurity),
Sane-Defaults,
Least-Privilege,
Einfachheit

Q: Was sind Protection Domains?
A: Protection Domains beschreiben eine Menge von Paaren an Objekten und zugehörigen Rechten. Die Domain kann sich ändern. Zum Beispiel wenn ein Prozess vom User Mode in den Kernel Mode wechselt. Die Zugriffsrechte für jede Domain werden in einer ACCESS MATRIX gespeichert, die an die Objekte geknüpft ist. ...
Andernfalls auch ACCESS CONTROL LISTS die regeln welcher user was darf.

Q: Bell and LaPadula's Model
A: Objekte und User haben Sicherheitsstufen.
Es gelten die 2 Axiome:
No Read Up
  Ich darf nichts lesen, was eine höhere Sicherheitsstufe hat.
No Write Down
  Ich darf nichts schreiben, was eine niedrigere Sicherheitsstufe hat. (Damit Wissen nicht in eine niedrigere Stufe gelangen kann.)