Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Fisierele de memorie mapata

linux


Fisierele de memorie mapata

Multi programatori cred ca accesarea fisierelor aratata mai sus este greoaie si inconvenabila,mai ales cand o comparam cu accesarea normala a memoriei.De aceea,mai multe sisteme de operare,incepan 727j95h d cu MULTICS,au realizat un mod de a mapa fisierele in spatiul de adrese a unui proces in desfasurare.Ne putem imagina existenta unor noi 2 sisteme de apeluri mapate si nemapate.Primul da numele fisierului si adresa virtuala,ceea ce face ca sistemul de operatie sa mapeze fisierul din spatiul de adrese in adresa virtuala.



De aceea,presupunem ca un fisier,f , de lungime 64 Kb,este mapat in adresa virtuala incepand de la adresa 512kb.Orice instructiune care citeste continutul bitului la 512k primeste bitul 0 al fisierului,si asa mai departe.Similar scrierea la adresa 512k + 2100 modifica bitul 21000 al fisierului.Cand procesul se termina,fisierul modificat este lasat pe disk,pana cand este modificat de o combinatie de cautari si scrie un sistem de apeluri.

Ceea ce se intampla de fapt este ca sistemul intern de tabele este modificat pentru ca fisierul sa devina memoria de baza pentru regiunea de memorie de la 512k la 576k.Astfel citirea de la 512k duce la eroare de pagina,adusa in pagina 0 a fisierului.Similar,scrierea de la 512k +1100 da o eroare de pagina,aducand in pagina continutul adresei,dupa care scrierea in memoriei poate avea loc.Daca pagina este extrasa de algoritmul de inlocuire al paginii,este scrisa in cel mai apropiat loc al paginii.Cand procesul se termina,toate paginile mapate si modificate sunt scrise inapoi in fisierele lor.

Maparea fisierelor functioneaza cel mai bine intr-un sistem care

suporta segmentarea.Intr-un astfel de sistem fiecare fisier poate fi mapat in segmentul sau astfel incat bitul k al fisierului este si bitul k al segmentului.In figura 6-6(a)avem un proces care are 2 segmente :(text si informatii.Presupunem ca acest proces copiaza fisiere,ca cel din fig. 6-5. Mai intai se mapeaza fisierul sursa,de exemplu ,abc, in segment.Apoi se creeaza un segment gol si mapeaza in fisierul destinatie, xyz , in exemplul nostru.Aceasta operatie ne da situatia aratata in figura 6-6 (b).

Figura 6-6. (a). Un proces segmentat inainte de maparea in spatial de adresa (b)Procesul dupa maparea unui fisier abc intr-un segment si crearea unui segment nou pentru fisierul xyz;

Pana in acest moment procesul poate copia segmentul sursa in sistemul destinatie folosind un salt normal de copiere.Nu e nevoie de niciun sistem de apeluri de citire sau scriere.Cand se realizeaza totul,se poate executa sistemul de apeluri nemapat pentru a muta fisierul din spatiul de adrese si apoi se iese.Fisierul de iesire , xyz ,va exista acum cum a fost creat in modul stabilit.

Desi maparea fisierelor elimina nevoia de I/O astfel programarea devine mai usoara,si introduce cateva probleme la randul ei.Mai intai este greu ca sistemul sa stie lungimea exacta a fisierului de iesire xyz , in exemplul nostru.

Se pot spune usor numarul celei mai mari pagini scrise,dar nu se poate afla cati biti din pagina au fost scrisi.Presupunand ca programul foloseste doar pagina 0,si dupa executia tuturor este tot 0(valoarea ei initiala).Poate ca xyz este un fisier format din 10 de 0.poate format din 100 de 0,poate format din 1000 de 0.Cine stie?Sistemul de operatie nu poate stii,Tot ce se poate face este sa cream un fisier a carui lungime este egal cu marimea paginii.

O a doua problema care poate avea loc cand un fisier este mapat intr-un proces si deschis pentru citirea stabilita cu un altul.Daca primul proces modifica o pagina,aceasta modificare nu se va reflecta in fisierul salvat pana cand pagina este scoasa.Sistemul trebuie sa aiba mare grija ca cele 2 procese sa nu vada o versiune inconsistenta a fisierului.

A treia problema cu maparea este ca fisierul poate fi mai mare decat segmentul,sau chiar mai mare decat intreg spatiul virtual de adrese.

Singura iesire este in a aranja sistemul de apeluri mapat pentru a fi capabil sa mapeze o portiune a fisierului,alta decat intregul fisier.Desi acest lucru ar putea functiona este clar mai putin satisfacator decat in a mapa intregul fisier.


Document Info


Accesari: 790
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )