You are on page 1of 6

1

Sistema de archivos orientado a multimedia


Andrés Páez-Martı́nez
A01213800
Arturo Gómez-Chávez
A01109703
Edgar Alejandro Cabrera-Rivas
A01123471
Responsable: Mario Farias-Elinos
División de Ingenierı́a y Arquitectura, ITESM CCM

Abstract—El sistema de archivos orientado a multime- y debido a su elevado número de archivos, la


dia (Media File System o MFS)es un sistema de alma- organización debe de se flexible.
cenamiento implementado para GNU/Linux, optimizado Es por lo anterior que se buscó plantear los
para archivos grandes (contenido audiovisual) para poder
objetivos claros que querı́an alcanzarse con este
organizarlos y accederlos de manera rápida y sencilla.
sistema, los cuales se listan a continuación:
Abstract—The Multimedia Oriented File System (Media • Número alto de bytes por sector
File System or MFS) is a storage system implemented for • Soporte para un gran número de archivos y
GNU/Linux, optimized for big files (audiovisual content) so
they can be organized and accessed in a quick and simple
directorios
way. • Facilidad de organización para el usuario
• Protección de datos
Index Terms—File System, multimedia, GNU/Linux.
• Interfaz para un sistema operativo popular
(GNU/Linux)
I. I NTRODUCCI ÓN A partir de estos lineamientos se comenzó la
tarea de realizar un sistema de archivos que por

E L almacenamiento masivo de información es


una parte fundamental de la computación. Para
ello existen sistemas de archivos. El cómo se mane-
el momento no soporta una interfaz nativa con
el sistema operativo, pero que permite algunas de
las operaciones básicas más utilizadas dentro de
jen estos sistemas dependerá del tipo de información un shell de comandos: copiar, crear directorio, ver
que se quiera almacenar y la manera en la que se listado, ası́ como moverse entre directorios.
accederá a ellos; con el fin de obtener un resultado Se eligió C como lenguaje de desarrollo y
óptimo en un área, por ejemplo, rendimiento, pode- GNU/Linux como plataforma para poder realizar
mos hacer la información más sensible a pérdidas, operaciones de nivel medio sobre el volumen for-
o bien, podemos hacerlo menos sensible a fallas, mateado como MFS.
aunque con menor rendimiento. La manera en que se implementaron estas solu-
Para el caso de este proyecto se optó por pensar ciones se muestran a continuación.
en un sistema de archivos que cubrirá una de las ten-
dencias más notables en cuanto a almacenamiento: II. E STRUCTURA GENERAL
multimedia. Las librerı́as personales de música se El sistema de archivos incluye cuatro secciones
hacen cada vez mayores, ası́ como la cantidad de principales en las cuáles está distribuida la estruc-
imágenes y vı́deos que inundan nuestros discos tura para poder realizar las operaciones necesarias.
duros. Este tipo de información, por comodidad
del usuario final, es importante accederla de man- A. Encabezado
era rápida y organizada, pero siempre teniendo en El encabezado está ampliamente inspirado en el
cuenta que el tamaño de estos archivos es grande encabezado del sistema de archivos FAT[2], con un
2

tamaño de 512 bytes a partir del inicio del volumen. uno, o bien, cero para indicar que el espacio
Consta, en este orden, de los siguientes elementos. se encuentra disponible.
• DIR SALTO - 3 bytes para el salto al sector • BLOQUE SIG - 4 bytes. Este atributo es el
de arranque para una arquitectura Intel x86. que permite expandir la cantidad de archivos
• OEM ID - 8 bytes para el nombre y versión contenidos por el directorio, ya que se puede
del sistema de archivos. tener un sólo directorio fragmentado a lo largo
• NUM DIR - 1 byte para el número de copias de varios mini sectores. Este atributo es un
de la zona de directorios. apuntador al siguiente mini sector. Si no hay
• TAM DIR - 2 bytes indicando el número de fragmentación, se le asigna un valor de cero.
sectores que ocupa la zona de directorios. • ATRIBUTOS - 1 sólo byte, donde cada bit rep-
• BYTS SECTOR 1 Byte para indicar un expo- resenta una bandera de validación para distintas
nente de 2, para saber el número de bytes por propiedades del directorio, como se muestran a
cada sector. continuación:
• BYTS MINI SECTOR - 1 byte para in-
dicar,con un exponente de 2, el número de – SOLO LECTURA: 0x01
bytes por sector de la zona de directorios. – OCULTO: 0x02
• TOT SECTOR - 4 bytes para el número de – SISTEMA: 0x04
sectores para el volumen. – NOMBRE LARGO: 0x08
• MEDIA - 1 byte. Descriptor de dispositivos
Además, es posible notar que quedan bits libres
con el mismo formato que FAT.
para que alguna otra implementación sobre el
• HID SECTOR - 4 bytes. Conteo de sectores
MFS pueda tener un mayor grado de organi-
ocultos.
zación para las operaciones sobre directorios.
• VOL ID - 4 bytes para el número de serie del
• TIEMPO CR - 2 bytes. Tiempo de creación
volumen.
del directorio (se explicará más adelante el
• VOL ET - 11 bytes para la etiqueta del volu-
formato implementado).
men.
• FECHA CR - 2 bytes. Fecha en la cuál fue
• Espacio reservado - 24 bytes para posible
creado el directorio.
crecimiento futuro.
• TIEMPO ULT ACC - 2 bytes. Tiempo del
• BOOT CODE - 448 bytes para el código
último acceso al directorio.
bootstrap de arranque.
• FECHA ULT ACC - 2 bytes. Fecha de último
acceso al directorio.
B. Zona de directorios • LIGA PADRE - 4 bytes. Cada uno de los
La zona de directorios utiliza 3 sectores a partir directorios sólo puede ser apuntado por un
del boot sector. Debido a que requieren menos directorio padre. La dirección de este padre se
espacio, cada directorio ocupa lo que se definió encuentra aquı́.
como mini sector. Los directorios contienen • NUM AR - 2 bytes. Número total de archivos
un conjunto de ligas tanto a subdirectorios, que en el directorio.
se trabajan como ligas de cuatro bytes, como a • NIM DIR - 2 bytes. Número de subdirectorios
archivos, que son ligas de ocho bytes. El motivo de contenidos en el directorio.
la diferencia de tamaños es que se requiere menos • TAM BYTS - 4 bytes. Tamaño del directorio
espacio para direccionar directorios. Cada directorio (expresado en bytes).
de esta zona cuenta con el siguiente formato, en el
mismo órden en el que se presentan: Lo anterior es el encabezado del directorio.
• NOMBRE - 19 bytes para contener 16 car- Nótese que existe el atributo NOMBRE LARGO.
acteres con el nombre del archivo, además de Se tendrı́a que reservar espacio para los caracteres
3 caracteres para la extensión. La codificación sobrantes, sin embargo, dado que no siempre es
utilizada es ASCII. necesario, se puede agregar o no los siguientes
• SEC USD - 2 bytes. Número de mini sectores dos campos, inmediatamente a continuación del
ocupados por el directorio. Al menos ocupa encabezado, dependiendo si el atributo está activo:
3

• TAM NOM L - 2 bytes que indican el tamaño • BLOQUE SIG 8 bytes para apuntar al sigu-
del nombre largo. El hecho de reservar tanto iente sector. Si es 0, significa que no hay
espacio ayuda a poder tener nombres lo sufi- fragmentación.
cientemente especı́ficos como para poder orga- • ATRIBUTOS - 1 byte, siguiendo el mismo
nizar de manera fácil y personalizada nuestra esquema y especificaciones que los atributos
biblioteca multimedia. de los directorios.
• NOM L - El tamaño de este campo está es- • TIEMPO CR - 2 bytes. Tiempo en el que fue
pecificado por el atributo anterior, y contiene creado el archivo.
el resto del nombre del directorio. • FECHA CR - 2 bytes. Fecha en la cual fue
Una vez terminado el encabezado y el espacio creado el archivo.
del nombre largo (si se utilizó) se encuentran las • TIEMPO ULT ACC - 2 bytes. Tiempo de
ligas a subdirectorios y archivos (en el encabezado último acceso al archivo.
del directorio ya está establecido el número de • FECHA ULT ACC - 2 bytes. Fecha de último
ligas). Como ya se mencionó, la cantidad de ligas y acceso al archivo.
subdirectorios que un directorio puede direccionar • TIEMPO ULT ESC - 2 bytes. Tiempo en
es expandible por medio de otros mini sectores. Para el que se realizó la última escritura sobre el
evitar tener información redundante, cada contin- archivo. Notemos que una escritura implica
uación es un mini sector que contiene los siguientes modificación de contenido, mientras que un
cuatro campos: acceso puede implicar también una lectura. Por
fines de seguridad y mantener integridad de
• SEC USD - 2 bytes. Mini sectores utilizados.
información existe esta diferenciación.
• TAM BYTS - 4 bytes para contener el tamaño
• FECHA ULT ESC - 2 bytes. Fecha en la que
total en bytes.
se realizó la última escritura.
• BLOQUE SIG - 4 bytes. Apuntador en sec-
• LIGAS PADRES - 2 bytes. Número de ligas
tores a la continuación siguiente. Si es 0, quiere
padres. Como se mencionó, un archivo puede
decir que no hay más continuaciones.
estar apuntado por más de un directorio debido
• BLOQUE ANT - 4 bytes. Apuntador en sec-
a que esto permite mayor facilidad de organi-
tores a la continuación anterior.
zación. El motivo de la existencia de las ligas
Nótese que si un directorio está fragmentado, a los padres es que al remover o modificar
es posible moverse sobre él como una lista doble- un archivo, no es necesario buscar en todo el
mente ligada, con el fin de realizar operaciones más volumen las referencias al archivo, sino que se
rápidas, sobre todo si se están ejecutando constantes pueden eliminar las referencias directamente de
operaciones de acceso aleatorio. los padres.
• TAM BYTS - 8 bytes indicando el tamaño en
C. Zona de archivos bytes del directorio.
• LIGAS - 256 bytes designados para las ligas
La zona de archivos es la siguiente sección del a los padres, lo cual implica un máximo de 64
volumen. Hay dos puntos destacables a cerca de padres por archivo. Una liga con un valor de
los archivos del MFS; primero, son fácilmente ex- -1 significa un espacio disponible.
tendibles, al igual que los directorios, y segundo,
pueden ser apuntados por más de un directorio. Es
posible profundizar más en la estructura si se obser- Al igual que en la zona de directorios, los
van los atributos del encabezado de cada archivo: archivos pueden tener un nombre largo, ası́ que
dependiendo del atributo correspondiente, se puede
• NOMBRE - 19 bytes para el nombre corto,
o no reservar una zona para los caracteres extra de la
lo que implica 19 caracteres en codificación misma manera en la que se hace en la zona anterior.
ASCII, utilizando 16 para el nombre y 3 para
la extensión. Las continuaciones de los archivos fragmentados
• SEC USD - 2 bytes para indicar el número se realizan de la misma manera que los directorios,
de sectores ocupados por el archivo. Al menos con la diferencia en que cada uno de los atributos
debe ocupar uno. de los encabezados ocupa el doble de espacio.
4

D. Lista de espacios vacı́os como lo es el MP3, una canción ocupará un prome-


Esta parte del MFS es más abstracta en cuanto dio de 3MB. Una pelı́cula en calidad media ocupará
a su ubicación, pues se trata de una serie de apun- en promedio un 1GB. Es por esto que se eligió
tadores entre los sectores vacı́os. La estructura de utilizar un número de bytes por sector considerable.
datos utilizada es una lista doblemente ligada. El Esto puede traer problemas si se agregan archivos
motivo de la existencia de esta lista es poder conocer pequeños, puesto que se comienza a desperdiciar
todo el tiempo los espacios asignables para colocar mucho espacio. Por otro lado, debido a que gen-
archivos, dependiendo de su tamaño, y no tener que eralmente las bibliotecas multimedia son accesadas
hacer un recorrido entero del sistema de archivos constantemente, se reduce la fragmentación y au-
para verificar esta información. La única condición menta la velocidad de acceso, pues se tiene que
que se debe de respetar para el formato de listas hacer una menor cantidad de saltos, ya que la
ligadas en una implementación de MFS es que no información se mantiene más contigua. Otra ventaja
se puede modificar la cabeza de la lista. El formato de esto es que para archivos muy grandes, se reduce
de los espacios vacı́os es el siguiente: también el overhead producido por la suma de
cabeceras generada por la fragmentación del archivo
• SEC USD - 4 bytes para sectores utilizados.
en distintos bloques.
• BLOQUE SIG - 8 bytes que funciona como
Otro punto importante a tener en cuenta es el he-
apuntador para el siguiente sector de espacios
cho de que un mismo archivo puede estar apuntado
vacı́os. Si el valor está en 0,indica el final de
por diferentes directorios. Esto se pensó teniendo
la lista.
en cuenta que las bibliotecas multimedia pueden
• BLOQUE ANT - 8 btes para el blque anterior
llegar a ser difı́ciles de organizar, debido a la gran
de espacios vacı́os. Solo la cabeza de la lista
cantidad de formas para clasificar los archivos. Un
debe tener un valor de 0 en este campo.
ejemplo de ello son las bibliotecas de música. Si se
organizan por autor, y después se desea reproducir
E. Otros formatos un determinado género, habrı́a que cargar en RAM
la información del género dentro de los archivos y
1) Formato de ligas: Si se están leyendo las ligas
crear una serie de listas virtuales. Por otro lado, si se
en 4 bytes, un -1 indica un cambio a 8 bytes y
otra carpeta que organice nuestra música por género,
viceversa.
simplemente habrı́a que navegar por los directorios.
2) Formato de fechas:
Esto lleva a organizaciones muy personalizadas y
• Bits 0-4: Valor con el dı́a del mes, entre 1 y tan complejas como el usuario desee.
31.
• Bits 5-8: Mes del año, número entre 1 y 12.
IV. I MPLEMENTACI ÓN
• Bits 9-15: Años a partir del 2000.
Por el momento, no existe soporte para ningún
3) Formato de tiempos:
sistema operativo para integrar MFS con el explo-
• Bits 0-4: Mitad de la cantidad de segundos. rador de manera directa. No obstante, dado que el
• Bits 5-10: Valor de minutos entre 0 y 59. MFS está optimizado para volúmenes dedicados a
• Bits 11-15: valor entre 0 y 23 indicando las guardar un tipo especı́fico de información, se am-
horas. pliará, primero, sobre las consideraciones que hay
que tener en cuenta para crear una implementación
III. V ENTAJAS DEL MFS del MFS, y segundo, sobre la implementación real-
izada durante este proyecto.
Si se quiere analizar los pros y contras del MFS,
inevitablemente habrá que recalcar el objetivo del
sistema, y cuáles fueron las decisiones que implica- A. Consideraciones para implementar MFS
ban ganancia o pérdida en distintas áreas. Primero, se debe de tener en cuenta que el MFS
Primero se debe analizar la decisión respecto al está pensado para guardar archivos multimedia. Es
tamaño de los sectores. En general, los archivos capaz de soportar un código bootstrap de arranque
multimedia son archivos grandes. Incluso en un si se quiere montar un sistema operativo sobre el
formato de compresión musical de mediana calidad MFS, pero se debe tener en consideración que en un
5

sistema operativo donde muy probablemente existan • readroot : Por motivos de prueba,despliega la
una gran cantidad de archivos de configuración información contenida en el encabezado del
pequeños, o donde se guardarán documentos de MFS.
texto, entonces se comenzará a tener una pérdida • imp : Se le dan dos números enteros que
de espacio. representan rangos de memoria, e imprime el
Una mejor opción es dedicar este sistema de contenido de esos rangos. Principalmente se
archivos a dispositivos especializados en guardar utiliza para fines de prueba.
contenido multimedia, como reproductores de MP3, • cd : Para cambiar el directorio actual al direc-
o tarjetas multimedia, en dónde se aproveche el torio especificado.
espacio y se obtenga lo mejor del MFS. • printdir : Para fines de prueba, imprime un
Es importante revisar la estructura general del directorio en un determinado byte.
MFS si se quiere realizar una implementación, evi- • del : Borra el elemento que se le de como
tando por ejemplo, borrar el primer apuntador de la argumento.
lista de espacios vacı́os, no modificando las fechas, • cat : Lee el contenido de un archivo que se le
teniendo a consideración el uso de nombres largos, pase como parámetro.
etc. • copy : Se pedirá especificar entre distintos
tipos de copiado, ya que puede ser dentro del
mismo sistema de archivos, o bien, puede ser
B. Implementación realizada
un copiado desde o hacia Linux.
Para probar el MFS se utilizaron memorias Flash
USB de al menos 1GB para verificar que era
factible realizar operaciones básicas de un sistema V. P OSIBLES MEJORAS O IMPLEMENTACIONES
de archivos con la información provista por las Por supuesto, MFS tiene mucho espacio para
estructuras implementadas. El primer punto a con- mejorar, y este tipo de consideraciones son las que
siderar es que se eligió C como lenguaje por su ponen en perspectiva del potencial de este proyecto.
rapidez y capacidad de integración con el sistema Primero, dado que se trata de un producto des-
operativo, y GNU/Linux debido a que es muy tinado a usuarios finales, la facilidad de uso es
fácil realizar operaciones de bajo nivel sobre los un factor importante, por lo que tener en cuenta
volúmenes, puesto que se pueden tratar como si que puede haber una gran cantidad de usuarios
fueran archivos mientras se tengan privilegios de de diferentes regiones y que puede haber proble-
administrador. mas de decodificación con los nombres. Se puede
Se creó una aplicación sin GUI que funciona tomar como ejemplo lo realizado por el sistema de
como un bash dentro de la consola estándar, in- archivos HFS+ de apple, el cual utiliza por default
dicándonos el directorio actual dentro del MFS decodificación UNICODE[1], pero deja espacio a
sobre el cual se está operando. El principal detalle especificar dentro del volumen el tipo decodifi-
es que su ejecución requiere privilegios de admin- cación que se está usando.
istrador, puesto que se trabaja directamente sobre Otro aspecto importante que por el momento no
el directorio /dev. Se utilizaron sólo las librerı́as se encuentra implementado, es el que un directorio
estándar de C. Previo a la implementación, se debe también pueda ser apuntado por más de un direc-
de utilizar el programa “format”, el cual recibe torio. Por supuesto, se requiere tener cuidado en
como argumento la ubicación dentro de /dev del cuanto no crear problemas con las ligas cuando la
archivo que representa al volumen. Una vez hecho organización se vuelva muy compleja, pero también
esto, se puede correr la aplicación principal, la cual traerı́a ventajas al usuario para poder crear organi-
puede realiza los comandos listados a continuación: zaciones más personalizadas.
• ls/dir : Comandos para listar directorios y Quizás una de las implementaciones más atracti-
archivos contenidos dentro del directorio ac- vas, serı́a poder soportarlo de manera nativa desde
tual. algún sistema operativo, para no tener que hacerlo
• quit : Permite salir de la aplicación principal. exclusivo de volúmenes externos y poder mover
• mkdir : Crea un directorio, dándole el nombre, archivos de una manera más intuitiva. Se podrı́a
dentro del directorio actual. tener una partición dedicada y optimizada para
6

multimedia, y poder accederla desde cualquier apli-


cación para reproducireste tipo de contenidos sin
requerir librerı́as extra. Es por ello que uno de los
trabajos futuros más importantes para este proyecto
serı́a crear un módulo para el Kernel de GNU/Linux
para poder leer los volúmenes MFS de manera
nativa, como si se tratase de una partición ext2 o
ext3[3].

VI. C ONCLUSIONES
El MFS es un sistema de archivos que si bien aún
se encuentra en una etapa de desarrollo muy tem-
prana, posee los elementos para poder convertirse
en una solución viable al almacenamiento masivo
de contenidos audiovisuales, puesto que aumenta
velocidades de acceso y permite un buen grado
de organización para bibliotecas multimedia muy
grandes. Aunado a esto, el MFS podrı́a fácilmente
implementarse en dispositivos portátiles o sistemas
dedicados a la reproducción de contenidos de audio
y video.
Es importante reconocer que también tiene
muchas limitantes, sobre todo si se compara con
sistemas de archivos de uso general, como lo son el
ext2/3, el NTFS o el HFS+, que son ampliamente
utilizados en computadoras de escritorio, puesto que
el MFS no está pensando para almacenar todo tipo
de información.
Es por los motivos anteriores que se llegó a la
conclusión de que el MFS es capaz de convertirse
en un modelo de almacenamiento multimedia que
le puede traer comodidad a los usuarios que posean
gran cantidad de este tipo de información, y a los
desarrolladores que busquen crear sistemas dedica-
dos a la reproducción de contenidos digitales.

R EFERENCES
[1] Apple, Inc. Technical Note TN1150: HFS Plus Volume Format,
http://developer.apple.com/library/mac/#technotes/tn/tn1150.html,
March 05, 2004.
[2] Microsoft, Corp. FAT: General Overview of On-Disk Format,
Hardware White Paper, May 05, 1999.
[3] Anne Shepherd. The Second Extended File System (ext2fs),
Linux Kernel Internals, Fall 2001.

You might also like