SHPORA.net :: PDA

Login:
ðåãèñòðàöèÿ

Main
FAQ

ãóìàíèòàðíûå íàóêè
åñòåñòâåííûå íàóêè
ìàòåìàòè÷åñêèå íàóêè
òåõíè÷åñêèå íàóêè
Search:
Title: | Body:

b,Comunic:

--algoritmul shmat /* atasare zona comuna de memorie */
^intrãri: (1)descriptorul regiunii comune de memorie
(2)adresa virtuala la care sa se faca atasarea
(3)indicatori (flags)
^ie?iri: adresa virtuala la care s-a atasat zona comuna de memorie
{
verifica validitatea descriptorului si a drepturilor de acces;
^if (adresa virtuala specificata de utilizator [nu este egal] 0)
{
trunchiaza adresa virtuala conform specificatiilor indicatorilor;
verifica validitatea adresei virtuale si a dimensiunii regiunii;
}
^else /*utilizatorul doreste ca nucleul sa gaseasca o adresa*/
^nucleul alege o adresa virtuala (daca nu este nici una la dispozitie, atunci eroare);
ataseaza regiunea la spatiul de adrese al procesului(alg. attachreg)
^if (regiunea este atasata pentru prima data)
aloca tabele de pagini, memorie pentru regiune (alg. Growreg);
^return(adresa virtuala la care s-a facut atasarea);
}
Zona comunã de memorie nu trebuie sã se întindã peste alte regiuni din cadrul spaþiului virtual de adrese al procesului, deci atât amplasarea cât ?i dimensiunea ei trebuie alese judicios pentru ca, în cazul unor modificãri ulterioare de dimensiune, alte regiuni sã nu se extindã peste zona comunã de memorie. De exemplu, un proces poate mãri dimensiunea regiunii sale de date prin apelul sistem brk, noua regiune de date fiind virtual contiguã vechii regiuni de date în consecinþã nucleul nu trebuie sã plaseze zona de memorie comunã în apropierea regiunii de date. Similar, nucleul nu trebuie sã plaseze zona de memorie comunã în apropierea vârfului stivei, pentru a preveni astfel fenomenul de cre?tere a stivei în interiorul zonei de memorie comunã. De exemplu, dacã stiva cre?te cãtre valorile mari ale adreselor, cel mai bun loc de amplasare a zonei de memorie comunã ar putea fi imediat înaintea adresei de început a regiunii de stivã.
Nucleul verificã dacã regiunea de memorie comunã încape în spaþiul de adrese al procesului ?i o ata?eazã, utilizând algoritmul attachreg.