Ugrás a tartalomhoz

Operációs rendszerek

Dr. Fazekas Gábor (2011)

Kempelen Farkas Hallgatói Információs Központ

Folyamatok kommunikációja (IPC)

Folyamatok kommunikációja (IPC)

Az IPC olyan mechanizmust jelent, amely lehetővé teszi, hogy processzusok egymással kommunikáljanak, akcióikat összehangolják ill. szinkronizálják.

  • Az IPC kétművelete:

    • – send(message) és

    • – receive(message)

    • – ha a P és Q processzusok kommunikálni szeretnének, akkor szükségük van egy kommunikációs vonalra (communication link)

  • Direkt kommunikáció:

    • – send(P, message): küldj egy üzenetet P-nek (utasítás Q-ban)

    • – receive(Q, message): fogadj egy üzenetet Q-tól (utasítás P-ben)

    • – a kommunikációs vonal ebben az esetben automatikusan épül fel a két processzus között (PID azonosító ismerete szükséges!)

    • – a vonal pontosan két processzus között létezik

  • Indirekt kommunikáció:

    • – send(A, message): küldj egy üzenetet az „A” Mail-boxba (Mail-box: egy közösen használt, megosztott adatszerkezet)(utasítás Q-ban)

    • – receive(A, message): olvass ki egy üzenetet az A Mail-boxból (utasítás P-ben)

    • – a kommunikációs vonal abben az esetben épül fel a két processzus között, ha közösen használhatják az A Mail-boxot (PID ismerete nem szükséges!)

Az „olvasók-írók” probléma

  • Egy adatot, állományt több processzus megosztva, párhuzamosan használ, egyesek csak olvassák, mások csak írják. Hogyan biztosítható az adatok konzisztenciája?

  • Egy stratégia (olvasók prioritása):

    • – párhuzamosan akárhány olvasó olvashatja a fájlt

    • – egyszerre egy író írhat a fájlba

    • – ha egy író éppen fájlba ír, olvasó nem férhet hozzá a fájlhoz

  • Egy másik stratégia (írók prioritása):

    • – olvasó nem férhet hozzá a fájlhoz, amint egy író írási szándékot jelez

  • Mindkettő éhezéshez (starvation) vezethet!