Tesis de grado de Ingeniería en informática

Sistemas de Archivos.Tendencias y mejoras tecnológicas

Universidad de Buenos Aires Facultad de Ingeniería Departamento de Computación

Tutor: Lic. Arturo Servetto Tesista: Matías Leguizamo Padrón: 82375 E-mail: matias.leguizamo@gmail.com

ÍNDICE

Índice
1. Objetivo 2. Dedicatoria 3. Introducción 4. Relevamiento bibliográco sobre sistemas de archivos
4.1. Asignación de bloques a archivos 4.1.1. 4.1.2. 4.1.3. 4.1.4. 4.2. 4.2.1. 4.2.2. 4.3. 4.4. Asignación contigua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 6 7 8
8 8 9 9 10 11 11 12 12 12 13 13 13 13 14 15 15 15 16 16 18 21 24 26 26 26 28 28 28

Asignación por lista enlazada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Asignación por lista enlazada utilizando una tabla en memoria Nodos-i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Administración de espacio libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Administración mediante mapa de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Administración mediante lista enlazada de unidades de almacenamiento libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Seguridad 4.4.1. 4.4.2. 4.4.3.

Rendimiento del sistema de archivos Uso de cache Lectura adelantada de bloques

Reducción del movimiento del brazo del disco . . . . . . . . . . . . . . . . . . . . . . . . . .

4.5. 4.6.

Implementación de directorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nuevas prestaciones en sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1. 4.6.2. 4.6.3. Sistemas de archivos estructurados por registro . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de archivos por bitácora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de archivos virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DOS (Disk Operating System) UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.7.

Casos de estudio de sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1. 4.7.2. 4.7.3. 4.7.4. 4.7.5. 4.7.6. 4.7.7. 4.7.8. 4.7.9. NTFS (New Technology File System)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

EXT-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXT-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXT-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HFS (Hierarquical File System): HFS+ (HFS plus) HPFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.7.10. ZFS

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5. Relevamiento bibliográco de métodos y tendencias para optimizar el rendimiento de sistemas de archivo 30
5.1. Fragmentación en sistemas de archivos y Principio de localidad 5.1.1. 5.1.2. 5.2. 5.2.1. 5.2.2. 5.2.3. 5.2.4. 5.2.5. 5.3. 5.3.1. 5.3.2. 5.3.3. 5.4. 5.4.1. 5.4.2. Principio de localidad . . . . . . . . . . . . . . . . . . . . 30 30 30 31 32 32 33 33 33 33 35 36 37 38 38 Fragmentación de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Desfragmentación y técnicas para reducir la fragmentación en sistemas de archivos actuales Sistemas de archivos Windows Sistema de archivos EXT-3

Sistemas de archivos archivos Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistema de archivos EXT-4, HFS+, ZFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ventajas y desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de archivos Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sistemas de archivos NTFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXT-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Buer-cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Política de reemplazo de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Líneas de investigación sobre técnicas para evitar la fragmentación en sistemas de archivos modernos 33

Buer-cache para la optimización de tiempos de acceso . . . . . . . . . . . . . . . . . . . . . . . . .

1

Tesis de grado de ingeniería en informática.

ÍNDICE

5.4.3. 5.4.4. 5.4.5. 5.4.6.

Sincronización para el reemplazo de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimización en la performance del buer-cache por medio de algoritmos que utilizan información de la carga del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimización en la performance del buer-cache por medio de mejoras en la política de actualización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40 41 41 41

Colas múltiples de reemplazo para el segundo nivel de buer-cache . . . . . . . . . . . . . .

6. Elaboración de una propuesta de solución alternativa o superadora
6.1. Localidad de archivos asociados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1. 6.1.2. 6.1.3. 6.1.4. 6.2. 6.3. 6.4. Algoritmo de principio de localidad en archivos asociados Método para evitar la fragmentación en archivos asociados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Heurística para el algoritmo de principio de localidad en archivos asociados

44
44 44 46 46 46 46 48 48 49 49 49 49 50 51 52 52 52 52 53 53 54 54 55 56

Resultado de la reubicación de archivos según las relaciones . . . . . . . . . . . . . . . . . .

Persistencia temporal de los accesos a archivos por los procesos . . . . . . . . . . . . . . . . . . . . Depuración de la tabla histórica de relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Módulos que forman la solución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1. 6.4.2. 6.4.3. 6.4.4. 6.4.5. 6.4.6. 6.4.7. 6.4.8. 6.4.9. Módulo que implementa el algoritmo del principio de localidad en archivos asociados . . . . Módulo de merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Módulo de reubicación de bloques Módulo orquestador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Heurística para la ejecución del módulo de orquestación

Mecanismo de log para mantener la consistencia en caso de falla

Control de la concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Módulo de rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Módulo de depuración de la tabla histórica de relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.4.10. Frecuencia de ejecución del módulo orquestador . . . . . . . . . . . . . . . . . . . . . . . . . 6.5. Modicaciones necesarias en Sistema de archivos NTFS para soportar esta técnica 6.5.1. 6.5.2. 6.5.3. 6.5.4. 6.5.5. Cola compartida de relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabla histórica de relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estructura utilizada para identicación de inconsistencias tras una falla Estructura utilizada para por el proceso de rollback Modicaciones generales en los Sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7. Evaluación Analítica y Experimental de la Propuesta
7.1. Evaluación analítica 7.1.1. 7.1.2. 7.1.3. 7.1.4. 7.1.5. 7.1.6. 7.1.7. 7.2. 7.2.1. 7.2.2. 7.2.3. 7.2.4. 7.2.5. 7.2.6. 7.2.7. 7.2.8. 7.2.9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hipótesis sobre el tiempo de seek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hipótesis sobre el tiempo de latencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hipótesis sobre el tiempo de transferencia, . . . . . . . . . . . . . . . . . . . . . . . . . . . . Expresión general del tiempo de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gráco del tiempo de seek en función de la distancia entre cilindros

57
57 57 57 58 58 58 59 60 60 60 63 64 64 66 66 67 68 69 70 71 71 72 89

Gráco del tiempo de latencia en función de la distancia entre bloques . . . . . . . . . . . . Observaciones nales sobre el tiempo de acceso . . . . . . . . . . . . . . . . . . . . . . . . . Descripción de la simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de arquitectura de la simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de secuencia de la simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Código fuente de módulo FileSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Código fuente de módulo TimesHelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Código fuente de módulo LocalityPrinciple Código fuente de módulo Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Código fuente de módulo CartesianProductHelper

Evaluación Experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Código fuente de módulo Relocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7.2.10. Código fuente de módulo Orchestrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.11. Código fuente de módulo RandomBlockSelector . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.12. Código fuente de módulo SecuentialBlockSelector . . . . . . . . . . . . . . . . . . . . . . . . 7.2.13. Análisis comparativos de los resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.14. Resumen de los resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

Tesis de grado de ingeniería en informática.

. . . . . . . . .ÍNDICE 8. . . . .Referencias 92 94 3 Tesis de grado de ingeniería en informática. . . . . . . . . . . . . . . . . . . . . . . . . . . Análisis de los resultados Trabajos futuros . . . . .2. . . . . . . . Índice alfabético 10. Conclusión 8. . . . . . . . . . 8. . . . . . . . . . . . . . . .1. . . . . . . 90 90 91 9. . . . . . . .

1971 4 Tesis de grado de ingeniería en informática.... John Lennon. .ÍNDICE Imagine there's no Heaven It's easy if you try And no Hell below us Above us only sky Imagine all the people Living for today Imagine there's no country It isn't hard to do Nothing to kill or die for And no religion too Imagine all the people Living life in peace You may say I'm a dreamer But I'm not the only one Maybe someday you will join us And the world will be as one Imagine no posessions I wonder if you can No need for greed or hunger Or Brotherhood of Man Imagine all the people Sharing all the world You may say that I'm a dreamer But I'm not the only one And maybe someday you will join us And the world will be as one You may say that I'm a dreamer But I'm not the only one Maybe someday you will join us And the world will be as one.

para esto.1 OBJETIVO 1. Objetivo El objetivo del trabajo es analizar tendencias y puntos débiles de sistemas de archivos para plantear mejoras a alguno de estos aspectos. La segunda etapa se centra en un relevamiento bibliográco y la confección de un informe sobre tendencias tecnológicas para optimizar el rendimiento de los sistemas de archivo. . 5 Tesis de grado de ingeniería en informática. La primer etapa está dedicada a un relevamiento bibliográco y la confección de un informe sobre Sistemas de Archivo. La cuarta etapa consiste en la evaluación analítica y/o experimental de la propuesta. superadora o comple- mentaria para atacar los problemas detectados. el trabajo se divide en cuatro etapas. En la tercer etapa se elaborará el planteo de una propuesta de solución alternativa.

gracias. Dani y José. gracias. Este trabajo está dedicado a fuerzas necesarias para seguir adelante en esta carrera tan difícil y compleja. A vos A mi A madre y a mi madrina por el sacricio y la ayuda que me dieron siempre. Universidad de Buenos Aires que me brindó una educación de excelencia de manera gratuita.2 DEDICATORIA 2. cinco hermanos y a toda la gran familia que tengo. padre que desde algún lugar me está mirando y está orgulloso de su hijo. A todos los compañeros que pasaron meses sin dormir para terminar las entregas. . gracias. gracias. A la 6 Tesis de grado de ingeniería en informática. Alberto por el sacricio que hizo durante 20 años. gracias A mis Muy especialmente a mi por la familia que me diste y por todo. gracias A Favio. Dedicatoria Vanesa (mi esposa) y a Tomy (mi hijo) que son las personas que me dan las Vane que estás a mi lado de manera incondicional desde que comencé la carrera y vos Tomy que me cambiaste la vida cuando naciste. Arturo por su tiempo y dedicación.

éstos son unidades lógicas de almacenamiento de información. La forma de almacenar la información es mediante archivos. y los sistemas de software o aplicaciones son los que deben saber interpretar los datos para transformarlos en información. Introducción La mayoría de los sistemas de software requieren almacenar y recuperar información de dispositivos de almacenamiento masivo para cumplir sus objetivos. Determinado tipo de información requiere ser accedida por varios procesos (aplicaciones que están en ejecución) en paralelo. esto se debe a que un bloque es la unidad mínima de almacenamiento. se debe poder acceder de manera concurrente. Existen dos operaciones que sobresalen del resto en cuanto a importancia. 7 Tesis de grado de ingeniería en informática.3 INTRODUCCIÓN 3. es decir. . que es el tema de la tesis. y la parte del sistema operativo que trata la administración de los archivos se conoce como sistema de archivos. estas son la lectura y la escritura de bloques. Los archivos son administrados por el sistema operativo. El tamaño mínimo que puede tener un archivo es el tamaño de un bloque.

1.1. Asignación contigua Este es el mecanismo más simple de los utilizados ya que se basa en almacenar el archivo en bloques adyacentes. En la imagen 4. mínimo tiempo de seek posible (tiempo de posicionamiento de un bloque para ser leido) ya que los bloques La otra virtud que tiene este método es que la recuperación del archivo completo se puede realizar con el son contiguos. Para recuperar todo el archivo se debe tener algún mecanismo para referenciar a todos estos bloques. y el conjunto de bloques asignados a un archivo contiene la totalidad de la información almacenada en él. Asignación de bloques a archivos Los archivos se almacenan en bloques.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4. pero en contraposición tiene la gran desventaja de que con el paso del tiempo muchos de los archivos creados son borrados. Este efecto se puede visualizar en la imagen 4. la primera es que es de fácil implementación ya que los datos necesarios para la implementación son el número del primer bloque y la cantidad de los mismos.2. de esta manera un archivo de 10kb y bloques de 1kb tendría 10 bloques seguidos. por lo tanto los bloques que ocupaban quedan libres y esto produce lo que se conoce como fragmentación (también se puede dar cuando se actualiza un archivo de manera que cambie su tamaño). A continuación se hace una descripción de distintas opciones.1 se visualiza un ejemplo de tres archivos y con bloques libres a continuación de los del archivo C. Este método tiene dos grandes virtudes. . Relevamiento bibliográco sobre sistemas de archivos 4. 4. 8 Tesis de grado de ingeniería en informática.1. Por lo tanto este método tiene las ventajas de ser de fácil implementación y además tiene alto rendimiento.

En la imagen 4.2. Asignación por lista enlazada utilizando una tabla en memoria Una manera de eliminar las desventajas del método de lista enlazada es tener los apuntadores de los bloques siguientes en una tabla externa a los bloques que esté en memoria.3 se ejemplica una lista enlazada de bloques para un archivo llamado A.1. Una contra que tiene este método es que para llegar al bloque n de un archivo se necesita leer sus n-1 bloques previos.3. 4. además.4 se observa la tabla en cuestión para el archivo A utilizado en el método anterior.1. para la entrada al directorio sólo se necesita la dirección del primer bloque porque por las referencias internas se obtiene siempre el siguiente. Con este método no se pierde espacio por fragmentación (excepto por la fragmentación interna del último bloque de cada archivo).4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Con el paso del tiempo esta fragmentación se vuelve problemática porque en algún momento la unidad de almacenamiento se puede llenar y entonces se deben reutilizar los bloques que fueron liberados con anterioridad. En la imagen 4. 9 Tesis de grado de ingeniería en informática. lo cual no es para nada eciente. Se utilizan algunos bytes de cada bloque para apuntar al siguiente. [1] 4. Asignación por lista enlazada Esta variante se caracteriza por mantener los bloques de los archivos enlazados mediante referencias de manera que constituyan una lista. Para esto se debe calcular el tamaño del archivo a crear y recorrer todos los huecos hasta encontrar uno tal que su tamaño sea mayor o igual que el de el archivo que se desea almacenar [1]. .

El principal problema de este método es que los i-nodes son de tamaño jo. . En la imagen 4. Por lo tanto esta técnica es ineciente en discos muy grandes.5 se visualiza la estructura de un i-node. [1] 4. Nodos-i Este método se caracteriza por tener una estructura llamada i-node (index node) que contiene los atributos y la lista de los bloques del archivo.1. esto hace que el acceso a todos los bloques del archivo sea más rápido que en el método anterior.4. El i-node sólo debe estar en memoria cuando está abierto el archivo. ya que la tabla. y a veces esta cantidad de bloques puede ser menor que la que tiene el archivo en cuestión. por lo cual se puede direccionar una cantidad determinada de bloques.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS La tabla en cuestión es la llamada FAT (File Allocation Table). para discos muy grandes y tamaños de bloques pequeños se necesitan muchas entradas y eso hace que el tamaño crezca demasiado. se maneja en memoria. esta es una gran ventaja sobre el método de la FAT. que tiene toda la tabla en memoria. bloques y no datos. Esta técnica tiene las ventajas de utilizar todo el espacio de los bloques para datos y de no tener que acceder a disco para obtener la referencia del siguiente bloque. para recorrer un archivo basta con seguir la secuencia de referencias hasta que se termine. [1] Una manera de solucionar este problema es reservar el último elemento de la lista de direccionamiento para direccionar un bloque que contiene direcciones de 10 Tesis de grado de ingeniería en informática. aunque persistida en disco. por lo tanto para acceder a todos los bloques del archivo se debe acceder a su i-node. La principal desventaja es que toda la tabla debe estar en memoria todo el tiempo para que funcione.

Un aspecto en contra es que cuando se requiere espacio libre se debe recorrer secuencialmente toda la estructura hasta obtener los bloques que cubran el espacio libre requerido. La imagen 4.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4. Al tener un bit por unidad para indicar su estado se reduce mucho el espacio ocupado por la estructura. La administración del espacio libre se puede realizar mediante un mapa de bits o una lista enlazada de unidades de almacenamiento libres.2.2. . Administración de espacio libre Cuando un archivo incrementa su tamaño o se crea. es necesario obtener unidades de almacenamiento libres para insertar los datos. [1] 11 Tesis de grado de ingeniería en informática. Administración mediante mapa de bits Un mapa de bits es una estructura que asigna un bit de estado a cada unidad de almacenamiento (por ejemplo bloques). indicando si está libre o no. Una desventaja de este método es que se debe tener la información de todas las unidades de almacenamiento en la estructura. 4.1.6 ejemplica este método. Una ventaja es que se accede de manera directa y no se debe realizar un recorrido secuencial hasta ubicar el estado de la unidad en cuestión porque basta con su número para acceder al nodo del mapa y vericar si está libre o no.

4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4. cuando se necesita espacio para un archivo. Cada uno de los nodos de la lista contiene información de una unidad de almacenamiento (por ejemplo un bloque).3. [1] 4. que es cuatro veces más lenta que la palabra de 32bits. escritura y ejecución del archivo. el acceso a memoria está en el orden de un millón de veces más rápido que el acceso a disco. se recorre la lista hasta obtener el espacio requerido y se quita de la lista los nodos de los bloques obtenidos. escritura y ejecución sobre los archivos que contiene. sólo tiene la información de aquellos que están libres. Para leer una palabra de memoria de 32bits se podrían requerir 10 nseg.2. Estos permisos se reeren a permisos de lectura. 12 Tesis de grado de ingeniería en informática. La imagen 4. La lectura de un disco rígido se podría realizar a 100MB/seg. Al ser una lista de bloques libres. [2] 4.4. Seguridad Los permisos sobre los archivos o sobre los directorios permiten el acceso a determinados usuarios o a grupos de usuarios. Administración mediante lista enlazada de unidades de almacenamiento libres Una lista enlazada es una estructura que tiene una referencia al siguiente nodo y al anterior. estos permisos se guardan en estructuras que varían dependiendo el sistema de archivos.2. . Sobre un directorio estos permisos reeren básicamente a las operaciones de lectura. pero a esto se le debe agregar de 5 a 10 mseg para realizar una búsqueda hasta la pista y después esperar a que se coloque el sector deseado bajo el cabezal de lectura.7 ejemplica este método. Rendimiento del sistema de archivos El acceso a disco es mucho más lento que el acceso a memoria. por lo cual. Si se necesita sólo una palabra.

[1] 4.3. preferentemente en el mismo cilindro. en caso contrario se accede a la unidad de almacenamiento para obtener el bloque. para evitar esto se verica el modo de acceso al archivo para determinar si se trata de un acceso secuencial o aleatorio. para esto se utiliza una tabla hash a la cual se accede mediante un código hash que se obtiene con la dirección de dispositivo. [1] 4.2. Esta entrada provee la información necesaria para encontrar todos los bloques del archivo. 4. [1] 4. Para poder realizar este proceso se necesita una estructura que permita vericar si cierto bloque está en la caché de manera rápida. Todos los bloques con el mismo valor de hash se encadenan en una lista enlazada de manera que se pueda localizar todos los bloques del dispositivo. LRU FIFO (cola). Esta técnica funciona para archivos secuenciales. si no está. Implementación de directorios Para poder utilizar un archivo primero debe ser abierto. Para administrar la memoria caché se analizan todos los pedidos de bloques. Por lo tanto la función principal de un sistema de directorios es realizar la asociación del nombre del archivo y la información necesaria para obtener todos sus datos. De esta manera se reduce el movimiento del brazo del disco. que platea que si se necesita un bloque en muy probable que se necesite el siguiente en el corto plazo. Una cuestión muy relacionada es en dónde se guardan los atributos de los archivos. cuando este ocurre se debe quitar un bloque y guardarlo en la unidad de almacenamiento. Reducción del movimiento del brazo del disco Esta técnica se basa en colocar los bloque que tengan probabilidad de utilizarse en secuencia uno a continuación del otro. con lo cual se reducen los tiempos de acceso y la performance crece. Cuando se solicita al sistema de archivos el bloque n de un archivo. A menudo se debe insertar un bloque en una lista que está llena. se carga con el propósito de que cuando sea solicitado esté cargado o al menos esté en curso. muchos sistemas de archivos se han diseñado con varias optimizaciones para mejorar el rendimiento. .4. Lectura adelantada de bloques Esta técnica se basa en tratar de colocar bloques en la caché antes de que se necesiten. para la selección de dicho bloque se utilizan algoritmos como (menos recientemente utilizado). 13 Tesis de grado de ingeniería en informática. de esta manera se incrementa la tasa de aciertos en la caché. Este método se ejemplica en la imagen 4. Este método funciona bajo el concepto de localización de los datos.8.4. Uso de cache Un caché es una colección de bloques que pertenecen lógicamente al disco pero que están en memoria para mejorar el rendimiento del sistema de archivos.5. además se realiza la vericación para ver si el bloque n+1 está en la caché.4. y si el bloque está en la cache se devuelve. luego se coloca en la caché y se entrega al proceso que lo solicitó.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Como resultado de esta diferencia en el tiempo de acceso. para esto el sistema operativo utiliza el nombre del archivo en cuestión para localizar la entrada del directorio. en archivos de acceso aleatorio perjudica el funcionamiento.1. etcétera. Una opción es guardar estos atributos en el mismo directorio. Cuando se realiza la creación o incremento del tamaño de un archivo se debe realizar un análisis para ubicar todos los bloques lo más cerca posible. de esta manera los directorios son una lista de nombres de archivo. atributos y bloques de dicho archivo.

otras soportan 14 caracteres. el nombre del archivo se ubica en otro sector del directorio reservado para almacenar todos los nombres de los archivos. a continuación se detallan algunas maneras de implementarlo. Una alternativa al método anterior es tener una tabla hash para cada directorio en la cual la clave es el nombre del archivo.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Otra técnica es guardar los atributos en i-nodos. Otro tema importante para tratar es la implementación de los nombres de los archivos: algunas implementaciones soportan archivos con 8 caracteres de nombre más 3 de extensión. de esta manera el directorio es una lista de nombres de archivo más un número de i-nodo en el que se encuentra la información del archivo como atributos. i-nodo. [1] 4. El primer método es realizar una búsqueda secuencial hasta encontrar el archivo que se está buscando. En lo que respecta a búsquedas de un archivo dentro de un directorio. se usan tres métodos que se describen a continuación. de esta manera no se desperdicia espacio. y en el caso de que no esté se realiza la búsqueda dentro del directorio y al resultado se lo ubica en la cache. cache de disco de una manera más efectiva. Este método se ejemplica en la imagen 4. Nuevas prestaciones en sistemas de archivos Con el avance de los sistemas de archivos fueron surgiendo nuevos tipos que resuelven los problemas antes planteados y agregan nuevas prestaciones.9. Un problema que tiene este método es que cuando se borra algún archivo queda un hueco de longitud variable. garantizar la integridad (recuperación de fallos) y proveer una interfaz virtual para trabajar con distintas implementaAlgunas de estas nuevas prestaciones son utilizar la ciones de sistemas de archivos. 14 Tesis de grado de ingeniería en informática. el problema con esto es que se desperdicia mucho espacio debido a que el nombre puede tener menos de 255 caracteres. esto puede llegar a ser muy costoso en el caso que se tenga muchos archivos en el directorio. Una mejora del primer método es tener una caché para los nombres de los archivos: antes de realizar la búsqueda se verica en la cache si está el nombre del archivo.6. Otro método es tener un encabezado por archivo que contenga determinados datos como por ejemplo la longitud del nombre y a continuación esté el nombre del archivo. Una posible implementación es reservar 255 caracteres para el nombre de cada archivo que exista. sin embargo los sistemas operativos modernos soportan nombres de archivo largos. este método es mucho más eciente que el anterior pero le gana en complejidad. etc. . Otra alternativa es tener un encabezado en el directorio en el que se encuentre la referencia al nombre del archivo y atributos.

bloques de directorios. Para que este mecanismo funcione cada segmento debe tener toda la información administrativa necesaria de las estructuras que contiene ya que puede contener i-nodos (en el caso de unix). Todas las llamadas al sistema relacionadas con archivos se dirigen al sistema de archivos virtual para su procesamiento inicial. . bloques de archivos. Además. los sistemas operativos controlan este aspecto de determinadas maneras. Sistemas de archivos virtuales sistema de archivos virtual (VFS) es integrar A menudo en una computadora hay más de un sistema de archivos instalado. para ofrecer mayor seguridad se puede utilizar el concepto de base de datos llamado o ninguna. Estas llamadas. son las llamadas estándar como open.6. Sistemas de archivos por bitácora La idea de este sistema de archivos es mantener un registro de lo que se va a hacer antes de hacerlo. de esta manera el sistema de archivos agrupa operaciones a realizar y sabe que deben ejecutarse sin problema todas 4.1.6. Este tipo de sistemas de archivos tiene un mecanismo para liberar el espacio que ya no se utiliza.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4. lo que se busca con un diferentes sistemas de archivos en una unidad ordenada. Para que un sistema de archivos por bitácora funcione las operaciones que realiza deben ser idempotentes. registro de manera primer segmento y analizando la información que contiene para liberar los bloques 4. por lo tanto si el sistema falla antes de realizar alguna tarea. por ejemplo el espacio que estaba asignado a un archivo que fue borrado. Sistemas de archivos estructurados por registro El tipo de sistemas de archivos estructurado por registro nació como consecuencia del incremento de la velocidad de las CPU. Todas las escrituras a disco son colocadas en un buer en memoria.10. cuando se reinicia el sistema puede buscar en el registro lo que se iba a realizar y completar dicha tarea. del incremento en el tamaño de las memorias RAM y del incremento en en el tamaño de las cache de disco.3.2. 15 Tesis de grado de ingeniería en informática. En consecuencia es posible satisfacer gran parte de las lecturas a disco desde la cache sin tener que acceder al disco. lo cual signica que puede repetirse todas las veces que sea necesario sin peligro alguno. que provienen de procesos de usuarios.[1] Este método se ejemplica en la imagen 4. [1] transacciones. y periodicamente todas las pendientes se escriben en el disco (al nal del registro) como si fuera un solo segmento. La idea principal (y clave) es poner todo lo que es compartido por todos los sistemas de archivos en una capa separada que llame a los sistemas de archivos concretos subyacentes para administrar los datos. La idea es estructurar todo el disco como un registro. etc.6. Periodicamente se recorre el cíclica comenzando por el que ya no son utilizados.

llamadas a funciones que el En la imagen 4. Los directorios son de longitud variable. write. en esta sección se ejemplicarán varios sistemas de archivos describiendo sus principales estructuras para la administración de los archivos así como los métodos utilizados por cada uno. .4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS read. Por lo tanto para que un sistema de archivos trabaje con el VFS basta con que suministre las llamadas a las funciones que realiza el VFS.11 se ejemplica este sistema de archivos.7. el interfaz llamada El VFS tiene una interfaz superior para los procesos de usuarios y es la POSIX. pero tienen entradas o registros de longitud ja de 32 bytes que contiene los datos del archivo al que referencia. estos son conjuntos de sectores del disco (cada sector tiene 512 bytes) que dependiendo de determinados parámetros (como el tamaño del disco) pueden ser: dos. DOS (Disk Operating System) Las unidades de almacenamiento son los llamados  clusters . la estructura de estos registros se observa en la imagen 4. Por lo tanto. cuatro.12 16 Tesis de grado de ingeniería en informática. 4.7. ocho. VFS también tiene una interfaz inferior para los sistemas de archivos concretos. lseek. etcétera sectores por clusters (siempre potencia de dos). Casos de estudio de sistemas de archivos Cada sistema de archivos utiliza diferentes técnicas para los aspectos antes descriptos. etcétera.1. [1] 4. esta interfaz consiste de VFS puede hacer a cada sistema de archivos para realizar su trabajo.

esta información se almacena en los ocho primeros bytes de cada registro. El número del primer bloque del archivo se encuentra en el byte 25 y tiene una longitud de dos bytes. La cuenta de los clusters se lleva a través de una tabla de asignación de archivos (FAT) en la memoria principal. FAT-16 o FAT-32. por lo tanto en teoría un archivo podría ocupar hasta 4 GBytes. DOS utiliza la FAT para llevar la cuenta de los clusters libres en el disco. dependiendo de la cantidad de bits que tenga FAT-12 proporciona un tamaño máximo de partición igual a 4096 x 512 Bytes (en realidad 4086 x 512 Bytes debido a que 10 de las direcciones del disco se utilizan para otras cuestiones como n de archivo. FAT-16 tiene 16 bits para direccionar lo cual incrementa el tamaño máximo por partición a un máximo de 2 GBytes. cluster defectuoso. el tamaño de la FAT en memoria es de 4096 entradas con 2 Bytes cada una.4 se observa la tabla en cuestión. La tabla en cuestión puede ser cada dirección de disco. si es un subdirectorio. esto se debe a que permite tamaño de clusters más pequeños que las demás FAT.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Como se puede apreciar el nombre de los archivos puede tener hasta ocho caracteres y tres de extensión. De esta manera se evita la utilización de un mapa de bits o de una lista enlazada para clusters libres. el tamaño máximo por partición está acotado a 2 TBytes debido a que el sistema lleva de manera interna la cuenta de los tamaños de las particiones utilizando un número de 32 bits. etc. mes (4 bits) y año desde 1980 (7 bits). etcétera. aunque por motivos que se analizarán a continuación el tamaño máximo de un archivo es de 2 GBytes o menos. Dado que cada registro de directorio tiene el número del primer cluster del archivo se puede acceder a la tabla y navegarla para obtener todos los clusters del archivo.) que da aproximadamente un tamaño máximo por partición de 2 MB. Cualquier cluster que esté libre se marca con un código especial. . minutos (6 bits) y horas (5 bits). En la imagen 4. de sólo lectura. Los bytes 21 al 25 contienen la fecha y hora de creación o de última Modicación del archivo. y cuando se necesita un cluster libre se lo busca en la FAT. si está oculto. FAT-12. El byte destinado a los atributos especíca si es un archivo de sistema. FAT-32 tiene 28 bits para direccionar clusters. Además se almacena el tamaño del archivo en los últimos cuatro bytes del registro. [1] [2] 17 Tesis de grado de ingeniería en informática. Dado que un archivo requiere como mínimo un cluster para su almacenamiento una gran ventaja de FAT-32 es que se desperdicia poco espacio en comparación a las demás FAT. La fecha se cuenta en días usando tres subcampos: día (5 bits). por lo tanto al almacenar un archivo que ocupe menos espacio que un cluster se desperdicia el espacio que le queda libre al cluster que es menos que en la demás FAT. la tabla FAT ocupa un total de 128 KBytes de memoria principal todo el tiempo. la hora se divide en segundos (5 bits).

el tamaño de estos está jo y varía de acuerdo al tamaño de la partición. directorios. La imagen 4. Para hacer referencias a los clusters se utiliza su oset desde el inicio de la partición mediante un número de 64 bits. mapa de bits y otras estructuras de datos. en caso contrario se almacena en algún lugar de la unidad de almacenamiento y se almacena su ubicación en el valor del par atributo-valor en cuestión. contiene los atributos como su nombre. etc.13 describe la estructura de la MFT. Cada atributo comienza con un encabezado que indica qué tipo de atributo es. donde cada registro describe un archivo o directorio. Un mapa de bits controla las entradas libres de la MFT. La estructura principal es la llamada MFT(Tabla maestra de archivos). con lo cual el primer registro de la MFT llamado  registro base direcciona a los otros registros. .2. Cada partición se organiza en una secuencia de clusters. 18 Tesis de grado de ingeniería en informática. Si el valor del atributo es lo sucientemente corto como para caber en el registro se deja allí. Algunos valores de atributos son de longitud variable como es el nombre del archivo y los datos.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4.7. y cuál es el largo del valor. esta es una secuencia de registros de un 1KB de tamaño. es decir. una lista de direcciones en el disco en donde se encuentran sus clusters. Cada registro de la MFT consiste en una secuencia de pares (encabezado de atributo-valor). En el caso de que un archivo sea muy grande se usa más de un registro para direccionar a todos los clusters de dicho archivo. NTFS (New Technology File System) Estructura del sistema de archivos: Cada partición de disco (volumen) de NTFS contiene archivos.

14. descriptor de seguridad sólo se utiliza en NT 4. NTFS dene 13 atributos que pueden aparecer en los registros de la MFT. Es un campo de longitud ja. El campo información estándar contiene la información del propietario. El campo nombre de archivo contiene el El campo nombre del archivo en unicode y es de longitud variable. El campo ujo de El campo utilería con registro es usado por el sistema de archivos de cifrado. El campo lista de atributos se utiliza en el caso de que de que los atributos no quepan en la MFT e indica en dónde ubicar los registros de extensión. El campo El campo ID de objeto se utiliza para acceder a los archivos. para esto se debe acceder al bloque de inicio de la partición (volumen) que entre otros datos contiene la dirección del cluster en cuestión. raíz de índice. los bits de sólo lectura.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Los primeros 16 registros de la MFT se reservan para archivos de metadatos como se observa en la imagen 4. en el caso que los datos sean pocos se ubican en este atributo (archivo inmediato). en caso contrario representa las direcciones de los clusters del archivo. por lo tanto para ellos este campo está obsoleto. datos representa los datos del archivo.13. y los grandes son árboles B+. Los campos de Los campos volumen se utilizan para identicar el volumen. asignación de índice y mapa de bits se relacionan con la manera en que se implementan los directorios. los pequeños son listas de archivos. [1] 19 Tesis de grado de ingeniería en informática. información de seguridad. la cantidad de enlaces duros. El primer registro está destinado a la ubicación de los clusters de la MFT. pero es necesario conocer la ubicación del primer cluster de la MFT para poder acceder a ella y así conocer la ubicación de los demás. etc. .0 ya que en los siguientes sistemas operativos se colocó en un archivo. punto de reanálisis indica en nombre del procedimiento que se utiliza para montar sistemas de archivos de manera explícita y para los vínculos simbólicos. esto se muestran en la imagen 4.

Compresión de archivos: NTFS proporciona compresión para los archivos. uno para el conjunto descomprimido y dos para el conjunto nal (comprimido). La compresión se aplica más allá de si los clusters se ubican en secuencia consecutiva o no. Las tres partes se han escrito como tres secuencias de clusters consecutivos y se han almacenado en el registro de la MFT. los 16 clusters siguientes no se pudieron comprimir. 48) va seguido de cinco pares. se pueden crear archivos en modo comprimido. dos para el primer conjunto de clusters consecutivos (comprimido). como se muestra en la imagen (b).15 se muestra un archivo en el que los primeros 16 clusters se comprimieron con éxito en 8. Lo mismo se hace para las siguientes secuencias de clusters. 20 Tesis de grado de ingeniería en informática. Los clusters faltantes se han almacenado en la MFT con la dirección de disco 0. siempre tomando de a 16 salvo en la comprimirlos se guardan de manera última secuencia que pueden ser menos. . por lo tanto NTFS trata de comprimirlos a medida que se escriben sus datos en el disco y los descomprime cuando se leen. En la imagen 4. en el caso de que no se puedan comprimir los datos se guardan sin comprimir. Aquí el encabezado (0. Esto será analizado en detalle en la sección de relevamiento bibliográco y tendencias tecnológicas.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Asignación de los clusters para el almacenamiento: Por cuestiones de eciencia los clusters de un archivo se almacenan de manera contigua siempre que sea posible. La compresión se basa en aplicarle un algoritmo de compresión a los primeros 16 clusters del archivo y si consigue comprimida. y los siguientes 16 se comprimieron un 50%. Cada conjunto de clusters contiguos de un archivo se describe mediante un registro.

16. con el registro de los cambios de la partición. UNIX En Unix.15 (b).3. para esto se analiza la dirección de disco inicial de cada uno que está en su par (dirección inicial  cantidad de clusters) correspondiente. NTFS debe saber cuáles con los conjuntos de clusters que están comprimidos y cuáles no.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Cuando el archivo se vuelve a leer. El sistema de archivos interactúa con los dispositivos a través de los drivers especícos de cada uno. el sistema de archivos es uno de los componentes del kernel. el primero se basa en una operación de E/S llamada NtNotifyChangeDirectoryFile. esto se puede observar en la imagen 4. esta función es la llamada FSCTL_QUERY_USN_JOURNAL. Cabe mencionar que la unidad mínima de almacenamiento en UNIX se denomina bloque y no un cluster como en NTFS. que se basa en una llamada CallBack que recibe un buer del sistema. si la dirección inicial es 0 indica que es parte nal de 16 clusters comprimidos.7. El otro mecanismo se basa en persistir todos los cambios de la partición en un archivo que puede ser consultado mediante llamadas a la API de NtfsControlFile. Los procesos interactúan con el sistema de archivos a través de las system calls que a su vez pueden hacer llamadas a funciones de más bajo nivel del sistema de archivos. este buer se llena con datos de cambios en directorios y archivos. [1] Registro de transacciones: NTFS proporciona dos mecanismos de registro de transacciones. los dispositivos. es decir. [1] 4. existe un nivel de buering entre el sistema de archivos y I-Nodos: 21 Tesis de grado de ingeniería en informática. Esto se puede observar en la imagen 4. [2] En el caso de que los dispositivos son orientados a bloques. . Esto se basa es que el cluster cero de la partición no se puede utilizar para almacenar datos.

Tipo de archivo. cada uno de estos bloques se denomina DataBlock. sin embargo. Fecha de la última modicación del archivo. último acceso al mismo. normal. un archivo puede estar almacenado en bloques contiguos o no. Cada uno de estos permisos puede ser negado de manera independiente al dueño del archivo. directorio. esto es por ejemplo. esta estructura es de tamaño jo Identicación del creador del archivo.17 representa un esquema de indirección de tres niveles. etc. esta tabla contiene la dirección de los bloques que forman los archivos. Dado que los i-nodos son de tamaño jo y que la cantidad de bloques del archivo correspondiente al i-nodo puede ser muy grande. La imagen 4. etc. el archivo puede ser referenciado desde diferentes directorios bajo distintos nombres. estas referencias se denominan Tamaño del archivo. las primeras entradas corresponden a direcciones de bloques mientras que las siguientes referencian a bloques que contienen direcciones de bloques. a su grupo y al resto de los usuarios. cada archivo admite tres tipos de permisos. se necesita un mecanismo para referenciar las direcciones de bloques que no se puedan almacenar en el i-nodo. este mecanismo es el llamado  mecanismo de indirección . [2] 22 Tesis de grado de ingeniería en informática. lectura. Permisos de acceso. DataBlocks. última fecha de modicación del i-nodo. escritura y ejecución. Los niveles de indirección pueden ser varios. Número de links al archivo.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS La estructura principal para la administración de los archivos es el y contiene la siguiente información: i-nodo. el i-nodo de cada archivo es único. esto es. indicar si el i-node está libre. . Tabla de asignación de Este campo suele utilizarse además para links.

etc. un número de i-nodo. sino que se tiene una tabla para cada proceso. todas las escrituras sobre estos archivos se realizan mediante las system calls correspondientes. Cada entrada de esta tabla contiene un puntero a la tabla de archivos e información adicional como el proceso abre dos veces el mismo archivo recibirá dos le descriptor con el que el proceso accederá al archivo. indica además si el i-nodo se modicó en memoria pero no se persistió en el medio de almacenamiento. Contador de procesos que están utilizando el archivo asociado al i-nodo en cuestión. buscar archivos. Existen calls que permite evitar este comportamiento. Los campos de permisos de los directorios tienen un signicado diferente al de los archivos que no son directorios. además y mantiene información adicional como la posición de lectura o escritura dentro del archivo (oset). Si un le descriptor diferentes. La escritura en los directorios se reserva al kernel. 3. sin embargo el sistema de archivos mantiene algunas tablas en memoria para agilizar y coordinar accesos a los archivos. los permisos con los que el proceso accede al archivo. [2] Directorios: Un directorio es un archivo cuyo contenido es una secuencia de registros de longitud variable que contienen la longitud del registro. este puede ser de lockeo. Esta entrada contiene un puntero al i-nodo correspondiente de la tabla de i-nodos.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Tablas del Kernel: Los i-nodos se almacenan en los mismos dispositivos de almacenamiento en los que reside el contenido de los archivos. de proceso en espera (indica si al menos un proceso se encuentra en espera para acceder al archivo asociado al i-nodo). etcétera. Estado. leer. es decir. estas son las siguientes: Tabla de i-nodos: Es una tabla global del kernel que por cada entrada contiene los datos del i-nodo correspondiente. Tabla de descriptores de archivos de usuarios: Es una tabla a la que se le agrega una entrada cada vez que un proceso abre o crea un archivo. Referencia al sistema de archivos en el que se encuentra el archivo. [2] 23 Tesis de grado de ingeniería en informática. La diferencia con las dos tablas anteriores es que no es una tabla global. Número de i-nodo dentro de la lista de i-nodos del sistema de archivos. etcétera. la cuenta del número de descriptores de archivos abiertos. .18 esquematiza un directorio. 4. cada uno estará asociado a una entrada diferente en la tabla en cuestión y cada una de estas entradas tendrá un puntero diferente a la tabla de archivos. además de la siguiente información: 1. 2. ya que se tratan de permisos para crear archivos dentro de él. Tabla de archivos: Es una tabla global del kernel a la que se le agrega una entrada cada vez que se abre o crea un archivo. esto permite garantizar la integridad del sistema de archivos. La imagen 4. la longitud y la secuencia de caracteres que representan el nombre del archivo (asociado al i-nodo) con el que se ve dentro del directorio en cuestión. esta es la manera mediante la cual el kernel mantiene dos osets diferentes al mismo archivo para el mismo proceso.

Número de dispositivo. Número de bloque. 5. datos válidos. Puntero a área de datos.19 nuestra una partición con 24 Tesis de grado de ingeniería en informática. este valor puede ser.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS Buering: Como se mencionó anteriormente. 4. Los nodos de la cola de bloques. tienen enlaces para conformar una cola de enlaces libres. Puntero al próximo registro de la cola de dispersión. Cada nodo de la cola de dispersión está formado por los siguientes datos: 1. 2. bloqueado. y el control de los mismos se implementa mediante colas de dispersión doblemente enlazadas a las que se accede a través de registros de cabecera. se debe escribir antes de reasignarlo. . 8. Puntero al próximo buer libre. además de estar enlazadas para conformar una cola de dispersión. los drivers de los dispositivos orientados a bloques se comunican con el sistema de archivos mediante una técnica de buering. en el caso de que el bloque buscado no se encuentre en la cola se lee desde el disco y se carga en la cola. 3. La imagen 4. EXT-2 ext. Puntero al anterior registro de la cola de dispersión. un proceso está esperando que se libere el buer.7. 7. Estado. Puntero al anterior buer libre. se está leyendo o escribiendo actualmente. La cantidad de buer que el kernel administra es un parámetro del sistema operativo. Este sistema de archivos se creó para reemplazar a su predecesor llamado rendimiento. [2] 4.4. este tenía varios problemas en el ext-2. Para buscar un bloque en la cola de dispersión se aplica una función de hash a la que se le pasa como parámetros el número de dispositivo y el número de bloque. 6.

4

RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS

El bloque 0 contiene información para el inicio de la computadora, luego de este la partición se divide en conjuntos de bloques. El

súper bloque contiene información sobre la distribución del sistema de archivos, incluyendo el número de

i-nodos, el número de bloques de disco y el inicio de la lista de bloques libres. El

descriptor de grupo contiene información de la ubicación de los mapas de bits, el número de bloques

libres, número de directorios y número de i-nodos en el conjunto de bloques. Los dos

mapas de bits representan los bloques libres y los utilizados. Estos mapas son de tamaño jo, por

lo tanto la cantidad de bloques que pueden mapear está limitada. Por último están los

i-nodos y luego los bloques de datos, aquí se almacenan todos los datos de los archivos

y directorios, puede ocurrir que si un archivo es lo sucientemente extenso, los bloques que lo forman no sean contiguos, sino que pueden estar esparcidos por todo el disco. Cuando se crea un archivo, se le asignan ocho bloques adicionales para minimizar la potencial futura fragmentación debido a las futuras operaciones de escritura. Los nombres de los archivos pueden tener hasta un largo de 255 caracteres. La imagen 4.20 describe la estructura de un directorio.

Las búsquedas de archivos en los directorios son secuenciales. En un directorio con muchos archivos esta operación puede ser extremadamente lenta, por lo tanto para evitar este problema se utiliza una cache de los directorios de acceso reciente. Para buscar en esta cache se utiliza el nombre del archivo, y de encontrarse el archivo se evita la lectura secuencial. [1]

25

Tesis de grado de ingeniería en informática.

4

RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS

4.7.5.

EXT-3 ext-2, y se caracteriza por tener una implementación de transacciones.

Este sistema de archivos es el sucesor de

Cada modicación en el sistema de archivos se graba en un archivo secuencial, de esta manera si se produce una falla en el sistema, al iniciar nuevamente se leerá el archivo de transacciones y se efectuarán los cambios que no pudieron ser efectuados. Las operaciones de lectura y escritura sobre el archivo de transacciones no son realizadas por el sistema de archivos, sino que las realiza un turas de datos principales,

dispositivo de bloque transaccional (JBD).El JBD proporciona tres estrucel registro diario, el manejador de operaciones atómicas y la transacción. Un

registro diario describe una operación de bajo nivel del sistema de archivos, que por lo general son cambios dentro de bloques. El sistema de archivos notica al JBD sobre el inicio y el n de una llamada al sistema para que este pueda asegurar que se apliquen todos los registros diarios en una operación atómica, o que no se aplique ninguno. El JDB elimina los registros diarios una vez que se verica que se aplicaron los cambios que ellos representan, de esta manera se evita tener operaciones en el archivo de transacciones que ya fueron aplicadas. [1]

4.7.6.

EXT-4 ext-3 y tiene varias mejoras con respecto a éste que se enumeran a

Este sistema de archivos es el sucesor de continuación.

1. Es capaz de trabajar con volúmenes de hasta 1EByte y el tamaño máximo de archivos es 16TByte. 2. El concepto de bloques utilizado en unix se reemplaza por

extents, estos son grupos de bloques contiguos

que permiten mejorar el uso de archivos de gran tamaño y se reduce la fragmentación. 3. Se implementó una nueva llamada al sistema

(preallocate()) que se agregó al kernel de Linux, esta op-

eración realiza la reservación de espacio para un archivo siendo muy probable que sea contiguo. 4. Se implementó una técnica que mejora el rendimiento llamada

Allocate-on-ush, esta consiste en retrasar

la reserva de bloques en memoria hasta que la información esté a punto de ser persistida en la unidad de almacenamiento. Esta técnica mejora el rendimiento y reduce la fragmentación al mejorar las decisiones de reserva de memoria basada en el tamaño del archivo. 5. Se superó el límite de profundidad de subdirectorios que era de 3200, es incrementó a 64000. 6. Los timestamps soportan nanosegundos. [6] [7] [9]

4.7.7.

HFS (Hierarquical File System): Data fork y otra llamada resource fork. La sección data fork contiene los datos creados

Este sistema de archivos no maneja los archivos como streams solamente, sino que están formados por dos partes, una sección llamada por el usuario, en cambio la sección resource fork contiene una cabecera de los recursos, los recursos propios y un mapa de los recursos. Entiéndase por recursos a íconos, menues, controles de la aplicación. [2] [3] [4] Un problema que tenía el sistema de archivos predecesor a este, es que al momento de buscar todos los archivos dentro de un directorio debía acceder a un archivo en el que se almacenaba esta información, esta operación para directorios con muchos archivos era lenta, por lo tanto la solución implementada fue crear el llamado catalog le (es un árbol B*) para realizar las búsquedas con mayor rapidez. Para realizar las búsquedas utiliza un módulo llamado nder que se encarga de consultar el árbol B* para obtener los resultados. En la imagen 4.21 se muestra la estructura de un volumen de HFS.

26

Tesis de grado de ingeniería en informática.

4

RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS

Las principales estructuras de este sistema de archivos se analizan a continuación: 1. El sector de arranque del volumen contiene información para el inicio del sistema, por ejemplo el nombre del archivo de shell y del nder que se cargan al iniciar. 2. El directorio MDB (Master directory block) , tiene la información de la partición y dónde localizar las demás estructuras. 3. Mapa de bits de bloques para determinar los que están libres y los que no. 4. El catalog le que es un árbol B* que contiene información para todos los archivos y directorios almacenados en el volumen. Cada archivo consiste en un consiste en un 

le thead record y un le record, mientras que cada directorio directory thead record y un directory record.

Un le thread record almacena sólo el nombre del archivo y el CNID (catalog node id) de su directorio padre. Un le record almacena varios metadatos como son el CNID y tamaño del archivo, tres timestamps (creación, modicación y cuándo se realizó la última copia de seguridad), datos referidos a los recursos, y un puntero al primer bloque de datos del archivo. También, almacena dos campos de 16 bytes que son usados por el nder para acelerar las búsquedas de archivos. Un directory thread record almacena sólo el nombre del directorio y el CNID del directorio padre. Un directory record almacena datos como el número de cheros almacenados en el directorio, el CNID del directorio, tres timestamps (creación, modicación y último backup), almacena dos campos de 16 bytes para uso del nder. 5. El archivo de desbordamiento que se utiliza en el caso de que algún archivo tenga su sector

data fork

desbordado, en este caso los datos que no quepan en dicho sector se almacenan aquí, es un árblo B*. 6. Una copia del MDB para utilizar en el caso de que se corrompa el original. Este sistema de archivos tiene los siguientes problemas: 1. Dado que el direccionamiento es de 16 bits si el volumen es grande los bloques tendrán demasiado tamaño y se desperdiciará demasiado espacio cuando un archivo no ocupe al 100 % todos sus bloques. 2. Cada vez que se modica un archivo o directorio se accede al catalog le, dado que más de un proceso no puede modicar esta estructura al mismo tiempo los procesos quedan en cola esperando su turno, esto reduce la performance. 3. Si el catalog le se corrompe se pierde todo el sistema de archivos dado que no se tiene una copia del catalog le y que toda la información de los archivos y directorios está en éste y no distribuida. 4. Para direccionar bloques se utiliza un número de 16 bits, por lo tanto la cantidad de bloque para un archivo se limita a 65536. [2] [3]

27

Tesis de grado de ingeniería en informática.

además soporta compresión de bloques. con esto se termina la limitación 2. 6. 2. 8. Algunas de las características se mencionan a continuación: 1.7. ZFS Este sistema de archivos se destaca por tener una gran capacidad.8. en su lugar se reserva un nuevo bloque y los datos modicados se escriben en él. [2] [5] 4. integración de conceptos (anteriormente separados) como sistema de archivos y administrador de volúmenes. se utiliza menos espacio en el almacenamiento y el acceso a los archivos es más rápido con respecto a FAT. este archivo es utilizado por el nder para mejoras la velocidad de respuesta de las búsquedas. Para la administración del espacio libre se utilizan mapas de bits. 6. La ordenación de los directorios se basa en el nombre de los archivos. que es utilizado para sistemas de archivos que no son HFS o HFS+ puedan utilizar la interfase de acceso a los archivos. 4. tiene varias mejoras comparadas con el anterior que se enumeran a continuación: 1. Si un sector está defectuoso. 28 Tesis de grado de ingeniería en informática. llamado startup le. Para reducir la sobrecarga que genera este proceso. Los bloques dañamos se ubican en el archivo de desborde.9. Se implementó un nuevo archivo de inicio.7. 32 bits.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 4. 7. Los punteros a bloques contienen un checksum de 255 bits sobre el bloque apuntado que se comprueba cada vez que se lee el bloque en cuestión. Los bloques que contienen información activa no se sobrescriben nunca. sencilla administración del espacio de almacenamiento. y se utiliza un log de intentos cuando se necesitan escrituras sincrónicas. Se implementó un nuevo archivo (B*) llamado atributes le para direccionar atributos. 4. HFS+ (HFS plus) Este sistema de archivos se creó para reemplazar a HFS. Utiliza una estructura más eciente para organizar los directorios. pero se incrementa el trabajo de procesador. 5. se agregan varias actualizaciones en grupo de transacciones. este nuevo archivo es llamado allocation le. Los nombres de los archivos pueden ser de hasta 255 caracteres. de esta manera. 3. Los archivos se ubican en sectores en vez de clusters. Algunas de las características se mencionan a continuación: 1.7. 7. [2] 4. de esta manera se puede incrementar si la partición crece. Utiliza bloque de tamaño variable hasta 128KB. por lo tanto cualquier bloque de metadatos que lo referencie es reubicado y escrito de manera similar. . en el caso de activarse la compresión se disminuye el uso de espacio. 3. 2. El nombre de los archivos soporta caracteres Unicode. 5. HPFS Este sistema de archivos fue creado especicamente para el sistema operativo OS/2 mejorando algunas de las limitaciones de FAT. Los nombres de los archivos soportan unicode. se marca como tal y la información contenida en él se mueve a otro. Los registros del catalog le (B*) son de mayor tamaño. El MDB fue reemplazado por un header que contiene información sobre el volumen.10. El direccionamiento a los bloques se realiza mediante un número de de 65536 bloques máximos para un archivo. El mapa de bits fue reemplazado por un archivo.

. [8] 29 Tesis de grado de ingeniería en informática. Estos se construyen a partir de uno o más dispositivos virtuales. de manera que se utilizan todos los discos en el pool para balancear la carga de escrituras entre los dispositivos. de esta manera el sistema de archivos puede estar montado en un dispositivo que tenga menor capacidad de almacenamiento del que se necesita y utilizar otros para compensar la falta de espacio. el ancho de banda se expande de forma automática para incluirlos.4 RELEVAMIENTO BIBLIOGRÁFICO SOBRE SISTEMAS DE ARCHIVOS 3. A diferencia de los sistemas de archivos tradicionales que residen sobre de un solo dispositivo. 4. A medida que se agregan dispositivos. ZFS utiliza espacios de almacenamiento virtuales.

1. Relevamiento bibliográco de métodos y tendencias para optimizar el rendimiento de sistemas de archivo En esta etapa se analizarán las líneas de investigación sobre las siguientes problemáticas en los sistemas de pérdida de performance en el tiempo de accedo debido al no cumplimiento del principio de localidad. es contiempo de seek sea el mínimo posible. Acceder a un archivo implica que se localicen los para realizar el acceso a un bloque primero debe ser ubicado debajo de la unidad de lectura [16] En la imagen 5. 30 Tesis de grado de ingeniería en informática. Cuando el sistema ope rativo no puede encontrar suciente espacio contiguo. si el archivo está fragmentado este tiempo será mayor que el tiempo de accesso de un archivo no fragmentado. 5.1. Fragmentación de archivos Al crear. La fragmentación en los El principio de localidad plantea el siguiente escenario. n bloques que lo forman para obtener toda su información.1. Fragmentación en sistemas de archivos y Principio de localidad 5. Cuando los bloques de un archivo quedan dispersos se conoce como un archivo fragmentado. Como resultado.1.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO 5. donde puede escribir el archivo.1 se visualiza la distribución de los bloques que forman un archivo.2. . archivo. 5. el sistema operativo busca bloques de espacio libre en disco contiguo. busca el espacio libre no contiguo necesario en la unidad de almacenamiento. y aplicación de buer-cache para la optimización de tiempos de acceso. (tiempo de seek). copiar o mover un archivo en la unidad de almacenamiento. dado un veniente tenerlos ubicados de manera que el archivos genera que los bloques de los mismos no cumplan con el principio de localidad. Principio de localidad archivo A formado por n bloques. los bloques del archivo pueden quedar dispersos en lugar de un área contigua de la unidad de almacenamiento.

Para representar esta problemática se plantea el siguiente escenario. estudios como los que se plantean en [13] indican este fenómeno.3 se muestra la distribución de los bloques en el tiempo t3 . estos se insertan en los bloques libres antes fueron ocupados por los bloques del archivo A. se pierde el principio de localidad con el transcurso del tiempo. En la imagen 5. en el En la imagen 5. . el n 31 Tesis de grado de ingeniería en informática. En el tiempo t2 se borran 5 bloques del archivo A. 5. Desfragmentación y técnicas para reducir la fragmentación en sistemas de archivos actuales La desfragmentación en sistemas de archivos es el proceso en el cual se realizan tareas de reubicación de los bloques de los archivos de manera tal que queden en una zona contigua de la unidad de almacenamiento.2. El escencario planteado es En la situación planteada se deduce de qué manera extremadamente básico. En el tiempo t3 se crea el archivo B formado por 4 bloques. pero en un sistema de archivos real el efecto causado por la maniplación de sus archivos es que el principio de localidad deje de cumplirse para muchos de estos y la performance se vea decrementada. a causa de este motivo se ve incrementado el tiempo de lectura del archivo A.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO tiempo t1 se crea el archivo A formado por 10 bloques ubicados de manera contigua.2 se plantea cómo queda formado en archivo A en el tiempo t2 .

4. Las referencias a los bloques que forman los archivos de las copias generadas. Los pasos son los siguientes:[10] 1. Esto se debe a que sistemas de archivo NTFS. Los sistemas de archivos Unix. archivos defectuosos. sino que utiliza una tabla llamada MFT. se ubican en cilindros cercanos. Estos nuevos archivos tienen los bloques ubicados de manera que cumplan el principio de localidad lo más que sea posible. En esta etapa se eliminan los archivos originales. Esta etapa se encarga de corroborar que los archivos originales y las copias generadas sean idénticas para evitar pérdidas de información o inconsistencias. las diferencias NTFS no utiliza una tabla FAT. Esta técnica se basa en dividir el espacio físico de la unidad de almacenamiento en cilindros. Desde la versión de Windows Vista existe un proceso que se ejecuta background y realiza tareas de desfragmentación. A través de la FAT se obtienen las direcciones de los bloques que forman los archivo detectados en el paso 2. Comparación de los archivos originales con los nuevos. implementan una técnica llamada La condición que se aplica sobre los archivos es que sus bloques estén en el mismo cilindro.[10] 5. luego se copian de manera contigua en un sector de la unidad de almacenamiento con el espacio necesario para ello. desfragmentados son modicadas por las referencias Familia de sistemas de archivos NTFS En el caso de los se dan en los pasos 2 y 5. 2. Copia de los bloques de los archivos encontrados en el paso 2. Esta etapa del proceso se encarga de decidir si se desfragmenta o no. Con esta técnica se logra mejorar el principio de localidad y disminuir la fragmentación ya que la separación de 32 Tesis de grado de ingeniería en informática.2. y es donde se modican las referencias de los clusters de los archivos originales. para este n se calcula su nivel de fragmentación (cantidad de bloques no contiguos) y se compara con un valor determinado para En este análisis se evitan los archivos que son utilizados por el sistema operativo para su conguración y correcto funcionamiento. 3. Reemplazo en la FAT de los números de bloques.2. esto se debe a que ya no son utilizados porque fueron reemplazados por los que se generaron en el paso 3. Borrado de los bloques originales. por este motivo es necesario disponer de espacio en la unidad de almacenamiento para realizar las copias necesarias. .5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO de esto es que se cumpla con el principio de localidad. Sistemas de archivos archivos Unix agrupación por cilindros . 6. Detección de los archivos fragmentados. Los sistemas operativos windows se basan en que el usuario decida ejecutar el proceso de desfragmentación. por lo tanto es de aquí de donde se toman las referencias para el paso 2. Sistemas de archivos Windows Familia de sistemas de archivos FAT sistemas de archivos FAT se basa en la reubicación de los bloques de El proceso de desfragmentación en los los archivos fragmentados. En esta tabla se almacenan las referencias a los clusters que forman los archivos. buscar todos los archivos fragmentados. Análisis del espacio libre en la unidad de almacenamiento. En el proceso de desfragmentación se realizan copias temporales (una por archivo fragmentado). A continuación se analizan los procesos de desfragmentación en varios de los sistemas de archivos actuales.1. 5. para reducir la fragmentación. y en caso de que no quepan en uno. 5.2. los pasos son los mismos que los de la familia FAT.

estos pueden ubicarse en secciones no contiguas de la unidad de almacenamiento.2. este consiste en retrasar la reserva Esto mejora el rendimiento y reduce la 5. 5. Defrag copia los bloques de los archivos de manera contigua comenzando en la ubicación física del primer bloque del archivo. agrupar un número política que se describe en la siguiente sección. la unidad de lectura necesite realizar movimientos por varias pistas de la unidad de almacenamiento. Sistema de archivos EXT-3 Shake y Defrag. los cuales reservan los bloques necesarios antes de ese paso. esto provoca que al momento de leer dichos bloques. La solución plateada por Unix para resolver este problema es la llamada de pistas de la unidad de almacenamiento en un cilindro. este método se basa en asignar los mismo bloques para los distintos archivos al momento de reservar espacio libre. La desfragmentación en sistemas de Unix se basa en la reubicación de los bloques que forman los archivos hacia un mismo cilindro o a cilindros cercanos.2. para esto se busca el espacio necesario en toda la unidad de almacenamiento. e2defrag (se utiliza en EXT-2) que realizan la desfragmentación y que deben ser 5.3.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO los bloques está limitada a los cilindros o a cilindros cercanos.5. 33 Tesis de grado de ingeniería en informática. EXT-2.3. 5.[12] Está técnica es utilizada en sistemas de archivos como Existen herramientas como ejecutadas por el usuario. fragmentación al mejorar las decisiones de reserva de bloques basada en el tamaño real del archivo.2. a diferencia de otros sistemas de archivos. De esta manera se reduce el tiempo de acceso a los bloque de los archivos ya que el movimiento de la unidad de lectura sobre la unidad de almacenamiento se reduce de manera considerable ya que el tiempo de acceso está totalmente relacionado con el tiempo de posicionamiento de la unidad de lectura. es decir.[14] 5. cuando se graban los bloques de un archivo.1. El efecto de realizar dichos movimientos es que perjudica la performance del sistema de archivos. Ventajas y desventajas desventaja ya que muchos usuarios no conocen la existencia de estas Varios de los sistemas operativos no ejecutan el proceso de desfragmentación de manera automática. Para esto necesita que la unidad de almacenamiento tenga mucho espacio libre para hacer copias temporales del contenido de los bloques que se reemplazan. ZFS delayed allocation.3. Líneas de investigación sobre técnicas para evitar la fragmentación en sistemas de archivos modernos En esta sección se tratarán en detalle técnicas utilizadas para evitar la fragmentación en sistemas de archivos Unix y NTFS. Algunos sistemas de archivo implementan diferentes técnicas para disminuir la fragmentación. Esto es una gran herramientas. EXT-3 y EXT-4.4. .[11] Sistema de archivos EXT-4.[12] Al momento de realizar la persistencia de los bloques del archivo se ubican según la agrupación por cilindros (imagen 5. además de deben actualizar las i-nodos de los archivos para que direccionen las nuevas ubicaciones de los bloques.4). Shake trabaja Para este sistema de archivos existen herramientas para la desfragmentación como reservando espacio para todo el archivo de manera que sus bloques queden ubicados en sectores contiguos. momento de persistir la información se asignan bloques nuevos para el archivo en cuestión. HFS+. requieren que el usuario lo indique. Estos sistemas de archivos utilizan el método llamado de bloques hasta que la información esté a punto de ser escrita en el disco. Sistemas de archivos Unix Como se mencionó en secciones anteriores. Una técnica utilizada por este sistema de archivos para reducir la fragmentación es la llamada pero al copy-on-write . lo cual es una desventaja. otros no. esta técnica se basa en dividir la unidad de almacenamiento en cilindros. por lo tanto. al disminuir dicho tiempo reducimos el tiempo de acceso.

mismo cilindro. 3. está totalmente lleno. 2. Si el grupo de cilindros otro grupo de cilindors en el que 4. 34 Tesis de grado de ingeniería en informática. Una copia del En el trabajo [12] se realizaron pruebas relacionadas con el rendimiento de esta técnica. La heurístia presentada es la utilizada para la asignación de bloques a los archivos y directorios. Finalmente. Se busca el bloque más cercano al actual dentro del 2. i-nodos que contiene. La lista de 3. Si no se encuentra ningún bloque disponible en el del mismo cilindro. se utiliza una función de hash para obtener el número de se repiten los pasos uno y dos. Un Bitmap que indica los bloques libres. si el paso tres falla. Cada grupo de cilindros contiene información acerca de los bloques que almacena: 1. se busca en todos los grupos de cilindros. . superbloque.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO Cuando se necesita asignar espacio a un archivo o directorio. se asigna un bloque de otro cilindro mismo grupo de cilindros. demostraron que genera mejoras en la performance ya que los tiempos de acceso bajaron con respecto a un sistema de archivos que trabaja sin respetar el principio de localidad. se ejecuta la siguiente heurística que consta de cuatro etapas: 1.

El registro contiene varias entradas de directorios. si el archivo está formado por los clusters 899 al 1000 y los 1100 al 1200 se tendrá dos registros que represente ambos conjuntos. cada una de las cuales describe a un archivo o directorio. Tendremos un registro base y varios registros de extensión según se necesite. Cada encabezado va seguido de uno o más pares. por ejemplo. Sistemas de archivos NTFS principio de localidad los clusters de un archivo se almacenan de manera contigua siempre que Basado en el sea posible. En la 5. de esta manera puede crecer todo lo que sea necesario. cada uno de los cuales proporciona la dirección del primer cluster del conjunto (de clusters contiguos) y la longitud del conjunto. luego el desplazamiento del siguiente conjunto. Cada entrada tiene una estructura de longitud ja seguida de un nombre de archivo de longitud variable. .5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO 5. Para 35 Tesis de grado de ingeniería en informática. y así sucesivamente.6 se muestra una entrada en la MFT para un directorio pequeño. En el caso en que el archivo sea tan grande o tan fragmentado y la información de los clusters no entre en un registro de la MFT se utilizan varios registros para este n. si un archivo está formado por más de un conjunto de clusters contiguos se utiliza un conjunto de registros para referenciarlos.5 representa un registro de la MFT para tres conjuntos de clusters consecutivos. la dirección es respecto al comienzo de la partición.3.2. Cada conjunto de clusters contiguos de un archivo se describe mediante un registro. La imagen 5. La parte ja contiene el índice de la entrada en la MFT para el archivo. En el caso en que se necesiten tantos registros de la MFT tal que no haya espacio suciente en la MFT base para listar todos sus índices se utilizan clusters extras (no pertenecen a la MFT base) para colocar esta información. Cada registro comienza con un encabezado que proporciona el desplazamiento de los datos del primer conjunto dentro del registro. la longitud del nombre del archivo y una variedad de campos y ags adicionales.

ma lineal. que es el ujo de datos predeterminado. Para mejorar este aspecto los bloques (en lo posible de manera contigua) necesarios.[15] Extents: Ext3 utiliza un alocador de bloques que decide cuáles de los que se encuentran libres van a ser utilizados para escribir los datos. Luego de realizar las comprobaciones de seguridad se busca el registro de la MFT para el atributo ::$DATA. estas son extents. se utiliza un árbol B+ para que sean búsquedas óptimas. En el caso de directorios grandes se utiliza un formato diferente. este conjunto de bloques es denomina Ext4 incorpora un alocador multi-bloques que en una sola llamada aloca todos extends. se efectúa un análisis de la ruta \foo\bar que comienza en el directorio raíz C: cuyos bloques se pueden encontrar desde la entrada 5 de la MFT (por ejemplo). lo cual es ineciente por ser demasiadas llamadas las que se realizan. que se reere al registro de la MFT para este archivo.3. Luego se busca en este directorio la cadena  bar . EXT-4 Este sistema de archivos introduce tres nuevas técnicas para reducir la fragmentación de los archivos.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO buscar una entrada en un directorio se debe examinar todos los nombres de archivo en el registro. Con este técnica se logra tener la información que forma a los archivos de manera tal que se cumple el principio de localidad en una buena medida. 36 Tesis de grado de ingeniería en informática. la cadena  foo se busca en el directorio raíz el cual devuelve el índice en la MFT del directorio foo. En vez de listar todos los archivos en for- Para realizar la búsqueda del archivo C:\foo\bar se realizan las siguientes acciones. . para llevar a cabo esta acción se realiza una llamada por bloque. preallocate y allocate-on-ush.3. y por lo tanto la performance crece. 5.

leaf or next index could be there */ __le16 ei_leaf_hi. /* index covers logical blocks from 'block' */ __le32 ei_leaf_lo. (ext4_extent) y los nodos internos (ext4_extent_idx) del árbol Preallocate: Para incrementar la probabilidad de que los bloques asignados a un Extend sean contiguos es necesarios reservarlos lo más rápido posible. */ struct ext4_extent_idx { __le32 ei_block. 37 Tesis de grado de ingeniería en informática. 5.h /* * This is index on-disk structure. Allocate-on-ush: Una técnica que tiene la misma nalidad que Preallocate (trabajan de manera diferente y tienen el mismo propósito) es Allocate-on-ush. /* rst logical block extent covers */ __le16 ee_len. /* pointer to the physical block of the next. . El tiempo de rotación para que el sector a leer o escribir se encuentre con el cabezal(tiempo 3. esta consiste en retrasar la reserva de bloques hasta que la información esté a punto de ser persistida en la unidad de almacenamiento. */ struct ext4_extent { __le32 ee_block. Estos tiempos no son menores. cuando se accede a un bloque tenemos tres tiempos para analizar: 1. * It's used at the bottom of the tree. * It's used at all the levels except the bottom.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO Las estructuras utilizadas phara el funcionamiento de esta técnica son las siguientes: /* * This is the extent on-disk structure. esta operación realiza la reserva de bloques cuando es invocada. (tiempo de transferencia). /* number of blocks covered by extent */ __le16 ee_start_hi. una de estas es la utilización de buer-cache. Buer-cache para la optimización de tiempos de acceso Como se mencionó anteriormente. El tiempo que tardan los cabezales en posicionarse en el cilindro donde se encuentra el sector a leer o escribir (tiempo de seek). Estas dos estructuras representan las hojas que se utiliza para acceder al extend. /* high 16 bits of physical block */ __le32 ee_start_lo. Esta técnica mejora el rendimiento y reduce la fragmentación al mejorar las decisiones de reserva de memoria basada en el tamaño del archivo. El tiempo de lectura o escritura de latencia). para esto se implementó una nueva SystemCall (preallocate) al kernel de Linux. }. /* low 32 bits of physical block */ }. por lo tanto se pueden aplicar técnicas para reducirlos. 2. level. /* high 16 bits of physical block */ __u16 ei_unused.4.

5. El Buer-cache buer-cache es una cache de bloques y su objetivo es minimizar accesos a la unidad de almecenamiento. las mismas se acceden mediante una hash que se calcula con la dirección del dispositivo.7 muestra una ejemplicación de la implementación del buer-cache mediante listas enlazadas.1. La imagen 5. cuando esto ocurre se debe implementar algún tipo de política de reemplazo.4. Política de reemplazo de bloques En ocasiones se quiere insertar un nuevo elemento en alguna de las listas estando llena. . Una manera de implementar esta técnica es mediante listas enlazadas en memoria donde cada dispositivo de almacenamiento tiene asociada una o más listas de bloques. 38 Tesis de grado de ingeniería en informática.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO 5.2.4. el por qué de este objetivo es que el acceso a la unidad de almacenamiento para acceder a bloques es de varios órdenes mayor que el tiempo de acceso a la memoria principal.

A continuación se presenta una heurística que representa este mecanismo. 4) Si el bloque que se va a quitar de la lista está modicado se persiste en la unidad de almacenamiento. 1) Se intenta insertar un nuevo bloque en la lista. esta consiste en reemplazar el elemento que La imagen 5. 39 Tesis de grado de ingeniería en informática. 3) En caso de no poder insertarlo se busca el bloque a reemplazar. . Cada uno de los bloques cargados en las listas tienen un status que reeja su estado.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO Una posibilidad (y la más utilizada) es la técnica denominada tiene mayor tiempo sin accederse. por lo tanto en el momento en que se reemplace se analizará su persistido en la unidad de almacenamiento o no. LRU. 2) En caso de que haya espacio se inserta.8 representa el proceso de reemplazo de un bloque según la política LRU. A modo de optimización. status para saber si debe ser cada bloque se mantiene en memoria sin persistir su información en la unidad de almacemamiento hasta que se reemplace por otro.

5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO 5) Se inserta el nuevo bloque en la lista. La imagen 5. Este es el mecanismo más tradicional y más simple para de la lista.3. 40 Tesis de grado de ingeniería en informática. indica que el bloque está siendo utilizado por otro proceso. Sincronización para el reemplazo de bloques sincronización al momento de querer modicar o reemplazar uno de los bloques status del bloque.4. Un método para evitar este problema es analizar el hasta que quede libre. el proceso que quiere tomar el bloque queda en espera A continuación se presenta una heurística para este proceso: 1) Se accede a un bloque de la lista. . si el status sincronizar el acceso a los nodos Esta técnica tiene problemas de que está en alguna de las listas.9 representa el proceso de sincronización de bloques. 5.

4. El rendimiento de las operaciones en el buer-cache se mejora mediante el uso de estos algoritmos que permiten escribir el contenido del buer-caché en la unidad de almacenamiento en función de la carga del sistema y la actividad de escritura.4. En la experimentación se ejecutaron dos procesos corriendo al mismo tiempo: Un generador de escrituras. La conclusión del trabajo es que el tiempo de la escritura de un archivo se reduce con la utilización de los algoritmos que escriben los bloques en la unidad de almacenamiento en función de la tasa de operaciones de es- Se demostró que los algoritmos propuestos permiten un mejor rendimiento que un algoritmo que no utiliza información sobre la carga del sistema. de para el método de buer cache que consiste en realizar una aplicación aproximada a una política de intervalo de actualización periódica. congurado para realizar escrituras cada 30 segundos. La imagen 5.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO 2) Si está libre es tomado. 5. el uso de escritura retardada puede mejorar los tiempos de accesos.10 representa la estructura necesaria mediante un diagrama de bloques. en el mismo 10. pero cuando la escritura retardada se combina con la técnica planteada.000 bloques son elegidos al azar. 4) Se Espera en una cola a que el bloque sea liberado. esto se realiza inmediatamente.6. Además se utilizaron dos sistemas de hardware diferentes. uno más rápido que el otro. 5.5. en la que se escribe el bloque en la unidad de almacenamiento cuando cumple cierto tiempo de estar en estado modicado. Estos algoritmos utilizan la cantidad de procesos corriendo en el sistema y la longitud de la cola de la cache. se En el trabajo [17] se analizó una optimización para el método de propone una serie de algoritmos que permiten realizar la escritura de los bloques de manera sincrónica. en el trabajo [18] se analizó una posible optimización Cuando los bloques son modicados deben ser escritos en la unidad de almacenamiento. Optimización en la performance del buer-cache por medio de algoritmos que utilizan información de la carga del sistema buer cache que consiste en lo siguiente. Optimización en la performance del buer-cache por medio de mejoras en la política de actualización manera retardada o periódicamente. Colas múltiples de reemplazo para el segundo nivel de buer-cache En el trabajo [19] se planteó un nuevo nivel de buer cache con un algoritmo que utiliza colas múltiples para alocar los bloques. caso contrario se ejecuta el paso 4. 3) Se modica a tomado el status del bloque. Originalmente el plateo está destinado a servidores distribuidos. critura y el número de procesos activos en el sistema. pero esta idea puede aplicarse a una computadora local que trabaja con los dos niveles de buer cache. Un generador de lecturas. .4. esta información se obtiene de manera dinámica durante la ejecución de los algoritmos. los tiempos de respuesta mejoran de manera signicativa. 41 Tesis de grado de ingeniería en informática. 5. En el trabajo en cuestión se ejecutaron varios benchmarks que arrojaron los siguientes resultados.4.

el bloque es removido de la cola en donde está alocado y es reubicado en la cola que le corresponda según su frecuencia de acceso. el bloque es ubicado en la cola correspondiente a la menor frecuencia de accesos posible.5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO El algoritmo utilizado mantiene los bloques en el segundo nivel de buer cache. . cada bloque tiene asociada una frecuencia de acceso. A continuación se presenta el pseudocódigo del algoritmo MQ: 42 Tesis de grado de ingeniería en informática. En un miss. sólo si un bloque tiene el contador de referencias a él dentro de ese rango será alocado en la cola. Las colas tienen asociadas un rango de frecuencias de accesos admisible. El algoritmo utiliza n colas que funcionan bajo el algoritmo LRU con algunas variaciones que se describen a continuación: En un hit.

5 RELEVAMIENTO BIBLIOGRÁFICO DE MÉTODOS Y TENDENCIAS PARA OPTIMIZAR EL RENDIMIENTO DE SISTEMAS DE ARCHIVO La conclusión del trabajo es que el ratio de hits se incrementa en un 10 % respecto a la no utilización de la técnica plateada. 43 Tesis de grado de ingeniería en informática. por lo tanto los tiempo de acceso a bloques decrecen. .

6

ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA

6. Elaboración de una propuesta de solución alternativa o superadora
La propuesta a la problemática planteada consiste en una técnica que se forma a partir de dos subtécnicas, 

Localidad de archivos asociados y Ejecución de procesos en background para incrementar la performance, estas dos técnicas se van a complementar para formar la propuesta nal.
Además se deben realizar modicaciones en las estructuras de los sistemas de archivos para darle soporte a esta nueva técnica, en el actual trabajo se plantearán las nuevas estructuras y modicaciones en general, quedando para trabajos a futuros realizar las implementaciones de las mismas.

6.1. Localidad de archivos asociados
Con frecuencia sucede que un proceso accede a un conjunto de archivos para leerlos o manipularlos. Este fenómeno permite plantear que estos archivos están relacionados. La técnica de

Localidad de archivos asociados se basa en los siguientes principios:

1. Favorece a la performance que los archivos relacionados estén ubicados lo más cercanamente posible dentro de la unidad de almacenamiento

(principio de localidad), el caso ideal es que estén ubicados adyacentemente.

2. Favorece a la performance que los bloques que forman un archivo estén ubicados lo más cercanamente posible dentro de la unidad de almacenamiento adyacentemente.

(archivos no fragmentados), el caso ideal es que estén ubicados

6.1.1.

Algoritmo de principio de localidad en archivos asociados

Para cumplir con el principio de localidad, esta técnica plantea lo siguiente: Todos los archivos accedidos por un mismo proceso están relacionados, por lo tanto debe armarse el producto cartesiano de relaciones entre los mismos. El mismo método debe repetirse para todos los procesos. Todas las relaciones registradas deben fusionarse armando las ternas

(archivo 1, archivo 2, cantidad de repeticiones de la relación) y luego deben ser ordenadas según cantidad de ocurrencias y en caso de empate por id de archivo.
Los archivos se identican mediante un id, en Unix puede ser el número de I-nodo por ejemplo. La información de relaciones generada debe ser fusionada con los resultados históricos de este análisis para todos los procesos. En caso de que un proceso acceda a un único archivo, no se registra ninguna relación. A continuación se presenta una ejemplicación de este proceso. Universo de archivos: A, B, C, D, E, F, G, H, I

44

Tesis de grado de ingeniería en informática.

6

ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA

Estas ternas son ordenadas dando el siguiente resultado:

(A, C, 3) (A, F, 2) (A, G, 2) (C, F, 2) (F, G, 2) (F, I, 2) (A, B, 1) (A, E, 1) (A, I, 1) (B, C, 1) (C, G, 1) (C, I, 1) (E, G, 1) (F, H, 1) (G, H, 1) (G, I, 1) (H, I, 1)

Este resultado se fusiona con el histórico para tener el resultado global de relaciones. La imagen 6.2 representa el resultado nal luego de reubicar los archivos según la tabla de relaciones. Este proceso debe realizar la modicación de todas las referencias

físicas (por las nuevas ubicaciones) de los

bloques de los archivos para mantener la integridad del sistemas de archivos.

45

Tesis de grado de ingeniería en informática.

6

ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA

6.1.2.

Heurística para el algoritmo de principio de localidad en archivos asociados

1) Para cada proceso repetir los siguiente pasos. 2) Obtener todos los archivos referenciados. 3) Armar todas las relaciones posibles para la salida del paso 2. 4) Armar las ternas

(archivo 1, archivo 2, cantidad de repeticiones) para la salida del paso 3.

5) Ordenar la salida del paso 4 por cantidad de ocurrencias y en caso de empate por id de archivo. 6) Fusionar la salida del paso 5 con las ternas históricas (evitando repetidas). 7) Volver al paso 2. 8) Ubicar de manera contigua los archivos según la tabla histórica de ternas, en caso de que no existan los bloques contiguos libres necesarios, ubicarlos de la manera más cercana posible.

6.1.3.

Método para evitar la fragmentación en archivos asociados

Los bloques de un archivo (con el pasar del tiempo) dejan de estar ubicados de manera contigua en la unidad de almacenamiento. Como ya se mencionó, este fenómeno provoca la fragmentación y la consiguiente pérdida de performance. Para evitar este problema los bloques de los archivos deben ser reubicados de manera contigua.

6.1.4.

Resultado de la reubicación de archivos según las relaciones

El resultado de la reubicación de los archivos relacionados nos garantiza tener

disminuir la fragmentación, así como ubicados de manera adyacente los que están relacionados. La disminución de la fragmentación ocurre

porque al momento de reubicar los archivos (según las relaciones de los mismos) se trata de ubicar los bloques de manera contigua. De esta manera se logra disminuir el tiempo de seek para la lectura de los bloques, así como también el tiempo de seek para el posicionamiento sobre los archivos que utilizan los procesos por estar ubicados de manera adyacente.

relaciones de archivos no debe eliminarse nunca, lo que se debe hacer es depurarla depuración de la tabla histórica de relaciones.
La tabla histórica de ya que con el tiempo se eliminan algunos archivos, esto se analizará en la siguiente sección llamada

6.2. Persistencia temporal de los accesos a archivos por los procesos
algoritmo de principio de localidad en archivos asociados (6.1.1), para esto se plantea la siguiente estructura:
Las relaciones entre archivos deben ser persistidas para poder realizar el Una

minado(imagen 6.3),

cola compartida, la cual tendrá en cada nodo una lista de archivos accedidos por un proceso deterésta será manipulada por el sistema de archivos.

Cada proceso tendrá una lista propia, siempre que se ejecute una llamada al sistema (syscall) para acceder a un archivo no presente en dicha lista, ésta será actualizada con el número de id del archivo (acción que realizará el sistema de archivos).

46

Tesis de grado de ingeniería en informática.

1. 47 Tesis de grado de ingeniería en informática. La imagen 6.1.4 representa la actualización de la cola compartida de archivos accedidos. .6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA Esta estructura será analizada por un proceso (analizado en secciones posteriores) que se encargará de leer y modicar todas las estructuras necesarias para llevar a cabo el algoritmo 6.

a continuación se detalla cada uno de los ellos. Módulo de merge. La solución para este problema es depurar la tabla global de relaciones para eliminar aquellas que es- tén formadas por al menos un archivo que no exista. Si bien al momento de reubicar los archivos se analiza que existan. esto trae consigo una baja en la performance. 1. Depuración de la tabla histórica de relaciones Con el paso del tiempo los archivos tienden a ser eliminados de la unidad de almacenamiento. esto no es lo ideal ya que la tabla debe representar archivos que existan en la unidad de almacenamiento.1. La imagen 6.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6.3. Módulo que implementa el algoritmo del principio de localidad en archivos asociados (6. 2. el tamaño de la tabla de relaciones baja considerablemente al ser depurada. Como se observa en la imagen. 6.1).5 representa el proceso de depuración. por lo tanto su lectura será cada vez más costosa.4. La tabla de relaciones crecerá indefectiblemente con el paso del tiempo. Módulos que forman la solución Para la solución denitiva se plantea la utilización de una serie de módulos que serán orquestados por otro. . por lo tanto la tabla global de relaciones deja de tener coherencia con respecto a lo archivos almacenados. 48 Tesis de grado de ingeniería en informática.

4. 6.4. Este proceso se ejecuta para la tabla completa y debe mantener actualizado el número de registro que está ejecutando.1 y realizar un merge de los datos de dicha estructura con la tabla histórica de relaciones.3.1) para el set de datos del punto anterior.4. Módulo orquestador. 5. Módulo de reubicación de bloques. Módulo de rollback.4.6. El resultado de este proceso es la tabla histórica de relaciones actualizada y lista para ser procesada por el módulo de reubicación de bloques. cuando procesa el último registro naliza su ejecución y el número de registro de la tabla histórica de relaciones se setea en uno.1. Módulo de merge Este módulo tiene como responsabilidad acceder a la estructura temporal generada por el módulo del punto 6. Guarda la salida del algoritmo en una estructura temporal que será accedida posteriormente por el módulo de merge. 6. 6.4. Módulo orquestador Este módulo es el encargado de orquestar la ejecución de todos los demás.1. 6.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 3. Módulo de depuración de la tabla histórica de relaciones. una vez efectuada esta operación se modican todas las referencias a los archivos que pertenecen a los bloques reubicados de manera tal que al acceder a los mismos se acceda a los nuevos bloques. 6. la manera de orquestar es la que se presenta en la imagen 6. Módulo que implementa el algoritmo del principio de localidad en archivos asociados Este módulo ejecuta las siguientes operaciones: Accede a la cola compartida de archivos accedidos para obtener las nuevas relaciones generadas desde la última vez que se ejecutó. 4. Módulo de reubicación de bloques Este módulo debe accede a la tabla histórica de relaciones y por cada entrada de la misma realiza la operación de reubicación de bloques. La reubicación de bloques se efectúa generando una copia (que cumple el principio de localidad) de los bloques de los archivos.4. Ejecuta el algoritmo de principio de localidad de archivos asociados (6. La última acción es marcar como libre los bloques que anteriores formaban los archivos para que puedan ser utilizados cuando sea necesario. 49 Tesis de grado de ingeniería en informática.2. .

Heurística para la ejecución del módulo de orquestación 1) Ejecución del módulo del principio de localidad y generación de la estructura temporal con el resultado. .6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6. 3) Ejecución del módulo de merge. 4) Ejecución del módulo de reubicación de bloques. 50 Tesis de grado de ingeniería en informática.5. 5) Para cada entrada en la tabla histórica de relaciones ejecutar la operación de reubicación.4.

La estructura planteada es la que se presenta en la imagen 6. crear una estructura de log que sea analizada por el sistema de archivo cuando inicia y en caso de ser necesario ejecute las acciones necesarias para que vuelva a tener consistencia. que en el peor de los casos Cuando arranca el sistema de archivos se analiza esta estructura. estos dos campos se setean de manera conjunta. . Para solucionar este problema se plantea lo siguiente. así como el segundo campo que indica el número de registro de la tabla histórica de relaciones que está siendo procesado.8. Esta tarea será llevada a 51 Tesis de grado de ingeniería en informática. Luego de realizar las acciones necesarias se resetea la estructura de log. END que indica que se terminó de ejecutar de manera satisfactoria el proceso de reubicación. esto puede generar que el sistema de archivos deje de mantener la consistencia.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6.4. en caso que exista el campo el campo es marcar como libre a todos los nuevos bloques que fueron copiados.6. Este mecanismo de log es el utilizado por los motores de base de datos para mantener consistencia luego de una falla en el sistema. esta estructura debe ser vaciada ya que el llegar a ese punto de la ejecución indica que el registro procesado no sufrió ningún problema. Cada vez que se termina de procesar un registro de la tabla histórica de relaciones. Cada vez que el módulo de reubicación inicie su operación sobre ambos archivos. Para llevar a cabo esta acción es necesario tener persistidos los datos correspondientes a los nuevos bloques. por lo tanto lo que se hace es deshacer los cambios realizados. Mecanismo de log para mantener la consistencia en caso de falla En ocasiones puede ocurrir que durante la ejecución del módulo orquestador el sistema falle (corte de luz por ejemplo). es decir. se debe agregar la referencia a ese bloque en esta estructura. El proceso de log se realiza siempre que se ejecute la reubicación de bloques para un registro de la tabla histórica START y no END implica que hubo un error durante la ejecución del módulo de reubicación para el número de registro en cuestión. estos se persistirán en una estructura que se plantea en la imagen 6. los nuevo bloques van a ser marcados como libres. esto es necesario para que al iniciar el sistema de archivos se realice el rollback de estos cambios si hubo un error.7. En esta estructura se guarda la referencia a los nuevos bloques creados durante el proceso de reubicación. Siempre que el proceso de reubicación termine de copiar un bloque. Cuando nalice completamente la ejecución de reubicación de bloques y modicación de referencias se setea el campo de resultados. se vacía la estructura y se setea el campo START para indicar el comienzo de dicha operación.

6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA cabo por el módulo de rollback. esta ejecución se efectúa en intervalos de un cierto tiempo que es un parámetro de conguración del sistema. pero de manera 52 Tesis de grado de ingeniería en informática. este rollback en cambios que no mantienen módulo del principio de localidad en archivos asociados.4. Control de la concurrencia Durante la ejecución del módulo orquestador pueden ocurrir los siguientes escenarios que son potencialmente peligrosos para la concurrencia: 1. En este escenario. Frecuencia de ejecución del módulo orquestador 6.8. esta ejecución se efectúa en módulo del principio de localidad en archivos asociados. Módulo de depuración de la tabla histórica de relaciones Este módulo debe llevar a cabo la tarea de depuración de la tabla histórica de relaciones analiza en la sección 6. 2. el sistema de archivos no dará permiso de acceso al archivo en cuestión. El módulo orquestador es el encargado de realizar la ejecución del módulo en cuestión. Al iniciar Este módulo es el encargado de llevar a cabo la eliminación de los últimos cambios rollback.9. y en caso de ser necesario realiza el módulo orquestador. 6.10. esta ejecución se efectúa cuando inicia el sistema de archivos.4. Se ejecuta la reubicación de algún archivo que está siendo utilizado por algún proceso.4. 6. módulo de depuración de la tabla histórica de relaciones. Como todos los módulos. Ejecutar el el mismo intervalo que el intercalada con este. es ejecutado por el el sistema realizará el análisis de la estructura que gura en la imagen 6. . Un proceso intenta acceder a un archivo que está siendo reubicado.4. 6. Módulo de rollback no aplicados. es decir. Siempre que se intente ejecutar este módulo se analizará si la cantidad de registros presentes en la cola de relaciones es mayor a un cierto parámetro del sistema. El módulo orquestador tiene tres funciones que son las siguientes: 1. Ejecutar el módulo de rollback. 3.8. Ejecutar el ejecutará el módulo orquestador indicándole que realice la acción de la consistencia. 2. 2. Simplemente se descarta la ejecución de cualquier registro (de la tabla histórica de relaciones) que tenga al menos un archivo que está siendo utilizado por otro proceso.3.7. Las soluciones que se plantean para cada uno de los escenarios son respectivamente las siguientes: 1.

6. Modicaciones necesarias en Sistema de archivos NTFS para soportar esta técnica En esta sección se describen las nuevas estructuras que son necesarias en un Sistema de archivos para soportar esta técnica.5. que tiene la longitud del campo siguiente campo que es el data. éste contiene las relaciones presentes en el registro. .5. Cada registro del archivo está formado por un campo header. El encabezado del archivo tiene la cantidad de registros presentes.1.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6. la estructura física que se plantea para la misma es un archivo con registros de longitud variable. además se hace referencia a los cambios necesarios en los Sistemas de archivos en general. este dato es analizado para determinar si se debe o no ejecutar el módulo del principio de localidad en archivos asociados. 53 Tesis de grado de ingeniería en informática. Cola compartida de relaciones Esta estructura contiene la información sobre las nuevas relaciones generadas luego de que se ejecutó el proceso de reubicación de bloques.

Número de registro de la tabla histórica de relaciones procesado. 54 Tesis de grado de ingeniería en informática. Representación del nal de la transacción. Identicador2: Identicador del segundo archivo de la relación.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6. Cantidad de repeticiones: Cantidad de repeticiones de la tupla de archivos relacionados.5.3.2. Tabla histórica de relaciones Para esta estructura se plantea utilizar un archivo formado por registros de longitud ja.5. . 6. Estructura utilizada para identicación de inconsistencias tras una falla Esta estructura está formada por tres campos que son los siguientes: Representación del comienzo de la transacción. cada registro está formado por los siguientes campos: Identicador1: Identicador del primer archivo de la relación.

4. 55 Tesis de grado de ingeniería en informática. .6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6.5. Estructura utilizada para por el proceso de rollback La organización planteada para esta estructura es un archivo de registros de longitud ja donde cada registro tiene una referencia a uno de los bloques que fueron copiados en el proceso de reubicación de bloques.

El sistema de archivos debe poder acceder a un bloque mediante su dirección física para marcarlo como libre en el proceso de rollback 56 Tesis de grado de ingeniería en informática. Modicaciones generales en los Sistemas de archivos Las modicaciones generales que deben tener los sistemas de archivos para soportar la técnica planteada en el presente trabajo son las siguientes: Todas las nuevas estructuras planteadas en el punto anterior deben ser ubicadas en regiones de la unidad de almacenamiento reservadas por el sistema de archivos para conocer su ubicación y poder accederlas.6 ELABORACIÓN DE UNA PROPUESTA DE SOLUCIÓN ALTERNATIVA O SUPERADORA 6.5.5. . Es necesario tener un id por archivo para poder identicarlo y de esa manera acceder a sus bloques.

Hipótesis sobre el tiempo de latencia tiempo de latencia. el tiempo para trasladarse de uno al otro es el mismo. tiempos de seek generados por el acceso a todos los bloques que forman el n ∑ S (n) es la sumatoria de los 0 archivo.[21] lo mismo aplica 7. El tiempo de rotación para que el sector a leer o escribir se encuentre con el cabezal(tiempo 3.2.[20] 7. 7. (tiempo de transferencia). . dados dos cilindros cualquiera que sean consecutivos.1. Se plantea la siguiente hipótesis sobre el i∈N se cumple que S (i)=S (i + 1).1.1. Evaluación Analítica y Experimental de la Propuesta Cuando se accede a un archivo existen tres tiempos intervinientes en la operación: 1. Bajo esta hipótesis se puede pensar en la siguiente expresión S (n) = Q × abs (C (n) − C (n − 1)) donde Q es una constante que representa el tiempo en trasladarse de un cilindro a otro estando ambos ubicados de manera consecutiva. El tiempo de lectura o escritura de latencia). Hipótesis sobre el tiempo de seek tiempo de seek.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 7. es decir. el tiempo para trasladarse de uno al otro es el mismo. Bajo esta hipótesis se puede pensar en la siguiente expresión L (n) = M × abs (B (n) − B (n − 1)) donde M es una constante que representa el tiempo en pasar de un bloque a otro estando ambos ubicados de manera consecutiva. El tiempo que tardan los cabezales en posicionarse en el cilindro donde se encuentra el sector a leer o escribir (tiempo de seek).[20] n ∑ L(n) es la sumatoria de los tiempos de latencia generados por el acceso a todos los bloques que forman 0 el archivo.[21] el número de bloque físico en el que se encuentra el bloque n. aplica para la expresión B (n) representa B (n − 1) . C (n − 1) . lo mismo 57 Tesis de grado de ingeniería en informática. dado dos bloques cualquiera que sean consecutivos.1. Evaluación analítica El tiempo de acceso a un archivo puede ser representado con la siguiente expresión[20][21]: T = n ∑ 0 S (n) n ∑ 0 L (n) n ∑ 0 T (n) Donde: El subíndice n representa la cantidad de bloques que forman el archivo. 2. para la expresión C (n) representa el número de cilindro en el que se encuentra el bloque n. Se plantea la siguiente hipótesis sobre el i∈N se cumple que L(i)=L(i + 1).[20] n ∑ T (n) es la sumatoria de los tiempos de transferencia generados por el acceso a todos los bloques que 0 forman el archivo. es decir.

es decir C (n − 1) como una constante P la S (n) = Q × abs (C (n) − P ) esta expresión se puede utilizar para modelizar la variación del tiempo de seek por el acceso a un bloque en relación con el cilindro en el que se encuentra el bloque accedido anteriormente (constante P). j ∈ N se cumple que T (i)=T (j ).7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 7. n ∑ 0 S (n) n ∑ 0 L ( n) K Expresión general del tiempo de acceso Teniendo en cuenta las hipótesis anteriores sobre los tres tiempos intervinientes en el acceso. que el tiempo de transferencia es el mismo para todos los bloques. Como nK sigue siendo una contante. Hipótesis sobre el tiempo de transferencia. el tiempo de acceso a un archivo se puede representar con la siguiente expresión T = n ∑ 0 Q × abs (C (n) − C (n − 1)) n ∑ 0 M × abs (B (n) − B (n − 1)) K siendo la expresión denitiva[21] T =Q× 7. tiempo de transferencia.3. es decir. Planteando la siguiente hipótesis sobre el i. . pero si se toma a expresión queda reducida a una función de una variable.1.4. se puede pensar en la siguiente expresión para representar el tiempo de acceso a un archivo T = n ∑ 0 S (n) n ∑ 0 L ( n) nK donde K es una constante que representa el tiempo de transferencia de un bloque. la expresión para representar el tiempo de seek es S (n) = Q × abs (C (n) − C (n − 1)) es una función de dos variables (Q es una constante).1.5. La expresión S (n) = Q × abs (C (n) − P ) es equivalente a la siguiente función partida { Q × (C (n) − P ) si S (n) = Q × (P − C (n)) si C ( n) P C ( n) < P 58 Tesis de grado de ingeniería en informática.1. la expresión se puede simplicar aún más[21] T = 7. n ∑ 0 abs (C (n) − C (n − 1)) M× n ∑ 0 abs (B (n) − B (n − 1)) K Gráco del tiempo de seek en función de la distancia entre cilindros Como se mencionó.

Gráco del tiempo de latencia en función de la distancia entre bloques Como se mencionó.1. la expresión para representar el tiempo de latencia es L (n) = M × abs (B (n) − B (n − 1)) es una función de dos variables (M es una constante). La expresión L (n) = M × abs (B (n) − Z ) es equivalente a la siguiente función partida { M × (B (n) − Z ) si L (n) = M × (Z − B (n)) si B ( n) Z B ( n) < Z 59 Tesis de grado de ingeniería en informática.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA El gráco anterior muestra la función S(n) para el caso en que P tenga el valor 5.6.[21] Cabe hacer la aclaración de que el valor 5 es a modo de ejemplicación. pero si se toma a expresión queda reducida a una función de una variable. el dominio de la función son todos los números naturales. es decir B (n − 1) como una constante Z la L (n) = M × abs (B (n) − Z ) esta expresión se puede utilizar para modelizar la variación del tiempo de latencia en relación con la posición del bloque accedido anteriormente (constante P) independientemente del cilindro en el que se encuentren. En él se oberva que S(n) crece de manera lineal con respecto a la separación de los cilindros en los que se encuentran los bloques. 7. .

Observaciones nales sobre el tiempo de acceso La expresión nal del tiempo de acceso a un archivo es T =Q× n ∑ 0 abs (C (n) − C (n − 1)) M× n ∑ 0 abs (B (n) − B (n − 1)) K por lo tanto la única vía para reducir este tiempo es reducir las distancias físicas entre los bloques que forman el archivo.1. Este módulo genera la información de las relaciones de archivos (principio de localidad basado en relaciones) y los tiempos de acceso a los mismos. Para esto se realizaron varios módulos que interactúan entre si y son descriptos a continuación: Módulo FileSystem: Encargado de ejecutar los accesos para cada uno de los procesos congurados. el dominio de la función son todos los números naturales. El gráco anterior y el que representa el tiempo de seek en función de la distancia entre cilindros(7. 60 Tesis de grado de ingeniería en informática. 7.2. .[21] Cabe hacer la aclaración de que el valor 5 es a modo de ejemplicación.7.5) no tienen por qué tener la misma pendiente ya que los valores de las rectas). Q y M pueden no qué ser iguales (son las pendientes 7.1. En él se oberva que L(n) crece de manera lineal con respecto a la separación de los bloques(independientemente de los cilindros en los que se encuentren). siendo el caso óptimo ubicar todos los bloques de manera consecutiva en el mismo cilindro de la unidad de almacenamiento. cuanto más cercanos estén los bloques más se reducirá el tiempo de accceso.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA El gráco anterior muestra la función L(n) para el caso en que Z tenga el valor 5. Evaluación Experimental 7. Descripción de la simulación La evaluación práctica se basa en la simulación de los accesos a diferentes archivos efectuados por los procesos en un sistema de archivos.1.2.

a continuación se ejemplica la conguración de procesos: process.9000|2100.count=5000 bloks.count=2 le.tracks=10000 Esta conguración indica que la unidad de almecenamiento tiene 5000 cilindros (o pistas) y 10000 bloques por cilindro. el acceso vuelve a comenzar desde el primer bloque.0=123 process.500 process.access. los procesos se crean a partir de una conguración.id.9002|2100. y está compuesto por tres bloques. . cada uno de estos realiza una serie de accesos a archivos.9003|2100. del archivo comenzando desde el primero.RANDOM. Módulo Statics: Encargado de persistir las estadísticas obtenidas.SEQUENTIAL.9000|1001. en caso de que se ejecuten más accesos que bloques tiene el archivo se Los archivos existentes en el sistema de archivos simulado se crean a partir de la siguiente conguración: les. 61 Tesis de grado de ingeniería en informática.1=31 le.id.RANDOM.blocks. el acceso randon ejecuta accesos de manera secuencial implica acceder de manera coonsecutiva a los bloques El acceso a los archivos puede ser de manera aleatoria a cualquier de sus bloques.9000|1001.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA Módulo LocalityPrinciple: Accede a la cola de relaciones y genera un resultado temporal que respeta el algoritmo presentado en la sección 6.1=2100. La simulación se basa en la ejecución de los procesos. el primer acceso realizado es al archivo 30. La cantidad de cilindros y cantidad de bloques por cilindro que tendrá la unidad de almacenamiento simulada (sobre la que se ejecuta el sistema de archivos simulado) se crea a partir de la siguiente conguración: tracks. en ella además.9001|1001.id.9022 Esta conguración indica que existen dos archivos.1=321 process. random o secuencial. el primero primero de ellos se encuentra en el id 30.1 Módulo Merge: Accede a la tabla histórica de relaciones y al resultado temporal generado por el módulo LocalityPrinciple y realiza el merge entre ambas respetando lo planteado en la sección 6.9002 le.9001|2100. se especica una lista de archivos a los que debe acceder.id.0=1001.0=30.count=2 process.9020|2100. Módulo Orchestrator: Realiza la orquestación de los módulos LocalityPrinciple.blocks.0=30 le.access.9000|2100. de manera random y accede a 9000 de sus bloques. por cada proceso.by.RANDOM. el cilindro 1001 y en la pista 9000.1.1 Módulo Relocation: Realiza la reubicación de bloques respetando el principio de localidad según relaciones. Merge y Relocation.1. el primer proceso tiene a id 123.1=31.8777 Esta conguración indica que se deben ejecutar dos procesos. Módulo Congurations: Encargado de acceder a las diferentes conguraciones de la simulación. realiza el acceso dos archivos.

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA El módulo FileSystem recibe estas conguraciones y en base a ellas realiza la ejecución de todos los procesos y para cada uno de ellos todos sus accesos a los archivos que tiene congurado. de bloque).200) x Peso bloques. Este proceso se repite dos veces. este dato será persistido por el módulo de estadísticas luego. se le asignará un peso a cada cilindro y a cada bloque recorrido para acceder al próximo bloque. si el bloque n está ubicado en la tupla (10. 62 Tesis de grado de ingeniería en informática. de cilindro más nro.1 Se tomarán las estadísticas de ambas ejecuciones para luego compararlas y obtener conclusiones. el tiempo para realizar el acceso al bloque n+1 (estando ubicados en el bloque n) será de (11 . Dado que nos interesa analizar los tiempos de acceso de módulo Orchestrator para aplicar el principio de seek y latencia. 200) (nro. por lo tanto los tiempos se miden en función de estos pesos.1. se mide el tiempo en que cada proceso realiza el acceso a todos los archivos. y a modo de modelización de los mismos. y el bloque n+1 está ubicado en la tupla (11.10) x Peso cilindros + (250 . 250). entre ella se ejecuta el localidad platenado en la sección 6. por ejemplo. .

.2.2.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 7. Diagrama de arquitectura de la simulación 63 Tesis de grado de ingeniería en informática.

64 Tesis de grado de ingeniería en informática.4. . Diagrama de secuencia de la simulación 7.2. Código fuente de módulo FileSystem package t e s i s .3.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 7. impl .2. f i l e s y s t e m . c o r e .

model . beans . getAccess ( ) . getId ( ) ) ) { r e l a t i o n s h i p s F i l e . c o r e . t e s i s . c l a s s ) . return } accesTimes . org . C o l l e c t i o n s . { Map <Long . springframework . p r o c e s s . get ( proc . f i l e s y s t e m . f i l e s y s t e m . core . L i s t <Long> accesTimes . u t i l . } p r o c e s s A l l A c c e s s ( proc . d e b u g ( " P r o c e s i n g concat (" } } of process " . c o r e . t e s i s . c o r e . private private BlockSelectorResolver Block currentHeadBlock blockSelectorResolver . C o l l e c t i o n s . FileSystem . BlockSelectorResolver . ( t e s i s . import import import import import import import t e s i s . F i l e S y s t e m process . model . model . import import org . annotation . c o r e . java . L i s t <Long> relationshipsFile ) { i f ( ! relationships . List . resolver . getId ( ) ) ) { r e l a t i o n s h i p s . B l o c k S e l e c t o r D a t a . l o g 4 j . get ( proc . getLogger ( FileSystemImpl . s t r a t e g i e s . fileSystem . filesystem . filesystem . R e l a t i o n s h i p s Q u e u e . f i l e s y s t e m . = n u l l . c o r e . long time L i s t <Long> relationshipsFiles ) for ( Access acc : access ) { 65 Tesis de grado de ingeniería en informática. containsKey ( proc . apache . p r o c e s s . t e s i s . contains ( f i l e I d ) ){ r e l a t i o n s h i p s . B l o c k . r e l a t i o n s h i p s q u e u e . getId ( ) ) . int executionsCount i =0. core . public class FileSystemImpl implements FileSystem { final static Logger L O G G E R = Logger . g e t I d ( ) . get ( proc . relationships i f ( r e l a t i o n s h i p s . Logger . = relationshipsQueue . P r o c e s s > RelationshipsQueue relationshipsQueue ) L i s t <B l o c k > > L i s t <Long> accesTimes = new A r r a y L i s t <Long > ( ) . model . core . t o S t r i n g ( p r o c . model . concat ( I n t e g e r . s t r a t e g i e s . files . i < = f i l e S y s t e m . }else{ i n s e r t N o t R e p e a t F i l e s I d ( r e l a t i o n s h i p s . } } } private void p r o c e s s A l l A c c e s s ( L i s t <A c c e s s > L i s t <B l o c k > > = 0. t e s i s . f i l e s . t e s i s . u t i l . add ( f i l e I d ) . model . containsKey ( proc . u t i l . c o r e . getId ( ) ) ) . c o n c a t ( Long . BlockSelector . private for void ( Long i n s e r t N o t R e p e a t F i l e s I d ( L i s t <Long> fileId : relationshipsFile ) { r e l a t i o n s h i p s . f a c t o r y . i ++){ proc : process ) { for ( int for executionsCount . g e t I d ( ) ) ) . . L i s t < t e s i s . u t i l . Map . s o r t ( r e l a t i o n s h i p s . relationshipsFile ) . getId ( ) ) ) . i f ( ! r e l a t i o n s h i p s . getExecutionsCount ( ) . resolver . put ( p r o c . t o S t r i n g ( i ) ) ) . relationshipsFile L i s t <Long> > = new A r r a y L i s t <Long > ( ) . relationshipsFile ) . ArrayList . A c c e s s . t e s i s . { Map <Long .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA import import import import java . files . P r o c e s s L i s t <Long> Map <Long . access . / / Current block of head public L i s t <Long> e x e c u t e ( t e s i s . } relationshipsFile ) . java . L O G G E R. addAll ( r e l a t i o n s h i p s . j a v a . p r o c e s s . model . accesTimes . iteration ") . files . c o r e . getRelationships () . Required . r e s o l v e r .

} } return } time . .2. @Required public void setBlockSelectorResolver ( BlockSelectorResolver = blockSelectorResolver . s e l e c t ( blockSelectorData ) . 66 Tesis de grado de ingeniería en informática. currentHeadBlock . impl . currentHeadBlock blockSelectorData .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA time = time + getAccessTime ( acc .5. setCurrentBlock ( t h i s . model . f i l e s . toBlock ) . = i ++){ Block time = toBlock time + blockSelector . c o r e . for ( int i =0. getAccessCount ( ) . r e s o l v e ( a c c e s s . TimesHelper . getBlockNumber ( ) ) . } private long long time getAccessTime ( Access = 0. − t o B l o c k . a b s ( f r o m B l o c k . blockSelectorResolver ) { this .6. v a l u e O f ( t i m e ) ) . = new BlockSelectorData ( BlockSelectorData t h i s . g e t T r a s la t i o n T i m e ( t h i s . g e t F i l e I d ( ) ) . impl . files ) . blocks = access . currentHeadBlock . int long differenceTracks differenceBlocks = Math . core . Block toBlock ) { i f ( fromBlock return } = = n u l l ) {// i s the first global access FIRST_GLOBAL_ACCESS_TIME . 1. get ( access . Map <Long . i < accessCount . Código fuente de módulo TimesHelper package t e s i s . t h i s . public class TimesHelper { private final static int FIRST_GLOBAL_ACCESS_TIME = int int C H A N G E _ T R A C K _ T I M E = C H A N G E _ B L O C K _ T I M E = 10. add ( a c c . getTrackNumber ( ) ) . indexOf ( acc . import java . blockSelectorResolver } } 7. a b s ( f r o m B l o c k .2. Código fuente de módulo LocalityPrinciple package t e s i s . currentHeadBlock ) . if ( relationshipsFiAnálisis de los r e s u l t a d o s l e s . g e t T r a c k N u m b e r ( ) = Math . = toBlock . getAccessType ( ) ) . ∗ C H A N G E _ B L O C K _ T I M E) . import t e s i s . return } } ( differenceTracks ∗ C H A N G E _ T R A C K _ T I M E) + ( differenceBlocks 7. int accessCount = a c c e s s . ArrayList . B l o c k . getFileId () ) . g e t B l o c k N u m b e r ( ) − t o B l o c k . } } a c c e s T i m e s . BlockSelector blockSelector = b l o c k S e l e c t o r R e s o l v e r . i f ( blocks != null ){ blockSelectorData blocks ) . private private final final static static public static long getTraslationTime ( Block fromBlock . l o c a l i t y p r i n c i p l e . add ( Long . L i s t <B l o c k > > files ) { L i s t <B l o c k > f i l e s . u t i l . c o r e . f i l e s y s t e m A n á l i s i s de los r e s u l t a d o s . 0. g e t F i l e I d ( ) ) = = −1) { r e l a t i o n s h i p s F i l e s .

model . import import java . model . getFirstFileId () . t e s i s . import import import import import t e s i s . relationshipTmp . 7. i f ( f i l e s I d . Map . l o c a l i t y p r i n c i p l e . model . import org . core . add ( r e l a t i o n s h i p T m p ) . basicRelationshipTmpOne . j a v a . getSecondFileId () . g e t R e p e t i t i o n s C o u n t ( ) +1) . l o c a l i t y p r i n c i p l e . c o r e . public class LocalityPrincipleImpl implements LocalityPrinciple { final static Logger L O G G E R = Logger . return } } new TemporaryResult ( r e l a t i o n s h i p s ) . java . c l a s s ) . size () > 1) { = CartesianProductHelper . List . s e t R e p e t i t i o n s C o u n t ( r e l a t i o n s h i p . c o r e . R e l a t i o n s h i p . getCartesianProduct ( f i l e s I d ) . LocalityPrinciple . c o r e . u t i l . t e s i s . r e l a t i o n s h i p . l o c a l i t y p r i n c i p l e . L i s t <B a s i c R e l a t i o n s h i p > Relationship basicRelationships . l o c a l i t y p r i n c i p l e . int for iterationIndex ( E n t r y<Long . sort ( relationships ) .2. C o l l e c t i o n s . relationshipQueue : relationshipsQueue . basicRelationshipTmpTwo . int index = r e l a t i o n s h i p s . Logger . getLogger ( L o c a l i t y P r i n c i p l e I m p l . impl . u t i l . r e l a t i o n s h i s t o r y t a b l e . ArrayList . t e s i s . getRelationships () . Collections . entrySet () ) L i s t <Long> { = 1. public TemporaryResult execute ( RelationshipsQueue relationships = new relationshipsQueue ) { L i s t <R e l a t i o n s h i p > A r r a y L i s t <R e l a t i o n s h i p > ( ) .7. Código fuente de módulo CartesianProductHelper package t e s i s . l o c a l i t y p r i n c i p l e . u t i l . . u t i l . T e m p o r a r y R e s u l t . t e s i s . import t e s i s . L i s t <Long> > filesId = relationshipQueue . } } } iterationIndex } = iterationIndex + 1. B a s i c R e l a t i o n s h i p . i f ( index = = −1) { r e l a t i o n s h i p s .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA import import import java . 1) . u t i l . indexOf ( relationshipTmp ) . model . java . List . R e l a t i o n s h i p s Q u e u e . get ( index ) . c o r e . BasicRelationship for ( Long fileId : filesId ) { 67 Tesis de grado de ingeniería en informática. l o g 4 j . apache . model . }else{ Relationship relationship = r e l a t i o n s h i p s . getValue ( ) . E n t r y . r e l a t i o n s h i p s q u e u e . basicRelationships for ( BasicRelationship r e l a t i o n s h i p T m p=new basicRelationship : basicRelationships ) { Relationship ( basicRelationship . basicRelationship . c o r e . public class CartesianProductHelper { public static L i s t <B a s i c R e l a t i o n s h i p > g e t C a r t e s i a n P r o d u c t ( L i s t <Long> = new filesId ){ L i s t <B a s i c R e l a t i o n s h i p > BasicRelationship cartesianProduct A r r a y L i s t <B a s i c R e l a t i o n s h i p > ( ) . c o r e . B a s i c R e l a t i o n s h i p .

} } } private void addTemporaryResult ( TemporaryResult relationsHistory ) { temporaryResult . relationship . R e l a t i o n s h i p . C o l l e c t i o n s . c o n t a i n s ( basicRelationshipTmpTwo ) ) { c a r t e s i a n P r o d u c t . t e s i s . t e s i s . sort ( relationsHistory ) . c o r e . basicRelationshipTmpOne basicRelationshipTmpTwo B a s i c R e l a t i o n s h i p ( fileIdTmp . java . g e t L o g g e r ( MergeImpl . r e l a t i o n s h i s t o r y t a b l e . u t i l . getRepetitionsCount () ) ) . m e r g e . r e l a t i o n s h i s t o r y t a b l e . copyRelationsHistoryTable ( relationsHistoryTable . . getSecondFileId () . relationsHistory ) . R e l a t i o n s H i s t o r y T a b l e .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA for ( Long fileIdTmp != : filesId ) { if ( fileId fileIdTmp ) { = new = new BasicRelationship ( fileId . c o r e . i f ( index != −1) { 68 Tesis de grado de ingeniería en informática. for ( Relationship relationship : temporaryResult . c o n t a i n s ( basicRelationshipTmpOne ) ! c a r t e s i a n P r o d u c t . } } } return } } cartesianProduct . package Código fuente de módulo Merge t e s i s . u t i l . ArrayList . i n d e x O f ( r e l a t i o n s h i p ) . fileId ) . getFirstFileId () . L O G G E R. return } new RelationsHistoryTable ( relationsHistory ) . merge . import import import java . c l a s s ) . T e m p o r a r y R e s u l t .8. u t i l . public RelationsHistoryTable execute ( RelationsHistoryTable relationsHistoryTable . c o r e .2. getRelationships () != null ) relationship : relationsHistoryTable . TemporaryResult { temporaryResult ) L i s t <R e l a t i o n s h i p > relationsHistory = new A r r a y L i s t <R e l a t i o n s h i p > ( ) . c o r e . t e s i s . model . List . add ( new Relationship ( relationship . L i s t <R e l a t i o n s h i p > int index . import import import import t e s i s . getRelationships () ) { r e l a t i o n s H i s t o r y . Collections . 7. c o r e . g e t R e l a t i o n s h i p s ( ) ) { i n d e x= r e l a t i o n s H i s t o r y . model . public class MergeImpl implements Merge { final static Logger L O G G E R = L o g g e r . r e l a t i o n s h i p . add ( b a s i c R e l a t i o n s h i p T m p O n e ) . i f ( temporaryResult return } new = = null || temporaryResult . g e t R e l a t i o n s h i p s ( ) = = null ){ RelationsHistoryTable ( relationsHistory ) . Merge . Relationship relationshipTmp . model . addTemporaryResult ( temporaryResult . L i s t <R e l a t i o n s h i p > i f ( relationsHistoryTable { for ( Relationship relationsHistoryTable . & & i f ( ! c a r t e s i a n P r o d u c t . d e b u g ( " C a l l i n g addTemporaryResult method " ) . relationsHistory ) . d e b u g ( " S o r t i n g c o l l e c t i o n ") . java . L O G G E R. fileIdTmp ) . l o c a l i t y p r i n c i p l e . i m p l . private void copyRelationsHistoryTable ( RelationsHistoryTable relationsHistory ) != null & & { relationsHistoryTable .

Map <Long . r e l a t i o n s h i p T m p . apache . r e l o c a t i o n . c o r e . model . c o n c a t ( Long .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA r e l a t i o n s h i p T m p= r e l a t i o n s H i s t o r y . c l a s s ) . add ( r e l a t i o n s h i p . public class RelocationImpl implements Relocation { final static Logger L O G G E R = Logger . B l o c k S t a t u s . add ( r e l a t i o n s h i p . LinkedHashMap<B l o c k .2.9. } i f ( ! optimalFilesOrder . LinkedHashMap . impl . } } return } optimalFilesOrder . u t i l . Map . relationsHistoryTable . files ) . j a v a . L i s t <B l o c k > > L i s t <B l o c k > optimalBlocksOrder = new A r r a y L i s t <B l o c k > ( ) . add ( r e l a t i o n s h i p ) . r e l a t i o n s h i s t o r y t a b l e . d e b u g ( " r e l o c a t i o n B l o c k s method " ) . import org . model . core . getRelationships () ) . f i l e s . model . u t i l . statusBlocks ) { Map <Long . java . L O G G E R. getOptimalFilesOrder ( relationsHistoryTable . contains ( relationship . getLogger ( RelocationImpl . c o r e . . Map . j a v a . Logger . getOptimalBlocksOrder ( optimalFilesOrder . t o S t r i n g ( ) ) ) . r e l o c a t i o n B l o c k s ( optimalBlocksOrder . getFirstFileId () ) ){ o p t i m a l F i l e s O r d e r . u t i l . t e s i s . c o r e . t e s i s . public void execute ( RelationsHistoryTable L i s t <B l o c k > > files . R e l a t i o n s H i s t o r y T a b l e . package Código fuente de módulo Relocation t e s i s . d e b u g ( " g e t O p t i m a l F i l e s O r d e r L i s t <Long> optimalFilesOrder = method " ) . u t i l . 69 Tesis de grado de ingeniería en informática. g e t S e c o n d F i l e I d ( ) ) . s e t R e p e t i t i o n s C o u n t ( r e l a t i o n s h i p T m p . } } } } 7. model . Relocation . } private L i s t <Long> g e t O p t i m a l F i l e s O r d e r ( L i s t <R e l a t i o n s h i p > = new A r r a y L i s t <Long > ( ) . t e s i s . . E n t r y . r e l a t i o n s h i s t o r y t a b l e . relationships ) { L i s t <Long> optimalFilesOrder for ( Relationship relationship : relationships ) { i f ( ! optimalFilesOrder . l o g 4 j . } else{ r e l a t i o n s H i s t o r y . contains ( relationship . L O G G E R. B l o c k S t a t u s > L O G G E R. d e b u g ( " g e t O p t i m a l B l o c k s O r d e r L i s t <B l o c k > optimalBlocksOrder = method " ) . getRepetitionsCount () ) . d e b u g ( " method getOptimalBlocksOrder . import import import import import java . for ( Long fileId : optimalFilesOrder ) { fileId " L O G G E R. g e t F i r s t F i l e I d ( ) ) . v a l u e O f ( f i l e I d ) . u t i l . g e t ( i n d e x ) . c o r e . import import import import import t e s i s . B l o c k . statusBlocks ) . j a v a . g e t R e p e t i t i o n s C o u n t ( )+ r e l a t i o n s h i p . getSecondFileId () ) ){ o p t i m a l F i l e s O r d e r . c o r e . R e l a t i o n s h i p . List . f i l e s y s t e m . relocation . t e s i s . private L i s t <B l o c k > g e t O p t i m a l B l o c k s O r d e r ( L i s t <Long> files ) { optimalFilesOrder . ArrayList .

u t i l . import org . Orchestrator . = 0. t e s i s . t e s i s . Merge . m e r g e . c o r e . j a v a . 7. s e t R e l a t i o n s h i p s ( t h i s . R e l a t i o n s H i s t o r y T a b l e . c o r e . model . B l o c k S t a t u s . l o c a l i t y P r i n c i p l e . c o r e . t h i s . BlockStatus> statusBlocks ) { TemporaryResult temporaryResult = t h i s . o r c h e s t r a t o r . impl . core . model . c o r e . t e s i s . 70 Tesis de grado de ingeniería en informática. get ( currentBlockIndex ) . f a c t o r y . c u r r e n t B l o c k . FREE) { optimalBlocksOrder . BlockStatus> = = block : statusBlocks . c o r e . B l o c k . LinkedHashMap . model . r e l a t i o n s h i s t o r y t a b l e . f i l e s . List . Required . model . import import import j a v a . } return } optimalBlocksOrder . merge .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA optimalBlocksOrder . s i z e ( ) return . l o c a l i t y p r i n c i p l e . c o r e . java . R e l a t i o n s h i p s Q u e u e . L i s t <B l o c k > > files . getKey ( ) . r e l a t i o n s H i s t o r y T a b l e . execute ( relationsHistoryTable . i f ( optimalBlocksOrder . getTrackNumber ( ) ) . getKey ( ) . Map <Long . private Relocation relocation . execute ( relationshipsQueue ) . setBlockNumber ( b l o c k . getValue ( ) currentBlock = B l o c k S t a t u s . t e s i s . } files . core .10. orchestrator . import import import import import import import import import t e s i s . Map . addAll ( f i l e s . LocalityPrinciple . t e s i s . private void r e l o c a t i o n B l o c k s ( L i s t <B l o c k > BlockStatus> optimalBlocksOrder . Relocation . public void execute ( RelationshipsQueue relationshipsQueue . t e s i s . get ( f i l e I d ) ) . core . private Merge merge .2. Block for ( E n t r y<B l o c k . springframework . r e l a t i o n s h i p s q u e u e . t e s i s . beans . e x e c u t e ( r e l a t i o n s H i s t o r y T a b l e . statusBlocks ) . } − 1 = = currentBlockIndex ) { currentBlockIndex } } } } = currentBlockIndex + 1. { LinkedHashMap<B l o c k . u t i l . model . c o r e . T e m p o r a r y R e s u l t . r e l a t i o n s H i s t o r y T a b l e . getBlockNumber ( ) ) . entrySet () ) { i f ( block . RelationsHistoryTable LinkedHashMap<B l o c k . statusBlocks ) i f ( optimalBlocksOrder . public class OrchestratorImpl implements Orchestrator { private LocalityPrinciple localityPrinciple . temporaryResult ) . s i z e ( ) return . Código fuente de módulo Orchestrator package t e s i s . relocation . u t i l . . } = = 0) { int currentBlockIndex currentBlock . r e l o c a t i o n . setTrackNumber ( b l o c k . f i l e s y s t e m . g e t R e l a t i o n s h i p s ( ) ) . t e s i s . c u r r e n t B l o c k . annotation . l o c a l i t y p r i n c i p l e .

u t i l . isEmpty ( b l o c k s ) ) { return } null . model . s t r a t e g i e s . f i l e s . r e s o l v e r . model . public class RandomBlockSelector implements BlockSelector { final static Logger L O G G E R = Logger . block ) ) . r e s o l v e r . t e s i s . j a v a . Random . Random randomGenerator = new Random ( ) . f i l e s . s t r a t e g i e s . springframework . s t r a t e g i e s . public class SecuentialBlockSelector implements BlockSelector { final static Logger L O G G E R = Logger . f i l e s y s t e m . r e s o l v e r .12. BlockSelector . s t r a t e g i e s . Logger . core . s i z e ( ) ) . return } } block . B l o c k . 71 Tesis de grado de ingeniería en informática. c o r e . c l a s s ) . s t r a t e g i e s . Block block = blocks . model . Código fuente de módulo SecuentialBlockSelector package t e s i s . public Block s e l e c t ( BlockSelectorData blocks = blockSelectorData ) { L i s t <B l o c k > blockSelectorData . c o r e . import import import t e s i s . i f ( C o l l e c t i o n U t i l s . d e b u g ( S t r i n g . f o r m a t ( " i n d e x is −1 for % s". merge ) { t h i s . c o r e . apache . org . L O G G E R. B l o c k . B l o c k S e l e c t o r D a t a . c o r e . resolver . getLogger ( S e c u e n t i a l B l o c k S e l e c t o r . . localityPrinciple } @Required public void s e t M e r g e ( Merge = merge . import import org . n e x t I n t ( b l o c k s . BlockSelector . List .7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA @Required public void setLocalityPrinciple ( LocalityPrinciple = localityPrinciple . c l a s s ) . B l o c k S e l e c t o r D a t a . t e s i s . filesystem . u t i l . getLogger ( RandomBlockSelector . model . C o l l e c t i o n U t i l s . org . u t i l . import java . t e s i s . int index = randomGenerator . import import java . merge } @Required public void setRelocation ( Relocation = relocation . getBlocks () . resolver . r e s o l v e r . springframework .2. l o g 4 j . l o g 4 j .2. u t i l . impl . t e s i s . Código fuente de módulo RandomBlockSelector package t e s i s . Logger . impl . s t r a t e g i e s .11. import import import import import org . core . relocation } } 7. apache . filesystem . c o r e . C o l l e c t i o n U t i l s . c o r e . f i l e s y s t e m . f i l e s y s t e m . u t i l . t e s i s . List . localityPrinciple ) { this . f i l e s y s t e m . 7. get ( index ) . relocation ) { this .

d e b u g ( S t r i n g .18 200 archivos 4399 bloques 21. . 3. f o r m a t ( " l a s t return } blocks . get (0) . d e b u g ( " empty return } null .81 400 archivos 8099 bloques 40. L O G G E R.99 300 archivos 11162 bloques 55. 7. i f ( currentBlock = = null ){ is n u l l ") . Formada por un total de 20000 bloques disponibles. return } } blocks . 2. L O G G E R.13. int index = b l o c k s . currentBlock ) ) . l i s t a ") . Análisis comparativos de los resultados Para la simulación se utilizó una unidad de almacenamiento con las siguientes características: 1.2. El set de prueba de archivos se presenta a continuación: Cantidad de archivos Cantidad de bloques utilizados Porcentaje bloques utilizados 50 archivos 1353 bloques 6.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA public Block s e l e c t ( BlockSelectorData = = blockSelectorData ) { Block currentBlock blocks blockSelectorData .49 El set de prueba de procesos se presenta a continuación: 72 Tesis de grado de ingeniería en informática. Formada por 1000 bloques por pista. s i z e ( ) ) { / / End of collections block of collection for % s". indexOf ( currentBlock ) .76 100 archivos 2436 bloques 12. isEmpty ( b l o c k s ) ) { L O G G E R. L O G G E R. get (0) . Además cada set de procesos se ejecutó 3 veces para obtener una cantidad mayor de valores para analizar. d e b u g ( " c u r r e n t B l o c k return } blocks . currentBlock ) ) . getCurrentBlock () . blockSelectorData . d e b u g ( S t r i n g . get ( index ) . get (0) . index = index + 1. i f ( index = = −1) { is blocks . Formada por 20 pistas. L i s t <B l o c k > i f ( C o l l e c t i o n U t i l s . i f ( index = = b l o c k s . getBlocks () . f o r m a t ( " i n d e x return } −1 for % s".

el n es obtener resultados para diferentes escenarios y poder analizar los resultados obtenidos. 147302 accesos a archivos. 5932471 dos. bloques accedi- 400 archivos accedidos 48084 accesos a archivos. 9052319 dos. 48194 accesos a archivos. 34694 accesos a archivos. . Se generaró un set de datos que represente diferentes cargas de bloques de la unidad de almacenamiento. 12016780 bloques accedidos. 72925 accesos a archivos. bloques accedi- 200 archivos accedidos 23816 accesos a archivos. 2725149 dos. 8669868 dos. 4121996 dos. bloques accedibloques accedi- 100 archivos accedidos 11583 accesos a archivos. 23098 accesos a archivos. 18181950 bloques accedidos. 73 Tesis de grado de ingeniería en informática. 17773626 bloques accedidos. bloques accedi- 300 archivos accedidos 36249 accesos a archivos. 27200785 bloques accedidos. 11988251 bloques accedidos. 36724859 bloques accedidos. 24530694 bloques accedidos. 109275 accesos a archivos. 2884391 dos. bloques accedibloques accedi- 7500 procesos 16575 accesos a archivos. así como diferentes cantidades de procesos que realizan accesos.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA Cantidad de procesos 50 archivos accedidos 2500 procesos 5476 accesos a archivos. 5746391 dos. bloques accedi- 5000 procesos 10884 accesos a archivos. 98296 accesos a archivos. 1358105 dos. 71513 accesos a archivos.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA Ejecución de 2500 procesos: 50 archivos en la unidad de almacenamiento: 74 Tesis de grado de ingeniería en informática.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 100 archivos en la unidad de almacenamiento: 75 Tesis de grado de ingeniería en informática.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 200 archivos en la unidad de almacenamiento: 76 Tesis de grado de ingeniería en informática.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 300 archivos en la unidad de almacenamiento: 77 Tesis de grado de ingeniería en informática.

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 400 archivos en la unidad de almacenamiento: 78 Tesis de grado de ingeniería en informática. .

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA Ejecución de 5000 procesos: 50 archivos en la unidad de almacenamiento: [20] 79 Tesis de grado de ingeniería en informática.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 100 archivos en la unidad de almacenamiento: [20] 80 Tesis de grado de ingeniería en informática.

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 200 archivos en la unidad de almacenamiento: 81 Tesis de grado de ingeniería en informática. .

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 300 archivos en la unidad de almacenamiento: 82 Tesis de grado de ingeniería en informática.

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 400 archivos en la unidad de almacenamiento: 83 Tesis de grado de ingeniería en informática.

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA Ejecución de 7500 procesos: 50 archivos en la unidad de almacenamiento: 84 Tesis de grado de ingeniería en informática. .

.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 100 archivos en la unidad de almacenamiento: 85 Tesis de grado de ingeniería en informática.

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 200 archivos en la unidad de almacenamiento: 86 Tesis de grado de ingeniería en informática. .

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 300 archivos en la unidad de almacenamiento: 87 Tesis de grado de ingeniería en informática. .

7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 400 archivos en la unidad de almacenamiento: 88 Tesis de grado de ingeniería en informática. .

cuando sin aplicar el proceso de relaciones por el principio de localidad la distribución de los tiempos estaba dispersa sobre todos los tiempos posibles. .14. Resumen de los resultados obtenidos A continuación se exponen tablas que representan las mejoras obtenidas mediante la aplicación de la nueva política de relaciones basadas en el principio de localidad: Ejecución de 2500 procesos: Cantidad de archivos Máximo tiempo sin la nueva política Mínimo tiempo sin la nueva política Máximo tiempo con la nueva política Mínimo tiempo con la nueva política Promedio de tiempos sin la nueva política Promedio de tiempos con la nueva política 50 754407 0 91718 0 198658 4508 100 1343284 0 530552 0 410071 12895 200 2320207 34 320076 21 830637 29398 300 3320462 148 1702167 78 1245163 386769 400 4363136 145 497255 97 1660935 64892 Ejecución de 5000 procesos: Cantidad de archivos Máximo tiempo sin la nueva política Mínimo tiempo sin la nueva política Máximo tiempo con la nueva política Mínimo tiempo con la nueva política Promedio de tiempos sin la nueva política Promedio de tiempos con la nueva política 50 861724 0 61859 0 200608 4279 100 1336700 0 198041 0 408889 10207 200 2486845 131 516509 9 842112 29771 300 3569687 88 1725089 40 1243215 316781 400 4728537 4 687140 7 1699897 65648 Ejecución de 7500 procesos: Cantidad de archivos Máximo tiempo sin la nueva política Mínimo tiempo sin la nueva política Máximo tiempo con la nueva política Mínimo tiempo con la nueva política Promedio de tiempos sin la nueva política Promedio de tiempos con la nueva política 50 792046 0 289047 0 201702 6377 100 1352103 0 377313 0 410659 12447 200 2474311 0 400625 0 831121 29116 300 3378486 0 1781838 0 1239354 422841 400 4430167 0 610270 0 1696820 68845 En todos los casos el promedio de los tiempos de acceso se reduce considerablemente. además se observa en los grácos de la sección anterior que la distribución de tiempos de acceso tiende a consolidarse en los valores más bajos.2.7 EVALUACIÓN ANALÍTICA Y EXPERIMENTAL DE LA PROPUESTA 7. 89 Tesis de grado de ingeniería en informática.

90 Tesis de grado de ingeniería en informática. Conclusión 8. para esto se reubican los bloques de los archivos respetando el principio de localidad de archivos asociados.1. Se efectuó un análisis cualtitativo para analizar el impacto de esta técnica con respecto a la no implementación de la misma. Se analizaron varios trabajos de investigación sobre problemas para atacar en los sistemas de archivos. el estudio de nuevas políticas de reubicación de los bloques (siempre respetando las relaciones de los archivos según la técnica aquí planteada).8 CONCLUSIÓN 8. Análisis de los resultados En este trabajo se presentó una nueva política para la administración de los bloques pertenecientes a los archivos. El objetivo de esta nueva política es mejorar los tiempos de acceso. en especial. . la misma se basa en relacionar todos los archivos accedidos por el mismo proceso. los resultados obtenidos arrojaron que la implementación de la misma reduce en gran medida los tiempos de acceso a los archivos. el campo de investigación es muy grande. Quedan planteados trabajos a futuro para mejorar la performance de esta técnica e investigar los campos de aplicación en los que mejores resultados se obtienen.

La aplicación de una buena técnica de reubicación de bloques es muy importante para incrementar la performance de la técnica. Investigar técnicas para controlar la concurrencia en las estructuras que utiliza la técnica planteada. por ejemplo. Trabajos futuros Como trabajos futuros se proponen los siguientes temas: 1. qué política tomar cuando se intenta acceder a un archivo que está siendo reubicado? Un tema muy interesante para abordar es la investigación de los campos especícos en los que la aplicación de esta técnica incrementa en mayor medida la performance. 4. 5. el campo de investigación es muy ámplio. La concurrencia debe ser investigada para dar respuesta a detalles como el siguiente. . Analizar entornos en los que mejor aplica esta técnica. servidores dedicados a la ejecución de pocos procesos. Analizar opciones para el intervalo de ejecución del módulo orquestador. 2. 3.8 CONCLUSIÓN 8. puede tener una mejor performance que una computadora hogareña ya que los pocos procesos acceden a los mismos archivos. menores van a ser los tiempos de acceso. Investigar alternativas de mecanismos de log para recuperar la consistencia en el momento de una falla del sistema. mientras la reubicación se realice de manera más inteligente. 91 Tesis de grado de ingeniería en informática. Investigar alternativas para obtener una buena política de reubicación de bloques. como un servidor de base de datos.2. Como se observa. en cambio en la computadora hogareña seguramente ocurra lo contrario. La investigación y posterior implementación de estos trabajos futuros van a generar que la técnica sea más segura y más efectiva.

44 Allocate-on-ush. 18 POSIX. 13 Lista enlazada de unidades de almacenamiento libres. 24 Cache. 13 Seguridad. . 16 preallocate. 51 Nodos-i. 38 Buering. 37 Principio de localidad.9 ÍNDICE ALFABÉTICO 9. 12 92 Tesis de grado de ingeniería en informática. 30 FAT. 33 Algoritmo de principio de localidad en archivos asociados. 11 Mecanismo de log para mantener la consistencia en caso de falla. 30 Reducción del movimiento del brazo del disco. 33 Desfragmentación. 17 Hierarquical File System. 37 Asignación de bloques. 31 Directorios. 22 Delayed allocation. 26 HPFS. 13 Colas múltiples de reemplazo para el segundo nivel de buer-cache. 23 Fragmentación. Índice alfabético Agrupación por cilindros. 28 Lectura adelantada de bloques. 11 Mapa de bits. 41 DataBlocks. 8 Buer-cache. 10 NTFS.

54 ZFS. 15 Tablas del kernel. 28 93 Tesis de grado de ingeniería en informática. . 7 Sistemas de archivos por bitácora. 23 Tabla histórica de relaciones. 15 Sistemas de archivos virtuales.9 ÍNDICE ALFABÉTICO Sistema de archivos.

opensolaris.pdf [15]"The new ext4 lesystem: current status and future plans.plattsburgh. btrfs. Mogul.tldp.com/legacy/mac/library/documentation/mac/MoreToolbox/MoreToolbox-11.aspx [11]Johns Hopkings university. SUNY/Plattsburgh.html [17]Design algorithms for asynchronous write operations in disk-buer-cache memory.organization.10 REFERENCIAS 10. Harvard university http://www. Naperville. Yuanyuan Zhou and James F.apple. Philbin. and the others.org/HOWTO/Filesystems-HOWTO-7.pdf [16]The eects of age and fragmentation on le system performance.m.ist.cz/~jack/papers/lk2009-ext4-btrfs. Jerey C.cs.org/Ext4#head-38e6ac2b5f58f10989d72386e6f9cc2ef7217fb0 [7]http://www.com/developerworks/linux/library/l-ext4/ [8]http://hub. Illinois.edu/~legault/miniproj-736. Princeton university [20]Average seek time of a computer disk. Sistemas operativos modernos.pdf [14]"Ext4. university of California http://www. Ext3cow: A Time-Shifting File System for Regulatory Compliance http://hssl.ibm. Tanenbaum. [2]Apuntes de la materia organización de datos.pdf [12]A Fast File System for UNIX.ibm.com/developerworks/linux/library/l-anatomy-ext4/ [10]http://technet. IBM Linux Technology Center" http://kernel.cuni.com/en-us/library/cc778290(WS.org/bin/view/Community+Group+zfs/docs [9]http://www.edu/papers/AAAI-97.html [21]File Structures.jhu. . AT&T Bell Laboratories.eecs.microsoft.wisc. Digital Equipment Corporation Western Research Laboratory [19]The MultiQueue replacement algorithm for second level buer caches.html#hfs [4]http://developer.edu/~keith/research/tr94.plaza/teaching/papers/seektime.10).pdf [6]http://kernelnewbies.cs.intelligent. http://faculty. [3]http://www.edu/~zachary/papers/peterson-tos05. Referencias [1]Andrew S.cs. Leo Kuvayev university of Massachusetts" http://clgiles.psu.edu/jan. Jan Kára" http://atrey.le.pdf [13]"Intelligent methods for le system optimization.berkeley. USA [18]A Better Update Policy.html [5]http://pages.karlin.org/doc/ols/2007/ols2007v2-pages-21-34.edu/~brewer/cs262/FFS.harvard. Zoellick y Folk 94 Tesis de grado de ingeniería en informática. Computer Science Department.