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