Organización de archivo

Realice un cuadro comparativo entre Windows con UNIX o Linux, con los parámetros que intervienen en la administración de archivos los sistemas operativos, tales como atributos, forma de organización, forma de compartir y seguridad.



Organización de archivos

De los papeles que cumple el sistema operativo, probablemente el que más consciente tengan en general sus usuarios es el de la gestión del espacio de almacenamiento, esto es, la organización de la información en un sistema de archivos

La información cruda tiene que pasar una serie de transformaciones. Yendo de niveles superiores a los más bajos, un programa estructura sus datos en archivos, siguiendo el formato que resulte más pertinente al tipo de información a representar. Un conjunto de archivos hoy en día es típicamente representado en una estructura de directorios.

Concepto de archivo

En primer término, un archivo es un tipo de datos abstracto —esto es, podría verse como una estructura que exclusivamente permite la manipulación por medio de una interfaz orientada a objetos: los procesos en el sistema sólo pueden tener acceso a los archivos por medio de la interfaz ofrecida por el sistema operativo.

Dentro de cada volumen (cada medio de almacenamiento), los archivos disponibles conforman un directorio, y son típicamente identificados por un nombre o una ruta.

Operaciones con archivos

Borrar Elimina al archivo del directorio y, de ser procedente, libera el espacio del dispositivo

Abrir Solicita al sistema operativo verificar si el archivo existe o puede ser creado (dependiendo del modo requerido) y se cuenta con el acceso para el modo de acceso al archivo indicado y si el medio lo soporta

Cerrar Indica al sistema que el proceso en cuestión terminó de trabajar con el archivo; el sistema entonces debe escribir los buffers a disco y eliminar la entrada que representa a esta combinación archivo-proceso de las tablas activas, invalidando al descriptor de archivo.

Leer Si se solicita al sistema la lectura de un archivo hacia determinado buffer, éste copia el siguiente pedazo de información

Escribir Teniendo un archivo abierto, guarda información en él.

Reposicionar Tanto la lectura como la escritura se hacen siguiendo un apuntador, que indica cuál fue la última posición del archivo a la que acceso el proceso actual.


Tablas de archivos abiertos

Tanto el sistema operativo como cada uno de los procesos mantienen normalmente tablas de archivos abiertos. Éstas mantienen información acerca de todos los archivos actualmente abiertos, presentándolos hacia el proceso por medio de un descriptor de archivo; una vez que un archivo fue abierto, las operaciones que se realizan dentro de éste no son empleando su nombre, sino su descriptor de archivo.

Acceso concurrente: bloqueo de archivos

Los sistemas operativos multitarea implementan mecanismos de bloqueo para evitar que varios procesos intentando emplear de forma concurrente a un archivo se corrompan mutuamente.

En general, la nomenclatura que se sigue para los bloqueos es:

Compartido (Shared lock) Podría verse como equivalente a un bloqueo (o candado) para realizar lectura — varios procesos pueden adquirir al mismo tiempo un bloqueo de lectura, e indica que todos los que posean dicho candado tienen la expectativa de que el archivo no sufrirá modificaciones.

Exclusivo (Exclusive lock) Un bloqueo o candado exclusivo puede ser adquirido por un sólo proceso, e indica que realizará operaciones que modifiquen al archivo (o, si la semántica del sistema operativo permite expresarlo, a la porción del archivo que indica). Respecto al mecanismo de bloqueo, hay también dos tipos, dependiendo de qué tan explícito tiene que ser su manejo:

Mandatorio u obligatorio (Mandatory locking) Una vez que un proceso adquiere un candado obligatorio, el sistema operativo se encargará de imponer las restricciones corresponidentes de acceso a todos los demás pro.

 

Tipos de archivo

Hay tres estrategias principales para que el sistema operativo reconozca el tipo de un archivo:

Extensión En los sistemas CP/M de los setenta, el nombre de cada archivo se dividía en dos porciones, empleando como elemento separador al punto: el nombre del archivo y su extensión.

Números mágicos La alternativa que emplean los sistemas Unix es, como siempre, simple y elegante, aunque indudablemente presenta eventuales lagunas: el sistema mantiene una lista compilada de las huellas digitales de los principales formatos que debe manejar,7 para reconocer el contenido de un archivo basado en sus primeros bytes

Metadatos externos Los sistemas de archivos empleado por las Apple Macintosh desde 1984 separan en dos divisiones (forks) la información de un archivo: los datos que propiamente constituyen al archivo en cuestión son la división de datos (data fork), y la información acerca del archivo se guardan en una estructura independiente llamada división de recursos (resource fork).

 

Estructura de los archivos y métodos de acceso

La razón principal del uso de sistemas de archivos son, naturalmente, los archivos. En estos se almacena información de algún tipo, con o sin una estructura predeterminada

Transferencias orientadas a bloques

Un sistema de archivos es la representación que se da a un conjunto de archivos y directorios sobre un dispositivo de bloques, esto es, un dispositivo que, para cualquier transferencia solicitada desde o hacia él, responderá con un bloque de tamaño predefinido.


Evolución del concepto de directorio

Sistema de archivos plano

Los primeros sistemas de archivos limitaban el concepto de directorio a una representación plana de los archivos que lo conformaban, sin ningún concepto de jerarquía de directorios como el que hoy resulta natural a los usuarios. Esto se debía, en primer término, a lo limitado del espacio de almacenamiento de las primeras computadoras.

Directorios estructurados en árbol

El siguiente paso natural para este esquema es permitir una jerarquía ilimitada: en vez de exigir que haya una capa de directorios, se le puede dar la vuelta al argumento, y permitir que cada directorio pueda contener a otros archivos o directorios anidados arbitrariamente. Esto permite que cada usuario (y que el administrador del sistema) estructure su información siguiendo criterios lógicos y piense en el espacio de almacenamiento como un espacio a largo plazo.

El directorio como un grafo dirigido

En un grafo dirigido como el presentado en la figura 6.7, un mismo nodo puede tener varios directorios padre, permitiendo, por ejemplo, que un directorio de trabajo común sea parte del directorio personal de dos usuarios. Esto es, el mismo objeto está presente en más de un punto del árbol. Un sistema de archivos puede permitir la organización como un grafo dirigido, aunque es común que la interfaz que presenta al usuario11 se restrinja a un grafo dirigido acíclico: las ligas múltiples son permitidas, siempre y cuando no generen un ciclo.

La semántica de los sistemas Unix implementa directorios como grafos dirigidos por medio de dos mecanismos: Liga o enlace duro La entrada de un archivo en un directorio Unix es la relación entre la ruta del archivo y el número de i-nodo en el sistema de archivos.

Liga o enlace simbólico Es un archivo especial, que meramente indica a dónde apunta. El encargado de seguir este archivo a su destino (esto es, de resolver la liga simbólica) es el sistema operativo mismo; un proceso no tiene que hacer nada especial para seguir la liga.

Operaciones con directorios

Las operaciones básicas a presentar son:

Abrir y cerrar Como en el caso de los archivos un programa que requiera trabajar con un directorio deberá abrirlo para hacerlo, y cerrarlo cuando ya no lo requiera. Para esto, en C, se emplean las funciones opendir() y closedir(). Estas funciones trabajan asociadas a un flujo de directorio (directory stream), que funciona de forma análoga a un descriptor de archivo.

Listado de archivos Para mostrar los archivos que conforman a un directorio, una vez que se abrió el directorio se abre, el programa lee (con readdir()) cada una de sus entradas. Cada uno de los resultados es una estructura dirent (directory entry, esto es, entrada de directorio), que contiene su nombre en d_name, un apuntador a su i-nodo en d_ino, y algunos datos adicionales del archivo en cuestión.

 

Para presentar al usuario la lista de archivos que conforman un directorio, podría hacerse:

Buscar un elemento Si bien en el transcurso del uso del sistema operativo resulta una operación frecuente que el usuario solicite el listado de archivos dentro de un directorio, es mucho más frecuente buscar a un archivo en particular.

Crear, eliminar o renombrar un elemento Si bien estas operaciones se llevan a cabo sobre el directorio, son invocadas por medio de la semántica orientada a archivos: un archivo es creado con fopen(), eliminado con remove(), y renombrado con rename().

 

Montaje de directorios

Para trabajar con el contenido de un sistema de archivos, el sistema operativo tiene que montarlo: ubicarlo en algún punto del árbol de archivos visible al sistema y al usuario.

Esto puede obedecer a varias causas, entre las cuales se encuentran:

Distintos medios físicos Si la computadora tiene más de una unidad de almacenamiento, el espacio dentro de cada uno de los discos se maneja como un sistema de archivos indepentiente. Esto es especialmente cierto en la presencia de unidades removibles (CD, unidades USB, discos duros externos, etc.)

Diferentes usos esperados Como se verá más adelante, distintos esquemas de organización (esto es, distintos sistemas de archivos) presentan ventajas para diversos patrones de uso. Por ejemplo, tiene sentido que una base de datos resida sobre una organización distinta a la de los programas ejecutables (binarios) del sistema.

Abstracciones de sistemas no-físicos El sistema operativo puede presentar diversas estructuras con una estructura de sistema de archivos. El ejemplo más claro de esto es el sistema de archivos virtual /proc, presente en los sistemas Unix, que permite ver diversos aspectos de los procesos en ejecución (y, en Linux, del sistema en general).

Razones administrativas El administrador del sistema puede emplear sistemas de archivos distintos para aislar espacios de usuarios entre sí: por ejemplo, para evitar que un exceso de mensajes enviados en la bitácora (típicamente bajo /var/log) saturen al sistema de archivos principal, o para determinar patrones de uso máximo por grupos de usuarios.

Control de acceso

Hay muchos esquemas de control de acceso; a continuación se presentan tres esquemas, comenzando por el más simple, y avanzando hacia los más complejos.

Sistemas FAT

El sistema de archivos FAT19 fue diseñado a fines de los setenta, y al día de hoy es muy probablemente el sistema de archivos más ampliamente utilizado del mundo.

Oculto Si está encendido, el archivo no se deberá mostrar al usuario en listados de directorio.

Sólo lectura El sistema operativo debe evitar toda modificación al archivo, esto es, rechazar las llamadas al sistema que soliciten esta modificación.

Sistema: La carga del sistema operativo tiene que realizarse empleando código lo más compacto y sencillo posible: sin siquiera tener conocimiento del sistema de archivos.

Archivado MS-DOS incluía herramientas bastante sencillas para realizar respaldos; estas basaban su operación en este atributo: Conforme se realizaba un respaldo, todos los archivos iban siendo marcados como archivados.

Modelo tradicional Unix

El sistema Unix precede a MS-DOS por una década. Sin embargo, su concepción es de origen para un esquema multiusuario, con las provisiones necesarias para que cada uno de ellos indique qué usuarios pueden o no tener diferentes tipos de acceso a los archivos.

 

Listas de control de acceso

Una de las desventajas del modelo tradicional de usuarios Unix es que requiere de la intervención del administrador del sistema para cada nuevo proyecto: el administrador del sistema tuvo que crear al grupo factura antes de que pudiera realizarse ningún trabajo de forma colaborativa. Además, encontrar la representación justa para indicar un conjunto específico de permisos puede ser complicado. Dado que un archivo no puede pertenecer a más de un grupo, puede hacerse necesario crear conjuntos de grupos adicionales que intersectan aspectos específicos: una salida muy poco elegante.

Sistemas de archivos remotos

Uno de los principales y primeros usos que se dio a la comunicación en red fue el de compartir archivos entre computadoras independientes. En un principio, esto se realizaba de forma explícita, con transferencias manuales mediante de programas dedicados a ello, como sería hoy en día el FTP.


Sistemas de archivos




Funciones del sistema de archivos

Los usuarios deben poder crear, modificar y borrar archivos.

Nombre de los archivos

Las reglas exactas para los nombres de archivos varían de sistema a sistema. Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas, mientras que otros no.

Estructura de un archivo

“secuencia de bytes”

“secuencia de registros”

“Árbol”

Tipos de archivos

Archivos regulares

Directorios

Archivos especiales de carácter

Archivos especiales de bloque

 

Acceso a un archivo

Acceso secuencial: el proceso lee en orden todos los registros del archivo comenzando por el principio

Acceso aleatorio: el proceso puede leer los registros en cualquier orden utilizando dos métodos para determinar el punto de inicio de la lectura.

Atributos de archivo

Cada archivo tiene su nombre y datos, protección, contraseña, creador, bandera temporal.

Operaciones con archivos


Sistemas jerárquicos de directorios



Comentarios

Entradas populares de este blog

Mapa conceptual conjuntos - Mónica Erazo

Presentación Induccion

Manejo estatico de las variables en memoria