Comunicarea intre procese Windows folosind zone comune de memorie
100 likes | 241 Vues
Comunicarea intre procese Windows folosind zone comune de memorie. Todea Mirela Damaris An II, Gr 6, Sgr.10. Comunicarea intre procese.
Comunicarea intre procese Windows folosind zone comune de memorie
E N D
Presentation Transcript
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();