jueves, 17 de enero de 2013

Organización de los datos en el disco duro. (LinEx)


El sistema de ficheros virtual en Linux (LinEX)

Un fichero es una abstracción muy importante en programación. Los ficheros sirven para almacenar datos de forma permanente y ofrecen un pequeño conjunto de primitivas muy potentes (abrir, leer, avanzar puntero, cerrar, etc.). Los ficheros se organizan normalmente en estructuras de árbol, donde los nodos intermedios son directorios capaces de agrupar otro ficheros.
El sistema de ficheros es la forma en que el sistema operativo organiza, gestiona y mantiene la jerarquía de ficheros en los dispositivos de almacenamiento, normalmente discos duros. Cada sistema operativo soporta diferentes sistemas de ficheros. Para mantener la modularización del sistema operativo y proveer a las aplicaciones con una interfaz de programación (API) uniforme, los diferentes sistemas operativos implementan una capa superior de abstracción denominada Sistema de Ficheros Virtual (VFS: Virtual File System). Esta capa de software implementa las funcionalidades comunes de los diversos sistemas de ficheros implementados en la capa inferior.
Los sistemas de ficheros soportados por Linux se clasifican en tres categorías:
  1. Basados en disco: discos duros, disquetes, CD-ROM. Estos sistemas son Ext2, ReiserFS, XFS, Ext3, UFS, ISO9660, etc.
  2. Sistemas remotos (de red): NFS, Coda, y SMB.
  3. Sistemas especiales: procfs, ramfs y devfs.
El modelo general de ficheros puede ser interpretado como orientado a objetos, donde los objetos son construcciones de software (estructura de datos y funciones y métodos asociados) de los siguientes tipos:
  • Super bloque: mantiene información relacionada a los sistemas de ficheros montados. Está representado por un bloque de control de sistema almacenado en el disco (para sistemas basados en disco).
  • i-nodo: mantiene información relacionada a un fichero individual. Cada i-nodo contiene la meta-información del fichero: propietario, grupo, fecha y hora de creación, modificación y último acceso, más un conjunto de punteros a los bloques del disco que almacenan los datos del fichero.
  • Fichero: mantiene la información relacionada a la interacción de un fichero abierto y un proceso. Este objeto existe sólo cuando un proceso interactúa con el fichero.
  • Dentry: enlaza una entrada de directorio (pathname) con su fichero correspondiente. Los objetos dentry recientemente usados son almacenados en una caché (dentry cache) para acelerar la translación desde un nombre de fichero al i-nodo correspondiente.

No hay comentarios:

Publicar un comentario