Anexo I - Otro Sistema Académico de Archivos (OSADA)

El OSADA es un filesystem creado con propósitos académicos para que el alumno se interiorice y comprenda el funcionamiento básico de la gestión de archivos en un sistema operativo asemejando características de sistemas de archivos modernos.

  • Tamaño máximo de disco soportado: 4GB

  • Tamaño máximo de archivo: 4GB

  • Soporte de directorios y subdirectorios

  • Tamaño máximo de nombre de archivo: 17 caracteres

  • Cantidad máxima de archivos/directorios: 2048

Características técnicas

  • Tamaño de bloque: 64 bytes

  • Tamaño de la tabla de archivos: 1024 bloques

  • Tabla de bloques libres: Bitmap

  • Estructura de gestión: Tabla de asignación. Bloques enlazados.

Arquitectura

Cada bloque en el sistema de archivos estará direccionado por un puntero de 4 bytes ptrOBloque permitiendo así un máximo de 2^32 bloques.

Para un disco de tamaño T [bytes] y el BLOCK_SIZE de 64 las estructuras se definen de esta manera:

Por ejemplo: si tengo un filesystem de 1,584 KB tengo 25344 bloques de 64B… ¿Cuánto ocuparía el bitmap?

Hagamos cuentas: Para representar 25344 bloques necesito 25344 bits. Esa cantidad termina resultando en 3168 bytes (Si 8 bits = 1 byte, entonces 25344 bits = 25344/8 = 3168 bytes).

3168 bytes resultan en 49.5 bloques. Como no podemos ocupar “49 bloques y medio” el bitmap ocupará 50 bloques.

El encabezado del sistema de archivos estará almacenado en el primer bloque. Contará con los siguientes campos:

Bitmap

El Bitmap, también conocido como bitvector, es un array de bits en el que cada bit identifica si el bloque ubicado en su posición se encuentra ocupado (1) o no (0).

Por ejemplo, un bitmap con este valor 000001010100 nos indicaría que los bloques 5, 7 y 9 están ocupados y los restantes libres (recordar que la primer ubicación es la 0).

Cuando necesite localizar un bloque libre, el filesystem utiliza esta estructura para encontrar uno, lo marca como ocupado y lo utiliza.

Es importante recalcar que los bloques utilizados por las estructuras administrativas deben siempre estar marcados como utilizados.

Tabla de Archivos

La tabla de archivos es un array de tamaño fijo de 2048 posiciones de estructuras de tipo osadaFile. Cada estructura osadaFile consta de los siguientes campos:

Tabla de Asignaciones

La tabla de asignaciones es una estructura que permite identificar los bloques que componen cada archivo.

Es un array de enteros donde cada posición representa un bloque de datos y el valor almacenado en dicha posición indica el próximo bloque. Para indicar que el bloque es el último del archivo, la Tabla de Asignaciones indicará el valor bandera 0xFFFFFFFF.

El bloque de inicio de cada archivo es un campo de la estructura osadaFile de la tabla de archivos. Supongamos que sabemos que un archivo empieza en el bloque 8, vamos a la posición 8 de la tabla de asignaciones y ahí nos dirá el próximo bloque (supongamos el 12) y sucesivamente.

Se ve en el diagrama a continuación que nuestro archivo está compuesto por los bloques de datos 8, 12, 13 y 15. Recuerde que los arrays comienzan en cero.

También a modo de ejemplo, si se nos indicara que un archivo empieza en el bloque 17, podríamos inferir que el archivo se compone de los bloques de datos, 17, 4 y 2

Ejemplo:

Osada Utils - Herramientas y estructuras

Se le proveerán al alumno dos herramientas para simplificar el desarrollo del trabajo práctico:

  • osada-format: Recibe como parámetro un archivo e inicializa un filesystem OSADA dentro del mismo.

  • osada-dump: Imprime por pantalla el estado de las estructuras administrativas de un filesystem OSADA.

Además, se publicarán, también, las definiciones de las estructuras básicas de un filesystem OSADA, a modo de cumplimentar la especificación. Para acceder a estos, consultar el repositorio https://github.com/sisoputnfrba/osada-utils

Ver función time()

Last updated