3.4 - Interprocess Communication (p.119)

  • Independent Process = Een process dat niet kan worden beinvloed, of een ander process kan beinvloeden.
  • Cooperating Process = Een process dat door andere processen kan worden beinvloed, en andere processen kan beinvloeden.
  • Redenen voor cooperating processen:
    1. Delen van informatie
      • Gelijktijdige beschikbaarheid van data omdat meerdere gebruikers hier dan gebruik van kunnen maken.
    2. Versnellen van de verwerkingssnelheid
      • Opdelen van een taak in subtaken om parrallel uit te kunnen voeren. (mits de pc meerdere CPUs oa heeft)
    3. Modulariteit
      • Verdelen van verschillende systeemtaken in verschillende processen of threads.
    4. Makkelijk
      • Een gebruiker kan meerdere taken uitvoeren over dezelfde data (bewerken, printen, compileren oa)
  • IPC (Interprocess Communication) = Mechanisme dat processen toestaat om data en informatie uit te wisselen. (nodig voor cooperating processes)
  • 2 Fundamentele modellen
  • Shared Memory = Een gedeelte van het geheugen wordt gereserveerd waar de processen allebei kunnen lezen en schrijven.
    • Maximale snelheid, gebruiksgemak, geen kernel interventie nodig na setup.
    • De processen zijn zelf verantwoordelijk voor conflictvermijding.
    • Buffers worden gebruikt om informatie uit te wisselen.
  • Message Passing = "Berichten" worden gestuurd naar het andere process via de system calls.
    • Vermijding van conflicten, goed voor kleinere hoeveelheden informatie, behoeft meer cpu tijd door continue kenel interventie.
    • Direct Symmettric Communication = De verzender heeft de naam van de ontvanger nodig om een bericht te kunnen sturen.
      • Er bestaat maar 1 link tussen de maximaal 2 processen.
      • De processen hebben alleen elkaars identiteit nodig om te kunnen communiceren.
      • Een link wordt automatisch gemaakt wanneer er gecommuniceerd moet worden.
    • Direct Asymmetric Communication = De verzender hoeft de naam van de ontvanger niet te weten.
    • Indirect Communication = Berichten worden verstuurd en ontvangen via mailboxen/ports.
      • Een link tussen twee processen ontstaat alleen als beide processen de mailbox delen.
      • Een link kan bestaan uit meerdere processen.
      • Er kunnen meerdere links/mailboxes bestaan tussen processen.
      • Een mailbox kan eigendom zijn van een Proces of het OS.
      • Een mailbox heeft bij creatie 1 eigenaar, die alleen de mail hiervan kan ontvangen.
      • Een mailbox wordt verwijderd zodra de eigenaar hiervan eindigt.
      • Het eigendom van een mailbox kan worden overgedragen (en kan resulteren in meerdere eigenaren)
      • De implementatie van send() en receive() kan op 2 verschillende manieren:
        1. Blocking/asynchronous1 send = Het process wordt geblokkeerd totdat het bericht is ontvangen bij de ontvanger.
        2. Blocking/asynchronous receive = Het process wordt geblokkeerd totdat er een bericht beschikbaar is.
        3. Nonblocking/synchronous send = Het process wordt hervat zodra het bericht is verstuurd.
        4. Nonblocking/synchronous receive = Het process ontvangt een goed bericht of null.
    • Bij elke vorm van communicatie worden de berichten bewaart in een tijdelijke queue. Die kunnen de volgende implentaties hebben:
      1. Zero Capacity = Er kan geen bericht in de link/queue wachten. De sender wordt dus geblokkeerd totdat de receiver ruimte heeft.
      2. Bounded Capacity = Er kunnen n aantal berichten wachten in de link/queue. De zender wordt geblokkeerd wanneer er n berichten in de queue zitten.
      3. Unbounded Capacity = De link/queue in in theorie oneindig groot. De zender wordt dus nooit geblokkeerd.
  • Consumer-Producer scenario
    • Producer = Prodceert elementen (server).
    • Consumer = Consumeert elementen (client).
  • Buffers:
    • Unbounded Buffer = Buffer zonder limiet, consumer moet wachten wanneer de buffer leeg is.
    • Bounded Buffer = Buffer met limiet, producer moet wachten wanneer de buffer vol is. Consumer moet wachten wanneer de buffer leeg is.
1. Ik kan ze best hebben omgedraaid, dat blocking synchronous moet zijn etc.

results matching ""

    No results matching ""