11. Tétel — Folyamatközi kommunikáció eszközei és keresési-rendezési algoritmusok

Frissítve: 2026-09-09

Ez a tétel két nagyobb témakört fed le: a folyamatok közti kommunikáció (IPC) eszközeit, valamint a keresési és rendezési algoritmusokat a hozzájuk tartozó komplexitáselméleti alsó korlátokkal együtt.

Témák

I. Témakör: A folyamatok közti kommunikáció eszközei (IPC)

II. Témakör: Keresési és rendezési algoritmusok, komplexitáselméleti alsó korlátok

Hirdetés

I. Témakör: A folyamatok közti kommunikáció eszközei (IPC)

1. Bevezetés: Miért van szükség folyamatközi kommunikációra?

A folyamatok közti kommunikáció (angolul Inter-Process Communication, röviden IPC) azon módszerek és mechanizmusok összessége, amelyek lehetővé teszik a számítógépen futó különböző folyamatok számára, hogy adatokat cseréljenek egymással, és szinkronizálják a tevékenységüket.

A modern operációs rendszerekben minden futó folyamat izolált memóriaterülettel rendelkezik. Ez a szigorú elválasztás a biztonságot és a stabilitást szolgálja: ha az egyik program meghibásodik vagy összeomlik, az nem rántja magával a többi futó alkalmazást.

Mivel azonban a folyamatok nem láthatják közvetlenül egymás memóriáját, szükség van az operációs rendszer (OS) által biztosított hivatalos csatornákra az információcseréhez.

2. File

A fájl alapú kommunikáció a legegyszerűbb IPC mechanizmus, ahol a folyamatok egy közösen elérhető fájlon keresztül cserélnek adatot. A kommunikáció lényege, hogy az egyik folyamat adatokat ír egy fájlba, míg a másik folyamat (vagy folyamatok) ugyanebből a fájlból olvassa ki azokat. A cél itt egy olyan közös, perzisztens adattároló létrehozása, amelyet a folyamatok megoszthatnak.

A kommunikációban részt vevő folyamatoknak ismerniük kell a közös fájl nevét és elérési útját. Az adatcseréhez mindkét folyamatnak rendelkeznie kell a megfelelő jogosultságokkal. Az egyik folyamat megnyitja a fájlt írásra, beleírja a küldendő adatokat, majd lezárja azt. A fogadó folyamat megnyitja a fájlt olvasásra, kiolvassa az adatokat, majd szintén lezárja. Az operációs rendszer garantálja, hogy a fájlba írt adatok a háttértárolóra kerüljenek.

3. Szignál

A szignál egy aszinkron szoftvermegszakítás, amelyet az operációs rendszer kernelje vagy egy másik folyamat küld egy adott folyamatnak egy esemény jelzésére. A kommunikáció csupán egyetlen, előre definiált egész szám elküldésére korlátozódik, amely egy adott eseménytípusnak felel meg.

Működése: Amikor egy folyamat szignált kap, a normál végrehajtása megszakad, és a kernel átadja neki a vezérlést a szignál kezelésére. A fogadó folyamat háromféleképpen reagálhat a beérkező szignálra:

4. Csővezeték (Pipes)

A csővezeték egy egyirányú adatcsatorna, amelyet az operációs rendszer kernelje hoz létre és kezel a memóriában. Célja, hogy egy folyamat kimenetét egy másik folyamat bemenetére irányítsa át, lehetővé téve a folyamatos adatfolyamot közöttük. A csővezeték egy klasszikus "producer-consumer" modellt valósít meg: az egyik folyamat (producer) írja az adatfolyamot, a másik (consumer) pedig olvassa azt.

A csővezeték a kernelben egy fix méretű körkörös pufferként valósul meg. Amikor egy folyamat adatot ír a csővezetékbe, az adatok a pufferbe kerülnek. Amikor egy másik folyamat olvas a csővezetékből, az adatok a pufferből kerülnek kiolvasásra.

5. Socketek (Sockets)

A socket egy szoftveres végpont a folyamatok közötti kétirányú kommunikációs csatornában. A socket API (Application Programming Interface) egy absztrakciós réteget biztosít, amely elrejti a hálózati kommunikáció alacsony szintű részleteit, és egy, a fájlkezeléshez hasonló interfészt nyújt a programozók számára. A socketek elsődleges célja, hogy lehetővé tegyék a különböző számítógépeken futó folyamatok közötti kommunikációt a hálózaton keresztül, de hatékonyan használhatók egyazon gépen belüli kommunikációra is.

Hirdetés

II. Témakör: Keresési és rendezési algoritmusok, komplexitáselméleti alsó korlátok

1. Keresési algoritmusok és lépésszámuk

A keresés feladata annak eldöntése, hogy egy adott kulcsérték szerepel-e egy adatszerkezetben (pl. tömbben), és ha igen, hol található.

2. Egyszerű rendezések: Beszúrásos rendezés (Insertion Sort)

A rendezési algoritmusok célja egy adathalmaz elemeinek átrendezése egy adott reláció (pl. növekvő) szerint.

3. "Oszt és uralkodj" alapú rendezések: Összefésüléses rendezés és Gyorsrendezés

Összefésüléses rendezés (Merge Sort)

Gyorsrendezés (Quicksort)

4. Az összehasonlító rendezések alsó korlátja

5. Rendezés lineáris lépésszámmal: Radix és Vödör rendezés

Ha az adatok speciális tulajdonságait kihasználjuk, megkerülhető az Ω(n log n) korlát, és lineáris O(n) idejű rendezések valósíthatók meg.

Radix rendezés (Radix Sort)

A "stabilan" szó itt kulcsfontosságú. Azt jelenti, hogy ha két elemnek az aktuális helyiértéken megegyezik a számjegye, az eredeti sorrendjük nem változhat meg. A Radix rendezés belső rendezőalgoritmusaként leggyakrabban a Leszámláló rendezést (Counting Sort) használják, amely stabil és lineáris idejű.

Vödör rendezés (Bucket Sort)

Hirdetés

Hasznosnak találtad ezt a tételt?

Ezek a kidolgozások minden hallgató számára ingyenesek. Ha időt spóroltál vele, fontold meg egy borravaló hagyását.

☕ Hívj meg egy kávéra