Übungen Flashcards

(11 cards)

1
Q

Wieso ist der Von-Neumann-Flaschenhals heute nicht mehr so bedeutend?

A

Der Engpass der zwischen dem Prozessor und dem Speicher in der von Neumann Architektur vorhanden war, wurde durch den einbau von Caches in den Prozessoren deutlich verringert (Cache L1, L2). Da dadruch nun daten direkt im Prozessor bearbeitet werden können statt diese ständig vom Speicher zu laden müssen.
Zusätzlich erlauben moderne Bus-Systeme ca. 16GB/s und somit einen deutlich höheren durchsatz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Vorteile hat es wenn I/O Geräte Direct Memory Access (DMA) nutzen?

A

I/O Geräte können direkt auf den Hauptspeicher zugreifen ohne auf die Ausführung der Anfrage durch die CPU zu warten. Dadurch wird viel Zeit gespart, in der die I/O geräte und die CPU parallel arbeiten können.
Bsp: Bei grösseren Datenmenge muss der Prozessor die Daten nicht einzeln vom Gerätespeicher in den Hauptspeicher laden und hat somit mehr Rechenzeit für andere Anwendungen übrig.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wann ist es sinnvoll Polling einzusetzen und wann Interrupts?

A

Polling: Wenn bestimmte Ereignisse häufiger und in regelmässigen Zeitintervallen auftritt, so dass man die Pollingintervalle daran anpassen kann.
Interrupts: Wenn ereignisse unregelmässig auftreten und sie bei ihrem Auftreten sofort behandelt werden sollen. VORTEIL: Hauptprogramm beschäftigt sich mit anderen Aufgaben und Ereignisse können dennoch behandelt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie ist es einem Rechner mit einer CPU und einem Prozessorkern möglich, Prozesse scheinbar gleichzeitig auszuführen?

A

Der Prozessor bearbeitet eine gewisse Zeit (Rechenzeit) einen Prozess. Nach dieser Zeit wird der Prozess unterbrochen und wieder in die Warteschlange gereiht. Dann wird ein anderer Prozess bearbeitet und nach einer gewissen Zeit wieder unterbrochen. Hiebei muss bei jedem Wechsel eine Kontext -sicherung und -wiederherstellung durchgeführt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was passiert wenn eine ISR durch einen Hardware-Interrupt ausgelöst wird?

A

1) Gerät signalisiert über IRQ (Interrupt Request Lines) einen Interrupt
2) Interrupt Controller leitet Interrupt mit IRQ-Nummer (Interrupt Vektor) an CPU weiter (setzt Interrupt Register)
3) Nach Ende des letzten Maschinenbefehls erkennt die CPU durch prüfen, dass das Interrupt Register gesetzt wurde.
4) Zustand des aktuellen Programms wird gesichert
5) Adresse des (Interrupt-Handlers)ISR wird aus Interrupt Vektor Tabelle ausgelesen und angesprungen
6) Nach Ende der ISR wird der vorher gespeicherte Zustand widerhergestellt und das Programm läuft weiter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein ‘fork’?

A

Wird fork von einem Prozess aufgerufen, dann wird eine Kopie des Prozesses, inkl. Registerinhalte, Speicherbereichen, Ressourcen, dem aktuellen Zustand, Program Counter etc. (ABER ohne die PID) erzeugt und als neuer Kindprozess angelegt.
Danach laufen zwei Prozesse im gleichen Zustand, sie unterscheiden sich nur darin, dass der Kindprozess eine neue PID hat und dem Elternprozess angehört.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Beschreibe wie der zugehörige Syscall fork(2) verwendet wird, was die Bedeutung des Rückgabewertes ist und wie teuer ein fork unter Linux ist.
Welcher Mechanismus wird eigesetzt um die Kosten zu reduzieren?

A

Da bei fork alle Daten des Elternprozess kopiert werden müssen, ist dieser Vorgang sehr aufwendig (sowohl vom Zeit- als auch Speicherbedarf), es sei denn man optimiert ihn wie folgt:

Beim Syscall fork(2) werden nicht direkt alle Daten kopiert, sondern erst, wenn sie geändert werden sollen. Die Daten bleiben also erstmal unverändert und unkopiert solange nur lesend auf sie zugegriffen wird. Will nun einer der Prozesse einen Speicherinhalt verändern, so wird dieser Speicherbereich zuerst für alle Prozesse, die sich diesen vorher ‘geteilt’ haben, kopiert und erst danach verändet. (Copy on write)
Damit wird Zeit und Speicher gespart.

Nach dem Syscall fork(2) befinden sich sowohl Eltern- als auch Kindprozess an der gleichen Stelle im Programm, jedoch liefert der fork Aufruf einen anderen Rückgabewert: Im Kindprozess ist der Rückgabewert 0, im Elternprozess die PID des erzeugten Kindprozesses. Dadurch kann man sie etwas Unterschiedliches auführen lassen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist waitpid(2) und in welchem Kontext wird es eingesetzt?

A

Der Syscall waitpid(2) wird verwendet, damit ein Prozess auf eine Statusänderung in dem Kindprozess mit der im Parameter pid, angegeben pid wartet.
wait wartet nur auf die Statusänderung eines beliebigen Kindprozesses!
Eingesetzt wird der Befehl z.b. wenn ein Prozess Informationen aus einem anderen Prozess benötigt, die unter Umständen noch nicht bereit stehen. So kann er warten, bis der andere Prozess fertig ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist ein Zombie-Prozess? Wie lässt sich ein Zombie töten?

A

Wenn ein Prozess beendet wird, kommt er in den Zustand TASK_ZOMBIE. Er wird nicht mehr ausgeführt aber seine Daten bleiben erhalten, sodass der Elternprozess noch darauf zugreifen kann.

Ein Zombie-Prozess entsteht wenn er beendet wird, ohne dass der Elternprozess seinen Status liest bzw. nicht auf ihn gewartet hat. Da er dann bereits beendet ist, kann er nicht mit kill() getötet werden.
Er kann nur entfernt werden, indem der Elternprozess beendet wird, was jedoch nicht immer sinnvoll ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Geg: Message Queueing, Named Pipes, Shared Memory:

(1) Firefox instanz läuft und man gibt auf der Konsole $ firefox www.*
dann wird der Link im bereits bestehenden Fenster geöffnet. Anschliessend beendet sich der gerade auf der Konsole aufgerufene firefox prozess sofort. Die IPC findet hier zwischen dem Prozess statt, der das geöffnete Fenster verwaltet, und dem Prozesss, der auf der Konsole gestartet wird.

A

Übertragen werden muss nur einmalig der kurze String der URL vom Prozess aus der Konsole zum bestehenden Prozess, zu dem das Fenster gehört.
Sharedmemory wäre zu aufwendig, und ein besonders schneller Austausch ist hier garnicht nötig.
Message Queueing richtet sich vor allem an mehr als 2 Prozesse, was hier auch nicht nötig ist.
Da die named Pipes auf genau 2 Prozesse ausgerichtet, ressourcenschonend und leicht zu implementieren ist ist sie am besten geeignet für das simple Übertragen des Strings zwischen den beiden Prozessen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Geg: Message Queueing, Named Pipes, Shared Memory:

(2) Ein Webcam Client übernimmt regelmässig die Bilder von der Webcam in seinen internen Speicher. Bevor sie verschickt werden, werden in den Bildern Gesichter gesucht, und die Helligkeit entsprechend so angepasst, dass die Gesichter gut zu sehen sind.
Die Bildverarbeitung (Gesicher finden + Helligkeit anpassen) soll in einem Kind Prozess geschehen, der ständig parallel zum Webcam-Client läuft.
Modere Webcams können HD-Videos mit ca. 2Megapiyel und 25FPS aufnehmen
A

Es soll eine grossere Datenmenge mit ständigem Datenstrom möglichst in Echtzeit übertragen werden. Sowohl bei message queueing als bei pipe ist bei jedem Datenaustausch ein Kontextwechsel nötig, was bei 25FPS sehr aufwendig ist.
Den shared Memory einzurichten ist zwar etwas komplizierter und braucht entsprechende Ressourcen, aber der Datenaustausch zwischen den Prozessen geht sehr schnell und ohne Kontextwechsel. Da die Webcam über einen längeren Zeitraum, (im Massstab von Prozessen) läuft lohnt sich die Einrichtung des shared Memory.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly