Skip to content

tchimenti/TP3-ACSO-FS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabajo Práctico: Implementación de Drivers para Filesystems

Objetivo

El objetivo de este TP es desarrollar funciones para leer y analizar diferentes sistemas de archivos (FAT, EXT y NTFS) a partir de una imagen de disco.
El alumno deberá implementar la navegación por directorios, lectura de archivos y levantamiento de datos del superbloque.


Contexto técnico

Se proporciona una clase base TDriverBase que actúa como driver genérico para cualquier filesystem soportado.
El TP requiere implementar las funciones virtuales puras:

  1. LevantarDatosSuperbloque

    • Levanta los datos del superbloque y completa la estructura TDatosFS.
    • Debe soportar FAT (FAT12, FAT16, FAT32), EXT (EXT2, EXT3, EXT4) y NTFS.
  2. ListarDirectorio

    • Lista las entradas de un directorio dado un path.
    • Devuelve un vector de TEntradaDirectorio, que incluye:
      • Flags → atributos (solo lectura, oculto, sistema, directorio, comprimido, encriptado, etc.)
      • Nombre → nombre de archivo o directorio
      • Bytes → tamaño del archivo
      • FechaCreacion, FechaUltimoAcceso, FechaUltimaModificacion
      • DatosEspecificos → información particular según el filesystem (FAT, EXT o NTFS)
  3. LeerArchivo

    • Lee un archivo completo desde la imagen del disco.
    • Devuelve un buffer dinámico (malloc) y su tamaño.
    • Solo los valores son válidos si el código de retorno es CODERROR_NINGUNO.

Estructuras importantes

TDatosFS

Contiene información general del filesystem:

  • TipoFilesystem → FAT, EXT o NTFS
  • BytesPorSector, NumeroDeClusters, BytesPorCluster
  • DatosEspecificos → subestructuras para FAT (TDatosFSFAT), EXT (TDatosFSEXT) y NTFS (TDatosFSNTFS)

TEntradaDirectorio

Describe un archivo o subdirectorio:

  • Flags → atributos del archivo
  • Nombre → string del nombre
  • Bytes → tamaño en bytes
  • FechaCreacion, FechaUltimoAcceso, FechaUltimaModificacion
  • DatosEspecificos → cluster inicial (FAT), INode (EXT) o índice MFT (NTFS)

TDatosFSFAT (FAT)

  • SectoresPorCluster, SectoresReservados, CopiasFAT, EntradasRootDir, SectoresPorFAT, TotalSectores, SectoresOcultos
  • Datos calculados: ClustersRootDir, PrimerClusterRootDir

Requerimientos del TP

  1. Implementar correctamente las funciones virtuales puras de TDriverBase.
  2. Soportar los tres tipos de filesystem indicados (FAT, EXT, NTFS).
  3. Manejar errores de formato y superbloque inválido.
  4. Mantener la estructura de directorios y archivos tal como aparece en la imagen.
  5. Modularizar el código y reutilizar funciones para la navegación por clusters o grupos según el filesystem.
  6. Respetar los flags de los archivos y directorios para mostrar atributos correctamente.

Notas adicionales

  • PunteroASector(__u64 NroSector) permite acceder a un sector físico dentro de la imagen del disco.
  • Se proporciona código auxiliar para mostrar superbloque, directorio y buffers, pero la implementación de las funciones principales queda a cargo del alumno.
  • Todos los cálculos de clusters, offsets y tamaños deben considerar los bytes por sector y sectores por cluster.

Como correr los tests

  • Se provee un zip con imagenes de disco de los distintos filesystems.
  • Descompriman la carpeta bins.zip
  • Tiene un archivo ejecutable de referencia tpfs_ref. Se corre con ./tpfs_ref
  • Su implementacion tiene que devolver lo mismo que el programa de refencia.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors