c,Comunic,:

[ ]
Dac procesul apelant este primul proces care ata?eaz regiunea respectiv, atunci nucleul aloc tabelele necesare, utiliznd algoritmul growreg, corecteaz valoarea coninut n cmpul last time attached al intrrii corespunztoare din tabela regiunilor de memorie comun, ?i ntoarce adresa virtual la care a ata?at regiunea respectiv.
Un proces deta?eaz o regiune de memorie comun din spaiul su virtual de adrese cu ajutorul apelului sistem shmdt. Sintaxa apelului este:
-shmdt(addr)
unde addr reprezint adresa virtual ntoars de un apel shmat anterior. De?i ar prea mai logic ca apelul shmdt s primeasc drept parametru un identificator, se ntrebuineaz totu?i adresa virtual a regiunii de memorie comun pentru ca procesul s poat face distincie ntre mai multe instane ale unei regiuni de memorie comun, care sunt ata?ate la spaiul virtual de adrese al procesului, ?i pentru c identificatorul ar putea s fi fost ?ters. Nucleul caut regiunea procesului ata?at la adresa virtual indicat ?i o deta?eaz din spaiul de adrese al procesului, utiliznd algoritmul detachreg. Deoarece tabelele cu regiuni de memorie nu conin pointeri napoi ctre tabela cu regiuni de memorie comune (Shared Memory Table), nucleul caut n aceast tabel intrarea corespunztoare regiunii ?i corecteaz valoarea din cmpul care conine momentul ultimei deta?ri a regiunii.
Pentru examinarea strii ?i stabilirea valorilor parametrilor unei regiuni de memorie comun, un proces utilizeaz apelul sistem shmctl, care are urmtoarea sintax shmctl(id, cmd, shmstatbuf)
unde:
-id identific intrarea corespunztoare din tabela regiunilor de memorie comune;
-cmd precizeaz tipul operaiunii;
-shmstatbuf reprezint adresa unei structuri de date utilizator care conine informaiile de stare a intrrii n tabela regiunilor de memorie comune, atunci cnd se face interogarea asupra strii sau stabilirea valorilor de stare.

:

Network | | | | | | | | | | | | | | | - | | | | | | | | | | | | | | | | | | | | | () | | | | | | | | | | | | | | | | () | Assembler | Basic, VB | Pascal | , ++ |