generated from PlexSheep/baserepo
questions 01
This commit is contained in:
parent
c2ba7ae099
commit
f34d25321c
|
@ -0,0 +1,122 @@
|
||||||
|
# Fragen zum 1. Kapitel
|
||||||
|
|
||||||
|
**1. Was sind die Komponenten der von-Neumann-Architektur?**
|
||||||
|
|
||||||
|
Die von-Neumann-Architektur besteht aus einer CPU mit Steuer- und Rechenwerk,
|
||||||
|
einem einzelnen Speicher für Programmcode und Daten, und verschiedenen IO
|
||||||
|
Geräten wie Massenspeicher und Peripheriegeräte. Die Systeme werden mit einem
|
||||||
|
Bus-System verbunden.
|
||||||
|
|
||||||
|
**2. Was unterscheidet die von-Neumann-Architektur von der Harvard-Architektur?**
|
||||||
|
|
||||||
|
Die Harvard-Architektur hat im Gegensatz zur von-Neumann-Architektur getrennten
|
||||||
|
Speicher für Programmcode und Daten.
|
||||||
|
|
||||||
|
**3. Wieso ist es gerechtfertigt, komplexe moderne Speicherstrukturen als einen Speicher zu behandeln?**
|
||||||
|
|
||||||
|
Streng genommen gibt es in der von-Neumann-Architektur nur einen Speicher, aber
|
||||||
|
moderne Rechner haben mehrere Levels von Caches. Dadurch entsteht ein
|
||||||
|
Einheitliches Zugriffsmuster und die Komplexität des Computersystems wird
|
||||||
|
reduziert.
|
||||||
|
|
||||||
|
**4. Inwiefern unterscheidet sich unser Rechnermodell von der von-Neumann-Architektur?**
|
||||||
|
|
||||||
|
Moderne Rechner haben einen Memory Controller und Caches.
|
||||||
|
|
||||||
|
**5. Welche Schritte werden durchlaufen, damit ein Java-Programm ausgeführt werden kann?**
|
||||||
|
|
||||||
|
Das Java-Programm vorkompiliert. Das Betriebssystem führt eine JVM Instanz auf,
|
||||||
|
welche dann das vorkompilierte Java Programm ausführt. Die JVM Instanz generiert
|
||||||
|
dabei anhand des Java Programms die Instruktionen für die CPU daraus generiert
|
||||||
|
und diese dann ausführen lässt.
|
||||||
|
|
||||||
|
**6. Welche Schritte werden durchlaufen, um einen einzelnen Maschinenbefehl auszuführen?**
|
||||||
|
|
||||||
|
* Fetch -- Die Instruktion wird aus dem Speicher geladen
|
||||||
|
* Inkrementiere den IP/PC -- Dammit die nächste Instruktion geladen werden kann
|
||||||
|
* Decode -- Interpretiere die Instruktion und Argumente
|
||||||
|
* Execute -- Führe die Instruktion aus
|
||||||
|
* Memory Access -- Falls notwendig greife auf den Speicher zu
|
||||||
|
* Write Back -- Schreibe ggf. das Ergebnis in ein Register
|
||||||
|
|
||||||
|
**7. Wie viele Takte dauert die Ausführung eines einzelnen Maschinenbefehls?**
|
||||||
|
|
||||||
|
In der Regel dauert die Ausführung von Instruktionen einen Takt lang. Komplexere
|
||||||
|
Instruktionen können länger dauern.
|
||||||
|
|
||||||
|
**8. Suchen Sie 3 Befehle der x86-Architektur heraus**
|
||||||
|
|
||||||
|
* `mov` -- Daten zu oder aus Registern verschieben
|
||||||
|
* `add` -- Daten addieren
|
||||||
|
* `sub` -- Daten subtrahieren
|
||||||
|
|
||||||
|
**9. Führen Sie folgendes Programm mit dem Adventskalender-Beispiel aus der Vorlesung durch:**
|
||||||
|
|
||||||
|
```pseudocode
|
||||||
|
01 LOAD <<17>> → [R1] ; lade Tür 17 zu Register 1
|
||||||
|
02 LOAD <13> → [R2] ; lade Tür 13 zu Register 2
|
||||||
|
03 ADD [R1], [R2] → [O1] ; addiere Register 1 und 2 und schreibe zu O1
|
||||||
|
04 WRITE [O1] → I/O ; schreibe O1 in irgendein IO Gerät
|
||||||
|
05 MUL [R1], [R2] → [O1] ; multipliziere Register 1 und 2 und schreibe zu O1
|
||||||
|
06 WRITE [O1] → I/O ; schreibe O1 in irgendein IO Gerät
|
||||||
|
```
|
||||||
|
(siehe Kommentare, das ist Pseudocode und damit nicht ausführbar)
|
||||||
|
|
||||||
|
**10. Welche Probleme kann es geben, wenn auf einem System mehrere Programme gleichzeitig laufen sollen?**
|
||||||
|
|
||||||
|
* Programme "streiten" sich um Ressourcen
|
||||||
|
* Programme greifen auf den Speicher eines anderen Programmes zu und verändern dort Daten
|
||||||
|
* Programme müssen aufeinander warten, weil eine Ressource nur begrenzt verfügbar ist
|
||||||
|
* Ein Programm muss zu lange auf Ressourcen warten, der Programmkontext ist dann
|
||||||
|
veraltet
|
||||||
|
* …
|
||||||
|
|
||||||
|
**11. Was ist die Aufgabe von Betriebssystemen?**
|
||||||
|
|
||||||
|
Das Betriebssystem hat die Aufgabe, die Ressourcen (seien diese Software oder
|
||||||
|
Hardware Ressourcen) des Systems zu verwalten und an die unprivilegierten
|
||||||
|
Prozesse zu verteilen. Moderne Betriebssysteme haben oft noch deutlich mehr
|
||||||
|
Aufgaben.
|
||||||
|
|
||||||
|
**12. Was besagt das Highlander-Prinzip?**
|
||||||
|
|
||||||
|
"There can only be one."
|
||||||
|
|
||||||
|
**13. Warum muss für Betriebssysteme das Highlander-Prinzip gelten?**
|
||||||
|
|
||||||
|
Es kann pro System nur ein Betriebssystem geben.
|
||||||
|
|
||||||
|
**14. Geben Sie drei Beispiele für Software-Betriebsmittel**
|
||||||
|
|
||||||
|
Dateien, Netzwerkssockets und Threads
|
||||||
|
|
||||||
|
**15. Warum ist die CPU ein entziehbares und exklusives Betriebsmittel?**
|
||||||
|
|
||||||
|
Prozesse schreiten genau dann voran, wenn die CPU ihre Instruktionen
|
||||||
|
bearbeitet. Wenn nicht, wartet das Programm darauf, dass es wieder CPU Zeit
|
||||||
|
bekommt.
|
||||||
|
|
||||||
|
**16. Warum muss das Betriebssystem vor Anwendungssoftware abgeschottet werden?**
|
||||||
|
|
||||||
|
Das Betriebssystem hat besondere Rechte die Hardware zu manipulieren, z.B. das
|
||||||
|
Gerät auszuschalten. Außerdem kann das Betriebssystem jede Datei, jeden Prozess
|
||||||
|
auf dem Gerät einsehen. Anwendersoftware sollte diese Möglichkeit nicht haben,
|
||||||
|
damit keine unnötigen Risiken eingegangen werden.
|
||||||
|
|
||||||
|
**17. Warum müssen Anwendungen untereinander abgeschottet werden?**
|
||||||
|
|
||||||
|
Ansonsten könnten Programme versehentlich auf den Speicher anderer Programme
|
||||||
|
zugreifen und so undefiniertes Verhalten erzeugen.
|
||||||
|
|
||||||
|
**18. Warum werden die Befehle aus Frage 8 im User- bzw. Kernelmodus ausgeführt?**
|
||||||
|
|
||||||
|
* `mov` -- Daten zu oder aus Registern verschieben -- Jedes Programm braucht Daten im Register, um Aktionen ausführen zu können
|
||||||
|
* `add` -- Daten addieren -- Addition ist eine grundlegende Rechenoperation
|
||||||
|
* `sub` -- Daten subtrahieren -- Subtraktion ist eine grundlegende Rechenoperation
|
||||||
|
|
||||||
|
**19. Warum ist eine Trennung zwischen User- und Kernelmodus ohne Hilfe der Hardware nicht möglich?**
|
||||||
|
|
||||||
|
Jedes Programm kann Instruktionen an die CPU geben, welche dort ausgeführt
|
||||||
|
werden. Instruktionen an sich haben keine Daten darüber, ob sie privilegiert
|
||||||
|
sind oder nicht, daher muss die Hardware zur unterscheidung der Rechte irgendwo
|
||||||
|
speichern, ob Instruktionen privilegiert ausgeführt werden, oder nicht.
|
|
@ -0,0 +1,2 @@
|
||||||
|
This directory contains questions and solutions for each chapter. The
|
||||||
|
questions are in German, and will also be answered in German.
|
Loading…
Reference in New Issue