Introducción a Sistemas Operativos y al Kernel 2.6 de Linux/Capítulo 12 - Manejo de Archivos

De Wikilibros, la colección de libros de texto de contenido libre.

<-- Volver a la página principal

Manejo de Archivos[editar]

En este capítulo aprenderemos:

  • Acceso y organización de Archivos
  • Directorios
  • Compartir archivos
  • Bloqueando registros
  • Manejador secundario de información
  • El kernel de Linux y los Sistemas de Archivos VirtualesaSSasa

Introducción[editar]

Para la mayoría de las aplicaciones y para el usuario final un archivo es uno de los elementos centrales de un ordenador. Un programa es almacenado como un archivo y es ejecutado desde ese archivo. Un programa graba la información que va a ser utilizada en el futuro por algún otro usuario o programa en un archivo. Los archivos y sus estructuras son, por lo tanto, de gran importancia en nuestro estudio.

Sistemas de Archivos[editar]

Un sistema de archivos es la estructura y el medio en el cual se almacenan los archivos. Debido a su importancia, es necesario que un sistema operativo tenga la capacidad de leer, escribir, acceder y mantener la integridad de un sistema de archivos. Un sistema de archivos provee al usuario con una abstracción que le permitirá creear con facilidad coleciones de datos llamados archivos. Estas colecciones deberan tener los siguientes requisitos o propiedades:

  • Existencia a largo tiempo: Los archivos deberán ser almacenados sobre una unidad de almacenamiento y deberán permanecer allí aun cuando el usuario apague el ordenador
  • Deberan tener la capacidad de ser compartidos : Los archivos tendrán nombres que los identifique y deberán poseer permisos de acceso los cuales permitiran el compartimiento controlado entre procesos.
  • Deberán poseer una estructura definida : Dependiendo del tipo de sistema de archivos, un archivo deberá poseer una estructura definida y conveniente; permitiendo que los archivos puedan ser organizados en orden jerárquico o en cualquier otro orden para reflejar su relación con otros archivos.

El sistema de archivos como hemos dicho, posee una abtracción que permite realizar varias operaciones sobre los archivos. Entre estas operaciones tenemos:

  • Crear un archivo: El usuario o un proceso podrá crear un nuevo archivo el cual tomará una posición dentro de la estructura del sistema de archivos
  • Borrar un archivo: Un archivo podrá ser borrado de la estructura.
  • Abrir un archivo: Un proceso podrá abrir un archivo permitiendo el acceso a la información contenida por dicho archivo. El proceso podrá ejecutar varias funciones sobre la información del archivo como leer, escribir, reemplazar, etc.
  • Cerrar un archivo : Un proceso puede cerrar el archivo dejando atrás los privilegios de acceder a dicho archivo.
  • Leer : Un proceso podrá leer parte de la información contenida en un archivo
  • Escribir: Un proceso podrá añadir o reemplazar información en un archivo.

Los sistemas de archivos también mantienen una estructura de atributos asociada con cada uno de los archivos la cual provee información sobre la situación actual de un archivo, quien es su dueño, el tamaño del archivo, cuando fue creado, cuando fue modificado, privilegios de acceso, entre otros.

La estructura de un archivo[editar]

Un archivo está compuesto de campos y registros.

Los campos son la estructura de datos más básica. Un campo contiene un solo valor como el nombre de un empleado, una fecha, etc. Los campos se caracterízan por el tamaño del tipo de dato (Por ejemplo: el tamaño de una cadena de letras, un decimal, etc). Dependiendo del diseño de la estructura de archivos, un campo puede tener un tamaño definido o un tamaño variable. En el caso de que el campo tenga un tamaño variable, un campo consiste de dos o tres sub-campos que almacenan: el valor que va a ser almacenado, el nombre del campo, y a veces el tamaño de dicho valor.

La unión de varios campos que se relacionan entre si se lo conoce como un registro. Un registro puede ser tratado como una unidad por alguna aplicación. Por ejemplo el registro de un empleado puede contener ciertos campos que contienen información como el nombre del empleado, apellido, dirección domiciliaria, posicion, etc. Un registro al igual que un campo puede ser de tamaño fijo o variable

La unión de varios registros de una clase similar conforman un archivo. Un archivo es considerado por usuarios y programas como una entidad. Un archivo puede ser asociado con un nombre de archivo y a este nivel se pueden aplicar varias propiedades como permisos de acceso, modificacion, etc. En algunos sistemas, los permisos de acceso están al nivel de los campos y registros.

Una base de datos es una collección de datos que se relacionan entre si. Esta puede contener toda la información relacionada con una entidad o un poryecto. La relación que que existe entre los elementos que componen la base de datos es explícita. La base de datos en si consiste de uno o mas tipos de archivos.

Existen varias operaciones para que los usuarios y las aplicaciones puedan hacer uso de los archivos. Entre estas operaciones tenemos:

  • Obtener todo : Obtener todos los registros de un archivo. Esta operación puede ser utilizada para procesar toda la información de un archivo a la vez. Como por ejemplo cuando se desea hacer un resumen del contenido del archivo. esta operacion es usualmente asociada con el termino proceso secuencial ya que todos los registros son accedidos en forma secuencial.
  • Obtener uno : Esta operación, como su nombre lo indica, obtiene un registro a la vez. Esta operación es utilizada por aplicaciones que están orientadas al manejo de registros.
  • Obtener siguiente : Esta operación obtiene el registro siguiente que se encuentra en una secuencia lógica.
  • Obtener anterior: Esta operación obtiene el registro anterior que se encuentra en una secuencia lógica.
  • Insertar uno: Inserta un registro en un archivo, se puede especificar la posición que se desea.
  • Borrar uno: Borra un registro en un archivo.
  • Actualizar uno: Actualiza de alguna manera un registro en un archivo
  • Obtener algunos: Obtiene algunos registros que cumplan con ciertos requisitos. Por ejemplo en un archivo con los nombres de todos los alumnos de un curso deseamos obtener los solo los alumnos cuyo apellido empiece con la letra "A".

La organización de un archivo dependerá de las operaciones que se utilicen.

Los archivos en Linux[editar]

Para nuestro estudio del kernel de Linux, debemos tener presente que los archivos en Linux o Unix carecen de una estructura definida y no se dividen en archivos de texto y binarios, como en Windows. Un archivo no posee campos ni registros, más bien es una simple secuencia de bytes.

Sistemas de Manejo de Archivos[editar]

Para hacer el acceso y manipulación de archivos algo abstracto y consistente, se ha creado lo que se conoce como el Sistema de Manejo de Archivos (SMA). De esta forma el usuario no debe preocuparse de la estructura interna que un Sistema de Archivos posea simplemente tiene que hacer uso de ciertas funciones u operaciones que el SMA proporcione y el SMA se encargará de proporcionar la funcionalidad con el Sistema de Archivos.

Los objetivos de un Sistema de Manejo de Archivos son los siguientes:

  • Cubrir con los requisitos que un usuario tenga para el manejo de datos.
  • Garantizar la validez de los datos
  • Optimizar el rendimiento
  • Dar soporte a una amplia variedad de dispositivos
  • Minimizar al máximo la perdida de datos
  • Proporcionar una interfáz estándar para rutinas de I/O
  • Proporcionar soporte para varios usuarios

Los requisitos que un usuario tiene para el manejo de datos varía de acuerdo con el sistema operativo, pero existe algunos requerimientos básicos como son:

  • Crear, leer, borrar y cambiar archivos
  • Controlar el acceso a la información
  • Estructurar el archivo como más sea apropiado
  • Tener la capacidad de mover información entre archivos
  • Proporcionar un tipo de almacenamiento de seguridad y recuperación de archivos
  • Tener una referencia a travez de un nombre simbólico

Sistemas de Manejo de Archivos en Linux[editar]

El sistema de manejo de archivos en Linux por otra parte es moderno y nos permite acceder a la información de una forma abstracta con una interfaz virtual. Es por ello que toma el nombre de Sistema de Archivos Virtual (VFS). En Linux como se sabrá existen varios tipos de sistemas de archvios como Ext2, Ext3, reiserfs, xfs, etc. los cuales tienen la capacidad de ser accedidos por el sistema operativo siempre haciendo uso de las mismas funciones a pesar de que tengan diferentes funciones internamente. Este sistema de abstracción hace que Linux pueda acceder a muchos tipos de sistemas de archivos de una forma simple sin que el usuario o los procesos se den cuenta del tipo de Sistema de Archivos que se está usando.

Más adelante continuaremos con nuestro estudio del sistema de Archivos Virtual de Linux.