100 likes | 233 Views
Comunicarea intre procese Windows folosind zone comune de memorie. Todea Mirela Damaris An II, Gr 6, Sgr.10. Comunicarea intre procese.
E N D
Comunicarea intre procese Windows folosind zone comune de memorie Todea Mirela Damaris An II, Gr 6, Sgr.10
Comunicarea intre procese • In unele sisteme de operare procesele care lucreaza impreuna pot sa imparta zone comune de stocare pe care fiecare poate sa le citeasca respectiv sa le scrie. • O zona comuna de stocare poate fi: • memoria principala – RAM; • un fisier.
Race Condition • Race Condition este o situatie in care doua procese incearca sa foloseasca simultan acceasi zona comuna de memorie • Pentru a inlatura aceasta situatie vom folosi excluderea mutuala.
Evitarea Race Condition cu ajutorul excluderii mutuale • Regiunea critica este partea din program unde este accesata memoria comuna; • Pentru a evita Race Condition va trebui sa avem grija ca doua procese sa nu ajunga niciodata in zonele lor critice in acelasi timp.
Evitarea Race Condition cu ajutorul excluderii mutuale • Pentru a avea o solutie buna nu este necesar doar ca doua procese sa ruleze paralel corect si eficient folosind zone comune de memorie. • Este nevoie de inca 4 conditii pentru a avea o solutie buna
Conditii: • Doua procese nu au voie sa fie simultan in zonele lor critice; • Viteza sau numarul de procesoare nu trebuie luata in calcul; • Nici un proces care ruleaza in afara zonei critice nu au voie sa blocheze alte procese; • Nici un proces nu ar trebui sa astepte la infinit sa intre in regiunea lui critica
Memoria partajata(File Mapping) • permite accesul mai multor procese la un fisier ca si cand fisierul ar fi o zona de memorie. • astfel se pot folosi toate operatiile aplicabile asupra memoriei, inclusiv pointeri. • o facilitate speciala a File Mapping-ului este aceea de "named shared memory", sau memorie partajata identificata de un nume.
Crearea unei zone de memorie partajata • crearea se face folosind urmatoarele 2 functii care trebuie apelate in urmatoarea ordine: • CreateFileMapping– este o functie care creeaza un obiect de tipul File Mapping reprezentat de un handle; • MapViewOfFile – este o functie folosita pentru maparea zonei de memorie.Functia intoarce un pointer la zona de memorie partajata
Accesul la o zona de memorie partajata deja creata • Pentru a accesa o zona de memorie partajata, creata de un alt proces sunt utilizate urmatoarele doua functii in ordinea data mai jos: • OpenFileMapping – este o functie care acceseaza un obiect de tipul File Mapping; • MapViewOfFile – este folosita pentru a mapa efectiv zona de memorie.
Demaparea unei zone de memorie partajata • Pentru a demapa o zona de memorie partajata care a fost anterior mapata cu functia MapViewOfFile() folosim urmatoarea functia UnmapViewOfFile();