Funciones del Sistema de Archivos
Los usuarios deben poder crear,
modificar y borrar archivos. Se deben poder compartir los
archivos de una manera cuidadosamente controlada.
El mecanismo encargado de
compartir los archivos debe proporcionar varios tipos de acceso controlado:
• Ej.: “Acceso de
Lectura”, “Acceso de Escritura”, “Acceso de Ejecución”, varias combinaciones de
estos, etc.
Se debe poder
estructurar los archivos de la manera más apropiada a cada aplicación.
Los usuarios
deben poder ordenar la transferencia de información entre archivos.
Se deben
proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse
contra:
• La
pérdida accidental de información.
• La
destrucción maliciosa de información.
Se debe poder
referenciar a los archivos mediante “Nombres Simbólicos”, brindando
“Independencia de Dispositivos”.
En ambientes
sensibles, el sistema de archivos debe proporcionar posibilidades de “Cifrado”
y “Descifrado”.
El sistema de archivos debe
brindar una interfase favorable al usuario:
• Debe suministrar
una “visión lógica” de los datos y de las funciones que serán ejecutadas, en
vez de una “visión física”.
• El
usuario no debe tener que preocuparse por:
o Los
dispositivos particulares.
o Dónde
serán almacenados los datos.
o El
formato de los datos en los dispositivos.
o Los
medios físicos de la transferencia de datos hacia y desde los dispositivos.
El Sistema de Archivos
Un “Archivo”
es un conjunto de registros relacionados
El “Sistema de
Archivos” es un componente importante de un S. O. y suele contener
• “Métodos
de acceso” relacionados con la manera de acceder a los datos almacenados en archivos.
• “Administración de
archivos” referida a la provisión de mecanismos para que los archivos sean
almacenados, referenciados, compartidos y asegurados.
• “Administración
del almacenamiento auxiliar” para la asignación de espacio a los archivos en
los dispositivos de almacenamiento secundario.
• “Integridad
del archivo” para garantizar la integridad de la información del archivo.
El sistema de
archivos está relacionado especialmente con la administración del espacio de
almacenamiento secundario, fundamentalmente con el almacenamiento de disco.
Una forma de
organización de un sistema de archivos puede ser la siguiente:
• Se
utiliza una “raíz ” para indicar en qué parte del disco comienza el “directorio
raíz ”.
• El
“directorio raíz ” apunta a los “directorios de usuarios”.
• Un
“directorio de usuario” contiene una entrada para cada uno de los archivos del
usuario.
• Cada
entrada de archivo apunta al lugar del disco donde está almacenado el archivo referenciado.
Los nombres de
archivos solo necesitan ser únicos dentro de un directorio de usuario dado.
El nombre del
sistema para un archivo dado debe ser único para el sistema de archivos.
En sistemas de
archivo “jerárquicos” el nombre del sistema para un archivo suele estar formado
como el “nombre de la trayectoria” del directorio raíz al archivo.
Rutas y nombre de archivos
En los sistemas de archivos
jerárquicos, usualmente, se declara la ubicación precisa de un archivo con una
cadena de texto llamada ruta(path, en inglés).
La nomenclatura para rutas varía
ligeramente de sistema en sistema, pero mantienen por lo general una misma
estructura. Una ruta viene dada por una sucesión
de nombres de directorios y
subdirectorios, ordenados jerárquicamente de izquierda a derecha y separados
por algún carácter especial que suele ser una barra diagonal
(/) o barra diagonal invertida (\) y puede
terminar en el nombre de un archivo presente en la última rama de directorios
especificada.
Un sistema de archivos son los
métodos y estructuras de datos que un sistema operativo utiliza para seguir la
pista de los archivos de un disco o partición; es decir, es la manera en la que
se organizan los archivos en el disco. El término también es utilizado para
referirse a una partición o disco que se está utilizando para almacenamiento, o
el tipo del sistema de archivos que utiliza. Así uno puede decir “tengo dos
sistemas de archivo” refiriéndose a que tiene dos particiones en las que
almacenar archivos, o que uno utiliza el sistema de “archivos extendido”,
refiriéndose al tipo del sistema de archivos.
La diferencia entre un disco o partición
y el sistema de archivos que contiene es importante. Unos pocos programas
(incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan
directamente en los sectores crudos del disco o partición; si hay un archivo de
sistema existente allí será destruido o corrompido severamente. La mayoría de
programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán
una partición que no contenga uno (o que contenga uno del tipo equivocado).
Antes de que una partición o
disco sea utilizada como un sistema de archivos, necesita ser iniciada, y las
estructura de datos necesitan escribirse al disco.
Ejemplo de 'ruta' en un sistema Unix
Así, por ejemplo, en un sistema
tipo Unix como GNU/Linux, la ruta para la canción llamada "La
canción.ogg" del usuario "Fulano" sería algo como:
/home/Fulano/Mi música/La
canción.ogg
donde:
• /
representa el directorio raíz donde está montado todo el sistema de archivos.
• home/Fulano/Mi
música/ es la ruta del archivo.
• La
canción.ogg es el nombre del archivo que se establece como único.
Sistemas de archivos soportados por Linux
Linux soporta una gran cantidad
de tipos diferentes de sistemas de archivos. Para nuestros propósitos los más
importantes son:
minix
El más antiguo y supuestamente el
más fiable, pero muy limitado en características (algunas marcas de tiempo se
pierden, 30 caracteres de longitud máxima para los nombres de los archivos) y
restringido en capacidad (como mucho 64 MB de tamaño por sistema de archivos).
xia
Una versión modificada del
sistema de archivos minix que eleva los límites de nombres de archivos y tamaño
del sistema de archivos, pero por otro lado no introduce características
nuevas. No es muy popular, pero se ha verificado que funciona muy bien.
ext3
El sistema de archivos ext3 posee
todas las propiedades del sistema de archivos ext2. La diferencia es que se ha
añadido una bitácora (journaling). Esto mejora el rendimiento y el tiempo de
recuperación en el caso de una caída del sistema. Se ha vuelto más popular que
el ext2.
ext2
El sistema de archivos nativo
Linux que posee la mayor cantidad de características. Está diseñado para ser
compatible con diseños futuros, así que las nuevas versiones del código del
sistema de archivos no necesitará rehacer los sistemas de archivos existentes.
ext
Una versión antigua de ext2 que
no es compatible en el futuro. Casi nunca se utiliza en instalaciones nuevas, y
la mayoría de la gente que lo utilizaba han migrado sus sistemas de archivos al
tipo ext2.
reiserfs
Un sistema de archivos más
robusto. Se utiliza una bitácora que provoca que la pérdida de datos sea menos
frecuente. La bitácora es un mecanismo que lleva un registro por cada
transacción que se va a realizar, o que ha sido realizada. Esto permite al
sistema de archivos reconstruirse por sí sólo fácilmente tras un daño
ocasionado,
por ejemplo, por cierres del
sistema inadecuados.
Adicionalmente, existe soporte
para sistemas de archivos adicionales ajenos, para facilitar el intercambio de
archivos con otros sistemas operativos. Estos sistemas de archivos ajenos
funcionan exactamente como los propios, excepto que pueden carecer de
características usuales UNIX , o tienen curiosas limitaciones, u otros
inconvenientes.
msdos
Compatibilidad con el sistema de
archivos FAT de MS-DOS (y OS/2 y Windows NT).
umsdos
Extiende el dispositivo de
sistema de archivos msdos en Linux para obtener nombres de archivo largos,
propietarios, permisos, enlaces, y archivos de dispositivo. Esto permite que un
sistema de archivos msdos normal pueda utilizarse como si fuera de Linux,
eliminando por tanto la necesidad de una partición independiente para Linux.
vfat
Esta es una extensión del sistema
de archivos FAT conocida como FAT32. Soporta tamaños de discos mayores que FAT.
La mayoría de discos con MS Windows son vfat.
iso9660
El sistema de archivos estándar
del CD-ROM; la extensión popular Rock Ridge del estándar del CD-ROM que permite
nombres de archivo más largos se soporta de forma automática.
nfs
Un sistema de archivos de red que
permite compartir un sistema de archivos entre varios ordenadores para permitir
fácil acceso a los archivos de todos ellos.
smbfs
Un sistema de archivos que
permite compartir un sistema de archivos con un ordenador MS Windows. Es
compatible con los protocolos para compartir archivos de Windows.
hpfs
El sistema de archivos de OS/2.
sysv
EL sistema de archivos de Xenix,
Coherent y SystemV/386..
La elección del sistema de
archivos a utilizar depende de la situación. Si la compatibilidad o alguna otra
razón hace necesario uno de los sistemas de archivos no nativos, entonces hay
que utilizar ése. Si se puede elegir libremente, entonces lo más inteligente
sería utilizar ext3, puesto que tiene todas las características de ext2, y es un sistema de archivos con bitácora.
Existe también el sistema de
archivos proc, generalmente accesible desde el directorio /proc, que en
realidad no es un sistema de archivos, aún cuando lo parece. El sistema de
archivos proc facilita acceder a ciertas estructura de datos del núcleo, como
la lista de procesos (de ahí el nombre). Hace que estas estructuras de datos
parezcan un sistema de archivos, y que el sistema de archivos pueda ser
manipulado con las herramientas de archivos habituales.
Por ejemplo, para
obtener una lista de todos los procesos se puede utilizar el comando
$ ls -l /proc
total 0
dr-xr-xr-x
4 root root 0 Jan 31 20:37 1
dr-xr-xr-x
4 liw users 0 Jan 31 20:37 63
dr-xr-xr-x
4 liw users 0 Jan 31 20:37 94
dr-xr-xr-x
4 liw users 0 Jan 31 20:37 95
dr-xr-xr-x
4 root users 0 Jan 31 20:37 98
dr-xr-xr-x
4 liw users 0 Jan 31 20:37 99
-r--r--r--
1 root root 0 Jan 31 20:37 devices
-r--r--r--
1 root root 0 Jan 31 20:37 dma
-r--r--r--
1 root root 0 Jan 31 20:37 filesystems
-r--r--r--
1 root root 0 Jan 31 20:37 interrupts
-r--------
1 root root 8654848 Jan 31 20:37 kcore
-r--r--r--
1 root root 0 Jan 31 11:50 kmsg
-r--r--r--
1 root root 0 Jan 31 20:37 ksyms
-r--r--r--
1 root root 0 Jan 31 11:51 loadavg
-r--r--r--
1 root root 0 Jan 31 20:37 meminfo
-r--r--r--
1 root root 0 Jan 31 20:37 modules
dr-xr-xr-x
2 root root 0 Jan 31 20:37 net
dr-xr-xr-x
4 root root 0 Jan 31 20:37 self
-r--r--r--
1 root root 0 Jan 31 20:37 stat
-r--r--r--
1 root root 0 Jan 31 20:37 uptime
-r--r--r--
1 root root 0 Jan 31 20:37
version$
(Puede haber no obstante algunos
archivos adicionales que no correspondan con ningún proceso. El ejemplo
anterior se ha recortado.)
Tenga en cuenta que aunque se
llame sistema de archivos, ninguna parte del sistema de archivos proc toca el
disco. Existe tan sólo en la imaginación del núcleo.
Cuando alguien intenta echar un
vistazo a alguna parte del sistema de archivos proc, el núcleo hace que parezca
como si esa parte existiera en alguna parte, aunque no lo haga. Así, aunque
exista un archivo /proc/kcore de muchos megabytes, no quita espacio del disco.
Ejemplo de 'ruta' en un sistema Windows
Un ejemplo análogo en un sistema
de archivos de Windows (específicamente en Windows 8) se vería como:
C:\Users\Fulano\Music\canción.mp3
donde:
• C:
es la unidad de almacenamiento en la que se encuentra el archivo.
• \Users\Fulano\Music\
es la ruta del archivo.
• canción
es el nombre del archivo.
• .mp3 es la
extensión del archivo, este elemento (parte del nombre) es especialmente
relevante en los sistemas Microsoft Windows, porque sirve para identificar qué
tipo de archivo es y la aplicación que está asociada con el archivo en
cuestión, es decir, con qué programa se puede abrir y leer, editar o reproducir
el archivo. Para la mayoría de los sistemas operativos modernos la extensión
del archivo es un complemento burocrático solo útil para la observación del
usuario, ya que los entornos de administración de archivos y aplicaciones
varias, analizan la información contenida en el principio del interior del
archivo (MIME headers) para determinar su función o asociación, la cual
normalmente está catalogada en la tabla MIME Content-Type en el sistema.
El sistema
Windows permite ocultar la extensión de los archivos si el usuario lo desea, de
no hacerlo la extensión aparece en los nombres de todos los archivos. En el
sistema operativo Windows XP, si el usuario cambia la extensión de un archivo,
el archivo puede quedar inutilizable si la nueva extensión lo asocia a un
programa que no tenga la capacidad de editar o reproducir ese tipo de archivo.
Algunos usuarios igual habilitan la visualización de las extensiones en los sistemas
Windows como medida de precaución para evitar virus que utilicen íconos o
nombres parecidos a los archivos personales del usuario, ya que la extensión permite
identificar a los ficheros .EXE (ejecutables en Windows).
Operaciones con Archivos
Las llamadas
más comunes al sistema relacionadas con los archivos son :
• Create
(crear): el archivo se crea sin datos.
• Delete (eliminar):
si el archivo ya no es necesario debe eliminarse para liberar espacio en disco.
Ciertos S. O. eliminan automáticamente un archivo no
utilizado
durante “n” días.
• Open (abrir):
antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir
que el sistema traslade los atributos y la lista de direcciones
en
disco a la memoria principal para un rápido acceso en llamadas posteriores.
• Close (cerrar):
cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la
tabla
de espacio interno.
• Read (leer): los
datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.
• Write (escribir):
los datos se escriben en el archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado de registros) o no
(actualización
de registros).
• Append
(añadir): es una forma restringida de “write”. Solo puede añadir datos al final
del archivo.
• Seek (buscar):
especifica el punto donde posicionarse. Cambia la posición del apuntador a la posición activa en cierto lugar del archivo.
• Get
attributes (obtener atributos): permite a los procesos obtener los atributos
del archivo.
• Set attributes
(establecer atributos): algunos atributos pueden ser determinados por el
usuario y modificados luego de la creación del archivo.
La
información relativa al modo de protección y la mayoría de las banderas son un
ejemplo obvio.
• Rename
(cambiar de nombre): permite modificar el nombre de un archivo ya existente.




