a.Exec оntr-un sis cu paginare

[ ]
Cnd un proces apeleaz funcia sistem exec, nucleul cite?te fi?ierul executabil n memorie din sistemul de fi?iere. ntr-un sistem cu paginare la cerere, fi?ierul executabil poate fi totu?i prea mare ca s ncap n memoria principal. De aceea, nucleul nu preasigneaz memorie fi?ierului executabil, dar l ntrerupe,asignndu-i ct memorie are nevoie.Acesta asigneaz mai nti tabele de pagin ?i descriptori de bloc disc pentru fi?ierul executabil, marcnd intrrile n tabela de pagin "demand fill" (pentru date non-BSS) sau "demand zero" (pentru date BSS ). Urmnd o variant a algoritmului read pentru citirea fi?ierului n memorie, procesul creaz o ntrerupere de validare la citirea fiecrei pagini.
Rutina de tratare a ntreruperii reine dac pagina este "demand fill", nsemnnd c imediat va fi rescris coninutul su cu coninutul fi?ierului executabil, astfel nct nu este necesar ?tergerea sa, sau dac este "demand zero", situaie n care coninutul su va fi ?ters.
Aceast schem prezint ?i unele dificulti. n primul rnd, un proces produce o ntrerupere de pagin cnd cite?te fiecare pagin a fi?ierului executabil, chiar dac nu va trebui s acceseze niciodat pagina respectiv. n al doilea rnd, swapper-ul trebuie s evacueze pagini din memorie nainte de terminarea apelului sistem exec, rezultnd n plus dou operaii de swap per pagin dac procesul necesit rapid pagina respectiv. Pentru a face exec mai eficient, nucleul poate solicita pagini direct din fi?ierul executabil. Totu?i, folosirea algoritmilor standard pentru accesarea unui fi?ier ar face prea costisitoare paginarea la cerere prin blocurile de indirectare din cauza acceselor multiple la bufferele cache necesare pentru citirea unui bloc. Nucleul seteaz diferiii parametri de I/O in uarea pe timpul apelului sistem read. Dac un proces provoac o ntrerupere de pagin pe timpul unui apel sistem read, cnd ncearc s copieze datele n spaiul user, acesta dore?te s rescrie aceste cmpuri n uarea pentru a citi pagina din sistemul de fi?iere.

:

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