# Übungsblatt 1


<ol type="a">
  <li>Worin besteht der Unterschied zwischen System- und Benutzermodus? Erläutern Sie, inwiefern die Tatsache, zwei unterschiedliche Modi zu haben, beim Entwurf eines Betriebssystems hilfreich ist.</li>
  <li>Befehle, die den Zugriff auf Ein-/Ausgabegerate betreffen, sind in der Regel privilegiert, können also nur im Systemmodus ausgeführt werden, aber nicht im Benutzermodus. Geben Sie einen Grund dafür an, warum diese Anweisungen privilegiert sind.</li>
  <li>Welche der folgenden Befehle (bzw. Aktivitäten) sollten nur im Systemmodus erlaubt sein? Geben Sie ggf. eine kurze Begründung an.</li>
  <li>Für einen Programmierer sieht ein Systemaufruf genauso aus wie der Aufruf einer Bibliotheksfunktion. Ist es für den Programmierer wichtig zu wissen, wann eine Bibliotheksfunktion einen Systemaufruf ausführt? Falls ja, unter welchen Umständen und warum?</li>
  <li>Moderne Betriebssysteme entkoppeln den (logischen) Adressraum eines Prozesses vom physischen Adressraum des Hauptspeichers. Geben Sie (mindestens) zwei Vorteile dieses Vorgehens an.</li>
</ol>

- Beim Systemmodus wird direkt auf die Hardware zugegriffen und commandiert, während beim Benutzermodus eine Abstraktionsschicht vorhanden ist, welche auf Softwareebene arbeitet.

- Ein und Ausgabegeräte befinden sich nicht auf der Software-Ebene, somit können diese nicht durch eine reine Anwendung des Benutzermodusses verwendet werden. Es werden Driver benötigt um an die Ein- und Ausgabegeräte zu kommen.


		I. Sperren aller Unterbrechungen, (Benutzermodus)
		II. Lesen der aktuellen Uhrzeit, (Benutzermodus)
		III. Setzen der aktuellen Uhrzeit, (Systemmodus)
		IV. Ändern der Speicherabbildungs-Tabellen. (Systemmodus)

- Hardware verhält sich nicht wie reine Software, daher kann beim falschen Anwenden von den genannten Bibliotheksfunktionen die Hardware zunichtegehen. Es sollte somit klar sein, dass alle Schritte gut überlegt wurden bevor man die Software deployed.

- KP

# Übungsblatt 2
a) Bereit, Berechnet, Blockiert
b) ![[Pasted image 20231101115012.png]]
c)
	a) IO Anforderung
	b) Dispatcher entzieht Prozessor
d) 
mehrere Threads pro Prozess (1)
privater Thread (2)
- Offene Dateien (1)
- Tabelle zur Abbildung von logischen auf physische Adressen (1)
- Priorität für den CPU-Scheduler (2)
- Datenregister des Prozessors (2)
- Programmcode (1)
- Befehlszähler (1)
- Kellerzeiger (1)
- Lokale Variable einer Funktion bzw. Methode (1)
e) KP
f) KP

## Java Implementierung
