Sistemas Operativos: Sistema de Archivos
Sistemas Operativos: Sistema de Archivos
Sistema de Archivos
1 /53
Contenido
• Visión del usuario del sistema de archivos
• Archivos
• Directorios
• Servicios de archivos
• Servicios de directorios
• Sistemas de archivos
• El servidor de archivos
• Puntos a recordar
2 /53
Visión del usuario
• Visión lógica:
– Archivos
– Directorios
– Sistemas de archivos y particiones
• Visión física:
– Bloques o bytes ubicados en dispositivos
Visión Visión
lógica física
3 /53
Función principal
• El SF establece una correspondencia entre los archivos y
los dispositivos lógicos.
Interfaz de acceso
SISTEMA
DE
FICHEROS
Protección
4 /53
Características para el usuario
• Almacenamiento permanentes de información. No
desaparecen aunque se apague el computador.
• Conjunto de información estructurada de forma lógica
según criterios de aplicación.
• Nombres lógicos y estructurados.
• No están ligados al ciclo de vida de una aplicación
particular.
• Abstraen los dispositivos de almacenamiento físico.
• Se acceden a través de llamadas al sistema operativo o
de bibliotecas de utilidades.
5 /53
Sistema de archivos
• El acceso a los dispositivos es:
– Incómodo
• Detalles físicos de los dispositivos
• Dependiente de las direcciones físicas
– No seguro
• Si el usuario accede a nivel físico no tiene restricciones
• El sistema de archivos es la capa de software entre
dispositivos y usuarios.
• Objetivos:
– Suministrar una visión lógica de los dispositivos
– Ofrecer primitivas de acceso cómodas e
independientes de los detalles físicos
– Mecanismos de protección
6 /53
Contenido
• Visión del usuario del sistema de archivos
• Archivos
• Directorios
• Servicios de archivos
• Servicios de directorios
• Sistemas de archivos
• El servidor de archivos
• Puntos a recordar
7 /53
Archivos: visión lógica
• Conjunto de información relacionada que ha sido definida por su
creador
• Estructura de un archivo:
– Secuencia o tira de bytes (UNIX, POSIX)
Posición
– Registros (de tamaño fijo o variable)
Registro 1 C1 C2 C3 C4 C5 Registro 1 C1 C2 C3
Registro 2 C1 C2 C3 C4 C5 Registro 2 C1 C3 C4 C5
Registro 3 C1 C2 C3 C4 C5 Registro 3 C1 C2 C3 C4
Registro 4 C1 C2 C3 C4 C5 Registro 4 C1 C2 C3 C4 C5
Registro n C1 C2 C3 C4 C5 Registro n C1 C3 C4
8 /53
Contenido
• Visión del usuario del sistema de archivos
• Archivos
• Directorios
• Servicios de archivos
• Servicios de directorios
• Sistemas de archivos
• El servidor de archivos
• Puntos a recordar
9 /53
Concepto de archivo
• Un espacio lógico de direcciones contiguas usado para
almacenar datos
• Tipos de archivos:
– Datos:
• numéricos
• carácter
• binarios
– Programas:
• código fuente
• archivos objetos (imagen de carga)
– Documentos
10 /53
Atributos del archivo
• Nombre: la única información en formato legible por una persona.
• Identificación única del archivo y del usuario: descriptor interno del
archivo, dueño y grupo del archivo
• Tipo de archivo: necesario en sistemas que proporciona distintos
formatos de archivos.
• Tamaño del archivo: número de bytes en el archivo, máximo tamaño
posible, etc.
• Protección: control de accesos y de las operaciones sobre archivos
• Información temporal: de creación, de acceso, de modificación, etc.
• Información de control: archivo oculto, de sistema, normal o
directorio, etc.
11 /53
Representación del archivo
• La información relacionada con el archivo se mantiene en el
descriptor del archivo, al que se apunta desde los directorios.
• Es distinto en cada sistema operativo: nodo-i, registro Windows, etc.
• Tipos de archivos:
– Archivos normales: ASCII y binarios.
– Archivos especiales: de bloques y de caracteres
• Atributos de un archivo:
– Nombre
– Tipo
– Dueño y grupo
– Información de protección
– Tamaño real
– Hora y fecha de creación
– Hora y fecha del último acceso
– Hora y fecha de la última modificación
– Número de enlaces
12 /53
Ejemplos de representación
cabecer a
Atr ibutos
Tamaño
N ombr e
N ombr e S egur idad
Atr ib.
S ize K B
Agr up. FAT D atos
Vcluster s
13 /53
Nombres de fichero y extensiones I
• Muy importante para los usuarios. Es característico de cada sistema
de archivos.
• Problema: usar nombre lógicos basados en tiras de caracteres.
• Motivo: los usuarios no recuerdan el nombre 001223407654
• Tipo y longitud cambian de un sistema a otro
– Longitud: fija en MS-DOS o variable en UNIX
– Extensión: obligatoria o no, más de una o no, fija para cada tipo de
archivos, etc.
• Sensibles a tipografía. Ejemplo: CATALINA y catalina son el mismo
archivo en Windows pero distintos en LINUX.
• El sistema de ficheros trabaja con descriptores internos, sólo distingue
algunos formatos (ejecutables, texto, ...). Ejemplo: número mágico
UNIX.
14 /53
Nombres de fichero y extensiones II
• Los directorios relacionan nombres lógicos y descriptores internos de
ficheros
• Las extensiones son significativas para las aplicaciones (html, c, cpp,
etc.)
15 /53
Estructura del fichero
• Ninguna - secuencia de palabras o bytes (UNIX)
• Estructura sencilla de registros
– Líneas
– Longitud fija
– Longitud variable
• Estructuras complejas
– Documentos con formato (HTML, postscript)
– Fichero de carga reubicable (módulo de carga)
• Se puede simular estructuras de registro y complejas con
una estructura plana y secuencias de control
• ¿Quién decide la estructura?
– Interna: El sistema operativo
– Externa: Las aplicaciones
16 /53
Distintas estructuras lógicas
Ár bol de r egistr os
Cabecer a
M ód ulo
objeto
Cabecer a
R egistr os d e M ód ulo
longitud objeto
var iable
Ar chivo de
Byte o
biblioteca
r egistr o de
longitud fija
17 /53
Archivos: visión lógica
• Estructura de un archivo:
– Archivos de estructura compleja
• Archivos indexados
• Archivos directos o de dispersión
– Ejemplo de archivo indexado: Registro
Clave
Fichero
indice
Fichero principal
18 /53
Estructura de archivo ejecutable LINUX
Número mágic o
...
Sección 1 Código
Opc iones
Datos con
Sección 2 valor inicial
Datos con
Sección n valor inicial
Información
de carga
Tabla de
símbolos
Otra
información
19 /53
Archivos: visión lógica y física
• Usuario: Visión lógica.
• Sistema operativo: visión física ligada a dispositivos. Conjunto de
bloques.
Posición
Visión lógica
Archivo A 1 2 3 4 5 6
Bloques: 13
20 7 8 9 10 11 12
1
8 13 14 15 16 17 18
3 19 20 21 22 23 24
16
19 25 26 27 28 29 30
Visión física
20 /53
Archivos: visión física
• Bloque
– Unidad de transferencia
– 2n sectores
– Parámetro fijo por sistema de archivos
• Agrupación
– Unidad de asignación
– 2p bloques
– Aumenta la secuencialidad del archivo
• Descripción de la estructura física:
– Bloques utilizados
21 /53
Descripción física en UNIX (nodo-i)
Tipo de Fichero y Protección Tamaño máximo del archivo:
Número de Nombres
Propietario 10Sb+(Sb/4)Sb +(Sb/4)2Sb +(Sb/4)3Sb
Grupo del Propietario
Tamaño Sb el tamaño del bloque y direcciones de
Instante de creación
Instante del último acceso bloques de 4 bytes.
Instante de la última modificación
Puntero a bloque de datos 0
Puntero a bloque de datos 1
Punteros
a Bloques
de Datos
Puntero a bloque de datos 9
Punteros
Puntero indirecto simple a Bloques
Puntero indirecto doble de Datos
Puntero indirecto triple
Punteros
a Bloques
nodo-i de Datos
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
22 /53
Descripción física en MS-DOS (FAT)
FAT
Directorio Raíz
Nombre Atrib. KB Agrup.
27 <eof>
pep_dir dir 5 27
fiche1.txt 12 45
45 58
51 <eof>
Directorio pep_dir
Nombre Atrib. KB Agrup. 58 <eof>
carta1.wp R 24 74
74 75
prue.zip 16 91 75 76
76 <eof>
23 /53
Métodos de Acceso
• Acceso secuencial: lectura de los bytes del archivo en
orden ascendente, empezando por el principio.
– read next, write next, reset, no read after last write, …
– rewind: ir al principio para buscar hacia delante
– Lectura -> posición = posición + datos leídos
– Dispositivos de cinta
– ISAM: método de acceso secuencial indexado
• Acceso Directo:
– read n, write n, goto n, rewrite n, read next, write next,
…
– n = número de bloque relativo al origen
– Dispositivos: discos magnéticos
24 /53
Archivos: semántica de coutilización
• Cualquier forma de acceso tiene problemas cuando varios
usuarios trabajan con el archivo simultáneamente.
• Semántica de coutilización: especifica el efecto de varios
procesos accediendo de forma simultánea al mismo
archivo y cuando se hacen efectivas las modificaciones.
• Tipos de semánticas:
– Semántica UNIX (POSIX)
• Las escrituras son inmediatamente visibles para todos los
procesos con el archivo abierto.
• Los procesos pueden compartir archivos. Si existe relación de
parentesco pueden compartir el puntero. La coutilización afecta
también a los metadatos.
25 /53
Archivos: semántica de coutilización (II)
– Semántica de sesión
• Las escrituras que hace un proceso no son inmediatamente
visibles para los demás procesos con el archivo abierto.
• Cuando se cierra el archivo los cambios se hacen visibles para
las futuras sesiones.
• Un archivo puede asociarse temporalmente a varias imágenes.
– Semántica de versiones
• Las actualizaciones se hacen sobre copias con nº versión.
• Sólo son visibles cuando se consolidan versiones.
• Sincronización explícita si se requiere actualización inmediata
– Semántica de archivos inmutables
• Una vez creado el archivo sólo puede ser compartido para
lectura y no cambia nunca
26 /53
Contenido
• Visión del usuario del sistema de archivos
• Archivos
• Directorios
• Servicios de archivos
• Servicios de directorios
• Sistemas de archivos
• El servidor de archivos
• Puntos a recordar
27 /53
Concepto de directorio
• Objeto que relaciona de forma unívoca un nombre de
usuario de archivo con su descriptor interno
• Organizan y proporcionan información sobre la
estructuración de los sistemas de archivos
• Una colección de nodos que contienen información acerca
de los archivos
28 /53
Directorios: visión lógica
• Esquema jerárquico.
• Cuando se abre un archivo el SO busca el
nombre en la estructura de directorios.
• Operaciones sobre un directorio:
– Crear (insertar) y borrar (eliminar) directorios.
– Abrir y cerrar directorios.
– Renombrar directorios.
– Leer entradas de un directorio.
– Montar (combinar)
• La organización jerárquica de un directorio
– Simplifica el nombrado de archivos (nombres únicos)
– Proporciona una gestión de la distribución => agrupar
archivos de forma lógica (mismo usuario, misma
aplicación) 29 /53
Ejemplo: explorador de Windows
30 /53
Estructura de los directorios
• Tanto la estructura del directorio como los archivos residen
en discos
• Los directorios se suelen implementar como archivos
• Copias de respaldo en cintas, por seguridad
• Información en un directorio: nombre, tipo, dirección,
longitud máxima y actual, tiempos de acceso y
modificación, dueño, etc.
• Hay estructuras de directorio muy distintas. La información
depende de esa estructura.
• Dos alternativas principales:
– Almacenar atributos de archivo en entrada directorio
– Almacenar <nombre, identificador>, con datos archivo
en una estructura distinta. Esta es mejor.
31 /53
Ejemplo de entradas de directorio
Tipo de Contador
Nombre archivo de bloques
...
D ir e ct o r io d e C P /M
Número
Tipo de del primer
Nombre archivo Reservado Hora bloque
D ir e ct o r io d e M S - D O S
Nodo-i: Puntero al
descriptor del archivo Nombre
D ir e ct o r io d e U N I X
32 /53
Organización del directorio
• Eficiencia: localizar un archivo rápidamente
• Nombrado: conveniente y sencillo para los usuarios
– Dos usuarios pueden tener el mismo nombre para
archivos distintos
– Los mismos archivos pueden tener nombres distintos
– Nombres de longitud variable
• Agrupación: agrupación lógica de los archivos según sus
propiedades (por ejemplo: programas Pascal, juegos, etc.)
• Estructurado: operaciones claramente definidas y
ocultación
• Sencillez: la entrada de directorio debe ser lo más sencilla
posible.
33 /53
Directorio de un nivel
• Un único directorio para todos los usuarios
• Problemas de nombrado y agrupación
34 /53
Directorio de dos niveles
• Un directorio por cada usuario
• Camino de acceso automático o manual
• El mismo nombre de archivo para varios usuarios
• Búsqueda eficiente, pero problemas de agrupación
35 /53
Directorio con estructura de árbol
• Búsqueda eficiente y agrupación
• Nombres relativos y absolutos -> directorio de trabajo
stdio.h buzon
test agenda claves
datos lista.c claves
sh rm vi
mio.o
correo agenda
36 /53
Directorio con estructura de árbol
• Los nombres absolutos contienen todo el camino
• Los nombres relativos parten del directorio de trabajo o
actual
• Cambio de directorio:
– cd /spell/mail/prog
– cd prog
• Borrar un archivo: rm <nombre-archivo>
• Crear un subdirectorio: mkdir <nombre_dir>
• Ejemplo:
– cd /spell/mail
– mkdir count
– ls /spell/mail/count
• Borrar un subdirectorio: rm -r mail
37 /53
Directorio de grafo acíclico I
• Tienen archivos y subdirectorios compartidos
• Este concepto no existe en Windows
stdio.h buzon
test agenda claves
datos lista.c claves
sh rm vi
38 /53
Directorio de grafo acíclico II
• link: Un archivo con varios nombres -> control de enlaces
– un único archivo con contador enlaces en descriptor (e. Físicos)
– archivos nuevos con el nombre destino dentro (e. simbólicos)
• Borrado de enlaces:
– a) decrementar contador; si 0 borrar archivo
– b) recorrer los enlaces y borrar todos
– c) borrar únicamente el enlace y dejar los demás
• Problema grave: existencia de bucles en el árbol. Soluciones:
– Permitir sólo enlaces a archivos, no subdirectorios
– Algoritmo de búsqueda de bucle cuando se hace un enlace
• Limitación de implementación en UNIX: sólo enlaces físicos dentro del
mismo sistema de archivos.
39 /53
Nombres jerárquicos
• Nombre absoluto: especificación del nombre respecto a la
raíz (/ en LINUX, \ en Windows).
• Nombre relativo: especificación del nombre respecto a un
directorio distinto del raíz
– Ejemplo: (Estamos en /users/) miguel/claves
– Relativos al dir. de trabajo o actual: aquel en el se está
al indicar el nombre relativo. En Linux se obtiene con
pwd
• Directorios especiales:
– . Directorio de trabajo. Ejemplo: cp /
users/miguel/claves .
– .. Directorio padre. Ejemplo: ls ..
– Directorio HOME: el directorio base del usuario
40 /53
Interpretación de nombres en LINUX. I
.
..
.
..
.
..
claves 758
textos 3265
41 /53
Interpretación de nombres en LINUX. II
• Interpretar /users/miguel/claves
– Traer a memoria entradas archivo con nodo-i 2
– Se busca dentro users y se obtiene el nodo-i 342
– Traer a memoria entradas archivo con nodo-i 342
– Se busca dentro miguel y se obtiene el nodo-i 256
– Traer a memoria entradas archivo con nodo-i 256
– Se busca dentro claves y se obtiene el nodo-i 758
– Se lee el nodo-i 758 y ya se tienen los datos del archivo
• ¿Cuándo parar?
– Se ha encontrado el nodo-i del archivo
– No se ha encontrado y no hay más subdirectorios
– Estamos en un directorio y no contiene la siguiente
componente del nombre (por ejemplo, miguel).
42 /53
Jerarquía de directorios
• ¿Árbol único de directorios?
– Por dispositivo lógico en Windows
(c:\users\miguel\claves, j:\pepe\tmp, ...)
– Para todo el sistema en UNIX (/users/miguel/claves,
/pepe/tmp, ...).
• Hacen falta servicios para construir la jerarquía: mount y
umount.
– mount /dev/hda /users
– umount /users
• Ventajas: imagen única del sistema y ocultan el tipo de
dispositivo
• Desventajas: complican la traducción de nombres,
problemas para enlaces físicos entre archivos
43 /53
Sistemas de archivos y particiones
• Volumen: conjunto coherente de metainformación y datos.
• Ejemplos de Sistemas de archivos:
MS-DOS
Dos copias Directorio Datos y
Boot
de la FAT Raíz Directorios
UNIX
Super Mapas Datos y
Boot nodos-i
Bloque de bits Directorios
44 /53
Montado de Sistemas de archivos o
particiones
Volumen raiz Volumen sin montar Volumen montado
(/dev/hd0) (/dev/hd1)
/ / /
/d3/f1 /d3/f2
/usr/d1 /usr/d3
45 /53
Contenido
• Visión del usuario del sistema de archivos
• Archivos
• Directorios
• Servicios de archivos
• Servicios de directorios
• Sistemas de archivos
• El servidor de archivos
• Puntos a recordar
46 /53
Sistemas de archivos y particiones
• El sistema de archivos permite organizar la información dentro de los
dispositivos de almacenamiento secundario en un formato inteligible
para el sistema operativo.
• Previamente a la instalación del sistema de archivos es necesario
dividir físicamente, o lógicamente, los discos en particiones o
volúmenes [Pinkert 1989].
• Una partición es una porción de un disco a la que se la dota de una
identidad propia y que puede ser manipulada por el sistema operativo
como una entidad lógica independiente.
• Una vez creadas las particiones, el sistema operativo debe crear las
estructuras de los sistemas de archivos dentro de esas particiones.
Para ello se proporcionan mandatos como format o mkfs al usuario.
– #mkswap –c /dev/hda2 20800
– #mkfs -c /dev/hda3 –b 8196 123100
47 /53
Tipos de particiones
P ar tición 4 P ar tición 5
P ar tición 2
P ar tición 3
48 /53
Sistemas de archivos y particiones (II)
• Sistema de archivos: conjunto coherente de metainformación y datos.
• Ejemplos de Sistemas de archivos:
MS-DOS
Dos copias Directorio Datos y
Boot
de la FAT Raíz Directorios
UNIX
Super Mapas Datos y
Boot nodos-i
Bloque de bits Directorios
49 /53
Sistemas de archivos y particiones (III)
• Descripción de sistemas de archivos:
– El sector de arranque en MS-DOS
– El superbloque en UNIX
50 /53
Bloques y agrupaciones
• Bloque: agrupación lógica de sectores de disco y es la
unidad de transferencia mínima que usa el sistema de
archivos.
– Optimizar la eficiencia de la entrada/salida de los
dispositivos secundarios de almacenamiento.
– Todos los sistemas operativos proporcionan un tamaño
de bloque por defecto.
– Los usuarios pueden definir el tamaño de bloque a usar
dentro de un sistema de archivos mediante el mandato
mkfs.
• Agrupación: conjunto de bloques que se gestionan como
una unidad lógica de gestión del almacenamiento.
– El problema que introducen las agrupaciones, y los
bloques grandes, es la existencia de fragmentación 51 /53
interna.
Tamaño bloque, ancho banda y uso
disco
An ch o de Ba nd a (K bytes/sec)
75
500
50
100 uso del
ancho de
disco 25
50 banda
0 0
256 512 1K 2K 4K 8K 16K 32K
Tamaño de Bloque
52 /53
Estructuras de sistemas de archivos
53 /53
Superbloque de sistemas de archivos en
LINUX
54 /53
Otros sistemas de archivos
• Fast File System
• EXT2 (extended file system)
• Archivos con bandas
• LFS (log structured file system)
• Sistemas de archivos paralelos
• ....
55 /53
Estructura del FFS
56 /53
Estructura de un sistema de archivos
con bandas
P ar tición Lógica
Partición
del
sistema
de bloque 4
bandas
57 /53