Diseñando e implementando mi propio sistema de ficheros

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda
De momento, este artículo está en construcción. Nada en él es fiable ni permanente

Con el objetivo de mejorar mis conocimientos de sistemas operativos y programación en C, voy a crear un sistema de ficheros.

Diseñar y, sobretodo, implementar un sistema de ficheros es algo muy duro y costoso. Sin embargo, es asequible si no importa demasiado el rendimiento, seguridad o integridad de los datos. Puesto que esto es un proyecto personal sin aspiraciones, no pretendo que funcione bien. Tampoco está claro que lo termine, ya que lo importante es la exploración.

De momento no tengo decidido el nombre final, así lo llamaremos, de momento, tre_FS

Objetivos del diseño

  • El sistema de ficheros ha de poder ser montado en Linux y ha de poder ser utilitzado por cualquier aplicación. Por lo que será compatible con el VFS.
  • El diseño general ha de ser con estructuras similares a i-nodos, aunque simplificado al máximo.
  • Debe permitir los permisos básicos UGO de Linux, ficheros regulares y directorios.
  • No puede ser usado para arrancar el sistema, sólo para guardar ficheros.

Estructura del sistema de ficheros

Visión global

Este sistema de fichero se basa en una única unidad:

  • Sector Este sector es de 512 bytes. Es la unidad mínima y todas las partes del sistema de archivos ocupan un múltiplo de 512 bytes.

Esta tabla define el diseño general del sistema de ficheros:

Sector 0 Boot sector, no usado de momento
Sector 1 Superbloque
Sector 2..n mapa de bits, tamaño variable.
Tabla de inodos Cada inodo ocupa 128 bytes.
Datos Los ficheros ocupan sectores de esta zona hasta el final del sistema de ficheros.

Enlaces

Otros sistemas: http://sourceforge.net/apps/mediawiki/fuse/index.php?title=FileSystems