Gestione memoria
Problema
Se un sistema è multiprogrammato è necessario:
- Suddividere la memoria per consentire a più processi di essere tenuti in coda ready e schedulati, assegnando un po' di memoria a ciascuno.
- Fare in modo che i processi abbiano memoria separata per sicurezza, evitando che un processo acceda a memoria di un altro.
Binding e indirizzi
Binding: associazione di indirizzi logici a fisici.
Indirizzo logico: generato dal programma, cambia col binding.
Indirizzo fisico: posizione esatta nel vettore della memoria.
- Compilazione: se il range esatto nel quale risiederà il programma nella memoria fisica è noto, il compilatore può associare direttamente le locazioni del sua vez indirizzi. Se range cambia > non va più.
- Caricamento (loadtime): tutti gli indirizzi logici vengono determinati quando il programma viene caricato in memoria e generati indirizzi fisici.
- Esecuzione (exectime): indirizzi logici vengono determinati quando il processo è eseguito, necessario se il processo viene spostato tra segmenti.
Spazio degli indirizzi logici: tutti gli indirizzi logici di un processo.
MMU (memory management unit): componente hw converte indirizzi logici generati dai programmi con execution time binding (quindi che generano ind. logici) a ind. fisica mediante la somma con registri come il base register. Consente al programmatore di usare solo indirizzi "logici".
Caricamento e collegamento dinamico
Caricamento dinamico: vengono caricate in memoria solo poche porzioni del processo, lasciando le più pesanti e meno comuni su disco. La gestione è affidata al developer e implementata del linguaggio che usa: C.
Collegamento dinamico: si afferisce il collegamento funzioni necessarie (librerie). Per librerie comuni (come quelle del sis.op.) si inseriscono collegamenti nell'eseguibile che recuperano le lib di sistema, che spesso è già in memoria. Tutti i processi eseguono la stessa libreria, si alleggerisce il codice e la dimensione dell'eseguibile in memoria e permette l'aggiornamento facile delle librerie.
Gestione memoria
Problema
Se un sistema è multiprogrammato è necessario:
- Suddividere la memoria per consentire a più processi di essere tenuti in coda ready e schedulati, assegnando un po' di memoria a ciascuno.
- Fare in modo che i processi abbiano memoria separata per sicurezza, evitare che un processo acceda a memoria di un altro.
Binding e indirizzi
Binding: associazione di indirizzi logici a fisici.
Indirizzo logico: generato dal programma, cambia col binding.
Indirizzo fisico: posizione esatta nel vettore della memoria.
- Compilazione: se il range esatto nel quale risiederà il programma nella memoria fisica è noto il compilatore può associare direttamente le locazioni del suo vez indirizzi. Se range cambia no nn più.
- Caricamento (loadtime): tutti gli indirizzi logici vengono determinati, quando il programma viene caricato in memoria, generati indirizzi fisici.
- Esecuzione (exectime): indirizzi logici vengono determinati quando il processo è eseguito, necessario se il processo viene spostato tra segmenti.
Spazio degli indirizzi logici: tutti gli indirizzi logici di un processo.
MMU (memory management unit): componente hw converte indirizzi logici generati dai programmi con execution time binding (quindi che generano ind logici) a ind. fisici mediante la somma con registri come il base register. Consente al programmatore di usare solo indirizzi "logici".
Caricamento e collegamento dinamico
Caricamento dinamico: vengono caricati in memoria solo pezzi proc. durante del processo, lasciando le più pesanti e meno comuni su disco. La gestione è affidata al developer e implementata del linguaggio che usa: C.
Collegamento dinamico: si differisce il collegamento finché non necessario (celle libere). Per librerie comuni (come quelle std del so) si inseriscono collegamenti nell'eseguibile che recuperano le lib di sistema, che spesso è già in memoria. Tutti i processi esegono la stessa libreria, si alleggerisce il codice e la dimensione dell'eseguibile in memoria e permette l'aggiornamento facile delle librerie.
Swapping
È una tecnica che consiste nello scaricare in memoria secondaria processi che sono in attesa di esecuzione, e gestita dallo scheduler di breve termine. Viene spostato il completo spazio di indirizzi del processo e deve essere ricaricato esattamente nelle stesse locazioni, se non c'è binding in esecuzione.
Roll in - roll out
Processi a bassa priorità vengono swappati per fare spazio a processi a "più alta priorità".
Problema: operazione assolutamente troppo lenta.
Allocazione contigua
Lo spazio indirizzi di un processo comprende locazioni fisicamente conseguenti, anche se hanno indirizzi logici diversi dai fisici.
Partizionamento statico: il sistema operativo assegna al processo uno dei blocchi di dimensione fissa in cui è divisa la memoria.
È molto semplice, implementato nei sistemi se
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.