SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar...

64
Sistemas Operativos — Sistemas de archivos Gunnar Wolf 26 de julio de 2013 Índice 1. Introducción 2 2. Concepto de archivo 4 2.1. Operaciones con archivos ...................... 4 2.2. Tablas de archivos abiertos ..................... 5 2.3. Acceso concurrente: Bloqueo de archivos .............. 6 2.4. Tipos de archivo ........................... 7 2.5. Estructura de los archivos y métodos de acceso .......... 10 2.6. Transferencias orientadas a bloques ................. 12 3. Organización de archivos 13 3.1. Evolución del concepto de directorio ................ 13 3.2. Operaciones con directorios ..................... 18 3.3. Montaje de directorios ........................ 20 3.4. Sistemas de archivos remotos .................... 23 4. Plasmando la estructura en el dispositivo 27 4.1. Diferentes sistemas de archivos ................... 28 4.2. El volumen .............................. 29 4.3. El directorio y los i-nodos ...................... 30 5. Esquemas de asignación de espacio 34 5.1. Asignación contigua ......................... 34 5.2. Asignación ligada ........................... 35 5.3. Asignación indexada ......................... 36 5.4. Las tablas en FAT .......................... 39 6. Fallos y recuperación 41 6.1. Datos y metadatos .......................... 43 6.2. Verificación de la integridad ..................... 43 6.3. Actualizaciones suaves (soft updates ) ................ 44 6.4. Sistemas de archivo con bitácora (journaling file systems ) .... 45 6.5. Sistemas de archivos estructurados en bitácora (log-structured file systems ) ................................ 45 1

Transcript of SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar...

Page 1: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Sistemas Operativos — Sistemas de archivos

Gunnar Wolf

26 de julio de 2013

Índice1. Introducción 2

2. Concepto de archivo 42.1. Operaciones con archivos . . . . . . . . . . . . . . . . . . . . . . 42.2. Tablas de archivos abiertos . . . . . . . . . . . . . . . . . . . . . 52.3. Acceso concurrente: Bloqueo de archivos . . . . . . . . . . . . . . 62.4. Tipos de archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5. Estructura de los archivos y métodos de acceso . . . . . . . . . . 102.6. Transferencias orientadas a bloques . . . . . . . . . . . . . . . . . 12

3. Organización de archivos 133.1. Evolución del concepto de directorio . . . . . . . . . . . . . . . . 133.2. Operaciones con directorios . . . . . . . . . . . . . . . . . . . . . 183.3. Montaje de directorios . . . . . . . . . . . . . . . . . . . . . . . . 203.4. Sistemas de archivos remotos . . . . . . . . . . . . . . . . . . . . 23

4. Plasmando la estructura en el dispositivo 274.1. Diferentes sistemas de archivos . . . . . . . . . . . . . . . . . . . 284.2. El volumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3. El directorio y los i-nodos . . . . . . . . . . . . . . . . . . . . . . 30

5. Esquemas de asignación de espacio 345.1. Asignación contigua . . . . . . . . . . . . . . . . . . . . . . . . . 345.2. Asignación ligada . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.3. Asignación indexada . . . . . . . . . . . . . . . . . . . . . . . . . 365.4. Las tablas en FAT . . . . . . . . . . . . . . . . . . . . . . . . . . 39

6. Fallos y recuperación 416.1. Datos y metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . 436.2. Verificación de la integridad . . . . . . . . . . . . . . . . . . . . . 436.3. Actualizaciones suaves (soft updates) . . . . . . . . . . . . . . . . 446.4. Sistemas de archivo con bitácora (journaling file systems) . . . . 456.5. Sistemas de archivos estructurados en bitácora (log-structured file

systems) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

1

Page 2: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

7. El medio físico 477.1. Discos magnéticos rotativos . . . . . . . . . . . . . . . . . . . . . 477.2. Almacenamiento en estado sólido . . . . . . . . . . . . . . . . . . 54

8. Manejo avanzado de volúmenes 578.1. RAID 0: División en franjas . . . . . . . . . . . . . . . . . . . . . 578.2. RAID 1: Espejo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588.3. Los niveles 2, 3 y 4 de RAID . . . . . . . . . . . . . . . . . . . . 598.4. RAID 5: Paridad dividida por bloques . . . . . . . . . . . . . . . 598.5. RAID 6: Paridad por redundancia P+Q . . . . . . . . . . . . . . 608.6. Niveles combinados de RAID . . . . . . . . . . . . . . . . . . . . 618.7. Más allá de RAID . . . . . . . . . . . . . . . . . . . . . . . . . . 62

9. Otros recursos 63

1. IntroducciónDe los roles 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 al-macenamiento, esto es, el sistema de archivos. Al día de hoy, todos los usuariosde equipo de cómputo dan por sentado y comprenden a grandes rasgos la organi-zación del espacio de almacenamiento en un directorio jerárquico, con unidadesde almacenamiento llamadas archivos, de diferentes tipos según su función. Enla primer parte de esta unidad revisaremos algo más a profundidad a este mo-delo, para posteriormente ver los detalles de la gestión del espacio físico dondeéstos están alojados.

La abstracción que hoy conocemos como sistemas de archivos es una de lasque más tiempo han vivido y se han mantenido a lo largo de la historia de lacomputación, sobreviviendo a lo largo de prácticamente todas las generacionesde sistemas operativos. Sin embargo, para poder analizar cómo es que el siste-ma operativo representa la información en el dispositivo físico, comenzaremosdiscutiendo cómo es que esta información es comprendida por los niveles másaltos — Por los programas en espacio de usuario.

La información cruda tiene que pasar una serie de transformaciones. Yendode niveles superiores a niveles más bajos, un programa estructura sus datos enarchivos, siguiendo el formato que resulte mas pertinente al tipo de informacióna representar. Un conjunto de archivos hoy en día es típicamente representadoen una estructura de directorios, y aunque existen otros mecanismos para suorganización, estos no están tan ampliamente difundidos. Y cuando un sistemaopera con más de un dispositivo físico, encontraremos principalmente dos me-canismos para integrar a dichos dispositivos en un sistema de archivos virtual,brindnado al usuario una interfaz uniforme. Por último, los archivos son unaestructura meramente lógica — Deben ser convertidos para ser representados

2

Page 3: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 1: Capas de abstracción para implementar los sistemas de archivos

en un dispositivo orientado a bloques como los diversos tipos de unidades queconocemos –aunque esta nomenclatura es a veces incorrecta– como discos.

Del diagrama presentado, pues, toca al objeto de nuestro estudio –el sistemaoperativo– recibir del espacio de usuario las llamadas al sistema que presentanla interfaz de archivos y directorios, integrar el sistema de archivos virtual, ytraducir la información resultante a un sistema de archivos.

Cabe mencionar que varias de las capas aquí presentadas podrían perfec-tamente ser subdivididas, analizadas por separado, e incluso tratarse de formacompletamente modular — De hecho, este es precisamente el modo en que seimplementan de forma transparente características hoy en día tan comunes co-mo sistemas de archivos en red, o compresión y cifrado de la información. Unareferencia más detallada acerca de ventajas, desventajas, técnicas y mecanis-mos de la división y comunicación entre capas puede ubicarse en el artículo deHeidemann y Popek (1994).

En esta unidad tocaremos también algunos conceptos relacionados con lossubsistemas de entrada y salida, aunque estos pertenecen mayormente a otrasunidades, al igual que los controladores.

3

Page 4: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

2. Concepto de archivoEn primer término, un archivo es un tipo de datos abstracto — Esto es, en

programación moderna podríamos verlo como una estructura que exclusivamen-te permite que la manipulemos por medio de una interfaz orientada a objetos:Los procesos en el sistema sólo pueden tener acceso a los archivos por medio dela interfaz ofrecida por el sistema operativo.1 Abordaremos los detalles de estainterfaz en breve.

Para el usuario, los archivos son la unidad lógica mínima al hablar hablade almacenamiento: Todo el almacenamiento persistente (que sobrevive en eltiempo, sea a reinicios del sistema, a pérdida de corriente o a otras circunstanciasen el transcurso normal de ejecución) en el sistema al que tiene acceso, se efectúadentro de archivos; el espacio libre en los diferentes dispositivos no tiene mayorexistencia fuera de saber que está potencialmente disponible.

Dentro de cada volúmen (cada medio de almacenamiento), los archivos dispo-nibles conforman a un directorio, y son típicamente identificados por un nombreo una ruta. Hablaremos más adelante acerca de las diferentes construccionessemánticas que pueden conformar a los directorios.

2.1. Operaciones con archivosCada sistema operativo definirá la interfaz de archivos acorde con su semán-

tica, pero en líneas generales, las operaciones que siempre estarán disponiblescon un archivo son:

Crear Asigna espacio en el dispositivo y en su directorio para alojar a un nuevoarchivo.

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

Abrir Solicita al sistema operativo verificar si tenemos el acceso para el modode acceso al archivo que indiquemos y si el medio lo soporta (por ejemplo,a pesar de contar con los permisos, no podemos abrir para escritura unarchivo en un disco de sólo lectura), y asigna un descriptor de archivosque identifica la relación entre el proceso y el archivo en cuestión. Abrirun archivo es necesario para todas las siguientes operaciones.

Cerrar Indica al sistema que el proceso en cuestión terminó de trabajar conel archivo; el sistema entonces debe vaciar los buffers a disco y eliminarla entrada que representa a esta combinación archivo-proceso de las ta-blas activas, invalidando al descriptor de archivo. Si un proceso cierra unarchivo y quiere volver a emplearlo, tendrá que abrirlo explícitamente.

1Veremos más adelante que esto no es necesariamente cierto, sin embargo, el uso de losdispositivos en crudo es tan bajo que podemos ignorarlos para propósitos de esta discusión

4

Page 5: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Leer Cuando indicamos al sistema que queremos leer de un archivo hacia de-terminado buffer, éste copia el siguiente pedazo de información a éste. Estepedazo podría ser una línea o un bloque de longitud definida, dependiendodel modo en que se solicite la lectura. El sistema mantiene un apuntadora la última posición leída, para poder continuar con la lectura.

Escribir Teniendo un archivo ya existente, guarda información en él. Puede serque escriba desde su primer posición (truncando al archivo, esto es, bo-rrando toda la información que pudiera ya tener), o agregando al archivo,esto es, iniciando con el apuntador de escritura al final del mismo.

Reposicionar (seek) Tanto la lectura como la escritura se hacen siguiendo aun apuntador, que indica cuál fue la última posición del archivo a la queaccesó el proceso actual. Al reposicionar el apuntador, podemos brincar aotro punto del archivo.

Hay varias otras operaciones comunes que pueden implementarse con lla-madas compuestas a estas operaciones (por ejemplo, copiar un archivo puedeimplementarse como crear un archivo nuevo en modo de escritura, abrir en mo-do de lectura al fuente, e ir leyendo de éste y escribiendo al nuevo hasta llegaral fin de archivo).

Las operaciones que presentamos recién no son todas las operaciones exis-tentes; dependiendo del sistema operativo, habrá algunas adicionales; estas laspresentamos como la base general sobre la cual trabajaremos.

Vale la pena mencionar que esta semántica para el manejo de archivos pre-senta a cada archivo como si fuera una unidad de cinta, permitiéndonos avanzaro retroceder la cabeza lectora/escritora dentro de ella.

2.2. Tablas de archivos abiertosTanto el sistema operativo como cada uno de los procesos mantienen normal-

mente tablas de archivos abiertos. Estas mantienen información acerca de todoslos archivos actualmente abiertos, presentándolos hacia el proceso por medio deun descriptor de archivo; una vez que un archivo fue abierto, las operaciones quese realizan dentro de éste no son empleando su nombre, sino que su descriptorde archivos.

En un sistema operativo multitareas, más de un proceso podría abrir elmismo archivo a la vez; lo que cada uno de ellos pueda hacer, y cómo esto impactea lo que vean los demás procesos, depende de la semántica que implemente elsistema.

Ahora, ¿por qué mencionamos que estas tablas son mantenidas tanto por elsistema operativo como por cada uno de los procesos? ¿No nos lleva esto a unasituación en que mantenemos información redundante?

La respuesta es que la información que cada uno debe manejar es distinta.El sistema operativo necesita:

Conteo de usuarios del archivo Cuando se solicita, por ejemplo, desmon-tar una partición (por ejemplo, para expulsar una unidad removible) o

5

Page 6: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

eliminar un archivo, el sistema debe poder determinar cuándo es momen-to de declarar la solicitud como efectuada. Si algún proceso tiene abiertoa un archivo, y particularmente si tiene cambios pendientes de guardar, elsistema no debe permitir que el archivo desaparezca de su visión.

Modos de acceso Aunque un usuario tenga permisos de acceso a determinadorecurso, el sistema puede determinar negarlo si llevaría a una inconsisten-cia. Por ejemplo, si dos procesos abren un mismo archivo para escritura,es probable que los cambios que realice uno sobreescriban a los que hagael otro.

Ubicación en disco Para evitar que cada proceso tenga que consultar las ta-blas en disco para encontrar al archivo, o sus fragmentos.

Información de bloqueo En caso de que los modos de acceso del archivo re-quieran protección mutua, puede implementarse por medio de un bloqueo.

Por otro lado, el proceso necesita:

Descriptor de archivo Relación entre el nombre del archivo abierto y el iden-tificador numérico que maneja internamente el proceso. Un archivo abiertopor varios procesos tendrá descriptores de archivo distintos en cada unode ellos. El descriptor de archivo es un número entero.

Permisos Los modos válidos de acceso para un archivo. Esto no necesariamentees igual a los permisos que tiene el archivo en cuestión en disco, sino queel subconjunto de dichos permisos bajo los cuales está operando para esteproceso en particular — Si un archivo fue abierto en modo de sólo lectura,por ejemplo, este campo sólo permitirá la lectura.

2.3. Acceso concurrente: Bloqueo de archivosDado que los archivos pueden emplearse como mecanismo de comunicación

entre procesos que no guarden relación entre sí, incluso a lo largo del tiempo,y para emplear un archivo basta indicar su nombre o ruta, los sistemas ope-rativos multitarea implementan mecanismos de bloqueo para evitar que variosprocesos intentando emplear de forma concurrente a un archivo se corrompanmutuamente.

Algunos sistemas operativos permiten establecer bloqueos sobre determina-das regiones de los archivos, aunque la semántica más común es operar sobre elarchivo como una sola unidad.

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

Compartido (Shared lock) Podría verse como equivalente a un bloqueo (ocandado) para realizar lectura — Varios procesos pueden adquirir al mismotiempo un bloqueo de lectura, e indica que todos los que posean dichocandado tienen la expectativa de que el archivo no sufrirá modificaciones.

6

Page 7: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Exclusivo (Exclusive lock) Un bloqueo o candado exclusivo puede ser adquiridopor un sólo proceso, e indica que realizará operaciones que modifiquen alarchivo (o, si la semántica del sistema operativo permite expresarlo, a laporción del archivo que indica).

Respecto al mecanismo de bloqueo, hay también dos tipos, dependiendo dequé tan explícito tiene que ser su manejo:

Mandatorio u obligatorio (Mandatory locking) Una vez que un proceso ad-quiere un candado obligatorio, el sistema operativo se encargará de impo-ner las restricciones corresponidentes de acceso a todos los demás proce-sos, independientemente de si éstos fueron programados para considerarla existencia de dicho bloqueo o no.

Consultivo o asesor (Advisory locking) Este tipo de bloqueos es manejadoexclusivamente entre los procesos involucrados, y depende del programa-dor de cada uno de los programas en cuestión el solicitar y respetar dichobloqueo.

Haciendo un paralelo con los mecanismos presentados en la unidad de ad-ministración de procesos, los mecanismos que emplean mutexes, semáforos ovariables de condición serían consultivos, y únicamente los que emplean monito-res (en que la única manera de llegar a la información es a través del mecanismoque la protege) serían mandatorios.

De esta matriz de 2 × 2 tipos de bloqueo, no todos los sistemas operati-vos implementan las cuatro posibilidaddes. Como regla general, en los sistemasWindows se maneja un esquema de bloqueo obligatorio, y en sistemas Unix esde bloqueo consultivo.2

Cabe mencionar que el manejo de bloqueos con archivos requiere del mismocuidado que el de bloqueo por recursos que el que vimos en administraciónde procesos: Dos procesos intentando adquirir un candado exclusivo sobre dosarchivos pueden caer en un bloqueo mutuo tal como ocurre con cualquier otrorecurso externo.

2.4. Tipos de archivoSi los archivos son, como dijimos, la unidad lógica mínima con la que se

puede guardar información en almacenamiento secundario, naturalmente sigueque existen archivos de diferentes tipos — Un archivo puede ser un documentode texto, un binario ejecutable, un archivo de audio o video, y un larguísimoetcetera, e intentar emplear a un archivo como uno de un tipo distinto puede

2Esto explica por qué en Windows es tan común que el sistema mismo nos rechace hacerdeterminada operación porque el archivo está abierto por otro programa (bloqueo mandatoriocompartido), mientras que en Unix esta responsabilidad recae en cada uno de los programasde aplicación

7

Page 8: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

resultar desde una frustración al usuario porque el programa no responde comoéste quiere, hasta en pérdidas económicas.3

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

Extensión En los sistemas CP/M de los 1970, el nombre de cada archivo sedividía en dos porciones, empleando como separador al punto: El nombredel archivo y su extensión. El sistema mantenía una lista de extensionesconocidas, para las cuales sabría cómo actuar, y este diseño se extenderíaa las aplicaciones, que sólo abrirían a aquellos archivos cuyas extensionessupieran manejar.

Esta estrategia fue heredada por VMS y MS-DOS, de donde la adoptóWindows; ya en el contexto de un entorno gráfico, Windows agrega, másallá de las extensiones directamente ejecutables, la relación de extensionescon los programas capaces de trabajar con ellas, permitiendo invocar a unprograma con sólo dar “doble click” en un documento.

Como nota, este esquema de asociación de tipo de archivo permite ocul-tar las extensiones toda vez que ya no requieren ser del conocimiento delusuario, sino que son gestionadas por el sistema operativo, abre una víade ataque automatizado que se popularizó en su momento: El envío decorreos con extensiones engañosas duplicadas — Esto es, el programa ma-ligno (un programa troyano) se envía a todos los contactos del usuarioinfectado, presentándose por ejemplo como una imágen, con el nombreinocente.png.exe. Por el esquema de ocultamiento mencionado, éstese presenta al usuario como inocente.png, pero al abrirlo, el sistemaoperativo lo reconoce como un ejecutable, y lo ejecuta en vez de abrirloen un visor de imágenes.

Números mágicos La alternativa que emplean los sistemas Unix es, comosiempre, simple y elegante, aunque indudablemente presenta eventualeslagunas: El sistema mantiene una lista compilada de las huellas digitalesde los principales formatos que debe manejar,4 para reconocer el contenidode un archivo basado en sus primeros bytes.

Casi todos los formatos de archivo incluyen lo necesario para que se llevea cabo este reconocimiento, y cuando no es posible hacerlo, se intentapor medio de ciertas reglas heurísticas. Por ejemplo, todos los archivosde imágen en formato de intercambio gráfico (GIF) inician con la cadenaGIF87a o GIF89a, dependiendo de la versión; los archivos del lenguajede descripción de páginas PostScript inician con la cadena%!, el Formato

3Por ejemplo, imprimir un archivo binario resulta en una gran cantidad de hojas inútiles,particularmente tomando en cuenta que hay caracteres de control como el ASCII 12 (avancede forma, form feed), que llevan a las impresoras que operan en modo texto a iniciar unanueva página; llevar a un usuario a correr un archivo ejecutable disfrazado de un documentoinocuo, como veremos a continuación, fue un importante vector de infección de muchos virus.

4Una de las ventajas de este esquema es que cada administrador de sistema puede ampliarla lista con las huellas digitales que requiera localmente

8

Page 9: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

de Documentos Portátiles (PDF) con%PDF, etcétera. Un documento enformatos definidos alrededor de XML inicia con <!DOCTYPE. Algunos deestos formatos no están anclados al inicio, sino que en un punto específicodel primer bloque.

Un caso especial de números mágicos es el llamado hashbang (#!). Es-to indica a un sistema Unix que el archivo en cuestión (típicamen-te un archivo de texto, incluyendo código fuente en algún lenguaje descript) debe tratarse como un ejecutable, y empleando como intérpreteal comando indicado inmediatamente después del hashbang. Es por estoque podemos ejecutar directamente, por ejemplo, los archivos que ini-cian con #!/usr/bin/bash: El sistema operativo invoca al programa/usr/bin/bash, y le especifica como argumento al archivo en cuestión.

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

Esta idea resultó fundamental para varias de las características amigablesal usuario que presentó Macintosh desde su introducción — Particular-mente, para presentar un entorno gráfico que respondiera ágilmente, sintener que buscar los datos base de una aplicación dentro de un archivode mucho mayor tamaño. La división de recursos cabe en pocos sectoresde disco, y si tomamos en cuenta que las primeras Macintosh funcionabanúnicamente con discos flexibles, el tiempo invertido en leer una lista deiconos podría ser demasiada.

La división de recursos puede contener todo tipo de información; los pro-gramas ejecutables son los que le dan un mayor uso, dado que incluyendesde los aspectos gráficos (icono a mostrar para el archivo, ubicación de laventana a ser abierta, etc.) hasta aspectos funcionales, como la traducciónde sus cadenas al lenguaje particular del sistema en que está instalado.Esta división permite una gran flexibilidad, dado que no es necesario teneracceso al fuente del programa para crear traducciones y temas.

En el tema particular que en esta sección nos concierne, la división derecursos incluye un campo creador, que indica qué programa fue el quecreó al archivo, mismo que será llamado en caso de que el usuario invoquedirectamente al archivo.

Las versiones actuales de MacOS ya no emplean esta técnica, sino que unallamada appDirectory, para propósitos de esta discusión, la técnica basees la misma.

9

Page 10: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

2.5. Estructura de los archivos y métodos de accesoLa razón principal de la existencia del sistema de archivos son los archivos.

Un archivo almacena información de algún tipo, estructurado o no estructurado.La mayor parte de los sistemas operativos maneja únicamente archivos sin

estructura — Cada aplicación es responsable de preparar la información deforma congruente, y la responsabilidad del sistema operativo es únicamente en-tregarlo como un conjunto de bytes. Ha habido sistemas de archivos históricos,como IBM CICS (1968), IBM MVS (1974) o DEC VMS (1977), que adminis-traban ciertos tipos de datos en un formato básico de base de datos.

El que el sistema operativo no imponga estructura a un archivo no significa,claro está, que la aplicación que lo genera no lo haga. La razón por la que lossistemas creados en los últimos 30 años no han implementado este esquema debase de datos es que le resta flexibilidad al sistema: El que una aplicación tuvieraque ceñirse a los tipos de datos y alineación de campos del sistema operativoimpedía su adecuación, y el que la funcionalidad de un archivo tipo base dedatos dependiera de la versión del sistema operativo creaba un acoplamientodemasiado rígido entre el sistema operativo y las aplicaciones: Hoy en día esmucho más común ver que los programas que requieren gestores de base de datosinteractúen con uno, implementado independientemente en espacio de usuario, oincluso que liguen con un gestor implementado como biblioteca, como es el casode SQLite (que es empleado por herramientas de adquisición de datos tan debajo nivel como systemtap, y por herramientas tan de escritorio como el gestorde fotografías shotwell o el navegador Firefox ).

Podemos ver aún un remanente de los archivos estructurados en los sistemasderivados de MS-DOS: En estos sistemas, un archivo puede ser de texto o binario.Un archivo de texto está compuesto por una serie de caracteres que formanlíneas, y la separación entre una línea y otra constituye de un retorno de carro(CR, caracter ASCII 13) seguido de un salto de línea (LF, caracter ASCII 10).5

El acceso a los archivos puede realizarse de diferentes maneras:

Acceso secuencial Mantiene la semántica por medio de la cual pudiéramosleer de nuestros archivos fuera la equivalente a unidad de cinta que men-cionamos en la sección Operaciones con archivos: El mecanismo principalpara leer o escribir es ir avanzando consecutivamente por los bloques queconforman al archivo hasta llegar a su final.

Típicamente emplearemos este mecanismo de lectura para leer a memoriacódigo (programas o bibliotecas) o documentos, sea enteros o fraccionesde los mismos. Para un contenido estructurado, como una base de datos,resultaría absolutamente ineficiente, dado que no conocemos el punto de

5Esta lógica es herencia de las máquinas de escribir manuales, en que el salto de línea(avanzar el rodillo a la línea siguiente) era una operación distinta a la del retorno de carro(devolver la cabeza de escritura al inicio de la línea). En la época de los teletipos, como medidapara evitar que se perdieran caracteres mientras la cabeza volvía hasta la izquierda, se decidióseparar el inicio de nueva línea en los dos pasos que tienen las máquinas de escribir, parainducir una demora que evitara la pérdida de información.

10

Page 11: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

inicio o finalización de cada uno de los registros, y probablemente tendría-mos que hacer barridos secuenciales del archivo completo para cada unade las búsquedas.

Figura 2: Archivo de acceso secuencial

Acceso aleatorio El empleo de gestores como SQLite u otros muchos motoresde base de datos más robustos no nos exime de pensar en nuestro archivocomo una tabla estructurada. Si la única semántica por medio de la cualpudiéramos leer de nuestros archivos fuera la equivalente a una unidad decinta, implementar el acceso a un punto determinado del archivo podríaresultar demasiado gravoso.

Afortunadamente, el que el sistema operativo no imponga registros delongitud fija no impide que el programa gestor lo haga. Si en el archivo alcual apunta el descriptor de archivos FD tenemos 2000 registros de 75 bytescada uno y necesitamos recuperar el registro número 65 hacia el bufferregistro, reposicionamos el apuntador de lectura al byte 65 × 75 =4875 (seek(FD, 4875)) y leemos los siguientes 75 bytes en registro(read(FD, *registro, 75)).

Figura 3: Archivo de acceso aleatorio

Acceso relativo a índice En los últimos años se han popularizado los gesto-res de base de datos no estructurados u orientados a texto, llamados ge-néricamente NoSQL. Estos gestores pueden guardar registros de tamañovariable en disco, por lo que no podríamos encontrar la ubicación correctapor medio de los mecanismos de acceso aleatorio.

11

Page 12: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Para implementar este acceso, se divide al conjunto de datos en dos sec-ciones (incluso, posiblemente, en dos archivos independientes): La primersección es una lista corta de identificadores, cada uno con el punto de inicioy término de los datos a los que apunta. Para leer un registro, se empleaacceso aleatorio sobre el índice, y el apuntador se avanza a la ubicaciónespecífica que se solicita.

En el transcurso de un uso intensivo de esta estructura, dado que la porciónde índice es muy frecuentemente consultada y relativamente muy pequeña,muy probablemente se mantenga completa en memoria, y el acceso a cadauno de los registros puede resolverse en tiempo muy bajo.

La principal desventaja de este modelo de indexación sobre registros delongitud variable es que sólo resulta eficiente para contenido mayormentede lectura: Cada vez que se produce una escritura y cambia la longitudde los datos almacenados, se va generando fragmentación en el archivo, ypara resolverla probablemente se hace necesario suspender un tiempo laejecución de todos los procesos que estén empleando al archivo en cues-tión (e invalidar, claro, todas las copias en caché de los índices). Ahorabien, mientras se mantenga como mayormente de lectura, este formatotendrá la ventaja de no desperdiciar espacio en los campos nulos o devalor irrelevante para algunos de los registros.

Además de esto, la escritura en ambas partes de la base de datos debemantenerse con garantías de atomicidad — Si se pierde la sincronía entreíndice y datos, nos enfrentamos a una muy probable corrupción de datos.

Figura 4: Acceso relativo a índice: Un índice apuntando al punto justo de unarchivo sin estructura

2.6. Transferencias orientadas a bloquesUn sistema de archivos es la representación que se da a un conjunto de

archivos y directorios sobre un dispositivo orientado a bloques; un dispositivo

12

Page 13: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

orientado a bloques es uno que, para cualquier transferencia que solicitemosdesde o hacia él, nos responderá con un bloque de tamaño predefinido.

Esto es, si bien el sistema operativo nos presenta una abstracción por mediode la cual la lectura (read()) puede ser de un tamaño arbitrario, todas lastransferencias de datos desde cualquiera de los discos serán de un múltiplo deltamaño de bloques, definido por el hardware (típicamente 512 bytes).

Cuando leemos, como en el ejemplo anterior, sólamente un registro de 75bytes, el sistema operativo lee el bloque completo y probablemente lo mantieneen un caché en la memoria principal; si en vez de una lectura, la operación queefectuamos fue una de escritura (write()), y el sector que vamos a modificarno ha sido leído aún a memoria (o fue leído hace mucho, y puede haber sidoexpirado del caché), el sistema tendrá que leerlo nuevamente, modificarlo enmemoria, y volver a guardarlo a disco.

3. Organización de archivosHasta ahora, nos hemos enfocado en qué es y cómo se maneja un archivo.

Sin embargo, no hablaríamos de sistemas de archivos si no tuviéramos una grancantidad de archivos. Es común que en un sólo medio de almacenamiento de unequipo de uso doméstico tengamos a decenas de miles de archivos, y en equiposdedicados, no está fuera de lugar tener cientos o miles de veces tanto. Por tanto,tenemos que ver también cómo se organiza una gran cantidad de archivos.

3.1. Evolución del concepto de directorio

El concepto dominante en almacenaimiento hoy en día es el directorio jerár-quico. Demos un breve repaso acerca de su historia.

3.1.1. Convenciones de nomenclatura

Cada sistema de archivos puede determinar cuántos y qué caracteres sonválidos para designar a uno de sus elementos, y cuáles son separadores válidos.El caracter que se emplea para separar los elementos de un directorio no esun estándar a través de todos los sistemas operativos — Los más comunesque encontraremos hoy en día son la diagonal (/), empleada en sistemas tipoUnix y derivados (incluyendo MacOS X y Android), y la diagonal invertida (\),empleada en CP/M y derivados, incluyendo MS-DOS y Windows.

Diversos sistemas han manejado otros caracteres (por ejemplo, el MacOS his-tórico empleaba los dos puntos, :), y aunque muchas veces los mantenían ocul-tos del usuario a través de una interfaz gráfica rica, los programadores siempretuvieron que poder especificarlos.

A lo largo del presente texto manejaremos la diagonal (/) como separadorde directorios.

13

Page 14: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

3.1.2. Sistema de archivos plano

Los primeros sistemas de archivos limitaban el concepto de directorio a unarepresentación plana de los archivos que lo conformaban, sin ningún conceptode jerarquía de directorios como el que hoy nos es natural. Esto se debía, enprimer término, a lo limitado del espacio de almacenamiento de las primerascomputadoras en implementar esta metáfora (los usuarios no dejaban sus archi-vos a largo plazo en el disco, sino que los tenían ahí meramente cuando les eranútiles), y en segundo término, a que no se había aún desarrollado un conceptode separación, permisos y privilegios como el que poco después aparecería.

En las computadoras personales los sistemas de archivos eran también planosen un primer momento, pero por otra razón: En los sistemas profesionales ya sehabía desarrollado el concepto; al aparecer la primer computadora personal en1975, ya existían incluso las primeras versiones de Unix diseñadas para trabajoen red. La prioridad en los sistemas personales era mantener el código del sistemaoperativo simple, mínimo. Con unidades de disco capaces de manejar entre 80 y160KB, no tenía mucho sentido implementar directorios — Si un usuario quisierallevar a cabo una división temática de su trabajo, lo colocaría en distintos discosflexibles. El sistema operativo CP/M nunca soportó jerarquías de directorios,como tampoco lo hizo la primer versión de MS-DOS6.

El sistema de archivos original de la Apple Macintosh, MFS, estaba cons-truido sobre un modelo plano, pero presentando la ilusión de directorios de unaforma comparable a las etiquetas: Existían bajo ciertas vistas (pero notoria-mente no en los diálogos de abrir y grabar archivos), pero el nombre de cadauno de los archivos tenía que ser único, dado que el direcorio al que pertenecíaera básicamente sólo un atributo del archivo.

Y contrario a lo que dicta la intuición, el modelo de directorio plano no hadesaparecido: El sistema de almacenamiento en la nube ofrecido por el servi-cio Amazon S3 (Simple Storage Service, Servicio Simple de Almacenamiento)maneja únicamente objetos (comparable con nuestra definición de archivos) ycubetas (que reconoceríamos como unidades o volúmenes), y permite referirse aun objeto o un conjunto de objetos basado en filtros sobre el total que conformana una cubeta.

Probablemente a futuro nos encontremos con más ofertas como la de AmazonS3, pero por ahora, continuemos sobre la línea histórica de los directorios.

3.1.3. Directorios de profundidad fija

Las primeras implementaciones de directorios eran de un sólo nivel : El totalde archivos en un sistema podía estar dividido en directorios, fuera por tipo dearchivo (separando, por ejemplo, programas de sistema, programas de usuario ytextos del correo), por usuario (facilitando una separación lógica de los archivosde un usuario de pertenecientes a los demás usuarios del sistema)

6el soporte de jerarquías de directorios fue introducido apenas en la versión 2, junto con elsoporte a discos duros de 10MB, con la IBM XT

14

Page 15: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

El directorio raiz (base) se llama en este esquema MFD (Master File Direc-tory, Directorio Maestro de Archivos), y cada uno de los directorios derivadoses un UFD (User File Directory, Directorio de Archivos de Usuario).

Figura 5: Directorio simple, limitado a un sólo nivel de profundidad

Este esquema resuelve el problema principal del nombre global único: Antesde los directorios, cada usuario tenía que cuidar que los nombres de sus archivosfueran únicos en el sistema, y ya teniendo cada uno su propio espacio, se volvióuna tarea mucho más simple. La desventaja es que, si el sistema restringe a cadausuario a escribir en su UFD, se vuelve fundamentalmente imposible trabajaren algún proyecto conjunto: No puede haber un directorio que esté tanto dentrode usr1 como de usr2, y los usuarios encontrarán más dificil llevar un proyectoconjunto.

3.1.4. Directorios estructurados en árbol

El siguiente paso natural para este esquema es permitir una jerarquía ili-mitada: En vez de exigir que exista una capa de directorios, se le puede darla vuelta al argumento, y permitir que cada directorio pueda contener a otrosarchivos o directorios a niveles arbitrarios. Esto permite que cada usuario (yque el administrador del sistema) estructure su información siguiendo criterioslógicos y piense en el espacio de almacenamiento como un espacio a largo plazo.

Figura 6: Directorio estucturado en árbol

Junto con esta estructura nacen las rutas de búsqueda (search path): Tantolos programas como las bibliotecas de sistema ahora pueden estar en cualquierlugar del sistema de archivos. Al definirle al sistema una ruta de búsqueda, el

15

Page 16: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

usuario operador puede desentenderse del lugar exacto en el que está determi-nado programa — El sistema se encargará de buscar en todos los directoriosmencionados los programas o bibliotecas que éste requiera.7

3.1.5. El directorio como un grafo dirigido

Si bien parecería que muchos de los sistemas de archivos que empleamos hoyen día pueden modelarse suficientemente con un árbol, donde hay un sólo nodoraiz, y donde cada uno de los nodos tiene un sólo nodo padre, la semántica queofrecen es en realidad un superconjunto estricto de esta: La de un grafo dirigido.

En un grafo dirigido, un mismo nodo puede tener varios directorios padre,permitiendo por ejemplo que un directorio de trabajo común sea parte del di-rectorio personal de dos usuarios. Esto es, el mismo objeto está presente en másde un punto del árbol.

Figura 7: Directorio como un grafo dirigido acíclico: El directorio proyectoestá tanto en el directorio /home/usr1 como en el directorio /home/usr2

Un sistema de archivos puede permitir la organización como un grafo diri-gido, aunque es común que la interfaz que presenta al usuario se restrinja a ungrafo dirigido acíclico: Las ligas múltiples son permitidas, siempre y cuando nogeneren un ciclo.

La semántica de los sistemas Unix implementa directorios como grafos diri-gidos por medio de dos mecanismos:

Liga dura La entrada de un archivo en un directorio Unix es la relación entre7La ruta de búsqueda refleja la organización del sistema de archivos en el contexto de la

instalación específica. Es común que la ruta de búsqueda de un usuario estándar en Unix seasimilar a /usr/local/bin:/usr/bin:/bin:~/bin— Esto significa que cualquier comandoque sea presentado es buscado, en el órden indicado, en los cuatro directorios presentados(separados por el caracter :, la notación ~ indica el directorio personal del usuario activo).En Windows, es común ver una ruta de búsqueda c:\WINDOWS\system32;c:\WINDOWS

16

Page 17: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

la ruta del archivo y el número de i-nodo en el sistema de archivos.8Si tenemos un archivo existente y creamos una liga dura a él, ésta essencillamente otra entrada en el directorio apuntando al mismo i-nodo.Ambas entradas, pues, son el mismo archivo — No hay uno maestro y unodependiente.

En un sistema Unix, este mecanismo tiene sólo dos restricciones:

1. Sólo se pueden hacer ligas duras dentro del mismo sistema de archivos

2. No pueden hacerse ligas duras a directorios, sólo a archivos9

Liga simbólica 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 ligasimbólica) es el sistema operativo mismo; un proceso no tiene que hacernada especial para seguir la liga.

Una liga simbólica puede apuntar a directorios, incluso creando ciclos, oa archivos de otros sistemas de archivos.

Cuando creamos una liga simbólica, la liga y el archivo son dos entidadesdistintas. Si bien cualquier proceso que abra al archivo destino estarátrabajando con la misma entidad, en caso de que éste sea renombrado oeliminado, la liga quedará rota, apuntando a una ubicación inexistente.

Si bien estos dos tipos de liga existen también en los sistemas Windows10,en dichos sistemas sigue siendo más común emplear los accesos directos. Sedenomina así a un archivo (identificado por su extensión, .lnk), principalmentecreado para poder apuntar a los archivos desde el escritorio y los menúes — Siun proceso solicita al sistema abrir el acceso directo, no obtendrá al archivodestino, sino que al acceso directo mismo.

Ahora, si bien tanto las ligas duras como las ligas simbólicas existen tam-bién en Windows, su uso es muy poco frecuente. El API de Win32 ofrece lasfunciones necesarias, pero éstas no están reflejadas desde la interfaz usuario delsistema — Y son sistemas donde el usuario promedio no emplea una interfazprogramador, sino que una interfaz gráfica. Las ligas, podemos concluir, no sonmás empleadas por cuestión cultural : En sus comunidades de usuarios, nuncafueron frecuentes, por lo cual se mantienen como conceptos empleados sólo porlos usuarios poderosos.

Ya con el conocimiento de las ligas, podemos presentar la figura anterior másapegada a la realidad: En los sistemas operativos (tanto Unix como Windows),todo directorio tiene dos entradas especiales: Los directorios . y ..

En todos los directorios, . es una liga dura al mismo directorio, y .. esuna liga al directorio padre. Claro está, como sólo puede haber una liga .., un

8Abordaremos a detalle el significado y la estructura de un i-nodo más adelante en estamisma unidad

9Formalmente, puede haberlas, pero sólo el administrador puede crearlas; detallaremos elpor qué al hablar de recorrer los directorios

10Únicamente en aquellos que emplean el sistema de archivos NTFS, no en los que estáninstalados sobre alguna de las variantes de FAT

17

Page 18: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 8: Directorio como un grafo dirigido, mostrando los enlaces ocultos . y..

directorio que está enlazado desde dos lugares distintos del sistema de archivossólo apunta hacia uno de ellos con su enlace ..; en este caso, el directoriocomún proyecto está dentro del directorio /home/usr2, y representamos laliga simbólica desde /home/usr1 como una línea punteada.

Notarán que hay una excepción: El directorio raiz. En este caso, tanto .como .. apuntan al mismo directorio.

Y esta es la razón que mencionamos hace algunas líneas por la cual nopodemos ver a un árbol de archivos, ni en Windows ni en Unix, como a un grafodirigido acíclico: Tanto las entradas . (al apuntar al mismo directorio dondeestán contentidas) como las entradas .. (al apuntar al directorio padre) creanciclos.

3.2. Operaciones con directoriosAl igual que los archivos, los directorios tienen una semántica básica de ac-

ceso. Los directorios resultan también tipos de datos abstractos con algunasoperaciones definidas — Y como veremos, muchas de las operaciones que rea-lizaremos con los directorios son análogas a las empleadas para los archivos.11Las operaciones básicas a presentar son:

Abrir y cerrar Al igual que los archivos, los directorios deben ser abiertospara trabajar con ellos, y cerrados cuando ya no se les requiera. Paraesto, en C, se emplean las funciones opendir() y closedir(). Estasfunciones trabajan asociadas a un flujo de directorio (directory stream),que funciona de forma análoga a un descriptor de archivo.

11De hecho, en algunos sistemas operativos, los directorios son meramente archivos de tipoespecial, que son presentados al usuario de forma distinta. Pero no adelantemos vísperas, esetema lo veremos más adelante.

18

Page 19: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Listado de archivos Para mostrar los archivos que conforman a un directo-rio, el directorio se abre (tal como un archivo, pero en C, con la funciónopendir() en vez de open()), y va leyendo (con readdir()) sus en-tradas una a una. Cada uno de los resultados es una estrcutura dirent(entrada de directorio), cada una de las cuales contiene su nombre end_name, el identificador de su i-nodo en d_ino, y algunos datos adicio-nales del arcihvo en cuestión.

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

1 #include <stdio.h>2 #include <dirent.h>3 #include <sys/types.h>4

5 int main(int argc, char *argv[]) {6 struct dirent *archivo;7 DIR *dir;8 if (argc != 2) {9 printf("Indique el directorio a mostrar\n");10 return 1;11 }12 dir = opendir(argv[1]);13 while ((archivo = readdir(dir)) != 0) {14 printf("%s\t", archivo->d_name);15 }16 printf("\n");17 closedir(dir);18 }

Al igual que en al hablar de archivos, podemos rebobinar el listado deldirectorio al principio del listado con rewinddir().

Buscar un elemento La mayor parte de las veces, no nos interesa tanto ver ellistado de archivos que existen, sino que abrir uno en particular — Esto es,buscar el archivo que cumpla con cierto criterio, con cierto nombre. Quedaclaro que esto podemos hacerlo discriminando, de entre los resultados quenos va arrojando readdir, y obtener la o las entradas que nos interesen.

Crear, eliminar o renombrar un elemento Si bien estas tres operacionesse implementan por medio de una operación de escritura en el directorio,se implementan a través de las funciones de manejo de archivos.

3.2.1. Recorriendo los directorios

Es frecuente requerir aplicar una operación a todos los archivos dentro decierto directorio — Por ejemplo, si queremos agrupar a un directorio completoen un archivo comprimido, o si queremos copiar todos sus contenidos a otro

19

Page 20: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

medio. Procesar todas las entradas de un directorio, incluyendo las de sus sub-directorios, se denomina recorrer el directorio (en inglés, directory traversal).

Si estamos trabajando en un sistema de archivos plano, la operación derecorrido completo puede realizarse con un programa tan simple como el quepresentamos en la sección anterior.

Al hablar de un sistema de profundidad fija, e incluso de un directorio es-tructurado en árbol, la lógica se complica levemente, dado que para recorrer eldirectorio tenemos que revisar, a cada entrada, si esta es a su vez un directorio(y en caso de que así sea, entrar y procesar a cada uno de sus elementos). Has-ta aquí, sin embargo, podemos recorrer el directorio sin requerir de mantenerestructuras adicionales en memoria representando el estado.

Sin embargo, cuando consideramos a los grafos dirigidos, se vuelve indispen-sable mantener en memoria la contabilidad de todos los nodos que ya hemostocado — en caso contrario, al caer en un ciclo (incluso si este es creado pormecanismos como las ligas simbólicas), caeríamos en un ciclo infinito.

Para esto, no bastaría tomar nota de las rutas de los archivos con-forme avanzamos por el grafo — Cada vez que los encontremos, su ru-ta será distinta (por ejemplo, veríamos /home/usr/proy/archivo, segui-do de /home/usr/proy/mios/archivo, a continuación del cual segui-ría /home/usr/proy/mios/mios/archivo, después de éste, seguiría con/home/usr/proy/mios/mios/mios/archivo, etc.), pero emplear un in-dexado basado en el número de i-nodo12 identifica sin lugar a dudas a cada unode los archivos.

3.2.2. Otros esquemas de organización

Por más que el uso de sistemas de archivos basados en directorios jerárquicosnos parece universal y muy ampliamente aceptado, hay cada vez más casos deuso que apuntan a que podemos estar por dar la bienvenida a una nueva metáforade organización de archivos.

Hay distintas propuestas, y claro está, es imposible aún saber cuál direc-ción obtendrá el favor del mercado — O, dado que no necesariamente sigamosteniendo un modelo apto para todos los usos, de qué segmento del mercado.

3.3. Montaje de directoriosPara trabajar con el contenido de un sistema de archivos, el sistema operativo

tiene quemontarlo: Ubicarlo en un punto del árbol de archivos visible al sistema.Es muy común, 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 tenemos:

Distintos medios físicos Si la computadora tiene más de una unidad de al-macenamiento, el espacio dentro de cada uno de los discos se maneje como

12Que si bien no definimos aún formalmente lo que significa, sabemos que es único porsistema de archivos

20

Page 21: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

un sistema de archivos indepentiente. Esto es especialmente cierto en lapresencia de unidades removibles (diskettes, CDs, unidades USB, discosduros externos, etc.)

Diferentes usos esperados Como veremos más adelante, distintos esquemasde organización (esto es, distintos sistemas de archivos) presentan ventajaspara distintas formas de uso. Por ejemplo, tiene sentido que una base dedatos resida sobre una organización distinta a la de los comandos (binarios)del sistema.

Abstracciones de sistemas no-físicos El sistema operativo puede presentardiversas estructuras con una estructura de sistema de archivos. El ejemplomás claro de esto es el sistema de archivos virtual /proc, existente enlos sistemas Unix, que permite ver diversos aspectos de los procesos enejecución (y, en Linux, del sistema en general). Los archivos bajo /procno existen en ningún disco, pero se presentna como si fueran archivosestándar.

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

En los sistemas tipo Unix, el mecanismo para montar los archivos es el de unárbol con puntos de montaje. Esto es, todos los archivos y directorios del sistemaoperativo están estructurados en torno a un sólo árbol. Cuando se solicita alsistema operativo montar un sistema de archivos en determinado lugar, éste seintegra al árbol, ocultando todo lo que el directorio en cuestión previamentetuviera.13

La manera en que esto se presenta en sistemas Windows es muy distinta.Ahí, cada uno de los sistemas de archivos detectados recibe un identificador devolumen, y es montado automáticamente en un sistema de directorio estructu-rado como árbol de un sólo nivel representando a los dispositivos del sistema.14Este árbol es presentado a través de la interfaz gráfica (aunque este nombre nosignifica nada para el API del sistema) como Mi PC.

Entrando con el identificador de volumen, encontramos al contenido de cadauno. De este modo, la especificación absoluta de un archivo es una cadena comoVOL:\Dir1\Dir2\Archivo.ext—El caracter : separa al volumen del árboldel sistema de archivos, y el caracter \ separa uno de otro a los directorios.

13Hay implementaciones que exigen que el montaje se realice exclusivamente en directoriosvacíos; existen otras, como UnionFS, que buscan seguir presentando una interfaz de lecturaa los objetos que existían en el directorio previo al montaje, pero realizan las escrituras úni-camente en el sistema ya montado; estas complican fuertemente algunos aspectos semánticos,por lo cual resultan poco comunes.

14En realidad, este árbol no sólo incluye a los volúmenes de almacenamiento, sino que alos demás dispositivos del sistema, como los distintos puertos, pero los oculta de la interfazgráfica.

21

Page 22: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 9: Árbol formado del montaje de sda1 en la raiz, sda2 como /usr,sdb1 como /home, y el directorio virtual proc

Los identificadores de volumen están preasignados, muchos de ellos siguiendoa un esquema heredado desde la época de las primeras PC: Los volúmenes A yB están reservados para las unidades de disco flexible; C se refiere al disco durode arranque, y las unidades posteriores que va detectando el sistema son D, E,F, etc.

Es posible modificar esta nomenclatura y configurar a los discos para estar enotra ubicación, pero muchas aplicaciones dependen ya de este comportamientoy configuración específicos.

Figura 10: Vista de un sistema de archivos Windows

22

Page 23: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

3.4. Sistemas de archivos remotosUno 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 a través deprogramas dedicados a ello, como sería hoy en día el FTP.

Por otro lado, desde mediados de los 1980, es posible realizar estas transfe-rencias de forma implícita y automática, empleando sistemas de archivos sobre lared (o lo que es lo mismo, sistemas de archivos remotos). Estos se nos presentancomo caso particular de la abstracción de sistemas no-físicos que mencionamosen la sección anterior: Si bien el sistema operativo no tiene acceso real a losarchivos y directorios que le solicitará el usuario, a través de los módulos de red,sabe cómo obtenerlos y presentarlos como si fueran locales.

Al hablar de sistemas de archivos en red, casi siempre lo haremos siguiendoun modelo cliente-servidor. Estos términos no se refieren a las prestaciones rela-tivas de una computadora, sino al rol que ésta juega dentro de cada conexión —Esto es, designamos como cliente a la computadora que solicita un servicio, ycomo servidor a la que lo provee; es frecuente que dos computadoras sean tantoservidor como cliente la una de la otra en distintos servicios.

3.4.1. Network File System (NFS)

El Sistema de Archivos en Red (Network File System, mejor conocido porsus siglas, NFS ) fue creado por Sun Microsystems, y desde 1984 forma partede su sistema operativo — Resultó una implementación tan exitosa que a lospocos años formaba parte de todos los sistemas tipo Unix.

NFS está construido sobre el mecanismo RPC (Remote Procedure Call, Lla-mada a Procedimientos Remotos), un mecanismo de mensajes y manejo básicode sesión que actúa como una capa superior a TCP/IP, incluyendo facilidadesde descubrimiento de recursos y abstracción. RPC puede ser comparado conprotocolos como DCE/RPC de OSF, DCOM de Microsoft, y hoy en día, SOAPy XML-RPC. Estos mecanismos permiten al programador delegar en un ser-vicio el manejo de las conexiones de red, particularmente (en el caso que eneste momento nos importa) la persistencia de sesiones en caso de desconexión,y limitar su atención a una conexión establecida.

La motivación de origen para la creación de NFS fue presentar una soluciónque aprovechara el hardware existente y centralizara la administración: Ofrecerlas facilidades para contar con redes donde hubiera un servidor de archivos, ydonde las estaciones de trabajo tuvieran únicamente una instalación básica,15y el entorno de usuario completo estuviera disponible en cualquiera de las esta-ciones.

NFS ofrece sobre la red un sistema de archivos con la semántica Unix comple-15Incluso manejando estaciones de trabajo diskless, esto es, computadoras sin disco duro,

cuyo sistema de arranque tiene la capacidad de solicitar al servidor le envíe incluso el núcleodel sistema operativo que ejecutará

23

Page 24: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

ta — Para montar un sistema remoto, basta montarlo16 y usarlo como si fueralocal. El manejo de permisos, usuarios, e incluso las ligas duras y simbólicas semanejan exactamente como se haría localmente.

NFS es un protocolo muy ligero — No implementa cifrado ni verificacionesadicionales, pero al día de hoy, es uno de los mejores mecanismos para el en-vío de grandes cantidades de información — Pero siempre en redes que seancompletamente confiables.

Ahora, NFS se presenta como uno de los componentes de una solución com-pleta. Dado que se espera que la información de usuarios y permisos sea con-sistente en todos los clientes; Sun ofrecía también un esquema llamado YellowPages (posteriormente renombrado a NIS, Network Information System) paracompartir la información de autenticación y listas de usuarios.

La desventaja, en entornos sin NIS, es que los permisos se manejan segúnel ID numérico del usuario. Si en diferentes sistemas el mismo usuario tienediferentes IDs, los permisos no coincidirán. Es más, dado que el control deacceso principal es únicamente por dirección IP, para tener acceso irrestrictoa los archivos de otros usuarios en NFS basta con tener control pleno de unacomputadora cualquiera en la red para poder asumir o usurpar la identidad decualquier otro usuario.

Por último, para garantizar que las escrituras a archivos se llevaran a cabocuando eran solicitadas (en contraposición a asumir éxito y continuar), todaslas escrituras en un principio sobre NFS eran manejadas de forma síncrona, estoes, tras grabar un archivo, el cliente no continuaba con la ejecución hasta notener confirmación por parte del servidor de que los datos estaban ya guardadosen disco.

Versiones posteriores del protocolo mejoraron sobre los puntos débiles aquímencionados. Al día de hoy, casi 30 años después de su presentación, NFS esaún un sistema de archivos en red muy ampliamente empleado.

3.4.2. Common Internet File System (CIFS)

El equivalente a NFS en los entornos donde predominan los sistemas Win-dows es el protocolo CIFS (Common Internet File System, Sistema de ArchivosComún para Internet). Aparece en los sistemas primarios de Microsoft alrededorde 199017, originalmente bajo el nombre SMB (Server Message Block, Bloquede Mensaje del Servidor).

Las primeras implementaciones estaban orientadas al protocolo NBF, fre-cuentemente conocido como NetBEUI, aunque a partir de Windows 2000 se hareimplementado completamente para operar sobre TCP/IP. Es a partir de estemomento que se le comienza a denominar CIFS, aunque el nombre SMB siguesiendo ampliamente utilizado.18

16Para montar un sistema remoto, usaríamos un comando como mountarchivos.unam.mx:/home /home

17El desarrollo de SMB nació como LAN Manager, originalmente para OS/218Es a este nombre que la implementación de CIFS para sistemas Unix, Samba, fue llamado

de esta manera.

24

Page 25: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

CIFS se ajusta mucho más a la semántica de los sistemas MS-DOS y Win-dows, aunque dado el lapso de tiempo que ha existido, ha pasado por varioscambios fundamentales, que al día de hoy complican su uso.

Para tener acceso a un volumen compartido por SMB se introdujo el coman-do NET;19 basta indicar a DOS oWindows NET USE W: \\servidor\directoriopara que el recurso compartido bajo el nombre directorio dentro del equi-po conocido como servidor aparezca en el árbol Mi PC, y el usuario puedaemplear sus contenidos como si fuera un sistema de archivos local.

Cuando fue introducido al mercado, los sistemas Microsoft no manejabanaún el concepto de usuarios, por lo que la única medida de seguridad que imple-mentaba SMB era el manejo de hasta dos contraseñas por directorio compartido:Con una, el usuario obtenía acceso de sólo lectura, y con la otra, de lectura yescritura. Tras la aparición de Windows NT, se agregó un esquema de identi-ficación por usuaro/contraseña, que posibilita el otorgamiento de permisos conuna granularidad mucho menor.20

SMB fue pensado originalmente para una red pequeña, con hasta un par dedecenas de equipos. La mayor parte de los paquetes eran enviados en modode difusión (broadcast), por lo que era fácil llegar a la saturación, y no existíaun esquema centralizado de resolución de nombres, con lo que era frecuente noencontrar a determinado equipo.

Los cambios que CIFS presenta a lo largo de los años son muy profundos. Lasprimeras implementaciones presentan fuertes problemas de confiabilidad, rendi-miento y seguridad, además de estar planteadas para su uso en un sólo tipo desistema operativo; al día de hoy, estos puntos han todos mejorado fuertemen-te. En sistemas Unix, la principal implementación, Samba, fue creada haciendoingeniería inversa sobre el protocolo; a lo largo de los años, se ha convertidoen un esquema tan robusto que es hoy por hoy tomado como implementaciónrefrencia.

3.4.3. Sistemas de archivos distribuídos: Andrew File System (AFS)

Los dos ejemplos de sistema de archivos en red presentados hasta ahoracomparten una visión tradicional del modelo cliente-servidor: Al ver el comandoque inicializa una conexión, e incluso a ver la información que guarda el núcleodel cliente respecto a cualquiera de los archivos, resulta claro cuál es el servidorpara cada uno de ellos.

Andrew File System, desarrolaldo en la Carnegie Mellon University21 y publi-cado en 1989, plantea presentar un verdadero sistema de archivos distribuído, enel 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

19Este comando es empleado en MS-DOS, pero está también disponible en Windows, y aldía de hoy es una de las principales herramientas para administrar usuarios.

20Esto significa, que puede controlarse el acceso permitido más finamente, a nivel archivoindividual y usuario individual.

21Como parte del Proyecto Andrew, denominado así por el nombre de los fundadores deesta universidad: Andrew Carnegie y Andrew Mellon

25

Page 26: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

ubicación). AFS busca también una fácil escalabilidad, la capacidad de agregartanto espacio de almacenamiento como equipos con rol de servidor. AFS permi-te inclusive migrar completamente un volumen mientras está siendo empleado,de forma transparente.

Ante la complejidad e inestabilidad adicional que nos presentan con tantafrecuencia las redes grandes22 (y lo hacían mucho más hace 30 años): AFS debeoperar tan confiablemente como sea posible, incluso sin la certeza de que la redopera correctamente.

AFS construye fuertemente sobre el modelo de tickets y credenciales de Ker-beros, pero se aleja sensiblemente de la semántica de operación de archivos quehasta ahora hemos manejado. Muchos eventos, operaciones y estados van ligadosal momento en el tiempo en que se presentan, a través de un modelo de con-sistencia débil (weak consistency model). Muy a grandes rasgos, esto significaque:

Cuando se abre un archivo, éste se copia completo al cliente. Todas laslecturas y escrituras (a diferencia de los esquemas tradicionales, en queéstas son enviadas al servidor lo antes posible y de forma síncrona) sedirigen únicamente a la copia local.

Al cerrar el archivo, éste se copia de vuelta al servidor de origen, el cual secompromete a notificar a los clientes si un archivo abierto fue modificado(esto es, a hacer una llamada o callback). Los clientes pueden entoncesintentar incorporar los cambios a su versión de trabajo, o continuar con lacopia ya obtenida — Es esperable que si un segundo cliente realiza algunamodificación, incorpore los cambios hechos por el primero, pero esto sedeja a la implementación del programa en cuestión.

Esto significa en pocas palabras que los cambios a un archivo abierto porun usuario no son visibles a los demás de inmediato; sólo una vez que se cierraun archivo, los cambios hechos a éste son puestos a disposición de las sesionesabiertas actuales, y sólo son enviados como versión actual a las sesiones abiertasposteriormente.

Con este cambio semántico, debe quedar claro que AFS no busca ser un sis-tema para todo uso ni un reemplazo universal de los sistemas de archivos locales,en contraposición de los sistemas de archivos centralizados. AFS no plantea enningún momento una operación diskless. Bajo el esquema aquí descrito, las lec-turas y escrituras resultan baratas, porque se realizan exclusivamente sobre elcaché local, pero abrir y cerrar un archivo puede ser muy caro, porque debetransferirse el archivo completo.

Hay aplicaciones que verdaderamente sufrirían si tuvieran que implemen-tarse sobre un sistema de archivos distribuído — Por ejemplo, si una base dedatos se distribuyera sobre AFS, la carencia de mecanismos de bloqueo sobresecciones del archivo, y el requisito de operar sobre archivos completos haríanimpracticable compartir un archivo de uso intensivo y aleatorio.

22El uso típico de AFS se planteaba para organizaciones grandes, del órden de decenas demiles de estaciones

26

Page 27: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

4. Plasmando la estructura en el dispositivoHasta ahora, hemos visto a los elementos del sistema de archivos tal como

son presentados al usuario final, sin entrar en detalles respecto a cómo organizatoda esta información el sistema operativo en un dispositivo persistente — Men-cionamos algunas estructuras base, pero dejándolas explícitamente pendientesde definición. En esta sección nos ocuparemos de detallar las principales estruc-turas y mecanismos empleados para que un sistema de archivos sea, más allá deuna estructura formal ideal, una entidad guardada en un dispositivo.

A lo largo de la historia del cómputo, el almacenamiento no siempre fuehecho en discos (dispositivos giratorios de acceso aleatorio). En un principio, losmedios principales de acceso estrictamente secuencial (tarjetas perforadas, cintasde papel, cintas magnéticas), y desde hace algunos años, estamos viendo unamigración a almacenamiento de estado sólido, a dispositivos sin partes móvilesque guardan la información en un tipo particular de memoria.

Los sistemas de archivo están en general desarrollados pensando en discos,y a lo largo de esta sección, nos referiremos como el disco al medio de almace-namiento persistente en el cual esté plasmado el sistema de archivos. Hacia elfinal de la sección abordaremos algunos de los aspectos que debemos consideraral hablar de sistemas de archivos respaldados en medios distintos a un disco.

Mientras tanto, mantengamos una visión aún bastante idealizada y abstrac-ta: Asumamos que un disco es visto por el sistema operativo como un arreglomuy grande de bloques de tamaño fijo, cada uno de ellos directamente direccio-nable, y definamos los conceptos que nos permitirán representar en dicho disconuestro sistema operativo:

Partición Una subdivisión de un disco, por medio de la cual el administrado-r/usuario del sistema puede definir la forma en que se emplea el espacioque éste ofrece. Un disco puede tener varias particiones, y cada una deellas puede tener un sistema de archivos independiente.

Volumen Colección de bloques inicializados con un sistema de archivos quepueden presentarse al usuario como una unidad. Típicamente un volumencoincide con una partición (pero no siempre es el caso).

El volumen se describe ante el sistema operativo en el bloque de control devolumen, también conocido como superbloque en Unix, o Tabla Maestrade Archivos (Master File Table) en NTFS.

Directorio raiz La estructura base con la relación entre nombres de archivoy números de i-nodo. Típicamente sólo almacena los archivos que estánen el primer nivel jerárquico del sistema, y los directorios derivados sonúnicamente referenciados desde éste.

El directorio normalmente incluye sólo el nombre de cada uno de los archi-vos y el número de i-nodo que lo describe, todos los metadatos adicionalesestán en los respectivos i-nodos.

27

Page 28: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Metadatos Recibe este nombre toda la información acerca de un archivo queno es el archivo mismo. Por ejemplo, el nombre, tamaño o tipo del archivo,su propietario, el control de acceso, sus fechas de creación, último accesoy modificación, ubicación en disco, etc.

I-nodo Del inglés i-node, information node (nodo de información); en los sis-temas tipo Windows, normalmente se le denomina bloque de control dearchivo (FCB). Es la estructura en disco que guarda los metadatos decada archivo, proporcionando un vínculo entre la entrada en el directorioy la información que referida.

La información almacenada incluye todos los metadatos relacionados conel archivo a excepción del nombre (mismo que radica únicamente en eldirectorio): Los permisos y propietarios del archivo, sus fechas de creación,última modificación y último acceso, y la relación de bloques que ocupa enel disco. Veremos más adelante los esquemas más comunes para presentaresta relación de bloques.

Mapa de bits de espacio libre La función del bitmap es poder gestionar elespacio libre del disco. Recordemos que el disco se presenta asignado porbloques, típicamente de 4096 bytes — En el bitmap cada bloque se repre-senta con un bit, con lo que aquí podemos encontrar de forma compactael espacio ocupado y disponible, así como el lugar adecuado para crear unnuevo archivo.

El bitmap para un disco de 100GB puede, de esta manera, representar-se en 23MB ( 100×109

4096 ), cantidad que puede razonablemente mantener enmemoria un sistema de escritorio promedio hoy en día.

Veremos más adelante algunas estructuras avanzadas que permiten mayoreficiencia en este sentido.

4.1. Diferentes sistemas de archivosUn sistema operativo puede dar soporte a varios distintos sistemas de archi-

vos; muchas razones pueden influir para elegir qué sistema de archivos emplea-remos para nuestra información — Algunas razones para elegir a uno u otro sonque el rendimiento de cada uno puede estaar afinado ante diferentes patrones decarga, necesidad de emplear un dispositivo móvil para intercambiar datos condistintos sistemas, e incluso restricciones de hardware.23

A lo largo de esta sección iremos comentando cómo los principales concep-tos que revisaremos se han implementado en distintos sistemas de archivos;nos referiremos principalmente a una familia de sistema de archivos simple decomprender, aunque muestra claramente su edad: La familia FAT. Ilustraremosalgunos ejemplos específicos empleando también otros sistemas de archivos.

23Por ejemplo, los cargadores de arranque en algunas plataformas requieren poder leer elvolumen donde está alojada la imágen del sistema operativo — Lo cual obliga a que esté enun sistema de archivos nativo a la plataforma.

28

Page 29: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

El sistema FAT fue creado hacia fines de los 1970, y muestra claras eviden-cias de haber sido pensado para discos flexibles. Sin embargo, a través de variasextensiones que se han presentado con el paso de los años (algunas con compa-tibilidad hacia atrás, otras no), sigue siendo uno de los sistemas más empleadosal día de hoy, a pesar de que ya no es recomendado como sistema primario porningún sistema operativo de escritorio.

Si bien FAT tuvo su mayor difusión con los sistemas operativos de la familiaMS-DOS, es un sistema de archivos nativo para una gran cantidad de otrossistemas, lo cual se hace obvio al revisar el soporte a atributos extendidos quemaneja.

4.2. El volumenLo primero que requiere saber el sistema operativo para poder montar un

volumen es su estructura general: En primer término, de qué tipo de sistema dearchivos se trata, y acto seguido, la descripción básica del mismo: Su extensión, eltamaño de los bloques lógicos que maneja, si tiene alguna etiqueta que describasu función ante el usuario, etc. Esta información está contenida en el bloquede control de volumen, también conocido como superbloque o tabla maestra dearchivos.24

Tras leer la información del superbloque, el sistema operativo determina enprimer término si puede proceder — Si no sabe cómo trabajar con el sistema dearchivos en cuestión, por ejemplo, no puede presentar información útil algunaal usuario.

Habíamos mencionado ya que el tamaño de bloques (típicamente, 512 by-tes) es establecido por el hardware. Es muy común que, tanto por razones deeficiencia como para alcanzar a direccionar mayor espacio, el sistema de archi-vos agrupe a varios bloques físicos en un bloque lógico. Veremos más acerca dequé factores determinan su tamaño de bloques cada sistema de archivos en lasiguiente sección, al hablar de el directorio.

Dado que describir al volumen es la más fundamental de las operaciones quepodamos realizar, muchos sistemas de archivos mantienen copias adicionalesdel superbloque, a veces dispersas a lo largo del sistema de archivos, para poderrecuperarlo en caso de que se corrompa.

En el caso de FAT, el volumen indica no sólo la generación del sistemade archivos que se está empleando (FAT12, FAT16 o FAT32, en los tres casosdenominados así por la cantidad de bits para referenciar a cada uno de losbloques lógicos o clusters), sino el tamaño de los clusters, que puede ir desdelos 2 y hasta los 32 Kb.

4.2.1. Volúmenes crudos

Si bien una de los principales tareas de un sistema operativo es la organiza-ción del espacio de almacenamiento en sistemas de archivos y su gestión para

24Y aquí hay que aclarar: El superbloque no contiene a los archivos, ni siquiera a lasestructuras que apuntan hacia ellos, sólo describe al volumen para que pueda ser montado

29

Page 30: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

compartirse entre diversos usuarios y procesos, hay algunos casos en que undispositivo orientado a bloques puede ser puesto a disposición de un proceso enparticular para que éste lo gestione directamente. Este modo de uso se denominael de dispositivos crudos o dispositivos en crudo (raw devices).

Podemos encontrar dos casos de uso primarios hoy en día para dispositivosorientados a bloques no administrados a través de la abstracción de los sistemasde archivos:

Espacio de intercambio Como vimos en la unidad anterior, la gestión de laporción de la memoria virtual que está en disco es mucho más eficientecuando se hace sin cruzar por la abstracción del sistema operativo — Estoes, cuando se hace en un volumen en crudo. Y si bien el gestor de memoriavirtual es parte innegable del sistema operativo, en un sistema microkernelpuede estar ejecutándose como proceso de usuario.

Bases de datos Las bases de datos relacionales pueden incluir volúmenes muygrandes de datos estrictamente estructurados. Algunos gestores de basesde datos, como Oracle, MaxDB o DB2, recomiendan a sus usuarios eluso de volúmenes crudos, para optimizar los accesos a disco sin tener quecruzar por tantas capas del sistema operativo.

La mayor parte de los gestores de bases de datos desde hace varios años nomanejan esta modalidad, sin embargo, por la complejidad adicional quesupone para el administrador del sistema y por lo limitado de la ventajaen rendimiento que supone hoy en día, aunque es indudablemente un temaque se presta para discusión e investigación.

4.3. El directorio y los i-nodosEl directorio es la estructura que relaciona a los archivos como son presen-

tados al usuario –identificados por una ruta y un nombre– con las estructurasque los describen ante el sistema operativo — Los i-nodos.

A lo largo de la historia de los sistemas de archivos, se han implementadomuy distintos esquemas de organización.

4.3.1. El directorio raiz

Una vez que el sistema de archivos está montado, todas las referencias aarchivos dentro de éste deben pasar a través del directorio. El directorio raizestá siempre en una ubicación bien conocida dentro del sistema de archivos —Típicamente vamos a encontrarlo al inicio del volumen, aunque en los 1980, losdiseñadores del sistema AmigaOS decidieron ubicar al directorio en el sectorcentral de los volúmenes. Un disco flexible tenía 80 pistas (típicamente deno-minadas cilindros cuando hablamos de discos duros), con lo que, al ubicar aldirectorio en la pista 40, el tiempo promedio de movimiento de cabezas para lle-gar a él se reducía a la mitad. Si todas las operaciones de abrir un archivo tienenque pasar por el directorio, esto resultaba en una mejoría muy significativa.

30

Page 31: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

El directorio es la estructura que determina el formato que debe seguir elnombre de cada uno de los archivos y directorios: Es común que en un sistemamoderno, el nombre de un archivo pueda tener hasta 256 caracteres, inclu-yendo espacios, caracteres acentuados. Algunos sistemas de archivos son sensi-bles a mayúsculas, como es el caso de los sistemas nativos a Unix (el archivoejemplo.txt es distinto de Ejemplo.TXT), mientras que otros no lo son, co-mo es el caso de NTFS y VFAT (ejemplo.txt y Ejemplo.TXT son idénticosante el sistema operativo).

Todas las versiones de FAT siguen para los nombres de archivos un esquemaclaramente antiguo: Los nombres de archivo pueden medir hasta 8 caracteres,con una extensión opcional de 3 caracteres más, dando un total de 11. El sistemano sólo no es sensible a mayúsculas y minúsculas, sino que todos los nombresdeben guardarse completamente en mayúsculas, y permite sólo ciertos caracteresno alfanuméricos. Este sistema de archivos no implementa la separación entredirectorio e i-nodo, que hoy es la norma, por lo que cada una de las entradas enel directorio mide exactamente 32 bytes. Como es de esperarse en un formatoque ha vivido tanto tiempo y ha pasado por tantas generaciones como FAT,algunos de estos campos han cambiado substancialmente sus significados:

Figura 11: Formato de la entrada del directorio bajo FAT (Mohammed, 2007)

La extensión VFAT fue agregada con el lanzamiento de Windows 95. Estaextensión permitía que, si bien el nombre real de un archivo seguiría estandolimitada al formato presentado, pudieran agregarse entradas adicionales al di-rectorio utilizando el atributo de etiqueta de volumen de maneras que un sistemaMS-DOS debiera ignorar.

Esto presenta una complicación adicional al hablar del directorio raiz deuna unidad: Si bien los directorios derivados no tienen este límite, al estar eldirectorio raiz ubicado en una sección fija del disco, tiene una longitud límitemáxima: En un disco flexible (que hasta el día de hoy, por su limitada capacidad,se formatea bajo FAT12), desde el bloque 20 y hasta el 33, esto es, 14 bloques.Con un tamaño de sector de 512 bytes, el directorio raiz mide 512 × 14 =7168 bytes, esto es, 7168

32=224 entradas como máximo. Y si bien esto no nos suenaa muy limitado, ocupar cuatro entradas por archivo cuando tiene un nombremedianamente largo va reduciendo fuertemente el panorama.

El problema no resulta tan severo como podría parecer: Para FAT32, eldirectorio raiz ya no está ubicado en un espacio reservado, sino que como partedel espacio de datos, por lo cual es extensible en caso de requerirse.

Los primeros sistemas de archivos estaban pensados para unidades de muy

31

Page 32: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 12: Entradas representando archivo con nombre largo bajo VFAT (PeterClark)

baja capacidad; por mucho tiempo, las implementaciones del directorio eransimplemente listas lineales con los archivos que estaban alojados en el volumen.Como vimos, muchos de estos primeros sistemas no contemplaban directoriosjerárquicos, sino que presentaban un único espacio plano de nombres; cuan-do estos sistemas fueron evolucionando para soportar directorios anidados, porcompatibilidad hacia atrás (y por consideraciones de rendimiento que veremosa continuación) siguieron almacenando únicamente al directorio raiz en esta po-sición privilegiada, y manejando a todos los directorios que derivaran de éstecomo si fueran archivos, repartidos por el disco.

En un sistema que implementa los directorios como listas lineales, entre másarchivos haya, el tiempo que toma casi cualquier operación se incrementa lineal-mente (dado que potencialmente tenemos que leer al directorio completo paraencontrar a un archivo). Y las listas lineales presentan un segundo problema:Cómo reaccionar cuando se llena el espacio que tienen asignado.

Como ya mencionamos, FAT asigna un espacio fijo al directorio raiz, pero lossubdirectorios pueden crecer abritrariamente. Un subdirectorio es básicamenteun archivo con un tipo especial de archivo — Si el cuarto bit del byte 12 deuna entrada de directorio está encendido, los datos correspondientes al archivoserán interpretados como una tabla de directorios.

Queda claro que FAT es un sistema heredado, y que exhibe muchas prácti-cas que ya no vemos en diseños modernos de sistemas de archivos. Vimos quedentro de la entrada de directorio de cada archivo está prácticamente su i-nodocompleto: La información de permisos, atributos, fechas de creaación — Y muyparticularmente, el apuntador al cluster de inicio (bytes 26-28, mas los 20-22para FAT32). Esto exhibe una de las grandes debilidades de FAT: La tendenciaa la fragmentación.

32

Page 33: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

La familia FAT obtiene su nombre de la Tabla de Asignación de Archivos(File Allocation Table), que aparece antes del directorio, en los primeros sectoresdel disco.25 Cada byte de la FAT representa a un cluster en el área de datos; cadaentrada en el directorio indica, en su campo cluster, cuál es el primer clusterque conforma al archivo. Ahora bien, conforme se usa un disco, y los archivoscrecen y se eliminan, y van llenando los espacios vacíos que van dejando, FATva asignando espacio conforme encuentra nuevos clusters, sin cuidar que seaespacio continuo. Los apuntadores al siguiente cluster se van marcando en latabla, cluster por cluster, y el último cluster de cada archivo recibe el valorespecial (dependiendo del tipo de FAT) 0xFFF, 0xFFFF o 0xFFFFFFFF.

Ahora bien, si los directorios son sencillamente archivos que reciben un tra-tamiento especial, estos son también susceptibles a la fragmentación. Dentro deun sistema Windows 95 o superior (empleando VFAT), con directorios anidadosa cuatro o cinco niveles como lo establece su jerarquía estándar, el puro hecho derecorrerlos para encontrar determinado archivo puede resultar muy penalizadopor la fragmentación.

4.3.2. La eliminación de entradas del directorio

Sólo unos pocos sistemas de archivos guardan sus directorios ordenados —Si bien esto facilitaría las operaciones más frecuentes que se realizan sobre deellos (en particular, la búsqueda — Cada vez que un directorio es recorrido has-ta encontrar un archivo tiene que leerse potencialmente completo), mantenerloordenado ante cualquier modificación resultaría mucho más caro, dado que ten-dría que reescribirse el directorio completo al crearse o eliminarse un archivodentro de éste, y lo que es más importante, más peligroso, dado que aumentaríael tiempo que los datos del directorio están en un estado inconsistente, aumen-tando la probabilidad de que ante una interrupción repentina (fallo de sistema,corte eléctrico, desconexión del dispositivo, etc.) se presentara corrupción de lainformación llevando a pérdida de datos.

Ordenar las entradas del directorio teniendo sus contenidos ya en memoriay, en general, diferir las modificaciones al directorio resulta mucho más conve-niente en el caso general. Esto vale también para la eliminación de archivos —Presentamos, pues, la estrategia que sigue FAT . Recordemos que el diseño deFAT fue aún cuando el medio principal de almacenamiento era el disco flexible,decenas de veces más lento que el disco duro, y con mucha menor confiabilidad.

Cuando se le solicita a un sistema de archivos FAT eliminar un archivo, ésteno se borra del directorio, ni su información se libera de la tabla de asigna-ción de archivos, sino que se marca para ser ignorado, reemplazando el primercaracter de su nombre por 0xE5. Ni la entrada de directorio, ni la cadena declusters correspondiente en las tablas de asignación,26 son eliminadas — Sóloson marcadas como disponibles. El espacio de almacenamiento que el archivo

25Tan importante es esta tabla que se guarda por duplicado, e incluso por triplicado, de-pendiendo de la versión de FAT.

26Abordaremos este tema en breve, al hablar de las tablas de asignación de archivos

33

Page 34: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

eliminado ocupa debe, entonces, ser sumado al espacio libre que tiene el volu-men. Es apenas cuando se crea un nuevo archivo empleando esa misma entradaque el sistema operativo marca realmente como desocupados los clusters en latabla de asignación.27

Es por esto que desde los primeros días de las PC existen tantas herramien-tas de recuperación (o des-borramiento) de archivos: Siempre que no haya sidocreado un archivo nuevo que ocupe la entrada de directorio en cuestión, recu-perar un archivo es tan simple como volver a ponerle el primer caracter a sunombre.

Este es un ejemplo de un mecanismo flojo (en contraposición de los meca-nismos ansiosos, como los vistos en la sección de paginación sobre demanda).Eliminar un archivo toma un trabajo mínimo, mismo que es diferido al momentode reutilización de la entrada de directorio.

5. Esquemas de asignación de espacioHasta ahora hemos mencionado que la entrada de directorio apunta al pun-

to donde inicia el espacio empleado por el archivo, pero no hemos detallado encómo se implementa la asignación y administración de dicho espacio. Haremosun breve repaso de los tres principales mecanismos, después de lo cual detalla-remos cómo es la implementación de FAT, hablando un poco de sus virtudes ydebilidades.

5.1. Asignación contiguaLos primeros sistemas de archivos en disco empleaban un esquema de asig-

nación contigua. Para implementar un sistema de archivos de este tipo, no haríafalta el contar con una tabla de asignación de archivos: Bastaría con la infor-mación que vimos que forma parte del directorio de FAT — La extensión delarchivo y la dirección de su primer cluster.

La principal ventaja de este mecanismo de asignación, claro está, es la simpli-cidad de su implementación. Brinda además la mejor velocidad de transferenciadel archivo, dado que al estar cada uno de los archivos en espacio contiguo enel disco, el movimiento de cabezas se mantiene al mínimo. Sin embargo, estemecanismo se vuelve sumamente inconveniente en medios que soporten lecturay escritura: Es muy sensible a la fragmentación externa; si un archivo requierecrecer, debe ser movido íntegramente a un bloque más grande (lo cual tomademasiado tiempo), y el espacio que libera un archivo en caso de reducirse sunecesidad de espacio queda atrapado entre bloques asignados; podemos tenermucho más espacio disponible que el que podamos asignar a un nuevo archivo.

Los esquemas de asignación contigua se emplean hoy en día principalmenteen sistemas de archivo de sólo lectura — Por ejemplo, lo emplea el sistemaprincipal que utilizan los CD-ROMs, el ISO-9660, dado que está pensado para

27Pero, claro, estos clusters podrían mantenerse como ocupados por el nuevo archivo, aho-rrando el trabajo de volver a asignarlos

34

Page 35: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 13: Asignción contigua de archivos: Directorio con inicio y longitud

aprovechar al máximo un espacio que, una vez grabado, sólo podrá abrirse enmodo de sólo lectura.

5.2. Asignación ligadaUn enfoque completamente distinto sería el de asignación ligada. Este esque-

ma brinda mucho mayor flexibilidad al usuario, sacrificando la simplicidad y lavelocidad: Cada entrada en el directorio apunta a un primer grupo de sectores(o cluster), y éste contiene un apuntador que indica cuál es el siguiente.

Para hacer esto, hay dos mecanismos: El primero, reservar un espacio alfinal de cada cluster para guardar el apuntador, y el segundo, crear una tablaindependiente, que guarde únicamente los apuntadores.

En el primer caso, si manejamos clusters de 2048 bytes, y reservamos los 4bytes (32 bits) finales de cada uno, nos encontraríamos con una incomodidad alprogramador: Frecuentemente, los programadores buscan alinear sus operacio-nes con las fronteras de las estructuras subyacentes, para optimizar los accesos(por ejemplo, evitar que un sólo registro de base de datos requiera ser leído dedos distintos bloques en disco). El programador tendría que diseñar sus estruc-turas para ajustarse a la poco ortodoxa cantidad de 2044 bytes.

Y más allá de esta inconveniencia, guardar los apuntadores al final de cadacluster hace mucho más lento el manejo de nuestros archivos: Si no tenemosen una sola ubicación la relación de clusters que conforman a un archivo, pa-ra propósitos prácticos, todas las transferencias tendrán que ser secuenciales:Si queremos llegar directamente a determinado bloque del archivo, habrá queatravesar todos los bloques previos para encontrar su ubicación.

Particularmente por este segundo punto es mucho más común el empleo deuna tabla de asignación de archivos — Y precisamente así es como opera FAT(de hecho, esta tabla es la que le da su nombre). La tabla de asignación es unmapa de los clusters, representando a cada uno por el espacio necesario paraguardar un apuntador.

Empleando asignación ligada, tenemos muchas ventajas. En primer lugar,

35

Page 36: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 14: Asignción ligada de archivos: Directorio con apuntador sólo al primercluster

desaparece la fragmentación externa.28Ahora, la asignación ligada no sólo resulta más lenta que la contigua, sino

que presenta una mayor sobrecarga administrativa: El espacio desperdiciadopara almacenar los apuntadores típicamente es cercano al 1% del disponible enel medio.

Este esquema también presenta fragilidad de metadatos: Si alguno de losapuntadores se pierde o corrompe, lleva a que se pierda el archivo completodesde ese punto y hasta su final (y abre la puerta a la corrupción de otroarchivo, si el apuntador queda apuntando hacia un bloque empleado por éste).Hay dos maneras de mitigar este problema: El empleado por FAT es guardaruna (o, bajo FAT12, dos) copias adicionales de la tabla de asignación, mismasque el sistema verificará que se mantengan consistentes. Por otro lado, podríamanejarse una estructura de lista doblemente ligada (en vez de una lista ligadasencilla) en que cada elemento apunte tanto al siguiente como al anterior. Enambos casos, sin embargo, la sobrecarga administrativa se duplica.

5.3. Asignación indexadaPor último, tenemos la asignación indexada, el mecanismo empleado por

casi todos los sistemas de archivos modernos. En este esquema, se crea unaestructura intermedia entre el directorio y los datos, única para cada archivo: eli-nodo (o nodo de información). Cada i-nodo guarda los metadatos y la lista debloques del archivo, reduciendo la probabilidad de que se presente la corrupciónde apuntadores que mencionamos al hablar de la asignación ligada.

28El concepto que manejan los usuarios en general como fragmentación es muy distinto, ysí se presenta bajo este esquema: Cada archivo se separa en pequeños fragmentos que puedenterminar esparcidos por todo el disco, impactando fuertemente en el rendimiento del sistema

36

Page 37: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

La sobrecarga administrativa bajo este esquema potencialmente es muchomayor: Al asignar el i-nodo, éste se crea ocupando como mínimo un clustercompleto. Para un archivo que quepa en un sólo cluster, esto es un desper-dicio del 100% de espacio; para archivos más grandes, la sobrecarga relativadisminuye, pero se mantiene siempre superior a la de la asignación indexada.

Figura 15: Asignción indexada de archivos: Directorio con apuntador al i-nodo(llevado a un i-nodo de tamaño extremadamente ineficiente)

Un esquema de asignación indexada nos da un mejor manejo de caché que laasignación ligada: Si bien en dicho caso es común guardar copia de la tabla deasignación en memoria para mayor agilidad, con la asignación indexada bastaráhacer caché únicamente de la información importante, esto es, únicamente delos archivos que estamos empleando actualmente. Al hacer caché únicamente delo que es relevante al sistema en un momento dado, se da mejor uso a un recursomás escaso (y, por tanto, valioso): La memoria.

Ahora, ¿qué pasa cuando la lista de clusters de un archivo no cabe en uni-nodo? Podemos ver este ejemplo en el archivo azul del esquema ejemplo: Eneste caso, cada i-nodo puede guardar únicamente tres apuntadores. Al tener unarchivo con cuatro clusters, se hace necesario extender el i-nodo con una listaadicional. La implementación más común de este esquema es que, dependiendodel tamaño del archivo, se empleen apuntadores con los niveles de indirecciónque vayan haciendo falta.

¿Qué tan grande sería el archivo máximo direccionable bajo este esquemay únicamente tres indirecciones? Supongamos cantidades que podríamos encon-trar frecuentemente hoy en día: Clusters de 4KB y direcciones de 32 bits. Estosignifica que en un cluster vacío caben 128 apuntadores ( 409632 ). Supongamostambién que en el i-nodo los metadatos ocupan 224 bytes, dejando espacio para100 apuntadores:

Un archivo de hasta (100 − 3) × 4KB = 388KB puede ser representado

37

Page 38: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 16: Estructura típica de un i-nodo en Unix, mostrando además el númerode accesos a disco necesarios para llegar a cada cluster (con sólo tres cluster porlista)

directamente en el i-nodo, y requeriremos de un sólo acceso a disco paraobtener su lista de clusters

Un archivo de hasta (100−3+128)×4KB = 900KB puede representarsecon el bloque de indirección sencilla, y obtener su lista de clusters nossignifica dos accesos a disco adicionales.

Con el bloque de doble indirección, podemos referirnos a archivos muchomás grandes:(100− 3 + 128 + (128× 128))× 4KB = 66436KB ≈ 65MB

Sin embargo, aquí ya debe llamarnos la atención otro importante punto: Siqueremos acceder a estos 65MB, tendremos que realizar hasta 131 accesosa disco. A partir de este punto, el sistema operativo reducirá fuertementeel tiempo de acceso si puede lograr que todos los clusters que apunten aesta información estén cerca unos de otros.

38

Page 39: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Empleando triple indirección, llegamos hasta:

(100−3+128+(128×128)+(128×128×128))×2KB = 8455044KB ≈ 8GB

Esto es más de lo que puede representarse en 32 bits. La cantidad debloques que tendríamos que leer, sin embargo, para encontrar todos losclusters nos significarían hasta 16516 accesos a disco.

5.4. Las tablas en FATVolvamos al caso que estamos tomando como ejemplo, el sistema de archivos

FAT. En este sistema, cada entrada del directorio apunta al primer cluster queocupa ada uno de los archivos, y se emplea un esquema de asignación ligada. Eldirectorio tiene también un campo indicando la longitud total del archivo, peroesto no es empleado para leer la información, sino para poderla presentar máságilmente al usuario.

La estructura fundamental de este sistema de archivos es la tabla de asigna-ción de archivos (File Allocation Table) — Tanto que de ella toma su nombreFAT. Esta estructura ocupa los primeros sectores del disco, antes incluso deldirectorio, y por su importancia, se almacena por duplicado (los discos flexiblesson mucho menos confiables que los discos duros, y el sistema de archivos fueintroducido antes de que la PC pudiera emplear un disco duro).

Cada entrada de la FAT mide lo que la longitud /correspondiente a su versión(12, 16 o 32 bits), y puede tener uno de cuatro valores posibles:

Libre El valor 0x000, 0x0000 o 0x00000000 (dependiendo de la versión deFAT) indica que el cluster está disponible, y puede ser asignado por elsistema de archivos cuando haga falta.

Siguiente Cuando el valor es menor hasta 0xFF6, 0xFFF6 o 0xFFFFFFF6,indica la ubicación del siguiente cluster del archivo.

Dañado Si el valor de una entrada es 0xFF7, 0xFFF7 o 0xFFFFFFF7, indicaque el cluster es un espacio del disco dañado, y no debe ser utilizado paraalmacenar datos.

Fin Los valores 0xFFF, 0xFFFF o 0xFFFFFFFF indican que se trata del últimocluster de un archivo.

Una característica que puede llamar la atención de FAT es que pareceríapermitir la fragmentación de archivos por diseño: Dado que el descriptor decada cluster debe apuntar al siguiente, podemos asumir que el caso común esque los clusters no ocuparán contiguos en el disco. Claro está, la tabla puedeapuntar a varios clusters adyacentes, pero el sistema de archivos mismo no hacenada para que así sea.

Cuando revisamos el formato del directorio de FAT omitimos un detalleimportante: Revisamos sólamente el directorio raiz, y no mencionamos cómo esque se implementan los subdirectorios. Los subdirectorios en FAT son archivosde un tipo especial — Podemos verlos como una suerte de archivos estructurados,

39

Page 40: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 17: Ejemplo de entradas en la tabla de asignación de archivos (PeterClark)

gestionados por el sistema operativo. Lo único que distingue a un directorio deun archivo normal es que, en la entrada que lo describe en su directorio padre,el byte de atributos (0x0B) tiene activado el quinto bit.

Un directorio es almacenado en disto exactamente como cualquier otro ar-chivo. Si se le asigna únicamente un cluster, y el tamaño del cluster es pequeño(2KB), podrá almacenar sólo 64 entradas, y cada cluster adicional le dará 64entradas más. Y como tal, está sujeto también a la fragmentación: Conformese agregan entradas al directorio, éste crece. Llegado el momento, requiere clus-ters adicionales. Y si un directorio termina disperso por todo el disco, resultará–como cualquier otro archivo– más lento leerlo y trabajar con él. Siempre queabramos un archivo dentro de un directorio grande, o que lo recorramos paraabrir algún archivo en algún subdirectorio suyo, tendremos que buscar todossus fragmentos a lo largo del disco.

Ante estos dos aspectos, no podemos perder de vista la edad que tiene FAT.Otros sistemas de archivos más modernos han resuelto este problema a travésde los grupos de asignación: Los directorios del sistema son esparcidos a lolargo del volumen, y se intenta ubicar a los archivos cerca de los directoriosdesde donde son referidos29. Esto tiene por consecuencia que los archivos quepresentan cercanía temática quedan ubicados cerca unos de otros — Y dado quees probable que sean empleados aproximadamente al mismo tiempo, esto reducelas distancias que recorrerán las cabezas. Además, al esparcir los archivos, sedistribuye también mejor el espacio libre, por lo cual el impacto de los cambios

29Claro está, en el caso de los archivos que están como ligas duras desde varios directorios,pueden ubicarse sólo cerca de uno de ellos

40

Page 41: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

de tamaño de un archivo en lo relativo a la fragmentación se limita a los queforman parte del mismo bloque de asignación.

Los sistemas de archivos que están estructurados siguiendo esta lógica degrupos de asignación no evitan la fragmentación, pero sí la mayor parte de susconsecuencias negativas. Para mantener este esquema operando confiablemen-te, eso sí, requieren de mantener disponibilidad de espacio — Al presentarsesaturación, esta estrategia pierde efectividad. Para evitar que esto ocurra, esmuy frecuente en los sistemas Unix que haya un cierto porcentaje (típicamentecercano al 5%) del disco que esté disponible únicamente para el administrador— En caso de que el sistema de archivos pase del 95%, los usuarios no podránescribir ya a él, pero el administrador puede efectuar tareas de mantenimientopara volver a un rango operacional.

6. Fallos y recuperaciónEl sistema de archivos en el cual estamos estamos basando nuestros ejemplos,

FAT, es relativamente frágil : No es difícil que se nos presente una situaciónde corrupción de metadatos, y muy particularmente, de la estructura de lastablas de asignación. Los usuarios de sistemas basados en FAT en Windowssin duda conocen a los programas CHKDSK y SCANDISK — Dos programasque implementan la misma funcionalidad base, y difieren principalmente ensu interfaz al usuario: CHKDSK existe desde los primeros años de MS-DOS, yestá pensado para su uso interactivo en línea de comando; SCANDISK se ejecutadesde el entorno gráfico, y presenta la particularidad de que no requiere (aunquesí recomienda fuertemente) acceso exclusivo al sistema de archivos mientras seejecuta. ¿En qué basan su operación estos programas?

A lo largo de la vida de un sistema de archivos, conforme los archivos sevan asignando y liberando, van cambiando su tamaño, y conforme montamosy des-montamos al sistema de archivos, pueden ir apareciendo inconsistenciasen su estructura. En los sistemas tipo FAT, las principales (que no las únicas)inconsistencias son:

Archivos cruzados En inglés, cross-linked file. Recordemos que la entradaen el directorio de un archivo incluye un apuntador al primer cluster deuna cadena. Cada cadena debe ser única, esto es, ningún cluster debepertenecer a más de un archivo. Si dos archivos incluyen al mismo cluster,esto indica una inconsistencia, y la única forma de resolverla es truncar auno de los archivos en el punto inmediato anterior a este cruce.

Cadenas perdidas o huérfanas En inglés, lost clusters. Cuando hay espaciomarcado como ocupado en la tabla de asignación, pero no hay ninguna en-trada de directorio haciendo referencia a ella, el espacio está efectivamentebloqueado y, desde la perspectiva del usuario, inutilizado.

Cada sistema de archivos podrá presentar un distinto conjunto de inconsis-tencias ante los fallos, dependiendo de sus estructuras básicas y de la maneraen que cada sistema operativo las maneja.

41

Page 42: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 18: Inconsistencias en un sistema de archivos tipo FAT

En la década de los 1980 comenzaron a entrar a mercado los controladoresde disco inteligentes, y en menos de diez años dominaban ya el mercado. Estoscontroladores, con buses tan disímiles como SCSI, IDE, o los más modernos,SAS y SATA, introdujeron muchos cambios que fueron disociando cada vez másal sistema operativo de la gestión física directa de los dispositivos; en la secciónEl medio físico abordaremos más a profundidad lo que esto ha significado parael desarrollo de sistemas de archivos y algoritmos relacionados. Sin embargo,en este tema, los controladores inteligentes resultan relevantes porque, si bienantes el sistema operativo podía determinar con toda certeza si una operaciónse había realizado o no, hoy en día los controladores dan un acuse de reciboa la información en el momento en que la colocan en el caché incorporado deldispositivo — En caso de un fallo de corriente, esta información puede no habersido escrita por completo al disco.

Recordemos que las operaciones con los metadatos que conforman al sistemade archivos no son atómicas. Por poner un ejemplo, crear un archivo en unvolumen FAT requiere:

1. Encontrar una lista de clusters disponibles suficiente para almacenar lainformación que conformará al archivo

2. Encontrar el siguiente espacio disponible en el directorio

3. Crear en el espacio encontrado una entrada con el nombre que estamosdando al archivo, apuntando al primero de los clusters

4. Marcar en la tabla de asignación la secuencia por todos estos clusters

5. Guardar los datos del archivo en cuestión en los clusters correspondientes

Cualquier fallo que se presente después del tercer paso (cuando hacemos laprimer modificación) tendrá como consecuencia que el archivo resulte corrupto,

42

Page 43: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

y muy probablemente que el sistema de archivos todo presente inconsistenciaso esté en un estado inconsistente.

6.1. Datos y metadatosFormalmente, en el ejemplo recién mencionado, el sistema de archivos estará

consistente siempre que se terminen los pasos 3 y 4 — La consistencia del sistemade archivos es independiente de la validez de los datos del archivo. Lo que buscael sistema de archivos, más que asegurar la integridad de los datos de uno de losarchivos, es asegurar la de los metadatos: Los datos que describen la estructura.En caso de que un usuario desconecte una unidad a media operación, es casiseguro que se presentará pérdida de información, pero el sistema de archivosdebe buscar no presentar ningún problema que ponga en riesgo operacionesposteriores o archivos no relacionados.

6.2. Verificación de la integridadCada sistema operativo incluye programas para realizar verificación (y, en

su caso, corrección) de la integridad de sus sistemas de archivo. En el caso deMS-DOS y Windows, estos programas son CHKDSK y SCANDISK (diferencia-dos principalmente en que el primero tiene una interfaz de línea de comando,mientras que el segundo tiene intefaz gráfica); en los sistemas Unix, el progra-ma general se llama fsck, y típicamente emplea a asistentes según el tipo desistema a revisar — fsck.vfat, fsck.ext2, etc.

Estos programas hacen un barrido del sistema de archivos, buscando eviden-cias de inconsistencia. Esto lo hacen, en líneas generales:

Siguiendo todas las cadenas de clusters de archivos o tablas de i-nodos,y verificando que no haya archivos cruzados (compartiendo erróneamentebloques)

Verificando que todas las cadenas de clusters, así como todos los directo-rios, sean alcanzables y sigan una estructura válida

Recalculando la correspondencia entre las estructuras encontradas y losdiferentes bitmaps y totales de espacio vacío

Estas operaciones son siempre procesos intensivos y complejos. Como re-quieren una revisión profunda del volúmen entero, es frecuente que duren entredecenas de minutos y horas. Además, para poder llevar a cabo su tarea debenejecutarse teniendo acceso exclusivo al volumen a revisar, lo cual típicamentesignifica colocar al sistema completo en modo de mantenimiento.

Dado el elevado costo que tiene verificar el volumen entero, en la décadade 1990 surgieron varios esquemas orientados a evitar la necesidad de invocara estos programas de verificación: Las actualizaciones suaves, los sistemas dearchivos con bitácora, y los sistemas de archivos estructurados en bitácora.

43

Page 44: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

6.3. Actualizaciones suaves (soft updates)Este esquema aparentemente es el más simple de los que presentaremos, pero

su implementación resultó mucho más compleja de lo inicialmente estimado, y enbuena medida por esta causa hoy en día no ha sido empleado más ampliamente.La idea básica detrás de este esquema es estructurar el sistema de archivos deuna forma más simple y organizar las escrituras al mismo de modo que el estadoresultante no pueda ser inconsistente, ni siquiera en caso de fallo, y de exigirque todas las operaciones de actualización de metadatos se realicen de formasíncrona.30

Ante la imposibilidad de tener un sistema siempre consistente, esta exigenciase relajó para permitir inconsistencias no destructivas: Pueden presentarse cade-nas perdidas, dado que esto no pone en riesgo a ningún archivo, sólo disminuyeel espacio total disponible.

Esto, aunado a una reestructuración del programa de verificación (fsck) co-mo una tarea ejecutable en el fondo y en una tarea de recolector de basura, queno requiere intervención humana (dado que no pueden presentarse inconsisten-cias destructivas), permite que un sistema de archivos que no fue limpiamentedesmontado pueda ser montado y utilizado de inmediato, sin peligro de pérdidade información o de corrupción.

Al requerir que todas las operaciones sean síncronas, parecería que el ren-dimiento global del sistema de archivos tendría que verse afectado, pero porciertos patrones de acceso muy frecuentes, resulta incluso beneficioso. Al man-tenerse un ordenamiento lógico de las dependencias de todas las operacionesque están pendientes, el sistema operativo puede combinar a muchas de estas yreducir de forma global las escrituras a disco — Por ejemplo, si varios archivosson creados en el mismo directorio de forma consecutiva, cada uno de ellos através de una llamada open() independiente, el sistema operativo combinaráa todos estos accesos en uno sólo, reduciendo el número de llamadas. Al crearun archivo de uso temporal, un patrón frecuente en sistemas Unix es solicitar alsistema la creación de un archivo, abrir el archivo recién creado, y ya teniendoal descriptor de archivo, eliminarlo — En este caso, con estas tres operacionesseguidas, soft updates podría ahorrarse por completo la escritura a disco.

Esta estrategia fue implementada hacia 2002 en el sistema operativoFreeBSD, y fue adoptada por los principales sistemas de la familia *BSD, aun-que NetBSD lo retiró en 2012, prefiriendo el empleo de sistemas con bitácora— Muy probablemente, la lógica destrás de esta decisión sea la cantidad desistemas que emplean esta segunda estrategia que veremos a continuación, y locomplejo de mantener dentro del núcleo dos estrategias tan distintas.

Además de esto, esta estrategia también se vio impactada por los controla-dores inteligentes: Si un disco está sometido a carga intensa, no hay garantíapara el sistema operativo del órden que seguirán en verdad sus solicitudes, quese forman en el caché propio del disco. Dado que las actualizaciones suaves de-penden tan profundamente de confiar en el ordenamiento, esto introduce aún

30Esto es, no se le reporta éxito en alguna operación de archivos al usuario sino hasta queésta es completada y grabada a disco

44

Page 45: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

más complejidad en el proceso.

6.4. Sistemas de archivo con bitácora (journaling file sys-tems)

Este esquema tiene su origen en el ámbito de las bases de datos distribuídas.Consiste en separar un área del volumen y dedicarla a llevar una bitácora contodas las transacciones de metadatos.31 Una transacción es un conjunto deoperaciones que deben aparecer como atómicas.

La bitácora es generalmente implementada como una lista ligada circular,con un apuntador que indica cuál fue la última operación realizada exitosamen-te. Periódicamente, o cuando la carga de transferencia de datos disminuye, elsistema verifica qué operaciones quedan pendientes, y avanza sobre la bitácora,marcando cada una de las transacciones conforme las realiza.

En caso de tener que recuperarse de una condición de fallo, el sistema ope-rativo sólo tiene que leer la bitácora, encontrar cuál fue la última operacióncomprometida, y aplicar las restantes.

Una restricción de este esquema es que las transacciones guardadas en labitácora deben ser idempotentes —Esto es, si una de ellas es efectuada dos veces,el efecto debe ser exactamente el mismo que si hubiera sido efectuada una sólavez. Por poner un ejemplo, no sería válido que una transacción indicara “Agregaral directorio x un archivo llamado y”, dado que si la falla se produce después deprocesar esta transacción pero antes de avanzar al apuntador de la bitácora, eldirectorio x quedaría con dos archivos y — Una situación inconsistente. En todocaso, tendríamos que indicar “registrar al archivo y en la posición z del directoriox ”; de esta manera, incluso si el archivo ya había sido registrado, puede volversea registrar sin peligro.

Este esquema es el más implementado hoy en día, y está presente en casitodos los sistemas de archivos modernos. Si bien con un sistema con bitácora nohace falta verificar el sistema de archivos completo tras una detención abrupta,esta no nos exime de que, de tiempo en tiempo, el sistema de archivos seaverificado: Es altamente recomendado hacer una verificación periódica en casode presentarse alguna corrupción, sea por algún bug en la implementación, fallosen el medio físico, o factores similarmente poco frecuentes.

6.5. Sistemas de archivos estructurados en bitácora (log-structured file systems)

Si llevamos el concepto del sistema de archivos con bitácora a su límite, ydesignamos a la totalidad del espacio en el volumen como la bitácora, hablamosde un sistema de archivos estructurado en bitácora. Obviamente, este tipo desistemas de archivos presenta una organización completa radicalmente diferentede los sistemas de archivo tradicionales.

31Existen implementaciones que registran también los datos en la bitácora, pero tanto por eltamaño que ésta requiere como por el impacto en velocidad que significa, son poco utilizadas.

45

Page 46: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 19: Sistema de archivos con bitácora

Las ideas básicas detrás de la primer implementación de un sistema de ar-chivos de esta naturaleza (Ousterhut y Rosenblum, 1992) apuntan al empleoagresivo de caché de gran capacidad, y con un fuerte mecanismo de recolecciónde basura, reacomodando la información que esté más cerca de la cola de labitácora (y liberando toda aquella que resulte redundante).

Este tipo de sistemas de archivos facilita las escrituras, haciéndolas siempresecuenciales, y buscan –a través del empleo del caché ya mencionado– evitarque las cabezas tengan que desplazarse con demasiada frecuencia para recuperarfragmentos de archivos.

Una consecuencia directa de esto es que los sistemas de archivos estructura-dos en bitácora fueron los primeros en ofrecer fotografías (snapshots) del sistemade archivos: Es posible apuntar a un momento en el tiempo, y –con el sistema dearchivos aún en operación– montar una copia de sólo lectura con la informacióndel sistema de archivos completa (incluyendo los datos de los archivos).

Los sistemas de archivo estructurados en bitácora, sin embargo, no estánoptimizados para cualquier carga de trabajo. Por ejemplo, una base de datos re-lacional, en que cada uno de los registros es típicamente actualizados de formaindependiente de los demás, y ocupan apenas fracciones de un bloque, resul-taría tremendamente ineficiente. La implementación referencia de Ousterhut yRosenblum fue parte de los sistemas *BSD, pero dada su tendencia a la extremafragmentación, fue eliminado de ellos.

Este tipo de sistemas de archivo ofrece características muy interesantes, aun-que es un campo que aún requiere de mucha investigación e implementacionesejemplo. Muchas de las implementaciones en sistemas libres han llegado a nive-les de funcionalidad aceptables, pero por diversas causas han ido perdiendo elinterés o el empuje de sus desarrolladores, y su ritmo de desarrollo ha decrecido.Sin embargo, varios conceptos muy importantes han nacido bajo este tipo desistemas de archivos, algunos de los cuales (como el de las fotografías) se han

46

Page 47: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

ido aplicando a sistemas de archivo estándar.Por otro lado, dado el fuerte crecimiento que están registrando los medios

de almacenamiento de estado sólido (abordaremos en breve algunas de sus ca-racterísticas), y dado que estos sistemas aprovechan mejor varias de sus carac-terísticas, es probable que el interés en estos sistemas de archivos resurja.

7. El medio físicoHasta este punto, y siguiendo las prácticas a que la realidad de los últimos

40 años nos han acostumbrado, hemos empleado el término genérico de discopara nuestra discusión.

En esta sección, abordaremos en primer término las características princi-pales del medio aún prevalente, los discos duros magnéticos rotativos, y presen-taremos una introducción a las diferencias que encontraremos en otros medios,como los discos ópticos y los de estado sólido, y las implicaciones que éstostienen sobre lo que venimos discutiendo a lo largo de la unidad.

7.1. Discos magnéticos rotativosEl principal medio de almacenamiento que hemos empleado en los últimos 40

años es el disco magnético. Hay dos tipos diferentes de disco, aunque la lógicade su funcionamiento es la misma: Los discos duros y los discos flexibles (ofloppies).

La principal diferencia entre estos es que los primeros son típicamente alma-cenamiento interno en los equipos de cómputo, y los segundos están pensadospara ser almacenamiento transportable. Los discos duros tienen mucha mayorcapacidad y son mucho más rápidos, pero a cambio de ello, mucho más sensiblesa la contaminación por partículas de polvo y a daños mecánicos.

Un disco flexible es una hoja de material plástico, muy similar al empleadoen las cintas magnéticas, resguardado por un estuche plástico. Al insertarse eldisco en la unidad lectora, esta lo hace girar sujetándolo por el centro, y lascabezas lectoras32 se deslizan por una ventana que tiene el estuche. La mayorparte de los discos flexibles presentaban velocidades de rotación de entre 300 y400 revoluciones por minuto.

A lo largo de más de 20 años se presentaron muy diferentes formatos físicossiguiendo esta misma lógica, designándose principalmente por su tamaño (enpulgadas). La capacidad de los discos, claro está, fue creciendo con el paso delos años — Esto explica la aparente contradicción de que los discos más chicosfísicamente tenían más capacidad que los más grandes.

El nombre de disco duro o disco flexible se debe al medio empleado para elalmacenamiento de la información: Mientras que los discos flexibles emplean,como mencionamos, una hoja plástica flexible, los discos duros son metálicos.Los discos están permanentemente montados sobre un eje, lo que permite que

32en un principio una sola; posteriormente aparecieron las unidades de doble cara, con doscabezas lectoras

47

Page 48: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Cuadro 1: Principales formatos de disco flexible que se popularizaron en el mer-cado

8 pulgadas 5.25 pulgadas 3.5 pulgadasFecha de introducción 1971 1976 1982Capacidad 150KB-1.2MB 110KB-1.2MB 264KB-2.88MBVelocidad (kbit/s) 33 125-500 250-1000Pistas por pulgada 48 48-96 135

tengan una velocidad de giro entre 20 y 50 veces más rápida que los discosflexibles — Entre 4,200 y 15,000 revoluciones por minuto (RPM), esto es, conuna demora rotacional de entre 2 y 7.14 milisegundos..

Además, a excepción de algunos modelos tempranos, los discos duros consti-tuyen un paquete cerrado y sellado que incluye las cabezas de lectura y escritura,y toda la electrónica de control. Esto permite que los discos duros tengan den-sidades de almacenamiento y velocidades de transmisión muy superiores a lade los discos flexibles: Los primeros discos duros que se comercializaron paracomputadoras personales eran de 10MB (aproximadamente 70 discos flexiblesde su época), y actualmente hay ya discos de 4TB. La velocidad máxima detransferencia sostenida hoy en día es superior a los 100MB por segundo, 100veces más rápido que la última generación de discos flexibles.

Para medir la eficiencia de un disco duro, el otro dato importante es el tiempoque toma la cabeza en moverse a través de la superficie del disco. Hoy en día,las velocidades más comunes son de 20ms para un recorrido completo (desdeel primer hasta el último sector), y entre 0.2ms y 0.8ms para ir de un cilindroal inmediato siguiente. Como punto de comparación, el recorrido completo enuna unidad de disco flexible toma aproximadamente 100ms, y el tiempo de uncilindro al siguiente va entre 3 y 8ms.

7.1.1. Notación C-H-S

Independientemente de la tecnología, la manera en que el sistema operativohace referencia a la ubicación de un bloque de información en el disco es conoci-do como la notación C-H-S — Indicando el cilindro, cabeza y sector (Cylinder,Head, Sector) de la información. Esto permite mapear el espacio de almacena-miento de un disco a un espacio tridimensional, con cual resulta trivial ubicara alguna estructura en una región contigua.

La cabeza indica a cuál de las superficies del disco nos referimos; en un discoflexible, tenemos sólo dos cabezas, pero en un disco duro es común tener variosplatos paralelos. Todas las cabezas van fijas a un mismo motor, y no puedenmoverse de forma independiente.

El cilindro indica la distancia del centro a la orilla del disco.Un sector es un segmento de arco de uno de los cilindros.Es frecuente ver referencias a una pista (track), esto es, a un cilindro en una

48

Page 49: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 20: Coordenadas de un disco duro, presentando cada uno de sus sectoresen C-H-S (Silberschatz, p.458)

de las superficies del disco — Un archivo almacenado secuencialmente ocupasectores adyacentes a lo largo de una misma pista.

7.1.2. Algoritmos de planificación de acceso a disco

Como hemos visto, las transferencias a disco son uno de los procesos máslentos de los que gestiona el sistema operativo. Cuando éste tiene varias solici-tudes de transferencia pendientes, resulta importante encontrar un mecanismoóptimo para realizar la transferencia, minimizando el tiempo de demora. Pre-sentaremos a grandes rasgos tres de los algoritmos de planificación de accesoa disco — Pero abordaremos también el por qué estos hoy en día casi no sonempleados.

Como con los demás escenarios que hemos abordado analizando algoritmos,para analizar su rendimiento tenemos que presentar una cadena de referencia.En este caso, trabajaremos con un disco hipotético de 200 cilindros, la cadenade solicitudes 98, 183, 37, 122, 14, 124, 65, 67, y teniendo la cabeza al iniciode la operación en el cilindro 53.

Veamos, pues, de forma gráfica la respuesta que presentarían los distintosalgoritmos ante la cadena de referencia dada, y procedamos a comparar a losalgoritmos en cuestión.

FIFO Al igual que cuando hablamos de algoritmos de asignación de procesadory de reemplazo de páginas, el primero y más sencillo de implementar esel FIFO — Primero en llegar, primero en servirse. Este algoritmo puedeverse como muy justo, aunque sea muy poco eficiente: El movimiento total

49

Page 50: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 21: Movimientos de las cabezas bajo los diferentes algoritmos planifi-cadores de acceso a disco, indicando la distancia total recorrida por la cabezabajo cada uno, iniciando con la cabeza en la posición 53. Para SCAN, LOOK yC-SCAN, asumimos que iniciamos con la cabeza en dirección decreciente.

de cabezas para el caso planteado es de 640 cilindros, equivalente a pocomás que recorrer de extremo a extremo el disco completo tres veces. Estoes, despreciando la demora rotacional y el tiempo que le toma al brazodetenerse por completo antes de volver a moverse, esta lectura tomaría unmínimo de 60ms, siendo el recorrido completo del disco 20ms.

Podemos encontrar al causante de buena parte de esta demora en la quintaposición de la cadena de referencia: Entre solicitudes para el cilindro 122y 124, tenemos una solicitud al 14, que significa un desplazamiento de(122− 14) + (124− 14) = 218 sectores.

SSTF Ahora bien, si el factor que impone la principal demora es el movimientode la cabeza, el segundo algoritmo busca reducir al mínimo el movimientode la cabeza: SSTF (Shortest Seek Time First, Tiempo de búsqueda máscorto a continuación) es el equivalente en este ámbito del Shortest JobFirst que vimos en planificación de procesos — con la ventaja de que noestamos prediciendo comportamiento futuro, sino que tenemos ya la listade solicitudes pendientes. Empleando SSTF, el tiempo de desplazamientopara este caso se reduce a tan sólo 236 cilindros — muy cerca del mínimoabsoluto posible.

50

Page 51: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Una desventaja de SSTF es que puede llevar a la inanición: Si hay unagran densidad de solicitudes para cilindros en determinada zona del disco,una solicitud para un cilindro alejado puede quedar a la espera indefinida-mente. Ejemplifiquemo esto con una serie de solicitudes distinta a la queestamos tomando como referencia: Si el sistema tuviera la cadena de soli-citudes 15, 175, 13, 20, 14, 32, 40, 5, 6, 7, SSTF penalizaría a la segundasolicitud (175) hasta terminar con los cilindros bajos.

Familia de algoritmos de elevador (SCAN, LOOK, C-SCAN) Hablamosen este tercer lugar no de un algoritmo, sino que de una familia, dado queparten de la misma idea, pero con modificaciones menores llevan a que elpatrón de atención resultante sea muy distinto.

El planteamiento base para el arlgoritmo básico de elevador (SCAN) buscaevitar la inanición, minimizando al mismo tiempo el movimiento de lascabezas. Su lógica marca que la cabeza debe recorrer el disco de extremoa extremo, como si fuera un elevador en un edificio alto, atendiendo a todaslas solicitudes que haya pendientes en su camino. Si bien los recorridos paraciertos patrones pueden resultar en mayores desplazamientos a los quedaría SSTF, la garantía de que ningún proceso esperará indefinidamentelo hace muy atractivo.

Atender la cadena de referencia con la que estamos trabajando bajo SCAN,asumiendo un estado inicial descendente (esto es, la cabeza está en elcilindro 53 y va bajando) da un recorrido total de 236 cilindros; empleandoLOOK, se reduce a 208 cilindros, y evita el movimiento innecesario hastael límite del disco.

Una primer (y casi obvia) modificación a este algoritmo sería, cada vez quela cabeza se detenga para satisfacer una solicitud, verificar si hay algunaotra solicitud pendiente en la dirección actual, y de no ser así, emprenderel camino de regreso sin llegar a la orilla del disco. Esta modificación esfrecuentemente descrita como LOOK.

Sin embargo, el patrón de atención a solicitudes de SCAN y LOOK dejanqué desear: Al llegar a un extremo del recorrido, es bastante probable queno haya ninguna solicitud pendiente en la primer mitad del recorrido devuelta (dado que acaban de ser atendidas). El tiempo que demora atendera una solictud se compone de la suma del desplazamiento de la cabezay la demora rotacional (que depende de cuál sector del cilindro nos fuesolicitado). Para mantener una tasa de transferencia más predecible, elalgoritmo C-SCAN (SCAN Circular) realiza las operaciones en el discoúnicamente en un sentido — Si el algoritmo lee en órden descendente, alllegar a la solicitud del cilindro más bajo, brincará de vuelta hasta el másalto para volver a iniciar desde ahí. Esto tiene como resultado, claro, queel recorrido total aumente (aumentando hasta los 326 para nuestra cadenade referencia.

51

Page 52: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

7.1.3. Limitaciones de los algoritmos presentados

Ahora, mencionamos que estos algoritmos hoy en día ya casi no se usan.Hay varias razones para ello. En primer término, todos ellos están orientadosa reducir el traslado de la cabeza, pero ignoran la demora rotacional. Comovimos, en los discos duros actuales, la demora rotacional va entre 1

10 y 13 del

tiempo total de recorrido de la cabeza. Y si bien el sistema podría consideraresta demora como un factor adicional al planificar el siguiente movimiento deforma que se redujera el tiempo de espera, los algoritmos descritos obviamenterequieren ser replanteados por completo.

Por otro lado, el sistema operativo muchas veces requiere dar distintas prio-ridades a los diferentes tipos de solicitud. Por ejemplo, sería esperable dar pre-ferencia a los accesos a memoria virtual por encima de las solicitudes de abrirun nuevo archivo. Estos algoritmos tampoco permiten expresar esta necesidad.

Pero el tercer punto es mucho más importante aún: Del mismo modo enque los procesadores se van haciendo más rápidos y que la memoria es cadavez de mayor capacidad, los controladores de discos también son cada vez másinteligentes, y esconden cada vez más información del sistema operativo, por locual éste cada vez más carece de la información necesaria acerca del acomodoreal de la información como para planificar correctamente sus accesos.

Uno de los cambios más importantes en este sentido fue la transición delempleo de la notación C-H-S al esquema de direccionamiento lógico de bloques(Logical Block Addressing, LBA) a principios de los 1990. Hasta ese momento, elsistema operativo tenía información de la ubicación física de todos los bloquesen el disco.

Una de las desventajas, sin embargo, de este esquema es que el mismo BIOStenía que conocer la geometría de los discos — Y el BIOS presentaba límitesduros en este sentido: Principalmente, no le era posible referenciar más alláde 64 cilindros. Al aparecer la interfaz de discos IDE (Electrónica integrada aldispositivo) e ir reemplazando a la ST-506, se introdujo LBA, que en un primertérmino de la dirección C-H-S a una dirección lineal, presentando el disco alsistema operativo ya no como un espacio tridimensional, sino que como un granarreglo de bloques. En este primer momento, la equivalencia de una direcciónC-H-S a una LBA era:

LBA = ((C ×HPC) +H)× SPT + S − 1

Donde HPC es el número de cabezas por cilindro, SPT es el número desectores por pista.

LBA significó mucho más que una nueva notación — Marcó el inicio de latransferencia de inteligencia y control del CPU al controlador de disco. Podemosver el impacto de esto directamente en dos factores:

Sectores variables por cilindro En casi todos los discos previos a LBA33,33Como muy notorias excepciones tenemos a las unidades de disco Commodore 1541 y

Macintosh Superdrive, que empleaban velocidad variable por cilindro para aprovechar mejorel medio magnético; en ambos casos, sin embargo, terminaron desapareciendo por cuestionesde costos y de complejidad al sistema

52

Page 53: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

el número de sectores por pista se mantenía constante, se tratara de laspistas más internas o más externas. Esto significa que, a igual calidad de lacobertura magnética del medio, los sectores ubicados en la parte exteriordel disco desperdiciaban mucho espacio (ya que el área por bit era muchomayor).

Figura 22: Disco formateado bajo densidad de bits por zona, con más sectorespor pista en las pistas exteriores. (Imagen: Wikipedia)

Bajo LBA, los discos duros comenzaron a emplear un esquema de densi-dad de bits por zona (zone bit recording), con la que en los cilindros másexternos se aumenta.

Reubicación de sectores Conforme avanza el uso de un disco, es posible quealgunos sectores vayan resultando difíciles de leer por daños microscópicosa la superficie. El controlador es capaz de detectar estos problemas, y dehecho, casi siempre puede rescatar la información de dichos sectores deforma imperceptible al usuario.

Los discos duros ST-506 típicamente venían acompañados por una lista dedefectos, una lista de coordenadas C-H-S que desde su fabricación habíanpresentado errores. El usuario debía ingresar estos defectos al formatearel disco a bajo nivel.

Hoy en día, el controlador del disco detecta estos fallos y se los brinca,presentando un mapa LBA lineal y completo. Los discos duros típicamentevienen con cierto número de sectores de reserva para que, conforme sevan detectando potenciales daños, estos puedan reemplazarse de formatransparente.

Sumemos a esto que los controladores de disco tienen ya incluso caché paralas operaciones de lectura y escritura — El controlador del disco es hoy endía capaz de implementar estos mismos algoritmos de forma completamenteautónoma del sistema operativo.

53

Page 54: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Resulta claro que, dados estos cambios en la manera en que hacemos referen-cia a los bloques del disco, el sistema operativo no cuenta ya con la informaciónnecesaria para emplear los algoritmos de planificación de acceso a disco.

7.2. Almacenamiento en estado sólidoDesde hace cerca de una década va creciendo consistentemente el uso de me-

dios de almacenamiento de estado sólido — Esto es, medios sin partes móviles.Las características de estos medios de almacenamiento son muy distintas de lasde los discos. Si bien las estructuras que emplean hoy en día prácticamente todoslos sistemas de archivos en uso mayoritario están pensadas y estructuradas si-guiendo la lógica de los medios magnéticos rotativos, la necesidad de emplear lasestructuras adecuadas es clara. Este es indudablemente un área bajo intensa in-vestigación y desarrollo, y que seguramente nos ofrecerá importantes novedadesen los próximos años.

Lo primero que llama la atención de estos medios de almacenamiento es que,a pesar de ser fundamentalmente distintos a los discos magnéticos, se presentanante el sistema operativo como si fueran lo mismo: En lo que podría entendersecomo un esfuerzo para ser utilizados pronto y sin cambios, se conectan a través dela misma interfaz y empleando la misma semántica que un disco rotativo. Esto nosólo evita que se aprovechen sus características únicas, adoptando restriccionesy criterios de diseño que ahora resultan indudablemente artificiales, sino queincluso se exponen a mayor stress por no emplearse de la forma que les resultaríanatural. Antes de ver por qué, veamos un poco los tipos de discos de estado solidoque hay; esto nos dará pie a entender las características a las que en este párrafohacemos referencia.

Al hablar de la tecnología sobre la cual se implementa este tipo de almace-namiento, encontraremos dos medios principales:

NVRAM Unidades RAM No Volátil. Almacenan la información en memoriaRAM estándar, con un respaldo de batería para mantener la informacióncuando se desconecta la corriente externa. Las primeras unidades de estadosólido eran de este estilo; hoy en día son poco comunes en el mercado, perosiguen existiendo.

Su principal ventaja es la velocidad y durabilidad: El tiempo de accesoo escritura de datos es el mismo que el que esperaríamos de la memoriaprincipal del sistema, y al no haber demoras mecánicas, este tiempo es elmismo independientemente de la dirección que se solicite.

Su principal desventaja es el precio: En líneas generales, la memoria RAMes, por volumen de almacenamiento, cientos de veces más cara que el mediomagnético. Y si bien el medio no se degrada con el uso, la batería sí, loque podría poner en peligro a la supervivencia de la información.

Estas unidades típicamente se instalan internamente como una tarjeta deexpansión.

./img/estado_solido_ddr_drivex1.jpg

54

Page 55: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Memoria flash Derivada de los EEPROM (Electrically Erasable Programma-ble Read-Only Memory, Memoria de Sólo Lectura Programable y BorrableEléctricamente). Los EEPROM tienen la característica de que, además delectura y escritura, hay un tercer tipo de operación que deben implemen-tar: El borrado. Un EEPROM ya utilizado debe borrarse antes de volversea escribir a él. La principal característica que distingue a las memoriasflash de los EEPROMs tradicionales es que el espacio de almacenamientoestá dividido en páginas o bloques, y el controlador puede leer, borrar oescribir a cada uno de ellos por separado.

El uso de dispositivos flash para almacenamiento de información inicióhacia 1995 como respuesta a las necesidades de las industrias aeroespacialy militar, dada la frecuencia de los daños a la información que presentabanlos medios magnéticos por la vibración. Hoy en día hay dispositivos flashde muy bajo costo y capacidad, aunque presentan una gran variabilidadtanto en su tiempo de acceso como en su durabilidad. En este sentido,podemos hablar de dos tipos principales de dispositivos flash:

Almacenamiento primario (SSD) Las llamadas formalmente unidadde estado sólido (Solid State Drive)34 son unidades Flash de altavelocidad y capacidad, y típicamente presentan una interfaz similara la que tienen los discos duros (hoy en día, la más común es SATA)../img/estado_solido_sata.jpgSu velocidad de lectura es muy superior y su velocidad de escritura(incluyendo el borrado) es comparable a la de los discos magnéticos.Su precio por el mismo volumen de almacenamento es entre 5 y 10veces el de los discos magnéticos.Podemos encontrar este tipo de unidades tanto como unidades inde-pendientes en servidores, equipos de alto desempeño e incluso algunassubportátiles (netbooks) o como un componente de la tarjeta madreen dispositivos móviles como teléfonos y tabletas.

Transporte de archivos Esta tecnología también está presente en lasdiversas unidades extraíbles o móviles, como las unidades USB, SD,Memory Stick, Compact Flash, etc. La principal diferencia entre es-tas son los diferentes conectores que emplean; todas estas tecnologíaspresentan dispositivos que varían fuertemente en capacidad, veloci-dad y durabilidad../img/estado_solido_usb.jpg

Independientemente del tipo, las unidades de estado sólido presentan ven-tajas ante los discos rotativos, como un muy bajo consumo eléctrico, operacióncompletamente silenciosa, y resistencia a la vibración o a los golpes. Además, elmedio es verdaderamente de acceso aleatorio: Al no ser ya un disco, desaparecentanto la demora de movimiento de cabezas como la rotacional.

34Un error muy común es confundir la D con Disk, que denotaría que llevan un disco, unmedio rotativo

55

Page 56: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

7.2.1. Desgaste del medio

La memoria Flash presenta patrons de desgaste muy distintos de los que po-demos ver en otros medios. La memoria Flash tiene capacidad de aguantar uncierto número de operaciones de borrado por página.35 Las estructuras tradicio-nales de sistemas de archivos basados en disco concentran una gran cantidad demodificaciones en ciertas regiones clave: Las tablas de asignación y directoriosregistran muchos más cambios que la región de datos.

Casi todos los controladores de discos Flash cuentan con mecanismos de ni-velamiento de escrituras (write leveling). Este mecanismo busca reducir el des-gaste focalizado modificando el mapeo de los sectores que ve el sistema operativorespecto a los que son grabados en verdad en el medio: En vez de actualizar unbloque (por ejemplo, un directorio) en su lugar, el controlador le asigna un nuevobloque de forma transparente, y marca el bloque original como libre.

Los mecanismos más simples de nivelamiento de escrituras lo hacen única-mente intercambiando los bloques libres con los recién reescritos; mecanismosmás avanzados buscan nivelar el nivel de reescritura en toda la unidad reubi-cando también a los bloques que típicamente sólo se leen.

7.2.2. Emulación de discos

Hoy en día, la casi totalidad de medios de estado sóldo se presentan ante elsistema con una interfaz que emula la de los discos, la FTL (Flash TranslationLayer, Capa de Traducción de Flash). La ventaja de esta emulación es que nohizo falta desarrollar controladores adicionales para comenzar a emplear estosmedios. La desventaja, sin embargo, es que al ocultarse el funcionamiento realde las unidades de estado sólido, el sistema operativo no puede aprovechar lasventajas estructurales — Y más importante aún, no puede evitar las debilidadesinherentes al medio.

Uno de los ejemplos más claros de esta falta de control real del medio lailustra el artículo de Valerie Aurora (2009), que menciona que tanto la pocainformación públicamente disponible acerca del funcionamiento de los contro-ladores como los patrones de velocidad y desgaste de los mismos apuntan aque la estructura subyacente de casi todos los medios de estado sólido es la deun sistema de archivos estructurado en bitácora. Aurora indica que hay variasoperaciones que no pueden ser traducidas eficientemente a través de esta capade emulación, y que seguramente permitirían un mucho mejor aprovechamientodel medio. Como mencionamos en la sección que describe los sistemas de archi-vo estructurados en bitácora, si bien varios de estos sistemas de archivos hanpresentado implementaciones completamente utilizables, la falta de interés hallevado a que muchos de estos proyectos sean abandonados.

En su artículo de 2012, Neil Brown apunta a que Linux tiene una interfazapta para hablar directamente con dispositivos de estado sólido, llamada mtd— memory technology devices, dispositivos de tecnología de memoria.

35Dependiendo de la calidad, va entre las 3,000 y 100,000

56

Page 57: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Como lo mencionamos al inicio de esta sección, si bien los discos duros sehan empleado por ya 50 años y los sistemas de archivos están claramente desa-rrollados para aprovechar sus detalles físicos y lógicos, el uso de los dispositivosde estado sólido apenas está despegando en la última década. Y si bien esta pri-mer aproximación que nos permite emplear esta tecnologíá transparentementees suficientemente buena para muchos de los usos básicos, sin duda hay espa-cio para mejorar. Este es un tema que seguramente brinda amplio espacio parainvestigación y desarrollo para los próximos años.

8. Manejo avanzado de volúmenesEn la sección Plasmando la estructura en el dispositivo presentamos muy es-

cuetamente al concepto de volumen. Mencionamos que un volumen típicamentecoincide con una partición, aunque no siempre es el caso — Y no profundizamosmás al respecto. En esta sección describiremos uno de los mecanismos en que po-demos combinar diferentes dispositivos físicos en un sólo volumen, y cómo –bajolas diferentes modalidades que presentaremos– lleva a ganar en confiabilidad,rendimiento y espacio disponible.

Abordaremos un esquema llamado RAID, Arreglo Redundante de Discos Ba-ratos (Redundant Array of Inexpensive Disks)36, propuesto en 1988 por DavidPatterson, Garth Gibson y Randy Katz ante el diferencial que se presentaba (yse sigue presentando) entre el avance en velocidad y confiabilidad del cómputoen relación al almacenamiento magnético. Bajo los esquemas RAID queda so-breentendido que los diferentes discos que forman parte de un volumen son delmismo tamaño. Si se remplaza un disco de un arreglo por uno más grande, lacapacidad en exceso que tenga éste sobre los demás discos será desperdiciada.

Por muchos años, los arreglos RAID se hacían a través de controladores de-dicados, presentándose como un dispositivo único al sistema operativo. Hoy endía, prácticamente todos los sistemas operativos incluyen la capacidad de in-tegrar varias unidades independientes en un arreglo por software; esto conllevaun impacto en rendimiento, aunque muy pequeño. Hay también, y abordare-mos algunas de estas implementaciones hacia el final de esta sección, variasimplementaciones derivadas de RAID que han incorporado conceptos de capassuperiores en algunos sistemas operativos modernos.

RAID no es un sólo esquema, sino que es un conjunto de esquemas, cada unode ellos diseñado para mejorar distintos aspectos del almacenamiento en discos.Veamos las características de los principales niveles en uso hoy en día.

8.1. RAID 0: División en franjas

Este esquema nos brinda una mejoría tanto en espacio total, dado que pre-senta a un volumen grande en vez de varios discos probablemente más pequeños,

36Ocasionalmente se presenta a RAID como acrónimo de Arreglo Redundante de DiscosIndependientes (Redundant Array of Independent Disks)

57

Page 58: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

simplificando la tarea del administrador, como de velocidad, dado que las lec-turas y escrituras al volumen ya no estarán sujetas al movimiento de una solacabeza, sino que habrá una cabeza independiente por cada uno de los discos quetengamos en el volumen.

Figura 23: Cinco discos organizados en RAID 0

Los discos que participan en un volumen RAID 0 no son sencillamente con-catenados, sino que los datos son divididos en franjas (en inglés, el proceso seconoce como striping, de la palabra stripe, franja; algunas traducciones al es-pañol se refieren a este proceso como bandeado). Esto hace que la carga searepartida de forma uniforme entre todos los discos, y asegura que todas lastransferencias mayores al tamaño de una franja provengan de más de un discoindependiente.

Figura 24: División de datos en franjas

La confiabilidad del volumen, sin embargo, disminuye respecto a si cada unode los discos se manejara por separado: Basta con que uno de los discos presentedaños para que la información contenida en el volumen se pierda.

Puede construirse un arreglo bajo RAID nivel 0 con un mínimo de dos discos.

8.2. RAID 1: EspejoEste nivel está principalmente orientado a aumentar la confiabilidad de la

información: Los datos son grabados de forma simultánea e idéntica en todoslos discos que formen parte del volumen. El costo de mantener los datos enespejo, claro está, es el del espacio empleado: En su configuración habitual, dedos discos por volumen, el 50% del espacio de almacenamiento se pierde porfungir como respaldo del otro 50%.

58

Page 59: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

La velocidad de acceso a los datos bajo RAID 1 es mayor a la que tendríamoscon un disco tradicional: Basta con que obtengamos la respuesta de uno de losdiscos; el controlador RAID (sea el sistema operativo o una implementación enhardware) puede incluso programar las solicitudes de lectura para que se vayanrepartiendo entre ambas unidades. La velocidad de escritura se ve levementereducida, dado que hay que esperar a que ambos discos escriban la información.

Figura 25: Dos discos organizados en RAID 1

Un arreglo RAID nivel 1 se construye típicamente con dos discos.

8.3. Los niveles 2, 3 y 4 de RAIDLos siguientes tres niveles de RAID combinan propiedades de los primeros

junto con un algoritmo de verificación de integridad y corrección de errores.Estos han caído casi por completo en el desuso dado que los otros niveles, ymuy en particular el nivel 5, ofrecen las mismas características, pero con mayorconfiabilidad

8.4. RAID 5: Paridad dividida por bloquesEl nivel 5 de RAID proporciona un muy buen equilibrio respecto a las carac-

terísticas que venimos mencionando: nos brinda el espacio total de almacena-miento de todos los discos que formen parte del volumen menos uno. Para cadauna de las franjas, RAID5 calcula un bloque de paridad. Ahora, este bloque deparidad no siempre va al mismo disco, sino que se va repartiendo entre todoslos discos del volumen, desplazándose a cada franja, de modo que cualquiera delos discos puede fallar, y el arreglo continuará operando sin pérdida de informa-ción. Esta falla se notifica al administrador del sistema, quien debe reemplazarel disco lo más pronto posible (dado que, de no hacerlo, la falla en un segundodisco resultará en la pérdida de toda la información).

Dependiendo de la configuración, la velocidad de acceso de este nivel puedeser es ligeramente menor que la que obtendríamos de los discos sin RAID, oligeramente menor a la que obtendríamos con RAID nivel 0. Dado que la elec-trónica en los discos actuales nos notificará explícitamente en caso de fallo delectura, al leer información podemos leer únicamente los discos que contenganla información (e ignorar al de paridad); si nuestro RAID está configurado paraverificar la paridad en lecturas, claro está, todas las lecturas tendrán que obtenerla franja correspondiente de todos los discos del arreglo para poder calcularla.

59

Page 60: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 26: División de datos en franjas, con paridad, para RAID 5

Las escrituras son invariablemente más lentas que lo que obtenemos tantoen ausencia de RAID como en niveles 0 y 1, dado que siempre tendrá querecalcularse la paridad; en el caso de una escritura mínima, menor a una franja,tendrá que leerse la franja entera de todos los discos participantes en el arreglo,recalcularse la paridad, y grabarse en el disco correspondiente.

Cuando uno de los discos falla, el arreglo comienza a trabajar en el modointerino de recuperación de datos (Interim data recovery mode), en el que todaslas lecturas involucran a todos los discos, ya que tienen que estar recalculandoy rellenando la información que provendría del disco dañado.

Figura 27: Cinco discos organizados en RAID 5

Para implementar RAID nivel 5 son necesarios por lo menos 3 discos, aunquees común verlos más anchos, pues de este modo se desperdicia menos espacioen paridad. Si bien teóricamente un arreglo nivel 5 puede ser arbitrariamenteancho, en la práctica es muy raro ver arreglos con más de 5 discos: Tener unarreglo más ancho aumentaría la probabilidad de falla. Si un arreglo que estáya operando en el modo interino de recuperación de datos se encuentra con unafalla en cualquiera de sus discos, tendrá que reportar un fallo irrecuperable.

8.5. RAID 6: Paridad por redundancia P+QSe trata nuevamente de un nivel de RAID muy poco utilizado. Se basa en el

mismo principio que el de RAID 5 pero, empleando dos distintos algoritmos paracalcular la paridad, permite la pérdida de hasta dos de los discos del arreglo.La complejidad computacional es sensiblemente mayor a la de RAID 5, no sóloporque se trata de un segundo cálculo de paridad, sino porque este cálculo debehacerse empleando un algoritmo distinto y más robusto — Si bien para obtener

60

Page 61: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

la paridad P basta con hacer una operación XOR sobre todos los segmentosde una franja, la segunda paridad Q típicamente emplea al algoritmo Reed-Solomon, paridad diagonal o paridad dual ortogonal. Esto conlleva a una mayorcarga al sistema, en caso de que sea RAID por software, o a que el controladorsea de mayor costo por implementar mayor complejidad, en caso de ser hardwarededicado.

Figura 28: Cinco discos organizados en RAID 6

El nivel 6 de RAID puede implementarse con 4 o más unidades, y si bien elespacio dedicado a la redundancia se incrementa a dos discos, la redundanciaadicional que ofrece este esquema permite crear volúmenes con un mayor númerode discos.

8.6. Niveles combinados de RAIDViendo desde el punto de vista de la abstracción presentada, RAID toma una

serie de dispositivos de bloques y los combina en otro dispositivo de bloques.Esto significa que puede tomarse una serie de volúmenes RAID y combinarlosen uno solo, aprovechando las características de los diferentes niveles.

Si bien pueden combinarse arreglos de todo tipo, hay combinaciones másfrecuentes que otras. Con mucho, la más popular es la de los niveles 1 + 0 —Esta combinación, frecuentemente llamada sencillamente RAID 10, ofrece unmáximo de redundancia y rendimiento, sin sacrificar demasiado espacio.

Con RAID nivel 10 creamos volúmenes que suman por franjas unidadesen espejo (un volumen RAID 0 compuesto de varios volúmenes RAID 1). Encaso de fallar cualquiera de las unidades del arreglo, ésta puede ser reemplazadafácilmente, y su reemplazo no significará un trabajo tan intensivo para el arregloentero, sólo para su disco espejo.

Bajo este esquema, en el peor de los casos, en un volumen con n discos físicostendríamos n

2 volúmenes nivel 1, y por tanto podríamos soportar la pérdida dehasta n

2 discos — Siempre que estos no formen parte de un mismo volumen nivel1.

Ahora bien, esta combinación nos ilustra cómo el órden de los factores sí al-tera el producto: Si en vez de la concatenación de varias unidades espejeadas (un

61

Page 62: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 29: Seis discos organizados en RAID 1+0

volumen nivel 0 compuesto de varios volúmenes nivel 1) armáramos nuestro arre-glo en órden inverso, esto es, como el espejeo de varias unidades concatenadaspor franjas, parecería que obtenemos los mismos beneficios — Pero analizandolo que ocurre en caso de falla, resulta claro que el nivel de redundancia resultamucho menor.

En este caso, nuestro arreglo soportará también el fallo de hasta n2 de sus

discos, pero únicamente si ocurren en el mismo volumen del espejo. Si se perdie-ran al mismo tiempo el disco 1 (del subvolumen 1) y el disco 5 (del subvolumen2), tendríamos pérdida de datos.

8.7. Más allá de RAIDLos esquemas RAID vienen, sin embargo, de fines de la década de 1980, y en

los más de 20 años desde que fueron planteados, si bien han cambiado el panora-ma del almacenamiento, han sido ya superados. En nuestro caso, profundizamosen estos esquemas y no los desarrollos posteriores dada la limpieza conceptualque presentan, y dado que otros esquemas incluso hacen referencia al nivel deRAID que estarían reemplazando en su documentación.

Varios sistemas operativos ofrecen hoy el concepto de un gestor de volúme-nes lógicos: Una interfaz que permite, como dos pasos independientes, agregardiferentes volúmenes físicos a un

62

Page 63: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Figura 30: Seis discos organizados en RAID 0+1

9. Otros recursosPractical File System Design (Dominic Giampaolo, 1999): El autor fueparte del equipo que implementó el sistema operativo BeOS, un sistemade alto rendimiento pensado para correr en estaciones de alto rendimiento,particularmente enfocado al video. El proyecto fracasó a la larga, y BeOS(así como BeFS, el sistema que describe) ya no se utilizan. Este libro tieneuna muy buena descripción de varios sistemas de archivos, y aborda aprofundidad técnicas que hace 15 años eran verdaderamente novedosas, yhoy forman parte de casi todos los sistemas de archivos con uso amplio, eincluso algunas que no se han logrado implementar y que BeFS sí ofrecía.

FAT Root Directory Structure on Floppy Disk and File Information (MuftiMohammed, Codeguru, 2007)

File Allocation Table - 16bit (Peter Clark)

A Fast File System for UNIX (Marshall Kirk Mckusick, William N. Joy,Samuel J. Lefler, Robert S. Fabry, 1984)

The Design and Implementation of a Log-Structured File System (MendelRosenblum, J. K. Ousterhout, 1992)

The Second Extended File System: Internal Layout (Dave Poirier, 2001-2011)

NILFS2 en Linux (César Yáñez)

Los discos desde la perspectiva de un sistema de archivos (César Yáñez)

A hash-based DoS attack on Btrfs (LWN)

Denial-of-Service Attack Found In Btrfs File-System (Slashdot)

63

Page 64: SistemasOperativos—Sistemasdearchivossistop.gwolf.org/pdf/05_sistemas_de_archivos.pdf · a pesar de contar con los permisos, no podemos abrir para escritura un ... usuario, sino

Default /etc/apache2/mods-available/disk_cache.conf is incompatible withext3 (bug de Debian ilustrando los límites en números de archivos paraExt3)

The Design and Implementation of a Log-Structured File System (JohnK. Ousterhout, Mendel Rosenblum, 1992)

File-system development with stackable layers (Heidemann y Popek, 1994ACM Transactions on Computer Systems)

Serverless network file systems (Thomas E. Anderson et. al., 1996, ACMTransactions on Computer Systems)

LogFS — Finally a scalable flash file system (Jörn Engel, Robert Mertens,2005)

Log-structured file systems: There’s one in every SSD (Valerie Aurora,2009)

JFFS2, UBIFS, and the growth of flash storage (Neil Brown, 2012)

A case for Redundant Arrays of Inexpensive Disks (Patterson, Gibson,Katz 1988)

Unidades de estado sólido. El reto de la computación forense en el mundode los semiconductores (Cano Martinez, 2013)

Non-volatile memory based on the ferroelectric photovoltaic effect (Guo,You, Zhow et. al., 2013)

eMMC/SSD File System Tuning Methodology, Cogent Embedded, 2013(referido desde A flash filesystem tuning guide, LWN, julio 2013)

OpenPlanets Results Evaluation Framework, Open Planets Foundation.Muestra la evolución a lo largo de los años de cómo reconocen archivosde tipos conocidosvarias herramientas (para reconocimiento de tipo dearchivos)

64