Erzeuger-Verbraucher Problem
Erzeuger:
Will Einfügen, aber Puffer ist voll
Lösung: Lege dich schlafen, lass dich vom Verbraucher wecken, wenn er ein Datum entnommen hat
Verbraucher:
Will Entnehmen, aber Puffer ist leer
Lösung: Lege dich schlafen, lass dich vom Erzeuger wecken, wenn er ein Datum eingefügt hat
Auch gennant: Problem des beschränkten Puffers
Es gibt Lösungsansätzte mit Semaphoren, Monitoren und Nachrichtenaustausch
Nenne und skizziere 3 Prozesszustände
rechnend -> blockiert: Versetzung in den Wartezustand
rechnend -> rechenwillig: Scheduler entzieht den Prozessor
rechenwillig -> rechnend: Scheduler teilt Prozessor zu
blockiert -> rechenwillig: Ereignis tritt ein
Eigenschaften eines guten Algorithmus und 2 Beispiele für Fairness
Nutzer-bezogen:
Kurze Antwortzeiten bei interaktiven Aufträgen
Kurze Verweilzeiten für Stapelverarbeitungsaufträge
Betreiber-bezogen:
Hoher Durchsatz
Hohe Auslastung
Fairness in der Behandlung aller Aufträge
Geringer Aufwand für die Bearbeitung des Scheduling-Algorithmus selbst
Fairness: "Gerechte" Behandlung aller Aufträge,
z.B. alle rechenwilligen Prozesse haben gleichen Anteil an der zur Verfügung stehenden Prozessorzeit.
Round-Robin und Zeitscheibenbasierte Scheduling-Verfahre bedient Prozesse Fair.
Welches Problem gibt es bei feste Portionierung im Speicher (Mehrprogrammbetrieb)
Freie Auswahl einer Partition verlangt Lösung des sog. Relokationsproblems (Verschiebbarkeit), d.h. Anpassung aller (absoluten) Adressen des Programms in Abhängigkeit von der Ladeadresse.
Es kann zu Schutzproblemen führen: Programme können aufgrund der absoluten Adressierung Speicherbereiche anderer Benutzer lesen und schreiben.
Reallokationspproblem
Mögliche Lösung des Relokationsproblems: Loader addiert die Ladeadresse auf alle Adressen gemäß eines vom Binder erstellten Adressverzeichnisses des Programms
oder (Lösung gilt auch für Schutzproblem)
Ausstattung der CPU mit zwei zusätzlichen Registern, die Basisregister und Grenzregister genannt werden (base and bound register)
Weiterer Vorteil eines Basisregisters zur Relokation: Verschieblichkeit des Programms nach Programmstart wird möglich
Speicherschutzproblem
Lösung des Schutzproblems in IBM /360:
Jedem 2kB-Block des Arbeitsspeichers wird ein 4-Bit Schutzcode (protection key) als Schloss zugeordnet. Jeder Prozess besitzt einen ihm im Programmstatuswort (PSW) zugeordneten Schlüssel, der beim Zugriff auf einen Block passen muss, ansonsten Abbruch.
Nur das Betriebssystem kann Schutzcodes von Speicherblöcken und Schlüssel von Prozessen ändern.
→ Fazit: Ein Benutzerprozess kann weder andere Benutzerprozesse noch das Betriebssystem stören
Kooperationsform
Verteiler/Arbeiter-Modell
Team-Modell
Fließband-Modell
Skizziere die Struktur eines Monolithischen Kerns
Damit könnte das:
oder das gemeint sein:
Wie macht mein ein System-Aufruf auf einen Kernel?
Benutzerprogramm springt über TRAP in den Kern und führt den Code selbst aus
BS Code bestimmt die Nummer des angeforderten Dienstes
BS Code lokalisiert Prozedur-Code für Systemaufruf und ruft sie auf
Kontrolle wird an das Benutzerprogramm zurückgegeben
Was sind die Vorteile einer Virtuellen Maschiene
Anwender wird von der komplexer Hardware abgeschrimt.
Schnittstelle zum Anwender aus einfachen Abstraktionen (z.B. Dateikonzept, Lesen und Schreiben von Blöcken).
Diese Schnittstelle ist damit einfacher zu verstehen und langlebiger.
Aus folgenden Gründen werden sie eingesetzt:
Um besser und schneller Spiele laufen zu lassen, z.B. VMs gegeneinander (Gaming)
Um voneinander abgeschottete Umgebungen zu realisieren (Isolation)
Um die Hardware des Rechners zu schonen (Nursing)
Um die physikalischen Server auf VMs auf wenigen Servern laufen zu lassen (Consolidation)
Wie erweitert man einen Monolithischen Kernel mit weiteren Funktionalitäten?
Der Monolithischer Kernel ist nur sehr schwer erweiterbar, da alle Schichten aufeinander aufbauen. Mit dem Mikrokernel sind Erweiterbarkeiten besser realisierbar.
Nachteile Non-Preemtives scheduling
Non-preemptives Scheduling-Verfahren (Run-to-Completion, d.h. Prozess ist solange aktiv, bis er endet oder sich selbst blockiert).
Daher sind sie für General Purpose Systeme mit interaktiven Benutzern nicht geeignet. Außerdem muss für die Scheduling-Verfahren die Bedienzeiten vorher bekannt sein.
Der Microkernel ist das kleinste Teil des Betriebssystems
wenn man einen Poniter “ptr” hat ist “&ptr” der Aufruf auf den Speicher.
SJF ist am schnellsten wenn man die Dauer vorher weiß
Langlaufende Threads werden bei dem Mehrschlangen Prinzip bestraft
Buddy-Verfahren hat externe Fragmentierung
Threads nutzen den Speicher nicht effizienter
Eine Virtuelle Maschine ist ein Betriebssystem
Last changed2 years ago