04_ipc-part1_slides_Z Flashcards

1
Q

Was versteht man unter Interprozesskommunikation (IPC)?

A

Interprozesskommunikation (IPC) bezieht sich auf verschiedene Methoden des Informationsaustauschs zwischen Prozessen eines Systems. Diese Kommunikation kann entweder speicherbasiert (z.B. Shared-Memory) oder nachrichtenbasiert (z.B. Pipes, Message-Queues) erfolgen. IPC wird oft in Verbindung mit Prozesssynchronisation verwendet, um den koordinierten Nachrichtenaustausch sicherzustellen.

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

Welche Arten der Interprozesskommunikation gibt es?

A

Es gibt zwei Hauptarten der Interprozesskommunikation: 1. Speicherbasierte Kommunikation: Dazu gehören Techniken wie gemeinsamer Speicher (Shared-Memory) und gemeinsame Dateien. 2. Nachrichtenbasierte Kommunikation: Dazu gehören der Austausch von Nachrichten über Mechanismen wie Message-Queues oder Pipes. Diese Methode arbeitet auf einem Abstraktionslevel über der speicherbasierten Kommunikation.

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

Was sind Signale (Signals) in POSIX-Systemen?

A

Signale sind numerische Systemnachrichten, die an laufende Prozesse gesendet werden können. Sie können vom Benutzer, anderen Prozessen oder vom Betriebssystem gesendet werden. Beispiele für wichtige Signale sind: - SIGHUP: Hangup detected (1) - SIGINT: Interrupt from keyboard (2) - SIGKILL: Kill signal (9) - SIGTERM: Termination signal (15)

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

Wie funktioniert die Signalbehandlung in POSIX-Systemen?

A

A: - Das laufende Programm wird unterbrochen. - Der registrierte Signal-Handler wird ausgeführt, falls vorhanden. - Die Programmausführung wird fortgesetzt. Signal-Handler werden mit der Funktion sigaction registriert, um benutzerdefinierte Aktionen wie einen geordneten Shutdown (graceful shutdown) zu ermöglichen.

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

Was ist der Zweck der alarm Funktion in POSIX-Systemen?

A

A: Mit alarm(unsigned seconds) kann ein Prozess nach einer bestimmten Zeit aufgeweckt oder eine Aktion ausgelöst werden. Dies ist nützlich für zeitbasierte Ausführungen oder um sicherzustellen, dass ein Prozess nicht unendlich lange wartet.

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

Was sind Unnamed Pipes und wie werden sie verwendet?

A

Unnamed Pipes sind unidirektionale Datenströme zwischen zwei Prozessen. Sie werden mit pipe(int pipefd[2]) erzeugt und meist in Verbindung mit fork() verwendet. Daten werden nach dem First-In-First-Out (FIFO) Prinzip behandelt. Beispielcode:

c int pipefd[2]; pipe(pipefd); pid_t cpid = fork(); if (cpid == 0) { // Kindprozess close(pipefd[1]); char buffer[128]; read(pipefd[0], buffer, 128); printf("Kind: %s\n", buffer); } else { // Elternprozess close(pipefd[0]); write(pipefd[1], "Hallo Welt!", 12); }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind Named Pipes (FIFO) und wie unterscheiden sie sich von Unnamed Pipes?

A

Named Pipes ermöglichen die Kommunikation zwischen nicht-verwandten Prozessen und sind persistent im Dateisystem als Datei sichtbar. Sie werden mit mkfifo(const char *pathname, mode_t mode) erstellt und verhalten sich wie eine Mischung aus Datei und Pipe. Beispiel für einen schreibenden Prozess:

c mkfifo("/tmp/myfifo", 0666); int fd = open("/tmp/myfifo", O_WRONLY); write(fd, "Hallo Welt!", 12); close(fd); unlink("/tmp/myfifo");
Beispiel für einen lesenden Prozess:
c int fd = open("/tmp/myfifo", O_RDONLY); char buffer[128]; read(fd, buffer, 128); printf("FIFO: %s\n", buffer); close(fd);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie können Dateideskriptoren in POSIX-Systemen dupliziert und umgeleitet werden?

A

A: Mit dup2(int oldfd, int newfd) können Dateideskriptoren dupliziert und Ein-/Ausgabekanäle (stdin, stdout, stderr) umgelenkt werden. Dies ist nützlich, um die Ausgabe eines Prozesses in eine Pipe oder Datei umzuleiten. Beispiel:

c int fd = open("output.txt", O_WRONLY); dup2(fd, STDOUT_FILENO); // Umleitung der Standardausgabe in die Datei
How well did you know this?
1
Not at all
2
3
4
5
Perfectly