Fragmentación interna y externa

01.06.2015 00:29
El primer sistema de direccionamiento que se usó fue el CHS (cilindro-cabeza-sector),
ya que con estos tres valores se puede situar un dato cualquiera del disco. Más adelante se
creó otro sistema más sencillo: LBA (direccionamiento lógico de bloques), que consiste en
dividir el disco entero en sectores y asignar a cada uno un único número. Este es el que
actualmente se usa y sobre todo con la aparición de los SSD.
 
Un aspecto muy importante es la elección del tamaño del bloque, para esto hay que
entender que si el tamaño del bloque es muy grande, aun cuando el archivo sea de un tamaño
muy pequeño, se le asignará el bloque entero con lo que se desperdiciará gran parte de la
capacidad del disco (fragmentación interna).
 
Por otra parte, si el tamaño del bloque es demasiado pequeño para almacenar un
archivo, harán falta muchos bloques con lo que se producirá un retraso en la lectura del
archivo al tener que localizar en el disco todos los bloques que componen dicho archivo
(fragmentación externa). Una vez más, se ha de llegar a una solución de compromiso,
eligiendo un tamaño del bloque lo suficientemente pequeño para no desperdiciar capacidad
del disco pero lo suficientemente grande como para no ralentizar en exceso la lectura de los
archivos. Diversos estudios realizados indican que el tamaño medio de los archivos en
sistemas Linux y Windows es de 1 KB, así pues, son adecuados tamaños de bloques de 512
Bytes, 1 KB ó 2 KB.
 
Si se elige un tamaño de bloque de, por ejemplo, 2 KB en un disco cuyo sector tiene
512 Bytes, cada bloque estará compuesto por cuatro sectores.
 
En la actualidad, los sistemas Windows utilizan tamaños para los bloques de 4 KB.
 
 
Fragmentación interna:
 
La fragmentación interna es la pérdida de espacio en disco debido al hecho de que el
tamaño de un determinado archivo sea inferior al tamaño del cluster, ya que teóricamente el
archivo estaría obligado a ser referenciado como un cluster completo. Los cluster(s) son
contiguos de forma que desde el último bit del archivo situado en el cluster "A" hasta el
primer bit del archivo situado en el cluster contiguo (es decir "B") queda un espacio sobrante
siempre teniendo la condición de que el archivo del cluster "A" fuera más pequeño que el
cluster en sí.
 
Por eso se sugiere no disponer de un gran tamaño de partición en los discos nuevos
donde la capacidad es muy importante. Por ejemplo si nuestro clúster es de 18KB (18.432
bytes) por más que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere
una pérdida de ese espacio que dice utilizar pero no utiliza.
 
Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo
que uno de 10KB, o sea 18 KB. Esa pérdida de espacio se denomina fragmentación interna, y
no se corrige con el desfragmentador, sino disminuyendo el tamaño de los clusters.
 
 
Fragmentación externa:
 
Este tipo de fragmentación aparece como consecuencia de las distintas políticas de
ajuste de bloques que tiene un sistema de ficheros, o al utilizar asignaciones dinámicas de
bloques en el caso de la memoria. En el sistema de ficheros, la sucesiva creación y
eliminación de ficheros de distintos tamaños puede conducir al aislamiento de los bloques
libres de un disco y, dependiendo de la política de ajuste, su no elección para futuros ficheros.
 
En la memoria del sistema la fragmentación se produce cuando los procesos
asignados han ocupado posiciones no contiguas de memoria dejando demasiados bloques
libres de pequeño tamaño, en los que no "caben" nuevos procesos.
 
En sistemas de ficheros, la desfragmentación trata de resolver este problema,
alineando los bloques de datos contiguos y juntando los bloques libres, produciendo así
fragmentos mayores que sí serán elegidos para futuros ficheros. En la memoria principal se
soluciona compactando los procesos para que estos ocupen posiciones contiguas y dejar los
bloques libres juntos, o también se soluciona con la paginación de memoria.