Comunicarea între procese

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În calculul expresiei de comunicare între procese (în engleză inter-process communication sau IPC) se referă la toate acele software de tehnologii al căror scop este de a permite diferitelor procese să comunice între ele prin schimbul de date și informații . Procesele pot locui pe același computer sau pot fi distribuite pe o rețea . Toate sistemele de operare multitasking oferă un mecanism IPC de bază; alte mecanisme mai sofisticate sau mecanisme orientate către anumite tipuri de sisteme software pot fi furnizate de tehnologiile middleware , limbaje de programare sau nivel de aplicație , pe baza mecanismelor furnizate de sistemul de operare. În mod echivalent, aceste metode sunt utilizate pentru gestionarea firelor .

Descriere

În cazul specific al proceselor distribuite, mecanismele de comunicare dintre procese sunt de fapt protocoale de rețea . Trebuie menționat, totuși, că nu toate protocoalele de rețea sunt mecanisme IPC; la nivelurile inferioare ale ierarhiei ISO / OSI , de fapt, conceptul de proces nu apare, iar protocoalele se limitează la îngrijirea transferului de date între computere. Poate cel mai cunoscut exemplu de protocol de rețea pentru schimbul de informații între procese este TCP ; pentru un exemplu de IPC la nivelul limbajului de programare, gândiți-vă la Java RMI . De regulă, mecanismele IPC pentru procesele distribuite permit comunicarea chiar și între procesele care se află pe aceeași mașină.

Alte exemple variate de mecanisme care pot fi utilizate pentru IPC includ socket-ul Unix , porturile nucleului Mach , middleware CORBA și tehnologia Component Object Model a Microsoft .

Într-un sens larg, clipboard-ul simplu care permite unui utilizator să copieze și să lipească informații de la o fereastră la alta sau utilizarea fișierelor , pe care un proces le scrie și le citește altul, poate fi, de asemenea, înțeleasă ca un mecanism de comunicare între procese; totuși, vorbim de IPC în sens strict doar pentru acele mecanisme care pot fi utilizate de software fără intervenția manuală a omului și care nu stochează date pe memoriile de masă.

Tabel (nu exhaustiv) al tehnologiilor și paradigmelor IPC:

Metodă Sisteme de operare sau alte medii în care este disponibil
Semnal Toate sistemele POSIX
Pipe anonime Toate sistemele POSIX și Microsoft Windows
Țeavă cu nume Toate sistemele POSIX și Microsoft Windows
Schimb de mesaje
(fără distribuire)
Este folosit în paradigma MPI , Java RMI , CORBA și altele
Semafor Toate sistemele POSIX și Microsoft Windows
Memorie partajată o
Fișier cartografiat cu memorie (MMF)
Toate sistemele POSIX și Microsoft Windows
Coadă de mesaje Multe sisteme de operare
Apel de procedură la distanță (RPC) Multe sisteme de operare
Cutie poștală Multe sisteme de operare
Priză Toate sistemele de operare cu suport de rețea

Secvențialitate și non-secvențialitate

În cele mai simple situații, progresul proceselor are loc secvențial, adică sistemul de operare atribuie resursele necesare fiecărui proces pentru finalizarea lucrării. Vorbim de non-secvențialitate atunci când procesele sunt mai complexe și este necesar să împărțim procesul principal în sub-procese care sunt mai ușor de procesat. Sistemele de operare operează în general dintr-o perspectivă nesecvențială. Cu toate acestea, merită menționat faptul că aceste procese pot efectua comunicații prin schimbul de informații și pot efectua diferitele operațiuni în mod paralel. Există, de asemenea, situații în care procesele concurează pentru utilizarea unei resurse, creând astfel execuții concurente. Aceste situații sunt gestionate de sistemul de operare prin intermediul unor primitive situate în nucleu și în special de managerul de proces ( Scheduler ).

Schimb de informații

La nivelul de bază al comunicării între procese, există posibilitatea schimbului de informații între două sau mai multe procese. Această opțiune este realizată prin intermediul a două primitive:

  • Trimite: care permite trimiterea informațiilor
  • Primire: care vă permite să primiți informații

Un exemplu tipic de comunicare între procesele din rețea este prezentat în arhitectura client / server , rutinele utilizate pentru schimbul de informații în rețea se numesc socketuri .

Prelucrare

Procesarea procesului este împărțită în două moduri:

  • modul paralel
  • modul concurent

Procesare paralelă

Procesarea în paralel a proceselor constă în executarea unor procese întregi sau a unor părți ale acestora în mod paralel. Sistemul de operare poate necesita unul sau mai multe procese pentru a rula în timp ce se execută un alt proces. Diferitele procese care sunt lansate în execuție iau numele de Coroutine , semnalează finalizarea execuției prin CV-ul primitiv și dau control unui alt Coroutine . Când un proces avansează până la un punct în care execuția unui alt proces poate fi pornită în paralel cu primul, sistemul de operare prin furculița primitivă generează un proces copil care avansează independent de părinte. Procesul părinte își continuă execuția până când întâlnește îmbinarea primitivă care controlează progresul procesului copil. O altă formă de procesare paralelă se referă la posibilitatea ca în cadrul aceluiași proces instrucțiuni diferite pot fi lansate în execuție în paralel, această execuție se realizează prin primitivele Cobegin și Coend.

Prelucrare concurentă

Procesarea simultană este definită atunci când două sau mai multe procese accesează aceleași resurse sau când încheierea unui proces permite progresul unui alt proces. Această procesare poate cauza diverse probleme sistemului dacă nu este tratată în mod adecvat, de fapt, sistemul de operare îndeplinește o funcție foarte importantă în rezolvarea problemelor referitoare la acest tip de procesare. Prin sincronizarea procesului , sistemul de operare rezolvă aceste probleme. În practică, sistemul de operare (OS) împiedică procesele să intre în conflict, gestionând accesul proceselor la resurse și împiedicând procesele să blocheze progresul general al unității de procesare. În acest context, sistemul de operare garantează protecția zonelor de lucru ale proceselor și evită interferențele dintre acestea din urmă, evitând astfel pierderea datelor.

Producător de consum

Este posibil ca două procese să funcționeze simultan, dar să nu intre în conflict. O schemă tipică a acestei modalități este cea a producătorului / consumatorului . Procesul producătorului procesează rezultatele necesare pentru progresul procesului consumatorului și procesul consumatorului nu poate continua dacă rezultatele primului nu sunt puse la dispoziție. Pentru a opera în acest mod, procesele accesează un spațiu de lucru partajat de ambele numite tampon . În această locație de memorie, procesul de producție introduce datele și procesul consumator verifică conținutul bufferului pentru a verifica disponibilitatea datelor solicitate. Mai complex este cazul în care procesele concurează pentru utilizarea resurselor sistemului de procesare, progresul unui singur proces poate avea loc numai atunci când unul dintre cele două procese este exclus de la accesarea unei resurse specifice. Această metodă de procesare se numește Excludere reciprocă (Mutex) .

Semafor

Semaforul este un mecanism fundamental pentru sincronizarea proceselor concurente în utilizarea resurselor și excluderea reciprocă. În practică, semaforul nu este altceva decât o variabilă alocată în memoria de lucru a sistemului de operare, în care valoarea este modificată de orice proces. Valorile asumate de această variabilă pot fi binare, adică 0/1 sau valori naturale. Pe baza valorii asumate de variabilă, procesul poate accesa o resursă sau poate găsi o valoare care indică utilizarea resursei de către un alt proces, apoi procesul va trebui să aștepte o anumită perioadă de timp pentru a testa din nou variabila semaforului. Procesele care utilizează diferitele resurse modifică valoarea variabilei semaforului în așa fel încât să indice proceselor ulterioare utilizarea unei anumite resurse. Semaforele pot fi utilizate de obicei pentru a partaja zone de memorie sau pentru a permite mai multor procese să acceseze fișiere. Semaforele sunt adesea folosite atunci când procesele intră în secțiuni critice , adică atunci când procesele intră în conflict sau accesează resurse în același timp.

Raport primitiv și așteptați

Primitivele folosite de semafore sunt:

  • primitivul Vă rugăm să așteptați
  • raportul primitiv

Așteptarea primitivă indică timpul necesar înainte de a intra în secțiunea critică. Semaforul gestionează intrările proceselor din secțiunea critică și modificarea valorii acesteia, astfel încât să împiedice accesul altor procese la resursa respectivă.

  • Pseudocod de așteptare:
 start
    Do
       Va rugam asteptati
       Verificați valoarea semaforului
    În timp ce Semaphore = 0
    Semafor = 1
    Intrați în secțiunea critică
    Sfârșit

Primitiv Raportul indică faptul că procesul a finalizat secțiunea critică și resetează valoarea variabilei semaforului.

  • Pseudocodul raportului:
 start
    Ieșiți din secțiunea critică
    Semafor = 0
    Sfârșit
Impas

Blocajul sau blocajul are loc atunci când unul sau mai multe procese rămân pe termen nelimitat într-o stare de așteptare, din cauza neexistenței condițiilor necesare pentru ca acestea să continue. Utilizarea semaforului împiedică apariția blocajului. Două sau mai multe procese sunt într-un blocaj atunci când sunt îndeplinite aceste condiții:

  • resurse nespartabile : excludere reciprocă între procese privind utilizarea resurselor.
  • posesie și așteptare : un proces care deține o resursă necesită utilizarea altui utilizat de un alt proces.
  • așteptare circulară : gestionarea resurselor limitată la un set de procese
  • preempțiune imposibilă : atunci când o resursă este alocată unui anumit proces nu poate fi utilizată de alte procese.

Managerul de proces are sarcina de a rezolva blocurile critice în diferite moduri:

  • Prevenirea impasului.
  • Controlul asupra progresului proceselor, detectarea și eliminarea blocurilor critice.
  • Detectarea preventivă a fazelor de blocare prin primitive adecvate.

Bibliografie

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT