Frammentazione (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 14:
* ''Frammentazione interna'': la memoria è suddivisa in blocchi di grandezza uguale B (es. un settore di un disco). Quando un file di dimensione D deve essere memorizzato, vengono riempiti completamente <tt>(D div B)-1 </tt>blocchi di memoria, ed uno che ne conterrà <tt>D mod B</tt>. La frammentazione interna consiste nello spazio di memoria che rimane libero ed inutilizzato nell'ultimo blocco. Questo tipo di frammentazione non influisce sulle prestazioni del sistema ma comporta uno spreco di [[memoria (informatica)|memoria]]. Come caso particolare, se <tt>D mod B == 0</tt>, allora vengono occupati esattamente <tt>D div B</tt> blocchi di memoria, e lo spreco diventa nullo. Ovviamente, tale spreco risulta essere percentualmente molto piccolo se <tt>D » B</tt>, mentre risulta essere molto alto in caso di file di dimensioni comparabili a <tt>B</tt>. Per esemplificare, se un file di 1.637.257 byte deve essere memorizzato in un disco avente settori da 4096 byte, allora saranno occupati completamente 399 settori, mentre uno sarà occupato per 2953 byte (infatti 4096x399+2953=1637257). In tal caso, lo spazio sprecato è circa dello 0,18%. Se invece deve essere memorizzato un file di 1000 byte, allora lo spreco è di 3096 byte, ovvero del 75,59%.
 
* ''Frammentazione esterna'': in genere, il ''[[controller]]'' dell'hard disk cerca di minimizzare i tempi di accesso al disco, tentando di memorizzare un file in settori contigui e ridurre al massimo lo spostamento delle testine (azione che introduce notevoli rallentamenti nell'accesso ai dati). Tuttavia, in seguito alla ripetuta memorizzazione e cancellazione di file di dimensione eterogenea effettuata in maniera disordinata, si verifica una riduzione dello spazio contiguo massimo disponibile. In tal caso, un nuovo file di dimensioni sufficientemente ampie che deve essere memorizzato verrà scritto presumibilmente in settori e cilindri non adiacenti. Questo può portare ad un aumento anche notevole dei tempi di lettura e scrittura, introducendo un calo notevole delle prestazioni del sistema<ref>{{Cita web|url = http://fortyzone.it/frammentazione-peggiora-prestazioni/|titolo = Frammentazione: Come Peggiora le Performance - FortyZone|accesso = 2015-10-23|lingua = it-IT|sito = FortyZone}}</ref>.
 
Le soluzioni possibili per migliorare le prestazioni del sistema sono state oggetto di studio approfondito in campo informatico. Nel caso di un disco, si tratta di riordinare i frammenti dei file in modo da risultare adiacenti l'uno all'altro, minimizzandone quindi i tempi di accesso. Nel caso della memoria, è necessario massimizzare la memoria contigua disponibile. Entrambi i problemi, tuttavia, sono riconducibili al [[problema dello zaino]], e quindi hanno tempo di soluzione [[tempo pseudo-polinomiale|pseudo-polinomiale]]. Nel primo caso si fa uso di appositi programmi, detti ''deframmentatori''; nel secondo caso è possibile che il sistema operativo si occupi di tale problema, così come è possibile fare uso esplicito del [[garbage collection]].