IPC Inter Process Communication Flashcards

1
Q

Was ist Interprozesskommunikation (IPC)?

A

Interprozesskommunikation (IPC) bezeichnet Verfahren des Informationsaustauschs zwischen Prozessen eines Systems, entweder speicherbasiert oder nachrichtenbasiert.

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

Was ist der Unterschied zwischen speicherbasierter und nachrichtenbasierter Kommunikation bei IPC?

A

Speicherbasierte Kommunikation verwendet gemeinsamen Speicher wie Shared Memory, während nachrichtenbasierte Kommunikation über Nachrichtenaustausch erfolgt, z.B. mit Pipes oder Message Queues.

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

Was sind Signals in der Interprozesskommunikation?

A

Signals sind numerische Systemnachrichten, die Prozesse oder das Betriebssystem an laufende Prozesse senden, um Ereignisse wie Interrupts oder Fehler zu signalisieren.

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

Wie können Signale in Linux gesendet werden?

A

Signale können mit dem Befehl kill oder mit der Systemfunktion kill(pid_t pid, int sig) gesendet werden. Ein Prozess kann sich auch selbst Signale senden mit raise(int sig).

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

Was passiert, wenn ein Signal gesendet wird?

A

Das laufende Programm wird unterbrochen, der Signal-Handler wird ausgeführt, und anschließend wird das Programm von der Stelle fortgesetzt, an der es unterbrochen wurde.

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

Was ist ein Signal-Handler?

A

Ein Signal-Handler ist eine benutzerdefinierte Funktion, die ausgeführt wird, wenn ein bestimmtes Signal an einen Prozess gesendet wird. Beispiel: sigaction() registriert einen neuen Signal-Handler.

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

Was sind Pipes in der Interprozesskommunikation?

A

Pipes sind unidirektionale Datenströme, die zwei Prozesse miteinander verbinden. Daten fließen vom Schreib-Ende zum Lese-Ende der Pipe.

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

Wie wird eine Pipe in C erstellt?

A

Eine Pipe wird in C mit der Funktion pipe(int pipefd[2]) erstellt, wobei pipefd[0] das Lese-Ende und pipefd[1] das Schreib-Ende der Pipe repräsentiert.

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

Wie werden Pipes typischerweise verwendet?

A

Pipes werden häufig mit fork() verwendet, um Daten zwischen einem Eltern- und einem Kindprozess zu übertragen. Der Kindprozess erbt die Dateideskriptoren der Pipe.

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

Was ist eine Named Pipe (FIFO)?

A

Eine Named Pipe (FIFO) ist eine Pipe, die einen Namen im Dateisystem hat und es nicht-verwandten Prozessen ermöglicht, über einen persistenten Datenstrom zu kommunizieren.

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

Wie wird eine Named Pipe erstellt?

A

Eine Named Pipe wird mit dem Befehl mkfifo oder der Systemfunktion mkfifo(const char *pathname, mode_t mode) erstellt. Sie erscheint als Datei im Dateisystem.

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

Was ist der Unterschied zwischen Named und Unnamed Pipes?

A

Unnamed Pipes existieren nur während der Lebensdauer der beteiligten Prozesse und können nur zwischen verwandten Prozessen genutzt werden, während Named Pipes im Dateisystem existieren und von beliebigen Prozessen verwendet werden können.

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

Wie funktioniert der Datenaustausch über eine Pipe?

A

Daten werden vom Schreib-Ende der Pipe in den Puffer geschrieben und vom Lese-Ende ausgelesen. Beide Enden müssen geöffnet sein, sonst blockiert der Prozess.

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

Was ist der Shell-Befehl für Pipes?

A

In der Shell wird das Pipe-Symbol | verwendet, um die Ausgabe eines Programms als Eingabe für ein anderes zu verwenden, z.B. ls -lha | sort | wc -w.

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

Was sind die Vorteile von Named Pipes?

A

Named Pipes ermöglichen die Kommunikation zwischen nicht-verwandten Prozessen und bleiben als Datei im Dateisystem bestehen, auch nach Beendigung der beteiligten Prozesse.

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

Was sind die wichtigsten Systemfunktionen zur Arbeit mit Named Pipes?

A

Zum Erstellen einer Named Pipe wird mkfifo() verwendet, zum Löschen unlink(). Lesen, Schreiben und Schließen erfolgen mit den Standardfunktionen open(), read(), write() und close().