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
Publicar un comentario