SHPORA.net :: PDA

Login:
đćăèńòđàöèÿ

Main
FAQ

ăóìàíèòàđíûć íàóêè
ćńòćńòâćííûć íàóêè
ìàòćìàòèśćńêèć íàóêè
òćőíèśćńêèć íàóêè
Search:
Title: | Body:

a.Comunic intre.proc.prin.zone de mem.partaj

Procesele pot comunica direct unele cu celelalte prin folosirea în comun a unor părți din spațiul lor virtual de memorie ?i prin scrierea ?i citirea datelor memorate în memoria comună.
Apelurile sistem pentru manipularea zonelor de memorie comună sunt similare apelurilor sistem dedicate comunicației prin mesaje:
-apelul sistem shmget crează o nouă zonă (regiune) comună de memorie sau întoarce una existentă;
-apelul sistem shmat ata?ează la nivel logic o regiune de memorie la spațiul virtual de adrese al unui proces;
-apelul sistem shmdt deta?ează o regiune de spațiul virtual de adrese al unui proces;
-apelul sistem shmctl manipulează diver?i parametri asociați zonelor comune de memorie.
Procesele scriu în -?i citesc date din- memoria comună utilizând acelea?i instrucțiuni ma?ină pe care le utilizează ?i la scrierea ori citirea din memoria obi?nuită. După ata?area unei zone de memorie comună, aceasta devine parte a spațiului virtual de adrese al procesului, accesibilă în acela?i mod în care sunt accesibile ?i celelalte adrese virtuale nu sunt necesare apeluri sistem pentru scrierea sau citirea datelor din zona de memorie comună.
Sintaxa apelului sistem shmget este:
shmid = shmget(key, size, flag)
unde size reprezintă numărul de octeți din regiunea de memorie.
Nucleul caută cheia key în tabela cu zonele comune de memorie dacă găse?te în această tabelă o intrare care să corespundă cheii ?i dacă drepturile de acces sunt validate, atunci întoarce descriptorul acelei intrări din tabelă. Dacă nu găse?te o intrare căreia să-i corespundă cheia key, ?i dacă utilizatorul a dat indicatorului flag valoarea IPC_CREAT, în scopul creării unei noi regiuni comune de memorie, atunci nucleul verifică dacă valoarea parametrului size se situează între valorile limită minimă ?i maximă de memorie ale sistemului ?i apoi alocă o structură de date pentru o regiune de memorie, utilizând algoritmul allocreg.