mercoledì 11 maggio 2016

Memoria virtuale: Come facilita la vita dei programmatori?

Per permettere la multiprogrammazione è necessario caricare più processi possibile in memoria .Ma non è necessario che l'intero processo si trovi completamente in RAM per essere eseguito ; difatti, i processi non vengono mai caricati interamente in memoria centrale, ma "a pezzi". Lo stesso ragionamento è valido per il sistema operativo ad esempio.
Chi è avvezzo alla programmazione non avrà difficoltà ad immaginare questa situazione : si pensi per esempio ad un programma che contiene codice per gestire delle eccezioni o situazioni di errore. Spesso,sono porzioni di codice che verranno eseguite raramente e quindi non è necessario avere sempre il relativo codice in memoria. Insomma anche nei casi in cui è necessario disporre di tutto il programma è possibile che non serva tutto in una volta . Inoltre,per il principio di località  se la CPU sta eseguendo una certa istruzione,probabilmente la prossima istruzione ad essere eseguita sarà nelle vicinanze di quella correntemente in esecuzione.
Questo meccanismo di caricare "a pezzi" un programma è permesso dalla memoria virtuale.
Cos'è la memoria virtuale?
 La memoria virtuale è una tecnica che permette di eseguire i processi che possono anche non essere completamente in memoria . Non è altro che un meccanismo di separazione tra la memoria logica com'è vista dall'utente dalla memoria fisica . Cosi facendo i programmi possono essere anche più grandi della memoria fisica ,tanto vengono caricati a pezzi e quando si ha bisogno del "pezzo" non caricato in memoria ,ma che risiederà bensi' sul disco(page fault),lo si carica,oppure lo si rimpiazza con un altro pezzo di processo in memoria centrale se questa è piena(esistono degli appositi algoritmi di rimpiazzo delle pagine) . Questa tecnica ,inoltre, permette di aumentare il grado di multiprogrammazione poichè ogni programma ha bisogno di meno memoria fisica e questo permette di caricare più programmi in memoria,ottenendo una maggiore produttività della CPU senza aumentarne il tempo di risposta(http://zangariappunti.blogspot.it/2016/04/scheduling-della-cpu.html).L'unico svantaggio di questo meccanismo è di non essere semplice da realizzare e può ridurre le prestazioni del sistema .



Tornando a noi...
Ora,dovrebbe essere semplice rispondere alla domanda posta nel titolo del post (Come facilita la vita dei programmatori?). La risposta è semplice, questi, infatti non necessitano affatto di preoccuparsi della quantità di memoria fisica disponibile per i motivi sopra citati.
La  memoria virtuale viene realizzata per tramite della paginazione su richiesta . Con questa i "pezzi dei processo" ,di cui parlavo prima ,si dicono pagine e chi si occupa di "spostare" le pagine da memoria a disco e viceversa ,è il paginatore.

Nessun commento :

Posta un commento