interprocess communication
Főnév
interprocess communication (tsz. interprocess communications)
Folyamatok közötti kommunikáció (IPC - Inter-Process Communication)
Az IPC lehetővé teszi a folyamatok számára, hogy adatokat cseréljenek és összehangolják a működésüket. Mivel a folyamatok általában függetlenek, szükség van mechanizmusokra a kommunikációjukhoz.
1. IPC Mechanizmusok
a) Csövek (Pipes)
Egyirányú kommunikációs csatorna.
Egyik folyamat ír, a másik olvas.
Típusai:
- Névtelen cső (Anonymous Pipe) – csak szülő-gyermek folyamatok között működik.
- Nevesített cső (Named Pipe, FIFO) – egymástól független folyamatok is használhatják.
- Névtelen cső (Anonymous Pipe) – csak szülő-gyermek folyamatok között működik.
Példa (Linux):
int fd[2]; pipe(fd);
b) Üzenetsorok (Message Queues)
Egy sor, amelyben a folyamatok üzeneteket helyezhetnek el és olvashatnak ki.
Aszinkron kommunikációt tesz lehetővé.
Az üzenetek addig maradnak a sorban, amíg egy folyamat ki nem olvassa őket.
Példa (Linux - System V):
msgget(key, IPC_CREAT | 0666);
c) Megosztott memória (Shared Memory)
Leggyorsabb IPC mechanizmus, mert a folyamatok közvetlenül osztoznak a memóriaterületen.
Szinkronizáció szükséges (például szemaforok használata), hogy elkerüljük az adatütközést.
Példa (Linux - System V):
shmat(shmid, NULL, 0);
d) Hálózati aljzatok (Sockets)
Lehetővé teszi a különböző gépeken futó folyamatok közötti kommunikációt.
TCP/IP és UDP protokollokon alapul.
Példa (C - TCP Socket):
socket(AF_INET, SOCK_STREAM, 0);
e) Jelek (Signals)
Egyszerű üzenetek küldésére használható, például folyamatok leállítására (
SIGKILL,SIGSTOP).
Aszinkron, de kis méretű adatokat tud továbbítani.
Példa (Linux):
kill(pid, SIGTERM);
2. Szinkronizáció az IPC-ben
Mivel több folyamat is hozzáférhet ugyanahhoz az erőforráshoz, szinkronizáció szükséges az ütközések elkerülése érdekében.
Szemaforok (Semaphores): Számlálók, amelyek szabályozzák az erőforrásokhoz való hozzáférést.
sem_wait(&sem); sem_post(&sem);
Mutual Exclusion (Mutex): Biztosítja, hogy egyszerre csak egy folyamat férjen hozzá az erőforráshoz.
pthread_mutex_lock(&mutex); pthread_mutex_unlock(&mutex);
Monitorok: Magas szintű szinkronizációs mechanizmus, amely feltételváltozókat használ.
3. Melyik IPC mechanizmust érdemes használni?
| IPC Mechanizmus | Sebesség | Bonyolultság | Legjobb felhasználás |
|---|---|---|---|
| Csövek (Pipes) | Közepes | Alacsony | Szülő-gyermek folyamatok közötti kommunikáció |
| Üzenetsorok (Message Queues) | Közepes | Közepes | Aszinkron üzenetküldés |
| Megosztott memória (Shared Memory) | Nagyon gyors | Magas | Nagy adatmennyiség megosztása |
| Hálózati aljzatok (Sockets) | Lassú | Magas | Hálózati kommunikáció |
| Jelek (Signals) | Lassú | Alacsony | Egyszerű értesítések küldése |
- interprocess communication - Szótár.net (en-hu)
- interprocess communication - Sztaki (en-hu)
- interprocess communication - Merriam–Webster
- interprocess communication - Cambridge
- interprocess communication - WordNet
- interprocess communication - Яндекс (en-ru)
- interprocess communication - Google (en-hu)
- interprocess communication - Wikidata
- interprocess communication - Wikipédia (angol)