updatet
This commit is contained in:
parent
776a6ec0f9
commit
6d0b0a212a
BIN
Writerside/images/image_158.png
Normal file
BIN
Writerside/images/image_158.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
Writerside/images/image_159.png
Normal file
BIN
Writerside/images/image_159.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
@ -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"/>
|
||||||
|
@ -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
|
||||||
|
@ -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 |
|
||||||
|
58
Writerside/topics/BS/09_Interprozesskommunikation.md
Normal file
58
Writerside/topics/BS/09_Interprozesskommunikation.md
Normal 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
|
||||||
|
- 
|
||||||
|
|
||||||
|
## 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
|
||||||
|
- 
|
||||||
|
|
||||||
|
## 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
|
Loading…
x
Reference in New Issue
Block a user