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.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Memorie a Stato Solido (SSD) vs Memorie a Disco Magnetico (HDD)
La tecnologia delle Memorie Flash ha portato alla diffusione di due tipi di memorie: le Memorie SSD (Solid State Drive) e le penne USB. In questo articolo ci concentreremo sulle Memorie SSD, che negli ultimi anni stanno sostituendo le Memorie HDD (Memorie a Disco Magnetico). Vediamo le differenze tra le due:
Memorie HDD: Queste memorie presentano parti meccaniche in movimento e sono costituite da dischi magnetici posti uno sopra l'altro a breve distanza. Le testine, solidali fra loro, vengono posizionate da un braccio meccanico sulle tracce che si desidera leggere o scrivere. I dischi devono essere messi in movimento in modo che la rotazione porti il settore della traccia desiderata esattamente sotto la testina.
C'è quindi un'enorme latenza prima ancora che inizi l'operazione di lettura/scrittura dovuta a tempi meccanici. Una volta avviata l'operazione è possibile continuare la lettura/scrittura soltanto in blocchi consecutivi. Memorie SSD: non presentano delle parti meccaniche in movimento e sono costituite da tante celle di memoria Flash. Non c'è alcuna latenza prima di iniziare un'operazione di lettura/scrittura, ma è possibile "da subito" procedere con l'operazione andando a cambiare lo stato delle porte NAND e NOR da 1/0 oppure da 0/1 mediante un'applicazione di corrente/tensione ai capi dei vari transistors (anche singolarmente). Le operazioni di scrittura saranno più lente rispetto quelle di lettura in quanto è necessario prima "svuotare il contenuto della cella". Per cui è possibile concludere che l'utilizzo di una SSD piuttosto che una HHD comporta: - Una maggioreaffidabilità a causa dell’assenza di parti meccaniche in movimento, e quindiè più probabile avere “guasti” negli HHD rispetto alle SSD;
Rumorosità assente a causa dell’assenza di parti meccaniche in movimento;
Una minore latenza iniziale;
Una lettura Random Access piuttosto che Sequential Access;
Un minore consumo elettrico in quanto non occorre più mettere in moto i dischi e far girare le testine, si stima che consumano 8 volte di meno degli HHD, e questo è il motivo per il quale le SSD stanno sostituendo gli HDD nei Portatili;
Il costo è maggiore in quanto le memorie realizzate sono più piccole;
La vita delle SSD è molto più breve a causa del numero di scritture/letture che limita i parametri di Resistenza e Ritenzione;
La scrittura è molto più lenta della lettura in quanto richiede una cancellazione prima della riprogrammazione della cella;
Nel caso in cui occorre leggere grosse
quantità di dati in blocchi consecutivi le prestazioni di HHD e SSD sono comparabili in quanto nelle HDD trascorsi i tempi di latenza iniziale, i blocchi vengono letti consecutivamente e la banda di trasferimento delle HHD è maggiore rispetto a quelle delle SSD. Se invece i dati da leggere sono allocati in blocchi non consecutivi le SSD risultano migliori.
Con l'approccio NAND vengono realizzate memorie Flash più grandi ma più lente, mentre con quello NOR vengono realizzate memorie Flash più piccole ma più veloci in lettura. Si utilizzano le NOR quindi per realizzare le memorie nelle quali vengono effettuate poche scritture ma tantissime letture, come ad esempio le "memorie istruzioni".
2. Gestione della Memoria
Il Gestore della Memoria (Memory Manager) è quella parte del SO che si occupa dell'allocazione della Memoria ai Processi richiedenti e della deallocazione degli indirizzi di Memoria non più utilizzati.
questi 2 compiti si aggiunge si aggiunge lo swap di Processi o di parte dell'immagine di Processi dalla RAM al Disco e viceversa quando la RAM non è sufficientemente grande per ospitare tutti i Processi in esecuzione. Idealmente una Memoria dovrebbe essere veloce, capiente, non volatile, ed anche poco costosa; le tecnologie del momento non permettono di soddisfare contemporaneamente tutti i requisiti e di conseguenza la maggior parte dei sistemi per l'elaborazione adotta una Gerarchia di Memoria. La filosofia che è alla base di questa filosofia consiste nel portare verso il vertice di tale gerarchia le informazioni più utilizzate dalla porzione di programma in esecuzione cosicché nella maggior parte dei casi il tempo di accesso coincide con quello delle memorie più rapide. Utilizzando questo approccio i Processi avranno a disposizione una quantità molto più ampia di Memoria, in quanto le informazioni che non saranno più
Utili, almeno al momento, verranno spostate dalla Memoria Centrale verso il Disco lasciando quindi libero dello spazio in quella porzione di Memoria. Esistono essenzialmente due modelli di Gestione della Memoria e sono:
- Senza Rilocazione: modelli che non spostano i Processi, fra essi si distinguono la Monoprogrammazione e la Multiprogrammazione a Partizioni Fisse;
- Con Rilocazione: modelli che spostano i Processi, fra essi si distinguono lo Swapping, la Memoria Virtuale con Paginazione, con Segmentazione e con Paginazione con Segmentazione.
1.2.1. Monoprogrammazione
Il modello più semplice è quello orientato alla monoprogrammazione (ormai in disuso a causa dell'affermarsi della multiprogrammazione), il sistema esegue un solo programma alla volta e per questo motivo l'area di memoria è condivisa dal Processo in esecuzione e dal Sistema Operativo. Talvolta il SO può risiedere nella ROM in maniera tale da lasciare l'intera RAM all'esecuzione.
delProcesso utente (tale soluzione è ad esempio adottata nei sistemi embedded e nei palmari). Unoscenario alternativo ai primi due appena visti consiste nel collocare nella ROM soltanto il BIOS37(contenente i Gestori dei Dispositivi di I/O) e di suddividere la RAM tra il SO ed il Processo inesecuzione (questa soluzione è ad esempio impiegata da MS-DOS).
1.2.2. Multiprogrammazione a Partizioni Fisse
La Monoprogrammazione, fortunatamente, è diventata solo un ricordo del passato grazie allaMultiprogrammazione. Con essa è possibile avere diversi Processi attivi contemporaneamente inMemoria; quest’ultima viene suddivisa in partizioni fisse di diverse dimensioni, ognuna delle qualipuò ospitare un solo Processo. Vuol dire che un nuovo Processo può partire se e solo se è presenteuna partizione libera sufficientemente grande da accogliere l’intero spazio di indirizzamento delProcesso. Sono possibili due alternative o varianti,
implementare un'unica coda di attesa per ogni partizione di memoria oppure allestire un'unica coda di attesa per tutte le partizioni. La prima strategia penalizza i processi in attesa su una coda quando in memoria esistono altre partizioni abbastanza grandi da accoglierli al momento vuote. Nel secondo caso, invece, i processi vengono messi in attesa tutti nella stessa coda: il processo in testa alla coda è il primo ad essere allocato, per esso si sceglierà la partizione di memoria che più si avvicina alle dimensioni del processo; qualora non ci fosse spazio sufficiente il gestore della memoria cerca di allocare le partizioni di memoria rimaste ai successivi processi in coda. A seguito della terminazione di un processo, il gestore della memoria potrebbe procedere cercando nella coda di attesa il processo che meglio riempie il buco appena lasciato. Purtroppo nei sistemi senza rilocazione la memoria non viene ceduta facilmente dai processi, e di conseguenza si vanno adintaccare le performance dell'intero sistema. Per questo motivo nei moderni SO si tende ad utilizzare sempre di più modelli di Gestione della Memoria con Rilocazione, poiché più efficienti. Swapping 1. 2. 3. Lo Swapping è un primo approccio alla Gestione della Memoria con Rilocazione: è sicuramente un metodo ancora influenzato dai sistemi senza Rilocazione e che comunque non è decisamente efficace. Nello swapping un Processo è interamente caricato in Memoria (non ci sono partizioni fisse); quindi viene eseguito per un certo intervallo di tempo ed infine è scaricato dalla Memoria principale al Disco fisso. Anche i Processi creati successivamente al primo vengono allocati interamente in Memoria, tuttavia se lo spazio rimasto (contiguo) è insufficiente il Processo non può essere caricato in Memoria e per questo motivo viene ucciso. Viene mostrato un esempio: Con lo Swapping nascono diversi problemi, il primo è quellodella Frammentazione Esterna: quando un Processo in Memoria principale termina, lo spazio di Memoria ad esso allocato ritorna ad essere disponibile per le successive allocazioni. Ciò genera diversi buchi in Memoria che è possibile compattare in unico buco mediante un'operazione di compattazione, anche nota come deframmentazione. Si tratta di un'operazione periodica (molto lenta) che effettua degli spostamenti fra le Immagini dei Processi attualmente in Memoria al fine di recuperare spazio raggruppando tutti i buchi. Altro problema dello Swapping è il Calcolo dello Spazio da allocare per ogni Processo: nell'Immagine di un Processo soltanto l'Area Testo e l'Area Dati hanno una dimensione fissa, non è così per l'Area Stack e l'Area Heap per i quali il SO non può prevedere quanto spazio riservare, può solo fare una "stima" lasciando un'area vuota (polmone di crescita) fra esse per consentire
alle 2 di espandersi (limitatamente). Se durante l'esecuzione del<div>apposite strutturedati per mantenere traccia dinamicamente dei blocchi liberi e blocchi occupati della Memoria.</div>