sábado, 29 de noviembre de 2014

TIPOS DE ARCHIVOS.

LOS TIPOS DE ARCHIVOS.

El Sistema de Archivos

¿Qué es un archivo?

Para conocer las propiedades de un Sistema de Archivos, comencemos por definir qué es un archivo:
Con frecuencia, se define a un archivo informático, como una entidad lógica formada por un conjunto de bytes, ubicados sobre un sistema de almacenamiento (temporal o permanente), que responde a las características de unicidad, ubicación y reglas de manipulación.
  • La propiedad de unicidad de un archivo, radica en que éste es en sí mismo una entidad, con una asignación de espacio finito, susceptible de ser modificado internamente en tamaño y contenido
  • Su localización exacta, determina la existencia del mismo, incluso vacío de contenido, pero con límites de propiedad inherente al espacio físico asignado por las variables ortogonales en cuanto a su asentamiento en el soporte que lo contiene. Un fichero no puede existir sin esta cualidad.
  • Y unas reglas de manipulación. Es decir, tendrá un propietario, asignación de lecto_escritura y ejecución, compartibles/no compartibles, variables/ no variables, aspectos que podrán modificarse, de acuerdo con las reglas que puedan establecerse en la vida útil del archivo.
La función "vital" de un archivo es poder ser leído, y como tal debe de ser localizado lo más fácilmente posible dentro de la unidad de soporte que lo contiene.
Esta unidad, que puede ser un disco duro, una cinta, un CD o cualquier unidad susceptible de almacenar información, necesita un Sistema de Ficheros, para organizar la información y tener acceso a ella de forma eficiente y rápida.
No entraremos aquí en los detalles de almacenamiento volátil, o sea en memoria de semiconductores como la memoria RAM, que mantiene la información mientras dure el flujo eléctrico. Dedicaremos un apartado para esta información.
Nos centraremos en el más común, es decir, el disco duro
La denominación archivo es equivalente a fichero.
Existen archivos especiales que representan a los dispositivos físicos, existen archivos directorios, para organizar otros archivos y los archivos simples, encargados de almacenar toda la información, incluso programas. Es fácil hacerse a la idea de que existen infinidad de archivos simples.
Como definimos que toda la información que se escribe en el disco se considera un archivo, existen diferencias importantes en cuanto al contenido de los ficheros. Principalmente la que define a archivos de "texto" y los archivos binarios.
Los archivos de "texto" pueden contener documentos, memorandums, scripts, cartas, etc. y estarán escritos en código ASCII. (El código ASCII es el encargado de representar todos los caracteres del texto). Estos archivos podrán editarse y modificarse con un editor de texto tipo, vi, emacs, gedit, ..etc.
Los archivos binarios, por el contrario contienen datos no de texto, por ej: imágenes. No pueden verse con un editor. Estos archivos sólo tienen sentido para los programas que lo ejecutan. Por ej: Se escribe un programa en C, por lo tanto lo que se edita está en modo texto, pero la máquina no puede entender este lenguaje, así que debe traducirse a un lenguaje que la máquina pueda leer.
Es necesario un Compilador, o sea, un programa que convierta el modo texto a lenguaje máquina. El archivo resultante, (aquel que la máquina puede leer) se llama binario.
El programa que se queda en C, se llama Archivo fuente, o simplemente, fuente.
El programa que guarda los datos del programa en código máquina ( o sea binario), se llama ejecutable.
Más técnicamente. Los archivos de cualquier índole se almacenan en la máquina en series de bits, o sea, en código binario ( valores 0 y 1 ó activado desactivado). Estos bits se agrupan en grupos de 8 para formar 1 byte. Así, el código ASCII contiene los datos para la representación de los caracteres. Por ej:
Para la letra " A " el byte formado por 0 1 0 0 0 0 0 0 , indica que para este carácter sólo está activado el bit 7 en el byte.
Para la letra " a ", que es un carácter diferente en Unix, los bits activados son otros ---> 0 1 1 0 0 0 0 1.
El código ASCII utiliza sólo 7 bits de los 8 del byte. El octavo, localizado en el extremo izquierdo siempre se configura en 0.
Los archivos binarios también almacenan datos en bytes, pero a diferencia de los de texto, utilizan los 8 bits.

Tipos de Archivos

La letra que precede a la descripción es el indicador, o sea identifica el tipo de archivo cuando hacemos un listado de ellos con el comando ls
IdentificadorTipo de Archivo
_Archivos sencillos
dDirectorios
lVínculos simbólicos(flexible, blandos)
cDispositivos de caracteres
bDispositivos de bloques
pTuberías (pipe) con nombre (FIFO)
sSocket (conector para comunicaciones (TCP/IP)

Los archivos sencillos

Se emplean para almacenar información y datos en dispositivos de almacenamiento secundario, que por regla general es el disco duro. (obviamente, también pueden ser almacenado en cintas, memorias..etc).
Un archivo sencillo puede contener desde un programa (Java, C++, C, Perl), como imágenes, textos, sonido, gráficos, etc. En Unix/Linux no existe diferencia a la hora de clasificar estos archivos por su contenido, para el núcleo, todos son iguales, sólo es un flujo de bytes. Otra cosa es el tratamiento que hacen de los mismos las aplicaciones. Éstas sí se encargan de verificar la naturaleza de los archivos a procesar y obrar en consecuencia al contenido de los mismos.Los nombres de los archivos pueden asignarse de manera arbitraria. El nombre asociado a un archivo sólo representa una función lógica, no de dependencia física. Sólo existen unas pequeñas restricciones:
  • nombre no mayor de 255 caracteres
  • no usar meta-caracteres del SHELL
  • evitar comenzar con un número
  • tener en cuenta que un nombre comenzado con un punto, significa un archivo oculto.
Los archivos en Unix/Linux no necesitan extensión, al ser ser tratados en principio sin formato predeterminado, aunque puede hacerse como recurso referencial, con una o más extensiones que indiquen la naturaleza del contenido. Por ej: Las imágenes: .gif ; textos: .txt..etc. Aunque algunas aplicaciones necesiten de extensiones en los archivos, como algunos compiladores de C ( nombre_archivo.c), html -- para algunos navegadores web.

Los directorios

Son archivos que contienen a su vez otros archivos que a veces también pueden ser otros directorios comúnmente llamados subdirectorios. En Unix/Linux, los directorios tienen una forma determinada
número de i-nodo + nombre del directorio
El número i-nodo tiene 2 Bytes, siendo siempre un número entero.Representa el valor de un índice que opera dentro de una lista en el disco.Su propósito es facilitar la búsqueda de los archivos, ya que en la lista que forma, se almacenan características de los archivos representados, como tamaño, fecha de creación, bloque asignado, permisos, enlaces, pero no el nombre.
Físicamente, un archivo no se almacena de forma continua en el dispositivo de almacenamiento, es decir, puede estar repartido en varios bloques, (fragmentación). A diferencia de Windows, Linux tiende a la continuidad del espacio físico en el reparto de los bloques de asignación. Debido a esto, es necesario la existencia de una estructura adicional que "reúna" los distintos fragmentos del archivo para ser leído.
Ésta es la función principal de la lista de i-nodos. En todos los directorios aparecen dos ficheros ocultos representados por " . " y " .. " El primero " . " se refiere al directorio actual y el segundo " .. " al directorio padre, es decir al directorio al que cuelga en orden de jerarquía del Sistema de Ficheros. Obviamente el directorio / (root) principal, carece de este fichero oculto.

Enlaces

Es un fichero cuya función es permitir enlaces a elementos del sistema de archivos desde cualquier punto de la jerarquía del mismo.Un enlace no es más que un nombre que apunta a un determinado recurso del sistema de ficheros, físico o lógico.Dependiendo de su función los clasificamos en,
  • Fuertes o duros.Son aquellos enlaces que no se diferencian en nada del archivo original.
Debemos de entender que un fichero, es un conjunto de Bytes que ocupa una zona en algún dispositivo, y su nombre no es más que un enlace fuerte a él. Es decir, un enlace fuerte es otro nombre para un mismo fichero, ya que apunta a un inodo específico.
Todos los enlaces fuertes que apuntan a un mismo archivo, mantienen su estructura de permisos, propiedad, etc. Si creamos varios enlaces fuertes sobre un fichero, tendríamos varias copias lógicas del mismo, pero sólo existiría una copia física del mismo, ya que todos apuntan a zona "física" que es el espacio que ocupa el fichero original. Esto da como resultado que un fichero no desaparece hasta que no se borran todos los enlaces que apuntan a él. Los enlaces fuertes a un fichero se almacenan en la estructura del inodo que lo representa.
No se pueden crear enlaces fuertes a directorios ni a ficheros que estén en una partición diferente. A diferencia de los enlaces simbólicos, los enlaces fuertes no se rompen cuando se mueve uno de los archivos a otra ubicación. Con los enlaces fuertes, se mantiene un contador de enlaces en el inodo de cada archivo, de forma que, cuando el contador cae a " 0 ", se borra el inodo y los bloques de datos son liberados para su nuevo uso.De esta forma, una vez que un archivo posee un enlace fuerte, cualquier "copia" que se borre, no afecta a las demás que quedarán intactas. Por regla general, los archivos tienen un único enlace. Los directorios tendrán tantos enlaces como subdirectorios tenga.
  • Débiles o simbólicos.Son enlaces que apuntan al nombre del fichero, no a su contenido.
En el caso de borrado de un fichero original ( y lógicamente todos los enlaces fuertes asociados a él), los enlaces simbólicos quedan inconsistentes o perdidos.
Estos enlaces son articulados en Linux como ficheros independientes, conteniendo una referencia, el inodo, la cual apunta a la ubicación real del archivo. Estos enlaces usan un path_name (ruta) que puede ser absoluta, cuando comienza en " / " o relativa de acuerdo con la ubicación del enlace. Un enlace simbólico no puede moverse una vez creado porque se romperá, a diferencia de los enlaces fuertes. Otra característica es que carecen de permisos o estado por su cuenta. En su defecto usan los permisos del fichero al que apuntan.
En sí mismo, se considera que el enlace propiamente dicho tiene todos los permisos activados. La cantidad de bytes ocupados 
por el enlace es igual a la longitud de la ruta que contiene, más el carácter nulo del final.

Dispositivos de caracteres y bloques

Son archivos especiales cuya principal función es la comunicación con un dispositivo de hardware. De acuerdo con la naturaleza del hardware, se denominan de caracteres, (consola, puertos de serie etc) o de bloques, (discos, memorias, ..etc). Estos archivos pueden entenderse como puntos de unión entre el núcleo y los controladores (drivers) de dispositivos como pueden ser /dev/tty0, /dev/null, /dev/hda

Tuberías con nombre

Archivos localizados para la comunicación entre procesos, son una vía de intercambio de datos. Se gestionan mediante el método FIFO (First In-First Out), el primer byte introducido por el emisor será el primero en ser extraído por el receptor. Su comunicación es unidireccional.Este tipo de fichero es localizado mediante una ruta, como cualquier fichero normal. Puede ser borrado como cualquier archivo.
Por supuesto puede verse con el comando ls. Otra de sus características es que pueden intercomunicar procesos de especies diferentes, es decir, pueden comunicar y sincronizar procesos de la misma máquina, sin necesidad de que lo hereden por medio de la llamada fork.

Socket

Son archivos para comunicación entre procesos locales. Se pueden ver como archivos, pero no pueden ser leídos y escritos salvo por los procesos directamente relacionados con la comunicación de la que son objeto.

Atributos de los archivos

La necesidad de establecer atributos a los archivos para su operativa, es particularmente intensa en Unix/Linux. De esto deriva la seguridad del Sistema y la posibilidad del trabajo multiusuario debidamente compartimentado. Es decir, cada usuario está "protegido" en su espacio asignado dentro del Sistema. Por extensión esto también deriva en la seguridad en general, lo que hace que en Unix/Linux sea menos fácil la propagación de virus y demás código malicioso. Para ver algunos atributos del archivo vnc.conf hacemos:

No hay comentarios:

Publicar un comentario