PORTAFOLIO DE INTRODUCCION A LA PROGRAMACION
  Estructura de Directorios
 

La imagen mental que tenemos de Sistema de Ficheros, es que cada fichero del sistema está almacenado, decimos que "pertenece" a un Directorio, aunque esta es una consideración de tipo lógico. En realidad, en el nivel físico, un directorio es un fichero como todos los demás, aunque con una estructura un tanto especial y con una marca que lo identifica como directorio frente al SO.  Por supuesto, los detalles de esta arquitectura son distintos según el Sistema de Ficheros de que se trate, pero en este caso, para seguir con nuestro estudio nos ceñiremos al detalle de los sistemas FAT

 

Los datos de este fichero especial (directorio) constituyen una tabla con información de los ficheros que contiene (algunos de los cuales pueden ser a su vez directorios).  Cada entrada de esta tabla ocupa 32 bytes, y como dijimos, incluye el número de cluster donde comienza cada fichero; su tamaño, y otros datos.  Su estructura interna de estas entradas es como sigue:

 
  • Nombre y extensión de fichero:  Este es el tradicional nombre de 11 caracteres del DOS; el tradicional 8 + 3 (el punto no se almacena realmente, está implícito y los nombres largos utilizan una estructura especial ).  El nombre de fichero se utiliza también para indicar si el fichero es válido o está borrado. En este último caso el primer carácter del nombre es sustituido por el valor E5h (si ha utilizado una herramienta de recuperación de ficheros borrados, recordará que el primer carácter del nombre aparece sustituido por un carácter especial. Por ejemplo, una interrogación, que tendrá que ser sustituida por el carácter original)

    Nota:  Al igual que ocurre con los identificadores (nombres) de las variables en los lenguajes de programación, dependiendo del sistema de ficheros, los nombres de fichero están sujetos a ciertas limitaciones.  Por ejemplo, en DOS, aparte de la limitación de longitud 8+3 antes señalada, el nombre de un fichero o directorio no puede contener ninguno de los siguientes caracteres:

                     / : *  ? " < > |
  • Byte de atributo de fichero:  El "atributo" es una consideración especial que hace el SO a los ficheros para conferir determinadas propiedades o características a las entidades lógicas de almacenamiento (sean ficheros u otros directorios) que a su vez, determinan la forma en que serán tratadas por el SO.  Cada atributo está representado por un bit.  Como cada bit solo puede tener dos valores cierto/falso, el atributo solo puede indicar si la entidad lo posee o no.  Los sistemas FAT distinguen 6 posibilidades para cada entidad:

     

    • 00000001  Solo lectura ("Read only").  Signifca que la entidad (fichero) no puede ser modificada, borrada o movida.  Generalmente se utiliza como una medida de protección para que el fichero no pueda ser borrado (quizás inadvertidamente) o modificado.
    • 00000010  Oculto ("Hidden"). Se utiliza para identificar entidades que en principio, no serán mostradas en pantalla o listados (como una forma de protección) aunque se puede indicar al Sistema que las muestre. Generalmente se refieren a entidades del SO cuya existencia no concierne al usuario.
    • 00000100  De Sistema ("System").  Se utiliza para señalar entidades relacionadas con el Sistema Operativo, por ejemplo, IO.SYS o MSDOS.SYS

    • Nota:  Los nombres largos de fichero LNF (long filename) son una ampliación de las posibilidades iniciales de MS-DOS y Windows 3.x que se limitaban a nombres con un máximo de 8 caracteres seguidos de un punto y una terminación o "apellido" de tres caracteres, utilizada generalmente para señalar el tipo de fichero.  Windows 95 permite nombres de hasta 255 caracteres, incluso algunos que inicialmente no estaban permitidos: Signo más, coma, punto y coma, igual, paréntesis cuadrados derecho e izquierdo, mayúsculas y minúsculas (los LFN usan el juego de caracteres Unicode). Ya que inicialmente no estaban previstos y además el sistema debía ser compatible con las últimas versiones de DOS, el sistema FAT-32 recurre a unas entradas especiales, que sirven exclusivamente para este fin, y que utilizan una combinación única de atributos: oculto + solo lectura + sistema.
      • 00010000  Directorio ("Directory"). Se utiliza para señalar que la entidad es un directorio.
      • 00100000  Archivo ("Archive"). Este atributo se utiliza para identificar los ficheros que han cambiado desde la última copia de seguridad ("Back up").  Si el fichero es modificado, este bit se pone a "1" y es devuelto a "0" por el software de back-up.
    00001000  Nombre de volumen ("Volume label").  Este atributo identifica una entidad que contiene el nombre de un volumen lógico.  Se utiliza porque al dividir un disco físico en dos o mas volúmenes lógicos, el SO automáticamente les asigna a cada uno una letra, pero el usuario puede desear una identificación más descriptiva, para lo que es apropiado el nombre de volumen.  Cuando este atributo está activado, los otros atributos (sistema, oculto y solo lectura) no tienen sentido, de modo que están desactivados.
  • Fecha y hora de última modificación:  Es un conjunto de bytes que indican de forma codificada, la fecha en que el fichero fue creado o modificado por última vez.
  • Tamaño: Tamaño del fichero en bytes.
  • Dirección del cluster inicial del fichero:  El número del primer cluster del fichero (o directorio). De esta forma, el SO puede dirigirse a la tabla FAT para conseguir la totalidad del fichero.

    El intríngulis para comprender el mecanismo utilizado, estriba en conocer que, en base a este número al que llamaremos n1, el SO puede leer (traer a memoria) el contenido del cluster (que es perfectamente localizable por su número).  Este sería el primer trozo del fichero.  A continuación se dirige a la tabla FAT y lee la entrada n1 (hay una entrada por cada cluster del área de datos).  El contenido de esta entrada (12, 16 o 32 bits según la FAT utilizada) señala el número del siguiente cluster del fichero.  A este nuevo valor lo llamaremos n2.  Se lee el cluster n2 y este sería el segundo trozo del fichero.  A continuación se consulta en la tabla FAT la entrada n2, cuyo contenido, al que llamaremos n3, indica cual es el cluster que contiene al tercer trozo.  El proceso se repite indefinidamente hasta que al consultar una nueva entrada en la tabla FAT, a la que llamaremos nf, su contenido es un número especial (reservado) que no señala un nuevo cluster sino que se ha llegado al final del fichero.
 

A fin de que pueda recorrerse la estructura en sentido ascendente (de las ramas al tronco), demás de la información anterior, existen dos entradas en la tabla que contiene la dirección de inicio del propio directorio y de su contenedor (su padre).  Se denominan punto (.) y doble punto (..) respectivamente, y se utilizan exclusivamente para navegación.   Por ejemplo, chdir ..

 
  Hoy habia 16 visitantes (24 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis