Podcast
Questions and Answers
Quale delle seguenti tecniche viene utilizzata per massimizzare l'uso della CPU?
Quale delle seguenti tecniche viene utilizzata per massimizzare l'uso della CPU?
Quando la RAM è completamente occupata, un nuovo processo può essere avviato immediatamente senza problemi.
Quando la RAM è completamente occupata, un nuovo processo può essere avviato immediatamente senza problemi.
False
Qual è il termine usato per descrivere il processo di spostamento di un processo dalla RAM all'hard disk?
Qual è il termine usato per descrivere il processo di spostamento di un processo dalla RAM all'hard disk?
swapping
L'area del disco in cui il sistema operativo copia temporaneamente un processo è chiamata ______.
L'area del disco in cui il sistema operativo copia temporaneamente un processo è chiamata ______.
Signup and view all the answers
Abbina i seguenti processi con la loro assunzione di memoria:
Abbina i seguenti processi con la loro assunzione di memoria:
Signup and view all the answers
Cosa viene spostato sull'hard disk durante il processo di swapping?
Cosa viene spostato sull'hard disk durante il processo di swapping?
Signup and view all the answers
Il sistema operativo può riutilizzare lo spazio di RAM liberato da un processo terminato.
Il sistema operativo può riutilizzare lo spazio di RAM liberato da un processo terminato.
Signup and view all the answers
Cosa succede al processo P2 dopo che è stato spostato sull'hard disk?
Cosa succede al processo P2 dopo che è stato spostato sull'hard disk?
Signup and view all the answers
Il sistema operativo assegna a ciascun processo una porzione di memoria RAM della stessa ______.
Il sistema operativo assegna a ciascun processo una porzione di memoria RAM della stessa ______.
Signup and view all the answers
Quale dei seguenti processi viene avviato per primo quando la RAM è piena?
Quale dei seguenti processi viene avviato per primo quando la RAM è piena?
Signup and view all the answers
Qual è uno dei motivi principali per cui lo swapping è raramente usato nei moderni sistemi operativi?
Qual è uno dei motivi principali per cui lo swapping è raramente usato nei moderni sistemi operativi?
Signup and view all the answers
Il codice di un programma deve essere in memoria primaria per poter essere eseguito.
Il codice di un programma deve essere in memoria primaria per poter essere eseguito.
Signup and view all the answers
Cosa si intende per 'binding degli indirizzi' in un programma?
Cosa si intende per 'binding degli indirizzi' in un programma?
Signup and view all the answers
Il codice di un programma viene recuperato dalla memoria __________ per essere eseguito.
Il codice di un programma viene recuperato dalla memoria __________ per essere eseguito.
Signup and view all the answers
Abbina i seguenti termini ai loro significati:
Abbina i seguenti termini ai loro significati:
Signup and view all the answers
Quando un programma è caricato in memoria, cosa viene fatto per le variabili?
Quando un programma è caricato in memoria, cosa viene fatto per le variabili?
Signup and view all the answers
Le istruzioni di controllo del flusso di un programma non richiedono un indirizzo di destinazione.
Le istruzioni di controllo del flusso di un programma non richiedono un indirizzo di destinazione.
Signup and view all the answers
Cosa viene associato a ciascuna istruzione di controllo del flusso in un programma?
Cosa viene associato a ciascuna istruzione di controllo del flusso in un programma?
Signup and view all the answers
Un programma sorgente utilizza variabili e __________ per eseguire il calcolo.
Un programma sorgente utilizza variabili e __________ per eseguire il calcolo.
Signup and view all the answers
Quale delle seguenti affermazioni è vera riguardo a P2 in un contesto di swapping?
Quale delle seguenti affermazioni è vera riguardo a P2 in un contesto di swapping?
Signup and view all the answers
What are memory management techniques used for?
What are memory management techniques used for?
Signup and view all the answers
Study Notes
Parte IV: Gestione della Memoria
- La memoria centrale (cap. 9) gestisce le risorse di memoria principale (RAM)
- La memoria virtuale (cap. 10) descrive la gestione ottimale dello spazio di memoria e i suoi componenti
Memoria Centrale (cap. 9)
- Introduzione: i sistemi operativi moderni ottimizzano l'utilizzo della CPU attraverso il multitasking e il time-sharing, richiedendo la presenza di più processi attivi contemporaneamente in memoria primaria.
- Binding degli indirizzi: le variabili e istruzioni di un programma vengono legate a specifici indirizzi di memoria.
- Spazio degli indirizzi logici e fisici: gli indirizzi logici vengono convertiti in indirizzi fisici, durante la compilazione, caricamento e esecuzione.
- Allocazione contigua dei processi in RAM: i processi condividono blocchi confinati di memoria.
- Paginazione della memoria primaria: la memoria viene divisa in partizioni di uguale dimensione (pagine), che possono essere allocate in diverse partizioni non adiacenti in (RAM).
Introduzione
- I sistemi operativi moderni cercano di massimizzare l'uso delle risorse della macchina, in particolare della CPU.
- Il multitasking e il time-sharing permettono di eseguire più processi contemporaneamente in memoria primaria.
- Il sistema operativo deve gestire l'allocazione dello spazio di RAM tra i processi attivi, in modo che ogni processo sia pronto all'uso della CPU quando assegnato.
- In situazioni in cui la RAM è piena, il sistema operativo può utilizzare la tecnica dello swapping.
Introduzione (pag. 4)
- Se la RAM è completamente occupata da altri processi, un nuovo processo non ha spazio per caricare i suoi dati in RAM.
- Il sistema operativo può far attendere il nuovo processo, oppure spostare temporaneamente un processo esistente in uno spazio di archiviazione secondario.
Introduzione (pag. 5)
- Lo swapping trasferisce temporaneamente un processo sull'hard disk per far spazio al nuovo processo.
- L'immagine del processo trasferito contiene il codice, i dati e lo stack del processo.
- Dopo che un altro processo termina, e libera memoria, il processo sospeso può essere caricato nella RAM.
- L'area del disco in cui il sistema operativo copia e memorizza temporaneamente i processi viene chiamata area di swap.
Binding degli indirizzi (pag. 8)
- Un programma sorgente, contiene dati (variabili) e istruzioni di controllo.
- Durante la compilazione e il caricamento in memoria primaria, ad ogni variabile è assegnato un indirizzo di memoria contenente il suo valore.
- Alle istruzioni di salto sono associate gli indirizzi di destinazione del salto.
- L'operazione di associazione degli indirizzi di memoria a variabili e istruzioni è chiamata binding degli indirizzi.
Binding degli indirizzi (pag. 9)
- Ad ogni variabile dichiarata nel programma viene assegnato un indirizzo di una cella di memoria RAM.
- L'accesso in lettura e scrittura alla variabile corrisponde alla lettura e scrittura nella cella di memoria corrispondente.
- Le istruzioni di salto permettono l'implementazione di strutture di controllo come if-then-else, while, ecc. E sono associate agli indirizzi in RAM dove l'esecuzione prosegue.
Specifiche di Binding (pag. 10,11,12)
- Esempi di istruzioni C e il loro equivalente in codice assembler in cui viene effettuato il binding
- Ad ogni variabile è associato un indirizzo di una cella di memoria.
Binding degli indirizzi: quando? (pag. 14)
- In fase di compilazione: viene generato il codice assoluto. Il compilatore deve conoscere l'indirizzo della cella di RAM.
- Se il SO deve scaricare temporaneamente il processo, in fase di ricaricamento in RAM, il processo deve essere riposto nella posizione iniziale, in modo che abbia memoria contigua.
- Questa è una gestione molto rigida.
Binding degli indirizzi: quando? (pag. 16)
- In fase di caricamento: viene generato codice staticamente rilocabile, il compilatore associa istruzioni e variabili ad indirizzi relativi rispetto all'inizio del programma.
- Gli indirizzi assoluti finali vengono generati in fase di caricamento in memoria primaria, rispetto all'indirizzo di partenza
- Il binding degli indirizzi avviene in fase di caricamento del programma in RAM, se il processo viene spostato in una posizione diversa, bisogna semplicemente rieffettuare la fase di caricamento.
- È più efficiente che ricompilare tutto.
Binding degli indirizzi: quando? (pag. 18)
- In fase di esecuzione: viene generato codice dinamicamente rilocabile.
- Il codice in esecuzione usa sempre e solo gli indirizzi relativi.
- La trasformazione di un indirizzo relativo in uno assoluto viene fatta nell'istante in cui viene eseguita l'istruzione che usa quell'indirizzo
- Per realizzare questo metodo è necessario un supporto hardware.
Spazio degli indirizzi Logici e Fisici (pag. 24)
- Codice dinamicamente rilocabile, un indirizzo usato nel codice fa riferimento ad un indirizzo 0 ipotetico.
- Qualsiasi indirizzo usato nel codice può essere l'indirizzo di una cella di memoria contenente una variabile oppure l'indirizzo specificato in istruzione di salto.
- Ogni indirizzo avrà un valore compreso tra 0 e l'indirizzo massimo dell'ultima
cella di memoria
occupata dal programma o spazio degli indirizzi logici (virtuali) - Il codice viene caricato in RAM ed eseguito, e siccome è dinamicamente rilocabile, gli indirizzi usati nel codice fanno riferimento all'indirizzo 0 ipotetico. Gli indirizzi logici (o virtuali) sono generati della CPU.
Spazio degli indirizzi Logici e Fisici (pag. 26)
- Gli indirizzi logici (virtuali) vengono generati dalla CPU del computer.
- Gli indirizzi logici vengono utilizzati per accedere alla RAM del processore a parte da una prima cella di memoria distinta dallo zero. La memoria del processore è divisa in blocchi di uguale grandezza, chiamati frame.
- I numeri dei frammenti vengono generati in fase di caricamento dal sistema operativo. Lo spazio di indirizzamento logico, ha un numero di pagine massimo, ma le pagine non occupano la stessa porzione di memoria.
Spazio degli indirizzi Logici (pag. 30)
- Lo spazio di indirizzamento fisico è l'insieme degli indirizzi fisici usati dal programma e dai suoi dati.
- Dipende dall'area di memoria in cui il SO ha caricato il programma.
Spazio degli indirizzi Logici e Fisici (pag. 31)
- Due tipi di indirizzi: indirizzi logici e fisici per un programma
- Gli indirizzi logici spaziano tra 0 e max
- Gli indirizzi fisici spaziano tra r+0 e r+max, dove 'r' è l'indirizzo di memoria a partire da cui il programma è caricato
- I programmi user generano indirizzi logici e pensano che l'esecuzione avvenga da 0 a max, ma gli indirizzi logici vengono mappati a quelli fisici una volta in RAM.
Spazio degli indirizzi (pag. 32)
- Viene illustrato, mediante tabelle, uno spazio di indirizzi logici che va da 0000 a 0017 e l'equivalente spazio di indirizzi fisici che va da 10AC a 10C3.
Spazio degli indirizzi Logici e Fisici (pag. 33,34,35,36)
- Lo spazio di indirizzamento logico considera solo lo spazio virtuale
- Gli indirizzi logici vengono utilizzati per indirizzare in modo virtuale lo spazio di memoria. Il SO converte gli indirizzi logici in indirizzi fisici (in RAM) prima che vengano efetivamente utilizzati dal programma o altri sistemi
- Gli indirizzi fisici sono utilizzati per calcolare gli indirizzi di memoria in RAM, sono una rappresentazione diretta di memoria.
- Le espressioni spazio di indirizzamento logico e fisico, non si riferiscono ad un singolo programma, ma ad un'architettura nel suo complesso.
- Supponiamo un computer che può indirizzare 64 Kbyte di RAM.
- Gli indirizzi dei byte della RAM vanno da 0000 a FFFF (esadecimale) o da 0 a (2^16-1).
- L'indirizzo di un byte di RAM è scritto su 16 bit.
- Un qualsiasi programma caricato nella RAM di un computer e che occupa tutta la RAM, genera indirizzi fisici da 0000 a FFFF
- Un compilatore che generi codice dinamicamente rilocabile usa valori da 12 bit per gli indirizzi logici.
- Lo spazio di indirizzamento logico di un programma è massimo di 4Kbyte.
Spazio degli indirizzi Logici e Fisici (pag. 37,38)
- I processori moderni, a 64 bit hanno ampi spazi di indirizzamento fisico (da 240 a 264 byte)
- Per scrivere un indirizzo fisico vengono utilizzati da 40 a 64 bit
- Questo è dovuto al fatto che i processori non hanno una quantità di RAM pari al massimo indirizzabile dal suo processore (che potrebbe essere di un Terabyte).
- Diversi sistemi operativi e applicazioni usano spazi di indirizzamento virtuali più adeguati, che possono andare da 248 a 264 byte, e utilizzano da 48 a 64 bit per le posizioni.
Spazio degli indirizzi Logici e Fisici (pag. 39,40)
- Vincoli architettonali e dimensionali limitano la quantità di RAM su macchine normali (e portatili).
- Lo spazio effettivo di RAM è minore rispetto a quello che il processore può indirizzare logicamente.
- Un programma può utilizzare uno spazio di indirizzamento logico più piccolo di 4 Kbyte, ma non può essere maggiore.
Spazio degli indirizzi Logici e Fisici (pag. 41)
- Un sistema con spazio di indirizzamento virtuale di X byte, vuol dire che i programmi in questo sistema possono usare gli indirizzi virtuali da 0 a X-1.
- La dimensione dello spazio di indirizzamento fisico può essere inferiore allo spazio di indirizzamento virtuale.
Le Librerie (pag. 42, 43, 44, 45, 46, 47)
- Le librerie sono collezioni di subroutine di uso comune utilizzate dai programmatori per sviluppare software.
- Esistono due tipi di librerie: statiche e dinamiche.
- Le librerie statiche vengono collegate al codice del programma principale dal compilatore o loader e diventano parte dell'eseguibile.
- Le librerie dinamiche vengono caricate in RAM solo quando richiesto dall'esecuzione.
- Le librerie dinamiche possono essere condivise tra più processi senza duplicazione, e nuove versioni possono essere sostituite senza ricompilazione.
- Le librerie dinamiche in ambiente Unix/Linux hanno estensione .so, mentre in Windows hanno estensione .DLL.
Tecniche di gestione della Memoria Primaria (pag.48)
- Swapping: allocazione contigua a partizioni multiple fisse, allocazione contigua a partizioni multiple variabili, paginazione e paginazione a più livelli
Avvicendamento di Processi (Swapping) (pag. 49, 50, 51, 52)
- Il processo viene salvato in memoria secondaria, chiamato swap out.
- Successivamente viene caricato in memoria primaria, chiamato swap in.
- Permette di avere attivi più processi nello spazio della memoria principale (MP) di quanti ve ne possono essere tenuti contemporaneamente in memoria.
- Alcuni processi sono temporaneamente salvati, in un'area di swap
(su hard disk), per lasciare spazio ad altri. Questo perché si può
avvicendare un processo
swap-out
con un altro processo. - Lo swapping richiede codice
dinamicamente rilocabile
. - L'overhead da
swap-in
eswap-out
è molto alto con i tempi richiesti nell'ordine dei millisecondi. Loswapping
non è utilizzato nei sistemi operativi moderni, tranne in casi molto rari.
Allocazione contigua della Memoria Primaria (pag. 53, 54, 55, 56, 57, 58, 59, 60, 61)
- La memoria primaria è divisa in partizioni.
- Al sistema operativo è assegnata una prima area della Memoria Principale.
- Ogni processo utente ha un'area di memoria fissa.
- Non si possono sovrapporre aree di memoria degli altri processi.
Allocazione a partizioni multiple variabili (pag. 62, 63, 64,65)
- Il SO assegna partizioni di dimensioni variabili ai processi per
utilizzare spazio libero in (
RAM
). - Quando un processo termina, la sua area di memoria è rilasciata, lasciando spazi liberi.
- Un problema di
frammentazione esterna
può sorgere: buchi di memoria sparsi troppo piccoli per ospitare nuovi processi utenti. - Strategie per l'allocazione come
First fit
,Best fit
,Worst Fit
, che cercano di assegnare il giusto spazio ai processi. Le strategie di allocazione possono comportare spreco di spazio di memoria. - Per eliminare i vuoti di memoria, si può utilizzare un sistema di compattazioni che sovrapponga la memoria libero per i processi in corso.
Allocazione a partizioni multiple variabili: frammentazione interna (pag. 59, 60)
- Spiega il tipo di frammentazione che sorge quando un processo deve essere messo in una partizione più grande della dimensione della partizione.
Allocazione a partizioni multiple variabili: la compattazione (pag. 67)
- Descrive la tecnica di
compattazione
, che riordina le partizioni della memoria per rimuovere i buchi (spazi vuoti) liberi. - Richiedendo una
rilocazione dei processi
nel nuovo spazio disponibile.
Paginazione della memoria (9.3) (pag. 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
Approccio in cui la memoria è suddivisa in blocchi di uguale dimensione (frame o pagine), che possono essere allocati in locazioni non adiacenti della RAM (memoria fisica). Ogni processo ha una tabella delle pagine (Page Table - PT) che mappa gli indirizzi logici (virtuali) del processo agli indirizzi fisici dei frame. L'indirizzo logico è composto da due parti: il numero di pagina e l'offset all'interno della pagina.
Paginazione: introduzione e metodo di base (pag. 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)
- La memoria primaria (o spazio di indirizzamento fisico) è divisa in frammenti di uguale dimensione (frame).
- Ogni frame o pagina ha la stessa dimensione.
- Gli indirizzi logici sono composti da numero di pagina e offset.
- La dimensione delle pagine è spesso una potenza di due.
- Gli indirizzi logici diventano coppie (pagina, offset).
- La Page Table (PT) mappa i numeri delle pagine agli indirizzi dei frame in memoria fisica.
- Per tradurre un indirizzo logico in fisico, il sistema usa il numero di pagina per individuare l'entry corrispondente nella PT, e l'offset per calcolare la posizione all'interno del frame.
- L'hardware supporta questa traduzione, rendendola molto veloce.
- Lo spazio di indirizzamento logico viene visto come uno spazio contiguo all'interno del processo, mentre in memoria fisica, le pagine non sono necessariamente contigue.
- Gli indirizzi logici lineari e le coppie "pagina, offset" sono equivalenti.
- La dimensione dello spazio di indirizzamento logico è del tipo 2^(m - n) × 2^n.
- In un esempio con 22 bit e frame da 4096 byte, lo spazio di indirizzamento logico è di 4 MB.
- La traduzione dell'indirizzo logico in indirizzo fisico è supportata dall'hardware, rendendo l'accesso in memoria molto efficiente, ma con un costo in termini di tempo extra per la traduzione.
Paginazione: esempio (pag. 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
- Esempio di tabelle di pagine per due processi.
- Conversione degli indirizzi logici in fisici illustrata con un esempio numerico.
- Gli indirizzi logici sono rappresentati da coppie (pagina offset)
- Tabelle delle pagine che mappano gli indirizzi logici a quelli fisici.
- Spazi di indirizzamento logico e fisico
- Operazione di traduzione degli indirizzi logici in fisici.
- Ogni spazio di indirizzamento logico si rimpicciolisce fino ad una potenza di 2.
Paginazione: traduzione degli indirizzi (pag. 77, 78)
- Un indirizzo logico
p, d
viene interpretato come una coppia e convertito in uno fisico - Il numero di pagina (
p
) viene utilizzato per individuare l'elemento appropriato nella tabella delle pagine (PT). - L'offset (
d
) viene aggiunto all'indirizzo base del frame per ottenere l'indirizzo fisico.
Paginazione: alcune osservazioni (pag. 103)
- La paginazione separa nettamente lo spazio di indirizzamento logico da quello fisico.
- Il programma "vede" la memoria come uno spazio contiguo che
inizia da 0.
In realtà
il programma non è contiguo in memoria fisica, ma è distribuito nei diversi frame.
Paginazione: vantaggi (pag. 104, 105)
- La paginazione implementa la protezione automatica dello spazio di indirizzamento.
- Un processo può accedere solo ai frame presenti nella sua PT.
- I frame contengono le pagine che appartengono ad un singolo processo.
- La frammentazione interna e esterna è ridotta.
- Le pagine sono di uguali dimensione che è una potenza di 2.
Paginazione a più livelli (9.4) (pag. 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135)
- Paginazione gerarchica per grandi spazi di indirizzamento.
- Introduzione di due o più livelli di tabelle delle pagine.
- Le tabelline sono a loro volta suddivise in pagine.
Paginazione a più livelli: esempio (pag. 127, 128, 129, 130)
- Esempio di traduzione indirizzi logici con paginazione a due livelli.
- Il numero di pagina scritto su 20 bit, viene scomposto in due parti: p1 - 10 bit più significativi, viene utilizzato per indirizzare la PT esterna. p2 - 10 bit intermedi, viene utilizzato per indirizzare la PT interna.
Paginazione a più livelli (esempio): implementazione (pag. 131, 132)
- Passaggi per la traduzione degli indirizzi logici in quelli fisici usando paginazione a due livelli.
Page Table Invertita (IPT) (pag. 136, 137, 138, 139)
- Alternativa alla paginazione a più livelli,
- Una sola tabella per tutto il sistema.
- L'indice è il numero di frame della memoria fisica.
- L'IPT contiene una coppia
<process-id, page-number>
per ogni frame occupato. - L'indirizzo logico è una tripla
<process-id, page-number, offset>
. - Per tradurre un indirizzo logico in fisico si cerca la tripla nella IPT.
- Il tempo di traduzione può aumentare in caso di
IPT
grande.
Supporto hardware alla paginazione (9.3.2) (pag. 110, 111, 112, 113, 114, 115, 116, 117, 118, 119)
- Gestione del TLB (Translation Lookaside Buffer).
- Il TLB è una cache hardware che memorizza le traduzioni pagina-frame più frequentemente usate.
- Quando il TLB non trova un'entrata, viene fatta la traduzione in RAM.
- Al cambio di contesto, il TLB deve essere svuotato.
Pagine condivise (9.3.4) (pag. 120, 121, 122)
- La condivisione di codice in ambienti paginati è possibile:
- Le pagine contenenti codice e dati condivisi da più processi
- sono mappate su frame univoci in memoria fisica.
- In questo modo, i programmi che usano lo stesso codice dispongono di una sola copia del codice in memoria.
Conclusioni (pag. 140, 141, 142, 143, 144,145)
- Le tecniche di gestione memoria primaria sono molto diverse e mirano a migliorarne le prestazioni.
- La paginazione è un'implementazione di rilocazione dinamica.
- Il supporto hardware è essenziale per garantire prestazioni accettabili.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Questo quiz esplora le tecniche utilizzate per gestire la memoria nel sistema operativo. Ti verranno poste domande riguardanti il swapping, l'uso della RAM e il riutilizzo dello spazio di memoria. Testa le tue conoscenze sulle strategie di ottimizzazione dell'uso della CPU e dei processi in esecuzione.