Professional Documents
Culture Documents
1. Introduccin
2. Concepto de archivo
2.1.
. . . . . . . . . . . . . . . . . . . . . .
2.2.
. . . . . . . . . . . . . . . . . . . . .
2.3.
2.4.
Tipos de archivo
2.5.
. . . . . . . . . .
10
2.6.
13
. . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Organizacin de archivos
directorio
3.1.
3.2.
3.3.
Montaje
13
. . . . . . . . . . . . . . . .
13
. . . . . . . . . . . . . . . . . . . . .
18
de directorios . . . . . . . . . . . . . . . . . . . . . . . .
21
23
4.1.
24
4.2.
. . . . . . . . . . . . . . .
25
4.3.
26
5. Otros recursos
1.
28
Introduccin
De los roles que cumple el sistema operativo, probablemente el que ms
sistema de
archivos. Al da de hoy, todos los usuarios de equipo de cmputo dan por sentado
almacenamiento, esto es, la organizacin de la informacin en un
un
sistemas de archivos
es una de las
Figura 1:
La informacin
cruda
directorios,1 .
Existen otros mecanismos para su organizacin, pero estos no estn tan ampliamente
difundidos
1
Cuando un sistema opera con ms de un dispositivo fsico, existen principalmente dos mecanismos para integrar a dichos dispositivos en un
archivos virtual,2
sistema de
archivos son una estructura meramente lgica; deben ser convertidos para ser
representados en un
dispositivo de bloques
??.
2.
Concepto de archivo
En primer trmino, un archivo es un
Esto es,
orientada a objetos :
pueden tener acceso a los archivos por medio de la interfaz ofrecida por el sistema
operativo.
potencialmente disponible.
volmen (cada medio de almacenamiento), los archivos
disponibles conforman a un directorio, y son tpicamente identicados por un
nombre o una ruta. Ms adelante se presentarn de las diferentes construcciones
existencia fuera de saber que est
Dentro de cada
2.1.
Cada sistema operativo denir la interfaz de archivos acorde con su semntica, pero en lneas generales, las operaciones que siempre estarn disponibles
con un archivo son:
Borrar
del dispositivo
Abrir
fopen().
descriptor de archivo
Cerrar
el proceso en cuestin
el archivo; el sistema entonces debe escribir los buers a disco y eliminar la entrada que representa a esta combinacin archivo-proceso de las
tablas activas, invalidando al
descriptor de archivo se usa
descriptor de archivo.
En C, para cerrar un
fclose().
Dado que todas las operaciones se realizan a travs del descriptor de archivo, si un proceso cierra un archivo y requiere seguir utilizndolo, tendr
que abrirlo de nuevo para obtener un nuevo descriptor.
Leer
pedazo
pedazo
continuar
secuencial.
La funcin que implementa la lectura en C es
que
fread()
entrega el
nmero de caracteres
fread().
Cabe mencionar
con lneas de texto hace falta trabajar con bibliotecas que implementen
esta funcionalidad, como
Escribir
readline.
truncando
agregando
fwrite().
Reposicionar
tador,
apun-
que indica cul fue la ltima posicin del archivo a la que acces
saltar
a otro
fseek().
Hay varias otras operaciones comunes que pueden implementarse con llamadas compuestas a estas operaciones (por ejemplo,
implementarse como
crear
copiar
un archivo puede
leyendo
de ste y
escribiendo
al nuevo hasta
unidad de cinta,
dentro de la cual la
2.2.
Tanto el sistema operativo como cada uno de los procesos mantienen normalmente
descriptor de archivo ; una vez que un archivo fue abierto, las operaciones que
desmontar
una particin (por ejemplo, para expulsar una unidad removible) o eliminar un archivo, el sistema debe poder determinar cundo es momento
de declarar la solicitud como
efectuada.
desaparezca
de su
visin.
Modos de acceso
Ubicacin en disco
da proceso tenga que consultar las tablas en disco para encontrar al archivo, o cada uno de sus fragmentos.
Informacin de bloqueo
Descriptor de archivo
Permisos
es igual a los permisos que tiene el archivo en cuestin en disco, sino que
el
subconjunto
2.3.
tiempo un bloqueo de lectura, e indica que todos los que posean dicho
candado
4 No slo los archivos reciben descriptores de archivo. Por ejemplo, en todos los principales
sistemas operativos, los descriptores 0, 1 y 2 estn relacionados a ujos de datos : respectivamente, la entrada estndar (STDIN), la salida estndar (STDOUT) y el error estndar (STDERR);
si el usuario no lo indica de otro modo, la terminal desde donde fue ejecutado el proceso.
6
porcin
Respecto al
mecanismo
cada uno
dicho bloqueo.
Haciendo un paralelo con los mecanismos presentados en el captulo
??, los
consultivos,
mandatorios.
No todos los sistemas operativos implementan las cuatro posibles combinaciones (compartido mandatorio, o compartido compulsivo, exclusivo mandatorio
y exclusivo consultivo). Como regla general, en los sistemas Windows se maneja
un esquema de bloqueo obligatorio, y en sistemas Unix es de bloqueo consultivo.
Cabe mencionar que el manejo de bloqueos con archivos requiere del mismo
cuidado que el de bloqueo por recursos cubierto en la seccin
2.4.
Tipos de archivo
5 Esto explica por qu en Windows es tan comn que el sistema mismo rechace hacer
determinada operacin porque el archivo est abierto por otro programa (bloqueo mandatorio
compartido), mientras que en Unix esta responsabilidad recae en cada uno de los programas
de aplicacin
en prdidas econmicas.
Extensin
programa troyano )
inocente.png.exe.
inocente.png,
Nmeros mgicos
siempre, simple y
elegante,
huellas digitales
Casi todos los formatos de archivo incluyen lo necesario para que se lleve
a cabo este reconocimiento, y cuando no es posible hacerlo, se intenta
heursticas. Por
formato de intercambio grco
de imgen en
GIF87a
GIF89a,
Formato
6 Por ejemplo, imprimir un archivo binario resulta en una gran cantidad de hojas intiles,
particularmente tomando en cuenta que hay caracteres de control como el ASCII 12 (avance
de forma, form feed ), que llevan a las impresoras que operan en modo texto a iniciar una
nueva pgina; llevar a un usuario a correr un archivo ejecutable disfrazado de un documento
inocuo,
como se ver a continuacin, fue un importante vector de infeccin de muchos virus.
7 Una de las ventajas de este esquema es que cada administrador de sistema puede ampliar
la lista con las huellas digitales que requiera localmente
de Documentos Porttiles
anclados
<!DOCTYPE.
Algunos de
hashbang (#!).
Es-
script )
hashbang.
intrprete
Es por esto
que se pueden ejecutar directamente, por ejemplo, los archivos que inician con #!/usr/bin/bash: El sistema operativo
/usr/bin/bash, y le especica como argumento al
Metadatos externos
invoca al programa
archivo en cuestin.
divisiones (forks )
la informacin de un
y la informacin
resource fork ).
al usuario
amigables
divisin de recursos
creador,
creador,
archivo en cuestin.
Las versiones actuales de MacOS ya no emplean esta tcnica, sino que una
llamada
appDirectory,
es la misma.
2.5.
los archivos.
algn tipo, estructurado o no estructurado.
operativos maneja nicamente archivos sin
estructura
forma congruente, y la responsabilidad del sistema operativo es nicamente entregarlo como un conjunto de bytes. Histricamente, hubo sistemas operativos,
como IBM CICS (1968), IBM MVS (1974) o DEC VMS (1977), que administraban ciertos tipos de datos en un formato bsico de
base de datos.
resta
una aplicacin tuviera que ceirse a los tipos de datos y alineacin de campos
del sistema operativo impeda su adecuacin, y el que la funcionalidad de un
archivo tipo base de datos dependiera de la versin del sistema operativo creaba
un
acoplamiento
SQLite,
systemtap
fotografas shotwell
como por
o el nave-
gador
Firefox ).
binario.
de texto
forman
10).
Acceso secuencial
Esta lgica es herencia de las mquinas de escribir manuales, en que el salto de lnea
(avanzar el rodillo a la lnea siguiente) era una operacin distinta a la del retorno de carro
(devolver la cabeza de escritura al inicio de la lnea). En la poca de los teletipos, como medida
para evitar que se perdieran caracteres mientras la cabeza volva hasta la izquierda, se decidi
separar el inicio de nueva lnea en los dos pasos que tienen las mquinas de escribir, para
inducir una demora que evitara la prdida de informacin.
8
10
barridos secuenciales
Figura 2:
Acceso aleatorio
SQLite
de base de datos ms robustos no exime al usuario de pensar en el archivo como una tabla estructurada, como lo ilustra la gura 3. Si la nica
semntica por medio de la cual el sistema operativo permitiera trabajar
con los archivos fuera la equivalente a una unidad de cinta, implementar
el acceso a un punto determinado del archivo podra resultar demasiado
costoso.
Afortunadamente, que el sistema operativo no imponga registros de longitud ja no impide que
el programa gestor
FD
lo haga. Si en el archivo al
Figura 3:
de base de datos
llamados
11
de lectura :
mayormente
Figura 4:
12
2.6.
dispositivo de bloques,
Esto es, si bien el sistema operativo presenta una abstraccin por medio
de la cual la lectura (read()) puede ser de un tamao arbitrario, todas las
transferencias de datos desde cualquiera de los discos sern de un mltiplo del
tamao de bloques, denido por el hardware (tpicamente 512 bytes).
Al leer, como en el ejemplo anterior, slamente un registro de 75 bytes, el
sistema operativo lee el bloque completo y probablemente lo mantiene en un
cach en la memoria principal; si en vez de una lectura, la operacin efectuada
fue una de escritura (write()), y el sector a modicar no ha sido ledo an
a memoria (o fue ledo hace mucho, y puede haber sido expirado del cach),
el sistema tendr que leerlo nuevamente, modicarlo en memoria, y volver a
guardarlo a disco.
3.
Organizacin de archivos
Hasta este punto, el enfoque ha sido en qu es y cmo se maneja un archivo.
sistemas de archivos
si no hubiera
decenas de miles
de archivos, y en equipos
dedicados, no est fuera de lugar tener cientos o miles de veces tanto. Por tanto,
se tiene que ver tambin cmo organizar una gran cantidad de archivos.
3.1.
directorio
jerrquicos.
directorios
:),
ocultos del usuario a travs de una interfaz grca rica, los programadores siempre tuvieron que manejarlos explcitamente.
A lo largo del presente texto se emplear la diagonal (/) como separador de
directorios.
jerarqua de directorios
profesionales
ya se
exibles.
discos
10
El sistema de archivos original de la Apple Macintosh, MFS, estaba construido sobre un modelo plano, pero presentando la
forma comparable a las etiquetas: Existan bajo
almacenamiento en la nube ofrecido por el serviAmazon S3 (Simple Storage Service, Servicio Simple de Almacenamiento )
maneja nicamente objetos (comparable con nuestra denicin de archivos) y
cubetas (de cierto modo comparables con las unidades o volmenes ), y permite
referirse a un objeto o un conjunto de objetos basado en ltros sobre el total
desaparecido: El sistema de
cio
14
El directorio raiz (base) se llama en este esquema MFD (Master File Directory, Directorio Maestro de Archivos ), y cada uno de los directorios derivados
es un UFD (User File Directory, Directorio de Archivos de Usuario ).
Figura 5:
Este esquema resuelve el problema principal del nombre global nico: Antes
de los directorios, cada usuario tena que cuidar que los nombres de sus archivos
fueran nicos en el sistema, y ya teniendo cada uno su propio espacio, se volvi
una tarea mucho ms simple. La desventaja es que, si el sistema restringe a cada
usuario a escribir en su UFD, se vuelve fundamentalmente imposible trabajar
en algn proyecto conjunto: No puede haber un directorio que est tanto dentro
de
conjunto.
Tanto
los programas como las bibliotecas de sistema ahora pueden estar en cualquier
lugar del sistema de archivos. Al denirle al sistema una
ruta de bsqueda,
el
usuario operador puede desentenderse del lugar exacto en el que est determinado programa El sistema se encargar de buscar en todos los directorios
mencionados los programas o bibliotecas que ste requiera.
11
11
Figura 6:
superconjunto estricto
de trabajo comn sea parte del directorio personal de dos usuarios. Esto es,
mismo objeto
tanto en el directorio
grafo dirigi-
instalacin especca. Es comn que la ruta de bsqueda de un usuario estndar en Unix sea
similar a /usr/local/bin:/usr/bin:/bin:~/bin Esto signica que cualquier comando
que sea presentado es buscado, en el orden indicado, en los cuatro directorios presentados
(separados por el caracter :, la notacin ~ indica el directorio personal del usuario activo).
En Windows, es comn ver una ruta de bsqueda c:\WINDOWS\system32;c:\WINDOWS
16
nmero de i-nodo
en el sistema
liga dura
Es un archivo
especial,
14
resolver
apuntar
rota
tente).
Si bien estos dos tipos de liga existen tambin en los sistemas Windows
en dichos sistemas sigue siendo ms comn emplear los
denomina as a un archivo (identicado por su extensin,
creado para poder
apuntar
accesos directos.
15 ,
Se
.lnk), principalmente
acceso directo,
no obtendr al archivo
Esta simplicacin es simplemente una abstraccin, y contiene una pequea mentira, que
ser13 desmentida en breve.
El signicado y la estructura de un i-nodo se abordan en el captulo ??.
14 Formalmente, puede haberlas, pero slo el administrador puede crearlas; en la seccin
3.2.1
se cubre la razn de esta restriccin al hablar de recorrer los directorios.
15 nicamente en aquellos que emplean el sistema de archivos NTFS, no en los que utilizan
alguna de las variantes de FAT
12
17
sino que una interfaz grca. Las ligas, pues, no son ms empleadas por
cultural :
cuestin
usuarios avanzados.
navegabilidad
Figura 8:
del rbol.
Directorio como un
directorio actual
grafo dirigido,
padre ..
mostrando los
enlaces ocultos
al
y al directorio
..
padre
inmediatamente superior). Claro est, como slo puede haber una liga
..,
un
directorio enlazado desde dos lugares distintos slo apunta hacia uno de ellos con
su enlace
torio
..; en este caso, el directorio comn proyecto est dentro del direc/home/usr2. La gura representa la liga simblica desde /home/usr1
..
. como
archivos como a un
entradas
entradas
3.2.
Al igual que los archivos, los directorios tienen una semntica bsica de
acceso. Los directorios resultan tambin tipos de datos abstractos con algunas
operaciones denidas. Muchas de las operaciones que pueden realizarse con los
18
16 Las operaciones
Abrir y cerrar
cerrados
abiertos
opendir()
closedir().
Estas
Listado de archivos
el directorio se
funcin
abre
opendir()
en vez de
open()),
y va
leyendo
(con
readdir())
cada una de sus entradas. Cada uno de los resultados es una estrcutura
nombre en
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <dirent.h>
#include <sys/types.h>
int main(int argc, char *argv[]) {
struct dirent *archivo;
DIR *dir;
if (argc != 2) {
printf("Indique el directorio a mostrar\n");
return 1;
}
dir = opendir(argv[1]);
while ((archivo = readdir(dir)) != 0) {
printf(" %s\t", archivo->d_name);
}
printf("\n");
closedir(dir);
}
Al igual que en al hablar de archivos se puede
descriptor de archivo, para
pio del listado se emplea
Buscar un elemento
rebobinar
reposicionar (seek())
al
rewinddir().
De hecho, en muchos sistemas de archivos los directorios son meramente archivos de tipo
especial, que son presentados al usuario de forma distinta. En la seccin ?? se presenta un
ejemplo.
16
19
en particular. La llamada
fopen()
remove(),
y renombrado con
fopen(),
eliminado con
rename().
recorrer el directorio
(en ingls,
directory traversal ).
./img/dot/dir_traversal.png
Para recorrer al directorio ilustrado como ejemplo en la gura
??, no bastara
tomar nota de las rutas de los archivos conforme son recorridas Cada vez que
los sean procesados, su ruta ser distinta. Al intentar respaldar al directorio
/home/jose/proyecto,
/home/jose/proyecto
/home/jose/proyecto/miembros
/home/jose/proyecto/miembros/jose
/home/jose/proyecto/miembros/jose/proyectos
/home/jose/proyecto/miembros/jose/proyectos/miembros
. . . Y un etctera innito.
20
Para resolver esta situacin, los programas que recorren directorios en los
sistemas de archivos
reales
i-nodo 17 iden-
tica sin lugar a dudas a cada uno de los archivos. En el caso presentado, si el
i-nodo de
jose
miembros
el sis-
tema encontrar que su primer entrada apunta al i-nodo 10543, por lo cual la
registrara slo como un apuntador a datos
ya archivados,
y continuara con la
pedro.
3.3.
qu
Montaje de directorios
montarlo :
sistema y al usuario.
Es muy comn, especialmente en los entornos derivados de Unix, que un
sistema operativo trabaje con distintos sistemas de archivos al mismo tiempo.
Esto puede obedecer a varias causas, entre las cuales se encuentran:
/proc,
existente en
los sistemas Unix, que permite ver diversos aspectos de los procesos en
ejecucin (y, en Linux, del sistema en general). Los archivos bajo
/proc
17 Que si bien no ha sido denido an formalmente, para esta discusin bastar saber que
es un nmeo nico por volumen.
21
Razones administrativas
/var/log)
puntos de montaje.
sistema operativo
montar
Esto es,
18
tuviera.
Figura 9: rbol formado del montaje de sda1 en la raiz, sda2 como /usr, sdb1
/home, y el directorio virtual proc
como
detectados
recibe un
identicador de volumen,
19 Este rbol
Mi PC.
ruta completa a determinado
unidad actual
AyB
C se reere al disco duro de
detectando el sistema son D, E, F,
Figura 10:
4.
explcita,
la red
implcita
(o lo que es lo mismo,
23
directo
4.1.
El
sus siglas,
de sesin que acta como una capa superior a TCP/IP, incluyendo facilidades
de
protocolos como
servidor de archivos,
20
completamente conables.
20 Incluso manejando estaciones de trabajo diskless, esto es, computadoras sin disco duro,
cuyo sistema de arranque tiene la capacidad de solicitar al servidor le enve incluso el ncleo
del21sistema operativo que ejecutar
Para montar un sistema remoto, se emplea un comando como mount
archivos.unam.mx:/ext/home /home, con lo cual el directorio /ext/home ubicado
en el servidor archivos.unam.mx aparecer montado como directorio /home local.
24
Ahora, NFS se presenta como uno de los componentes de una solucin com-
consistente en todos los clientes; Sun ofreca tambin un esquema llamado Yellow
Pages (posteriormente renombrado a NIS, Network Information System ) para
de
4.2.
El equivalente a NFS en los entornos donde predominan los sistemas Windows es el protocolo CIFS (
de 1990
NetBEUI,
NBF,
fre-
23
CIFS,
aunque el nombre
SMB
sigue
CIFS se ajusta mucho ms a la semntica de los sistemas MS-DOS y Windows, aunque dado el lapso de tiempo que ha existido, ha pasado por varios
cambios fundamentales, que al da de hoy complican su uso.
Para tener acceso a un volumen compartido por SMB se introdujo el coman-
do
NET;24
NET
25
Mi PC,
W:.
granularidad
25
mucho menor.
de difusin (broadcast ),
encontrar
no
a determinado equipo.
Los cambios que CIFS presenta a lo largo de los aos son muy profundos.
Las primeras implementaciones presentan fuertes problemas de conabilidad,
rendimiento y seguridad, adems de estar planteadas para su uso en un slo tipo de sistema operativo; al da de hoy, estos puntos han todos mejorado
fuertemente. En sistemas Unix, la principal implementacin,
Samba,
fue crea-
4.3.
tradicional
que inicializa una conexin, e incluso a ver la informacin que guarda el ncleo
del cliente respecto a cualquiera de los archivos, resulta claro cul es el servidor
para cada uno de ellos.
Andrew File System, desarrolaldo en la Carnegie Mellon University26 y publicado en 1989, plantea presentar un verdadero sistema de archivos distribudo, en
el cual los recursos compartidos no tengan que estar en un servidor en particular,
sino que un conjunto de equipos se repartan la carga (esto es, agnosticismo a la
ubicacin ). AFS busca tambin una fcil escalabilidad, la capacidad de agregar
tanto espacio de almacenamiento como equipos con rol de servidor. AFS permite
inclusive migrar completamente un volumen mientras est siendo empleado, de
forma transparente.
opera correctamente.
AFS construye fuertemente sobre el modelo de tickets y credenciales de Kerberos,28 pero se aleja sensiblemente de la semntica de operacin de archivos que
hasta ahora se han presentado. Muchos eventos, operaciones y estados van lig-
y escrituras
lo antes posible
y de forma sncrona) se
esperable
versin actual
posteriormente.
Con este cambio semntico, debe quedar claro que AFS no busca ser un sistema para todo uso ni un reemplazo universal de los sistemas de archivos locales,
en contraposicin de los sistemas de archivos centralizados. AFS no plantea en
ningn momento una operacin
secciones
archivos completos
haran
El uso tpico de AFS se planteaba para organizaciones grandes, del orden de decenas de
miles
de estaciones
28 Un sistema de autenticacin y autorizacin centralizado para entornos corporativos.
27
27
5.
Otros recursos
Traduccin al espaol:
de archivos
http://cyanezfdz.me/post/los-discos-desde-la-perspectiva-de-un-sistema-de-archiv
Csar Yez (2013).
28