Nel contesto di un file system, la frammentazione è un uso inefficiente dello spazio di archiviazione per archiviare il contenuto di un singolo file in posizioni diverse su un disco piuttosto che in una singola sequenza contigua di bit in un unico punto. La frammentazione è un fenomeno naturale che si verifica fisicamente su un disco rigido o talvolta su un modulo di memoria quando i dati non vengono scritti abbastanza attentamente sull'unità.
I dati sono talvolta scritti fuori ordine, il che significa che i pezzi di dati non sono posti l'uno accanto all'altro sul disco a causa dell'uso frequente dei file. Questi pezzi di dati sono indicati come frammenti. Ad un certo punto, il sistema operativo dovrebbe accedere al file system per trovare dove si trovano i diversi frammenti sul disco.
Ad esempio, quando crei un nuovo documento, diciamo un file word; il file sembra essere in un posto. Puoi aprire il file, modificarlo o cancellarlo, qualunque cosa tu voglia. Tutte le attività sembrano accadere fisicamente sul disco, almeno questo è quello che pensi.
Il disco rigido potrebbe salvare blocchi di file in un'area del dispositivo, ma il resto esiste letteralmente da qualche altra parte sul dispositivo di archiviazione. In termini semplici, la frammentazione si riferisce allo spazio di archiviazione sprecato nel file system che consente di creare divari tra le diverse parti di un file.
La frammentazione si verifica fondamentalmente nel sistema di allocazione dinamica della memoria perché ha riservato troppo spazio al file risultando in aree aperte attorno ad esso.
In qualche modo si riferisce al partizionamento a dimensione fissa. Il sistema alloca la memoria a vari programmi e processi dividendoli in piccoli blocchi come richiesto dal programma. Tuttavia, a volte viene allocata una quantità maggiore di memoria rispetto a quella necessaria per il processo, che alla fine si traduce in una perdita di memoria in eccesso o inutilizzata.
Ad esempio, la memoria può essere assegnata solo a programmi in blocchi divisibili per 4, 8 o 16. Quando un processo richiede 24 byte, di solito ottiene un blocco di 32 byte, gli 8 byte in eccesso non vengono utilizzati. Pertanto, la memoria non utilizzata risiede in una posizione allocata specifica ed è così piccola che non può essere assegnata a un nuovo processo, con conseguente spreco. Questo rifiuto è definito come frammentazione interna. Probabilmente l'unico modo per rimuovere questo tipo di frammentazione è l'allocazione dinamica della memoria.
La memoria principale forma fori tra porzioni di memoria allocata che sono troppo piccole per contenere qualsiasi processo. È il lato negativo degli algoritmi di allocazione dello storage, quando i blocchi contigui di spazi inutilizzati non possono servire una nuova richiesta perché gli spazi sono troppo piccoli per esigenze di applicazioni di memoria di grandi dimensioni. In termini semplici, i blocchi non contigui creano buchi nella memoria con conseguente archiviazione non utilizzata che si trova al di fuori delle regioni allocate, il che significa che non può essere utilizzata insieme alla memoria principale per attività di memoria più grandi. Finiscono per essere isolati e non possono essere completamente eliminati dallo spazio di memoria. Questa è chiamata frammentazione esterna. Può essere rimosso tramite compaction che rimescola il contenuto della memoria per mettere insieme tutta la memoria libera.
Frammentazione interna:
La frammentazione interna si riferisce a spazi aggiuntivi che vengono sprecati quando più memoria viene allocata a un processo del necessario. Solitamente si verifica quando blocchi di memoria di dimensioni fisse vengono allocati ai programmi o ai processi.
Frammentazione esterna:
La frammentazione esterna, al contrario, si riferisce agli spazi inutilizzati che si formano tra i blocchi contigui di memoria che non sono adiacenti l'uno all'altro.
Frammentazione interna:
Lo spazio libero che si forma all'interno del blocco di memoria assegnato quando la memoria allocata al processo è maggiore della memoria richiesta dal processo viene definita frammentazione interna. Il "interno" si riferisce ai byte inutilizzati che risiedono nei blocchi di memoria più grandi.
Frammentazione esterna:
Quando la memoria principale forma fori troppo piccoli per soddisfare qualsiasi richiesta, si chiama frammentazione esterna.
Frammentazione interna:
Il motivo principale per cui si verifica la frammentazione interna è quando la memoria viene suddivisa in blocchi di dimensioni fisse .
Frammentazione esterna:
La frammentazione esterna è un fenomeno che si verifica quando la memoria è suddivisa in blocchi di dimensioni variabili in base alla dimensione dei diversi processi.
Frammentazione interna:
La frammentazione interna è un fenomeno naturale che può essere eliminato mediante l'allocazione dinamica della memoria che consiste nell'allocare dinamicamente porzioni di blocchi di memoria ai processi su loro richiesta e liberarli quando non sono più necessari durante l'esecuzione di un programma.
Frammentazione esterna:
La frammentazione esterna, d'altra parte, può essere eliminata mediante compattazione, impaginazione e segmentazione in modo che la memoria possa essere allocata a un processo in modo non contiguo.
Sia la frammentazione interna che quella esterna sono fenomeni naturali legati allo spazio di memoria inutilizzato o alla perdita di memoria. La frammentazione interna soffre di un'allocazione di memoria inefficiente che si verifica quando la memoria allocata a un processo è maggiore di quella richiesta, lasciando infine spazio inutilizzato nel blocco di memoria che causa la frammentazione interna. Dopo che il processo è stato rimosso dalla memoria fisica, lo spazio libero viene distribuito qua e là e non è possibile trovare blocchi di memoria adiacenti, causando una frammentazione esterna. Tuttavia, entrambi i fenomeni possono essere evitati. La frammentazione interna può essere ridotta allocando la memoria ai processi in modo dinamico, mentre la frammentazione esterna può essere meglio evitata mediante compattazione, impaginazione e segmentazione.