This commit is contained in:
David Schirrmeister 2024-05-10 12:26:31 +02:00
parent 776a6ec0f9
commit 6d0b0a212a
6 changed files with 64 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -13,6 +13,7 @@
<toc-element topic="06_prozessstruktur.md"/> <toc-element topic="06_prozessstruktur.md"/>
<toc-element topic="07_Prozesssynchronisation.md"/> <toc-element topic="07_Prozesssynchronisation.md"/>
<toc-element topic="08_Threads.md"/> <toc-element topic="08_Threads.md"/>
<toc-element topic="09_Interprozesskommunikation.md"/>
</toc-element> </toc-element>
<toc-element toc-title="OOAD"> <toc-element toc-title="OOAD">
<toc-element topic="IntroductionOOAD.md"/> <toc-element topic="IntroductionOOAD.md"/>

View File

@ -82,6 +82,9 @@ resume_execution();
- Zugriff auf gemeinsam genutzte Datenstrukturen - Zugriff auf gemeinsam genutzte Datenstrukturen
- Hardware - Hardware
## Semaphores
- Ähnlich wie Mutex, nur zusätzlich mit Kommunikation durch [Signale](#signale)
## Mutex vs Semaphore ## Mutex vs Semaphore
Befehle mit [POSIX API](06_prozessstruktur.md#posix-api) Befehle mit [POSIX API](06_prozessstruktur.md#posix-api)
### Mutex ### Mutex
@ -108,6 +111,7 @@ Befehle mit [POSIX API](06_prozessstruktur.md#posix-api)
> Es ist wichtig, Synchronisationsmechanismen sorgfältig zu verwenden, > Es ist wichtig, Synchronisationsmechanismen sorgfältig zu verwenden,
> um sicherzustellen, dass kritische Abschnitte effizient und sicher koordiniert werden > um sicherzustellen, dass kritische Abschnitte effizient und sicher koordiniert werden
**Praktisches Anwendungsbeispiel: Siehe Praktikum 4**
## Deadlock ## Deadlock
(Stillstand / Blockade) ist eine Situation, bei der zwei oder mehr Prozesse auf unbestimmte Weise blockiert sind, weil sie auf die Freigabe von Ressourcen warten (Stillstand / Blockade) ist eine Situation, bei der zwei oder mehr Prozesse auf unbestimmte Weise blockiert sind, weil sie auf die Freigabe von Ressourcen warten

View File

@ -10,7 +10,7 @@
|-------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| |-------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|
| Definition | Kleinste ausführbare Einheit innerhalb eines Prozesses | Unabhängiges Programm in Ausführung | | Definition | Kleinste ausführbare Einheit innerhalb eines Prozesses | Unabhängiges Programm in Ausführung |
| Ressourcenzuweisung | Teilen denselben Adressraum & Ressourcen innerhalb eines Prozesses | Haben eigenen Adressraum und separate Ressourcen | | Ressourcenzuweisung | Teilen denselben Adressraum & Ressourcen innerhalb eines Prozesses | Haben eigenen Adressraum und separate Ressourcen |
| Kommunikation | direkter Zugriff auf gemeinsame Daten<br/>erfordert synchronisierte Mechanismen | erfordert aufwändige Mechanismen wie IPC | | Kommunikation | direkter Zugriff auf gemeinsame Daten<br/>erfordert synchronisierte Mechanismen | erfordert aufwändige Mechanismen wie [IPC](09_Interprozesskommunikation.md) |
| [Synchronisation](07_Prozesssynchronisation.md) | benötigt Synchronisationsmechanismen um Rennbedingungen zu vermeiden | Isoliert voneinander, weniger Rennbedingungen,<br/>aber schwerere Synchronisation zwischen Prozessen | | [Synchronisation](07_Prozesssynchronisation.md) | benötigt Synchronisationsmechanismen um Rennbedingungen zu vermeiden | Isoliert voneinander, weniger Rennbedingungen,<br/>aber schwerere Synchronisation zwischen Prozessen |
| Overhead | **geringerer Overhead** | höherer Overhead, da separate Adressräume und Ressourcen | | Overhead | **geringerer Overhead** | höherer Overhead, da separate Adressräume und Ressourcen |
| Ressourcennutzung | **effiziente Nutzung innerhalb desselben Prozesses** | höherer Ressourcenverbrauch aufgrund separater Adressräume | | Ressourcennutzung | **effiziente Nutzung innerhalb desselben Prozesses** | höherer Ressourcenverbrauch aufgrund separater Adressräume |

View File

@ -0,0 +1,58 @@
# Interprozesskommunikation (IPC)
- Mechanismen und Techniken, die es Prozessen ermöglichen miteinander zu kommunizieren
- auf demselben Computer / über ein Netzwerk hinweg
- Ist grundsätzlich wichtig, wenn Prozesse
- zusammenarbeiten
- Daten austauschen
- miteinander interagieren
- Wahl der Methodik hängt von Anforderung der Anwendung ab
- Effizienz
- Datenvolumen
- Sicherheit
- Komplexität
## Synchrone IPC
- Prozess, bei dem der Absender eines [Signals](07_Prozesssynchronisation.md#signale)/Nachricht auf eine Bestätigung oder eine Antwort vom Empfänger wartet
- stellt sicher, dass
- Absender und Empfänger synchronisiert sind
- Ereignisse/Aufgaben sind abgeschlossen bevor andere anfangen
- ![image_158.png](image_158.png)
## Asynchrone IPC
- Prozesse, bei dem der Absender nicht auf sofortige Antwort wartet
- Absender setzt Ausführung fort, während Empfänger verarbeitet und ggf. später antwortet
- ![image_159.png](image_159.png)
## Mechanismen
- [Shared Memory](#shared-memory)
- [Dateien](#dateien)
- [Message Queues](#message-queues)
- Pipes
- Promises (Futures)
- Sockets
- [Semaphoren](07_Prozesssynchronisation.md#semaphores)
- [Mutexe](07_Prozesssynchronisation.md#mutex-mutual-exclusion)
- Condition Variables
- Remote Procedure Call (RPC)
### Shared Memory
- ermöglicht mehreren Prozessen auf denselben _physischen Speicherbereich_ zuzugreifen
- Austausch von Daten effizient ohne explizite Kommunikation
- Speicherbereich wird im RAM erstellt
- Kann von beteiligten Systemen gelesen und beschrieben werden
- müssen sich selbst koordinieren
#### Linux-Systemaufrufe Shared Memory
- **shmget** - Segment erzeugen oder auf bestehendes Zugreifen
- **shmat** - Segment an anderen Prozess anhängen
- **shmdt** - Segment von Prozess lösen/freigeben
- **shmctl** - Status eines Segments abfragen/ändern/löschen
### Dateien
- Prozesse können auf gemeinsame Dateien zugreifen
- Zugriff kann langsamer als andere [IPC-Mechanismen](#mechanismen) sein
- Darauf muss man achten:
- Zugriffsrechte korrekt setzen um Sicherheit zu gewährleisten
- geeignete [Synchronisationsmechanismen](07_Prozesssynchronisation.md#mutex-vs-semaphore) nutzen
## Message Queues