Sia la classificazione interna che quella esterna influenzano la velocità di accesso ai dati del sistema. Esse hanno una differenza fondamentale tra di loro, cioè la frammentazione interna si verifica quando i blocchi di memoria di dimensioni fisse vengono allocati al processo senza preoccuparsi delle dimensioni del processo e la frammentazione esterna si verifica quando i processi sono allocati in memoria dinamicamente. Andiamo oltre e discutiamo le differenze, le ragioni, le soluzioni dietro la frammentazione interna ed esterna con l'aiuto della tabella di comparazione mostrata sotto.
Grafico comparativo
Base per il confronto | Frammentazione interna | Frammentazione esterna |
---|---|---|
Di base | Si verifica quando blocchi di memoria di dimensioni fisse vengono allocati ai processi. | Si verifica quando lo spazio di memoria di dimensione variabile viene assegnato ai processi in modo dinamico. |
avvenimento | Quando la memoria assegnata al processo è leggermente più grande della memoria richiesta dal processo, ciò crea uno spazio libero nel blocco assegnato che causa la frammentazione interna. | Quando il processo viene rimosso dalla memoria, crea lo spazio libero nella memoria causando la frammentazione esterna. |
Soluzione | La memoria deve essere partizionata in blocchi di dimensioni variabili e assegnare il blocco più adatto al processo. | Compattazione, impaginazione e segmentazione. |
Definizione di frammentazione interna
La frammentazione interna si verifica quando la memoria è suddivisa in blocchi di dimensioni fisse . Ogni volta che una richiesta di processo per la memoria, il blocco di dimensioni fisse viene assegnato al processo. Nel caso in cui la memoria assegnata al processo sia leggermente più grande della memoria richiesta, la differenza tra la memoria assegnata e richiesta è la frammentazione interna .
Questo spazio rimanente all'interno del blocco di dimensioni fisse non può essere allocato a nessun processo in quanto non sarebbe sufficiente per soddisfare la richiesta di memoria da parte del processo. Cerchiamo di capire la frammentazione interna con l'aiuto di un esempio. Lo spazio di memoria è suddiviso in blocchi di dimensioni fisse di 18.464 byte. Diciamo che una richiesta di processo per 18.460 byte e un blocco partizionato a dimensione fissa di 18.464 byte è assegnato al processo. Il risultato è 4 byte di 18.464 byte rimasti vuoti, che è la frammentazione interna.
L'overhead di tenere traccia del foro interno creato a causa della frammentazione interna è sostanzialmente superiore al numero di fori interni. Il problema della frammentazione interna può essere risolto ripartendo la memoria nel blocco di dimensioni variabili e assegnando il blocco di dimensioni migliori a un processo che richiede la memoria. Tuttavia, non eliminerà del tutto il problema della frammentazione interna, ma lo ridurrà in una certa misura.
Definizione di frammentazione esterna
La frammentazione esterna si verifica quando c'è una quantità sufficiente di spazio nella memoria per soddisfare la richiesta di memoria di un processo. Ma la richiesta di memoria del processo non può essere soddisfatta in quanto la memoria disponibile è in un modo non contiguo. O si applica la strategia di allocazione della memoria di prima scelta o ottimale, causerà la frammentazione esterna.
Quando un processo viene caricato e rimosso dalla memoria, lo spazio libero crea il buco nello spazio di memoria, e ci sono molti buchi nello spazio di memoria, questo è chiamato frammentazione esterna. Sebbene il primo adattamento e il miglior adattamento possano influire sulla quantità di frammentazione esterna, non può essere completamente eliminato. La compattazione può essere la soluzione per la frammentazione esterna.
L'algoritmo di compattazione mischia tutto il contenuto della memoria su un lato e libera un grande blocco di memoria. Ma l'algoritmo di compattazione è costoso. Esiste una soluzione alternativa per risolvere il problema della frammentazione esterna che consentirà a un processo di acquisire memoria fisica in modo non contiguo. Le tecniche per ottenere questa soluzione sono il paging e la segmentazione.
Differenze chiave tra la frammentazione interna ed esterna
- La ragione alla base delle occorrenze di frammentazione interna ed esterna è che la frammentazione interna si verifica quando la memoria viene suddivisa in blocchi di dimensioni fisse mentre la frammentazione esterna si verifica quando la memoria viene suddivisa in blocchi di dimensioni variabili .
- Quando il blocco di memoria assegnato al processo risulta leggermente più grande della memoria richiesta, lo spazio libero lasciato nel blocco di memoria assegnato causa la frammentazione interna. D'altra parte, quando il processo viene rimosso dalla memoria, crea uno spazio libero causando un buco nella memoria che è chiamato frammentazione esterna.
- Il problema della frammentazione interna può essere risolto partizionando la memoria in blocchi di dimensioni variabili e assegnando il blocco più adatto al processo di richiesta. Tuttavia, la soluzione per la frammentazione esterna è la compattazione, ma è costosa da implementare, quindi i processi devono essere autorizzati ad acquisire memoria fisica in modo non contiguo, per ottenere ciò viene introdotta la tecnica del paging e della segmentazione.
Conclusione:
Il problema della frammentazione interna può essere ridotto, ma non può essere completamente eliminato. Il paging e la segmentazione aiutano a utilizzare lo spazio liberato a causa della frammentazione esterna consentendo a un processo di occupare la memoria in modo non contiguo.