Sistemas de archivos — ejercicios tipo examen con bloques, FAT, i-nodos y enlaces (y el atajo que apuntaba a la nada)

En el trabajo en grupo de IC2, laura tenía los datos buenos en su carpeta y yo no quería copiarlos (si ella los corregía, mi copia se quedaba vieja). Así que hice lo que había visto en clase: ln -s /home/laura/ic2/grupo/datos.csv datos.csv. Funcionó dos días. Al tercero, laura «ordenó» su carpeta, movió datos.csv a grupo/entrada/ y mi programa empezó a fallar con No such file or directory. Mi atajo seguía ahí, con su ruta… a un sitio donde ya no había nada.

Con un enlace duro no me habría pasado: habría sido otro nombre para el mismo i-nodo, y mover el original no lo rompe. Esa diferencia, y muchas como esa, es lo que se pregunta en el examen. Aquí tienes la tanda de ejercicios del último tema de la teoría de IC2. Si algo no te suena, repasa antes la teoría de sistemas de archivos. Y si quieres ver los cálculos resueltos paso a paso, tienes la práctica guiada de sistemas de archivos.

Cómo usar este artículo

  1. Haz el test sin mirar la teoría. Cada pregunta tiene su botón «Comprobar» y una explicación de por qué es correcta la buena y por qué fallan las otras. Las de respuesta múltiple penalizan como en el examen: marcar una opción falsa resta.
  2. Haz los cálculos con papel. Bloques por asignación, lecturas para llegar a un bloque, tamaño máximo con un i-nodo y tamaños del mapa de bits y de la FAT. Las casillas se corrigen solas y admiten decimales con coma.
  3. Escribe las de desarrollo antes de mirar la respuesta modelo. Después compara con la lista «lo que se valora».
  4. Termina con el chuletario. Si fallaste algo, búscalo en la tabla «Síntoma / Causa probable».

Test: archivos, acceso, directorios y asignación

Treinta y una preguntas con todos los formatos del examen: única, múltiple, verdadero o falso, huecos, relacionar, ordenar y respuesta corta. Las preguntas son nuevas (no las de la colección del examen), pero preguntan por lo mismo.

Pregunta 1Única

¿Qué frase describe mejor lo que es un archivo para el sistema operativo?

  1. Un objeto con nombre que guarda información persistente, que sigue ahí después de apagar
  2. Una zona de la RAM que el proceso reserva con malloc
  3. Una fila de sectores contiguos del disco
  4. La entrada de la tabla de archivos abiertos de un proceso
Solución

Respuesta: Un objeto con nombre que guarda información persistente, que sigue ahí después de apagar

Persistente significa no volátil, duradero: la información sobrevive a que se apague el ordenador. Lo demás son estructuras que el SO usa para gestionarlo.

Pregunta 2Relacionar

informe.pdf no es lo mismo para todos. Relaciona cada nivel con lo que ve:

El usuario
La interfaz de llamadas al sistema (Unix)
El núcleo del SO

Definiciones:

  • Una colección de bloques
  • Una colección de bytes
  • Una estructura de datos duradera
  • Una colección de procesos
Solución
  • El usuario → Una estructura de datos duradera
  • La interfaz de llamadas al sistema (Unix) → Una colección de bytes
  • El núcleo del SO → Una colección de bloques

El usuario ve un documento; read() y write() ven bytes sin importarles qué significan; el núcleo lo guarda y lo lee por bloques (la unidad de transferencia, mayor que un sector).

Pregunta 3Múltiple · penaliza

¿Cuáles de estos son atributos de un archivo?

  1. El tamaño
  2. Las fechas de creación y de modificación
  3. La localización en el dispositivo
  4. La información de protección (permisos)
  5. El PID del proceso que lo está leyendo
  6. El número de marco de RAM donde se cargó
Solución

Respuesta: El tamaño · Las fechas de creación y de modificación · La localización en el dispositivo · La información de protección (permisos)

Los atributos de los apuntes son nombre, tipo, localización, tamaño, protección, fechas y versión. Recuerda que esta pregunta penaliza: marcar un distractor resta.

Pregunta 4Verdadero o falso

Sobre abrir y cerrar archivos, indica si es verdadero o falso:

  1. open() copia en memoria principal la información de control del archivo para no ir al directorio en cada operación.
  2. En Unix, el descriptor que devuelve open() es el índice de la entrada reservada en la tabla de archivos abiertos del proceso.
  3. Cada read() vuelve a buscar el nombre del archivo en el directorio del disco.
  4. close() borra el archivo del disco si nadie más lo tiene abierto.
Solución
  • V — open() copia en memoria principal la información de control del archivo para no ir al directorio en cada operación.
  • V — En Unix, el descriptor que devuelve open() es el índice de la entrada reservada en la tabla de archivos abiertos del proceso.
  • F — Cada read() vuelve a buscar el nombre del archivo en el directorio del disco.
  • F — close() borra el archivo del disco si nadie más lo tiene abierto.

Abrir sirve justo para no repetir la búsqueda: el directorio se consulta una vez y después se trabaja con la copia en RAM a través del descriptor.

close() solo libera los recursos que el archivo ocupaba en memoria; el archivo sigue en el disco.

Pregunta 5Única

Truncas datos.csv, que medía 12 288 bytes. ¿Cómo queda?

  1. Sigue existiendo, con sus atributos, pero con tamaño 0
  2. Desaparece del directorio y sus bloques quedan libres
  3. Queda con 12 288 bytes, pero vuelve la posición actual al principio
  4. Se convierte en un enlace simbólico vacío
Solución

Respuesta: Sigue existiendo, con sus atributos, pero con tamaño 0

Truncar: fuera el contenido, se quedan la entrada de directorio y los atributos (nombre, permisos, fechas…). Borrar se lo lleva todo.

Pregunta 6Rellenar huecos

Completa cómo reconoce cada sistema el tipo de un archivo:

En Windows el tipo se deduce de la ____ del nombre; en Unix el sistema operativo ____ tipos de archivo; aun así, todo SO tiene que entender al menos el formato del archivo ____.

Palabras:

  • no reconoce
  • siempre reconoce
  • de texto
  • contenido
  • ejecutable
  • extensión
Solución

En Windows el tipo se deduce de la extensión del nombre; en Unix el sistema operativo no reconoce tipos de archivo; aun así, todo SO tiene que entender al menos el formato del archivo ejecutable.

Windows mira las últimas letras del nombre; Unix trata el contenido como bytes sin más; y cualquier SO necesita reconocer los ejecutables para poder cargarlos y lanzarlos.

Pregunta 7Múltiple · penaliza

La expresión «sistema de archivos» se usa con dos sentidos. ¿Cuáles?

  1. El módulo del sistema operativo que ofrece los servicios de archivos y directorios
  2. La organización de la información que se crea en el disco para guardar archivos y directorios
  3. La tabla de páginas de cada proceso
  4. El controlador (driver) del disco
Solución

Respuesta: El módulo del sistema operativo que ofrece los servicios de archivos y directorios · La organización de la información que se crea en el disco para guardar archivos y directorios

Uno es software (el módulo del SO) y el otro es la estructura de datos que queda escrita en el dispositivo (por ejemplo, un disco formateado en ext4 o FAT32).

Pregunta 8Respuesta corta

Método de acceso en el que cada lectura o escritura continúa justo donde terminó la anterior, como en una cinta:

Solución

Respuesta: Secuencial

Es el modelo básico de Unix y Windows: open → read → read… La posición actual avanza sola.

Pregunta 9Respuesta corta

¿Con qué llamada al sistema de Unix colocas la posición actual en el byte que quieras antes de leer (acceso directo)?

Solución

Respuesta: lseek

lseek(fd, desplazamiento, SEEK_SET) mueve la posición; el siguiente read() empieza ahí, sin pasar por lo de antes.

Pregunta 10Relacionar

Relaciona cada método de acceso con su imagen:

Secuencial
Directo
Indexado (ISAM)

Definiciones:

  • Una cinta que solo avanza o retrocede
  • Una pila de llamadas
  • Una tabla ordenada que se consulta por una clave
  • Un array de bloques al que saltas por posición
Solución
  • Secuencial → Una cinta que solo avanza o retrocede
  • Directo → Un array de bloques al que saltas por posición
  • Indexado (ISAM) → Una tabla ordenada que se consulta por una clave

En el indexado, el SO mantiene uno o varios archivos índice ocultos para buscar por clave (por ejemplo, un apellido). Hoy se hace fuera del núcleo, en las bases de datos.

Pregunta 11Ordenar

Ordena los modelos de directorio del más simple al más general:

  1. Dos niveles
  2. Nivel único
  3. Grafo general
  4. Grafo acíclico
  5. Árbol
Solución

Orden correcto:

  1. Nivel único
  2. Dos niveles
  3. Árbol
  4. Grafo acíclico
  5. Grafo general

Cada modelo añade algo: separar usuarios (dos niveles), subdirectorios (árbol), compartir sin copiar (acíclico) y enlaces sin restricciones, con ciclos (general).

Pregunta 12Respuesta corta

Un disco tiene un único directorio donde están todos los archivos de todos los usuarios, sin subcarpetas. ¿Qué modelo de directorio es?

Solución

Respuesta: Nivel único

Es el más sencillo y el que peor escala: choques de nombres entre usuarios y búsquedas lentas cuando hay muchos archivos.

Pregunta 13Respuesta corta

Desde la raíz, el árbol baja por home → laura → ic2 → grupo y ahí está notas.txt. Escribe su ruta absoluta.

Solución

Respuesta: /home/laura/ic2/grupo/notas.txt

La ruta absoluta empieza en la raíz, que es la / inicial. No se escribe «/root/…»: root es otro directorio (el del administrador).

Pregunta 14Respuesta corta

Tu directorio de trabajo es /home/sergio/ic2. Escribe la ruta relativa de /home/sergio/ic2/practica/Makefile.

Solución

Respuesta: practica/Makefile

La relativa parte del directorio de trabajo, así que se quita el principio común (/home/sergio/ic2/) y no lleva / al principio.

Pregunta 15Verdadero o falso

Sobre los modelos de directorio, verdadero o falso:

  1. Con dos niveles, sergio y laura pueden tener cada uno un archivo practica.c.
  2. El modelo en árbol permite que un mismo archivo cuelgue de dos rutas distintas.
  3. En un grafo acíclico, las dos rutas llevan al mismo objeto, no a una copia.
  4. En un grafo general, un programa que recorre los directorios puede no terminar.
Solución
  • V — Con dos niveles, sergio y laura pueden tener cada uno un archivo practica.c.
  • F — El modelo en árbol permite que un mismo archivo cuelgue de dos rutas distintas.
  • V — En un grafo acíclico, las dos rutas llevan al mismo objeto, no a una copia.
  • V — En un grafo general, un programa que recorre los directorios puede no terminar.

El árbol tiene justo esa desventaja: no permite compartir. El grafo acíclico lo resuelve con enlaces y el general admite enlaces a directorios de más arriba, que forman ciclos.

Pregunta 16Única

datos.csv tiene un enlace duro llamado copia-laura.csv. Haces rm datos.csv. ¿Qué pasa?

  1. Los datos siguen accesibles por copia-laura.csv; el contador de enlaces del i-nodo baja de 2 a 1
  2. copia-laura.csv queda roto y apunta a nada
  3. Se borran los dos nombres a la vez
  4. rm falla porque el archivo tiene un enlace
Solución

Respuesta: Los datos siguen accesibles por copia-laura.csv; el contador de enlaces del i-nodo baja de 2 a 1

Un enlace duro es otro nombre para el mismo i-nodo. Mientras quede algún nombre (contador > 0), los datos siguen ahí.

Pregunta 17Relacionar

Relaciona cada orden con lo que crea:

ln -s apuntes.md atajo.md
ln apuntes.md otro.md
cp apuntes.md copia.md

Definiciones:

  • Un enlace simbólico
  • Una copia independiente
  • Un punto de montaje
  • Un enlace duro
Solución
  • ln -s apuntes.md atajo.md → Un enlace simbólico
  • ln apuntes.md otro.md → Un enlace duro
  • cp apuntes.md copia.md → Una copia independiente

La s de -s es de symbolic. Sin -s, ln crea otro nombre para el mismo i-nodo. cp duplica los datos: si cambias uno, el otro no cambia.

Pregunta 18Múltiple · penaliza

¿Qué se puede hacer para evitar los problemas de los ciclos en un directorio en grafo general?

  1. Permitir enlaces solo a archivos, no a directorios
  2. Recolección de basura (de memoria) para lo que quede inalcanzable
  3. Usar algoritmos que detecten ciclos al recorrer
  4. Pasar a asignación contigua
  5. Aumentar el tamaño de bloque
Solución

Respuesta: Permitir enlaces solo a archivos, no a directorios · Recolección de basura (de memoria) para lo que quede inalcanzable · Usar algoritmos que detecten ciclos al recorrer

Las tres son las soluciones de los apuntes. La primera es la que usa Unix con los enlaces duros: no se pueden hacer a directorios.

Pregunta 19Única

Conectas un pendrive y su contenido aparece dentro de /media/usb. ¿Qué ha hecho el sistema operativo?

  1. Montar el sistema de archivos del pendrive en el punto de montaje /media/usb
  2. Copiar todo el pendrive al disco del portátil
  3. Crear un enlace duro a cada archivo del pendrive
  4. Formatear el pendrive
Solución

Respuesta: Montar el sistema de archivos del pendrive en el punto de montaje /media/usb

Antes de usar un sistema de archivos hay que montarlo: su árbol se cuelga de un directorio del árbol existente.

Pregunta 20Múltiple · penaliza

¿Cuáles son mecanismos de protección de archivos?

  1. Listas de control de acceso (ACL)
  2. Contraseñas
  3. Cifrado
  4. El mapa de bits
  5. La FAT
Solución

Respuesta: Listas de control de acceso (ACL) · Contraseñas · Cifrado

Una ACL es una lista de pares <usuario, permisos>. El cifrado protege incluso si alguien se lleva el disco físico.

Pregunta 21Ordenar

Ordena las capas del sistema de archivos de arriba (más cerca de los programas) abajo (más cerca del dispositivo):

  1. Capa de comandos básicos
  2. Capa de driver
  3. Capa de control de bloques
  4. Capa lógica
Solución

Orden correcto:

  1. Capa lógica
  2. Capa de control de bloques
  3. Capa de comandos básicos
  4. Capa de driver

Lógica: directorios e i-nodos. Control de bloques: de bloque lógico a físico. Comandos básicos: leer y escribir bloques, búferes. Driver: hablar con el controlador e interrupciones.

Pregunta 22Relacionar

Relaciona cada asignación con lo que guarda la entrada de directorio:

Contigua
Enlazada
Indexada

Definiciones:

  • El primer bloque (y a veces el último); los demás enlaces van dentro de los bloques
  • El bloque inicial y la longitud
  • La lista completa de bloques libres del disco
  • El número del bloque de índices
Solución
  • Contigua → El bloque inicial y la longitud
  • Enlazada → El primer bloque (y a veces el último); los demás enlaces van dentro de los bloques
  • Indexada → El número del bloque de índices

En la contigua basta con inicio + longitud porque los bloques van seguidos. En la enlazada, cada bloque dice cuál es el siguiente. En la indexada, todos los punteros están juntos en el bloque de índices.

Pregunta 23Respuesta corta

¿En qué asignación se pierde todo lo que hay detrás de un bloque si ese bloque se daña a mitad del archivo?

Solución

Respuesta: Enlazada

El número del siguiente bloque estaba dentro del bloque dañado: la cadena se rompe ahí.

Pregunta 24Única

¿Qué técnica de asignación usa Unix con sus i-nodos?

  1. Indexada multinivel (punteros directos e indirectos simple, doble y triple)
  2. FAT
  3. Contigua con extensiones
  4. Enlazada con enlaces dobles
Solución

Respuesta: Indexada multinivel (punteros directos e indirectos simple, doble y triple)

Unix resolvió el límite del bloque de índices con varios niveles: unos punteros llevan a datos y otros a bloques de índices.

Pregunta 25Verdadero o falso

Fragmentación y espacio, verdadero o falso:

  1. La asignación contigua sufre fragmentación externa: puede haber sitio libre en total y no caber un archivo.
  2. La asignación enlazada sufre fragmentación externa.
  3. En la indexada, un archivo de un solo bloque de datos ocupa dos bloques.
  4. La FAT es una variante de la asignación enlazada.
Solución
  • V — La asignación contigua sufre fragmentación externa: puede haber sitio libre en total y no caber un archivo.
  • F — La asignación enlazada sufre fragmentación externa.
  • V — En la indexada, un archivo de un solo bloque de datos ocupa dos bloques.
  • V — La FAT es una variante de la asignación enlazada.

En la práctica de IC2 del artículo, informe.pdf no cabía en contigua con 11 bloques libres porque el mayor hueco era de 4.

La enlazada y la indexada usan cualquier bloque libre, así que no tienen fragmentación externa (solo la interna del último bloque).

Pregunta 26Múltiple · penaliza

¿Qué ventajas tiene la FAT frente a la asignación enlazada clásica?

  1. Los enlaces están juntos y se pueden guardar en caché o traer enteros a la RAM
  2. Los bloques de datos no pierden bytes con el número del siguiente
  3. Si se daña un bloque de la FAT no afecta a ningún archivo
  4. Ya no hace falta marcar el final del archivo
Solución

Respuesta: Los enlaces están juntos y se pueden guardar en caché o traer enteros a la RAM · Los bloques de datos no pierden bytes con el número del siguiente

La FAT saca los enlaces de los bloques y los reúne en una tabla al principio del disco: recorrer la cadena es mirar la tabla, no leer bloque a bloque.

Pregunta 27Rellenar huecos

Completa las tres formas de saber qué bloques están libres:

En un ____ hay un bit por bloque; en una ____ cada bloque libre apunta al siguiente; y en un disco ____ la propia tabla marca los libres.

Palabras:

  • lista enlazada
  • tabla de páginas
  • TLB
  • mapa de bits
  • FAT
Solución

En un mapa de bits hay un bit por bloque; en una lista enlazada cada bloque libre apunta al siguiente; y en un disco FAT la propia tabla marca los libres.

El mapa de bits es el del Unix tradicional. En la lista enlazada, el SO solo guarda un puntero al primer libre (o usa ese primer libre como bloque de índices con los demás).

Pregunta 28Respuesta corta

Asignación indexada con un único bloque de índices, bloques de 2 KiB y punteros de 4 bytes. ¿Cuántos KiB mide como máximo un archivo? (solo el número)

Solución

Respuesta: 1024

En el bloque de índices caben 2048 / 4 = 512 punteros, así que el archivo tiene como mucho 512 bloques: 512 × 2 KiB = 1024 KiB (1 MiB).

Pregunta 29Única

i-nodo con 12 punteros directos, bloques de 4 KiB y punteros de 4 bytes. ¿Qué puntero lleva al bloque lógico 1030 de un archivo (contando desde 0)?

  1. El indirecto simple
  2. Un puntero directo
  3. El indirecto doble
  4. El indirecto triple
Solución

Respuesta: El indirecto simple

Con 4 KiB y punteros de 4 B, un bloque de índices guarda 1024 punteros: el simple cubre 1024 bloques, del 12 al 1035.

Pregunta 30Respuesta corta

Con el mismo i-nodo (12 directos, 1024 punteros por bloque) ya en memoria, ¿cuántas lecturas de disco cuesta leer el bloque lógico 40 000?

Solución

Respuesta: 3

40 000 es mayor que 1035 y menor que 1 049 612: va por el indirecto doble. Lecturas: bloque de índices de arriba + bloque de índices de abajo + bloque de datos = 3.

Pregunta 31Verdadero o falso

Implementación de directorios, verdadero o falso:

  1. Una lista lineal de entradas es fácil de programar, pero muy lenta con miles de archivos.
  2. NTFS y ext4 usan árboles B (o variantes) para los directorios grandes.
  3. Con una tabla hash hay que comparar el nombre con todas las entradas.
  4. El directorio solo existe en RAM; en el disco solo están los datos.
Solución
  • V — Una lista lineal de entradas es fácil de programar, pero muy lenta con miles de archivos.
  • V — NTFS y ext4 usan árboles B (o variantes) para los directorios grandes.
  • F — Con una tabla hash hay que comparar el nombre con todas las entradas.
  • F — El directorio solo existe en RAM; en el disco solo están los datos.

La tabla hash calcula la casilla a partir del nombre y va directa. El directorio se guarda en el disco (en RAM, como mucho, una copia para ir más rápido).

Si dudas entre enlace duro y simbólico, pregúntate «¿guarda una ruta o comparte el i-nodo?». Casi todas las preguntas de enlaces se resuelven con esa pregunta.

Cálculos con casillas

Cinco problemas como los del examen. Antes de empezar, la receta que sirve para todos:

  • Todo en potencias de 2: 1 KiB = 2^10, 1 MiB = 2^20, 1 GiB = 2^30, 1 TiB = 2^40.
  • Bloques de un archivo = ⌈tamaño / bytes útiles⌉: útiles = bloque en contigua, FAT e indexada; bloque − enlaces en la enlazada. Y en la indexada, +1 por el bloque de índices.
  • Punteros por bloque N = bloque / puntero. Máximo con un i-nodo = (directos + N + N² + N³) × bloque.
  • Mapa de bits: un bit por bloque. FAT: una entrada (de los bytes que digan) por bloque.
Pregunta 1Cálculo

La carpeta de laura en un disco con bloques de 2 KiB (2048 B) y enlaces de 4 bytes. ¿Cuántos bloques ocupa cada archivo con cada asignación? En la indexada, cuenta también su bloque de índices.

ArchivoTamaño (B)
notas.txt3 000
grupo.c6 144
memoria.pdf9 000
ArchivoContiguaEnlazadaFATIndexada
notas.txt
grupo.c
memoria.pdf
Total
Solución
ArchivoContiguaEnlazadaFATIndexada
notas.txt2223
grupo.c3434
memoria.pdf5556
Total10111013

Bloques = tamaño / espacio útil, redondeando hacia arriba. En contigua, FAT e indexada el bloque entero es para datos (2048 B); en la enlazada cada bloque pierde 4 B con el número del siguiente: útiles 2044 B.

notas.txt: 3000 / 2048 = 1,46 → 2 en todas (y 2 + 1 = 3 en la indexada).

grupo.c es la trampa: 6144 = 3 × 2048 cabe justo en 3 bloques, pero en la enlazada 3 × 2044 = 6132 < 6144: le faltan 12 bytes y necesita un cuarto bloque.

memoria.pdf: 9000 / 2048 = 4,39 → 5 y 9000 / 2044 = 4,40 → 5; en la indexada, 5 + 1 = 6.

Totales: 10, 11, 10 y 13. La indexada gasta un bloque de índices por archivo, aunque el archivo sea pequeño.

Pregunta 2Cálculo

memoria.pdf ocupa 5 bloques (del 0 al 4). Con el directorio ya en memoria, ¿cuántas lecturas de disco hacen falta para leer el bloque 0, el 3 y el 4 con cada asignación? Supón que la FAT está entera en RAM y que en la indexada el bloque de índices no está en caché.

AsignaciónBloque 0Bloque 3Bloque 4
Contigua
Enlazada
FAT (en RAM)
Indexada
Solución
AsignaciónBloque 0Bloque 3Bloque 4
Contigua111
Enlazada145
FAT (en RAM)111
Indexada222

Contigua: el bloque k está en inicio + k; se calcula sin leer nada más: 1 lectura siempre.

Enlazada: el número del bloque k solo se conoce leyendo el bloque k − 1, y así hacia atrás: k + 1 lecturas (1, 4 y 5).

FAT en RAM: los saltos de la cadena se hacen en la tabla, en memoria, y luego se lee solo el bloque de datos: 1 lectura.

Indexada: primero el bloque de índices (su entrada k es la dirección) y después el bloque de datos: 2 lecturas para cualquier k.

Pregunta 3Cálculo

Un i-nodo con 10 punteros directos, uno indirecto simple, uno doble y uno triple. Bloques de 2 KiB y punteros de 4 bytes. Completa cuántos bloques de datos alcanza cada nivel y el tamaño acumulado en KiB; al final, el tamaño máximo en GiB (con dos decimales).

NivelBloques de datosAcumulado (KiB)
10 directos
Indirecto simple
Indirecto doble
Indirecto triple
Máximo (GiB)
Solución
NivelBloques de datosAcumulado (KiB)
10 directos1020
Indirecto simple5121044
Indirecto doble262144525332
Indirecto triple134217728268960788
Máximo (GiB)256.5

Punteros por bloque de índices: 2048 / 4 = 512. Cada nivel multiplica por 512: 10, 512, 512² = 262 144 y 512³ = 134 217 728 bloques.

Acumulado (bloques × 2 KiB): 10 × 2 = 20 KiB; (10 + 512) × 2 = 1 044 KiB; (522 + 262 144) × 2 = 525 332 KiB; y con el triple, 134 480 394 bloques × 2 = 268 960 788 KiB.

En GiB: 268 960 788 / 1 048 576 = 256,5 GiB. Casi todo lo pone el triple: 512³ × 2 KiB = 2^27 × 2^11 B = 2^38 B = 256 GiB.

Pregunta 4Cálculo

i-nodo con 12 punteros directos, simple, doble y triple; bloques de 4 KiB y punteros de 4 bytes. Para cada archivo: bloques de datos, bloques de índices que necesita, qué puntero lleva a su último bloque (directo, simple, doble o triple) y cuántas lecturas cuesta leer ese último bloque con el i-nodo en memoria.

ArchivoTamaño
apuntes.md30 KiB
dataset.csv2 MiB
grabacion.mp4100 MiB
ArchivoDatosÍndicesPunteroLecturas
apuntes.md
dataset.csv
grabacion.mp4
Solución
ArchivoDatosÍndicesPunteroLecturas
apuntes.md80directo1
dataset.csv5121simple2
grabacion.mp42560026doble3

Con 4 KiB y punteros de 4 B caben 1024 punteros por bloque. Los directos llegan a los bloques 0-11, el simple a los 12-1035 y el doble a los 1036-1 049 611.

apuntes.md: 30 / 4 = 7,5 → 8 bloques: todos con punteros directos, 0 bloques de índices; el último (bloque 7) se lee con 1 lectura.

dataset.csv: 2 MiB / 4 KiB = 512 bloques: 12 directos + 500 por el simple → 1 bloque de índices. El último (511) cae en el simple: índice + datos = 2 lecturas.

grabacion.mp4: 100 MiB / 4 KiB = 25 600 bloques: 12 directos + 1024 del simple + 24 564 del doble. El doble gasta su bloque de arriba más ⌈24 564 / 1024⌉ = 24 bloques debajo: 1 + 1 + 24 = 26 bloques de índices. El último bloque se alcanza por el doble: 3 lecturas.

Pregunta 5Cálculo

Un disco de 256 GiB con bloques de 8 KiB. Calcula cuántos bloques tiene, cuánto ocupa su mapa de bits y su FAT (entradas de 4 bytes) y, en otro disco con bloques de 1 KiB y enlaces de 8 bytes, cuántos bloques ocupa un archivo de 3 MiB con asignación enlazada simple y con enlaces dobles más retroenlace (tres enlaces por bloque).

ConceptoValor
Bloques del disco
Mapa de bits (MiB)
FAT con entradas de 4 B (MiB)
Archivo de 3 MiB, enlazada (bloques)
Archivo de 3 MiB, enlaces dobles + retroenlace (bloques)
Solución
ConceptoValor
Bloques del disco33554432
Mapa de bits (MiB)4
FAT con entradas de 4 B (MiB)128
Archivo de 3 MiB, enlazada (bloques)3097
Archivo de 3 MiB, enlaces dobles + retroenlace (bloques)3146

Todo en potencias de 2: 256 GiB = 2^38 B y 8 KiB = 2^13 B → 2^38 / 2^13 = 2^25 = 33 554 432 bloques.

Mapa de bits: un bit por bloque → 2^25 bits = 2^22 bytes = 4 MiB.

FAT: una entrada de 4 B (2^2) por bloque → 2^25 × 2^2 = 2^27 B = 128 MiB: 32 veces más que el mapa de bits.

Enlazada: útiles 1024 − 8 = 1016 B; 3 MiB = 3 145 728 B; 3 145 728 / 1016 = 3 096,19 → 3 097 bloques.

Con tres enlaces: útiles 1024 − 24 = 1000 B; 3 145 728 / 1000 = 3 145,728 → 3 146 bloques.

En la pregunta de grupo.c, poner 3 bloques en la enlazada. 6144 bytes son 3 bloques justos de 2048, pero cada bloque enlazado solo lleva 2044 bytes de datos: hacen falta 4.

Para saber qué puntero del i-nodo lleva al bloque k, ve restando: 12 directos, después N, después N². Con N = 1024: hasta el 11, directo; hasta el 1035, simple; hasta el 1 049 611, doble.

Preguntas de desarrollo

En el examen se escriben en párrafos, breves pero completos, sin enumerar: el tiempo corre. Para cada una, escribe tu respuesta en la caja y después mira la respuesta modelo y lo que se valora.

Pregunta 1Desarrollo

Compara la asignación contigua, la enlazada y la indexada: qué guarda el directorio en cada una, cómo es el acceso directo, qué pasa con la fragmentación y qué ocurre si se daña un bloque.

Solución

Respuesta modelo:

En la asignación contigua cada archivo ocupa bloques seguidos y el directorio solo guarda el bloque inicial y la longitud; el bloque k está en inicio + k, así que el acceso secuencial y el directo son muy rápidos, pero sufre fragmentación externa (puede no haber un hueco seguido aunque sobre espacio) y le cuesta que el archivo crezca.

En la enlazada los bloques pueden estar en cualquier sitio y cada uno guarda el número del siguiente; el directorio guarda el primero (y a veces el último). Desaparece la fragmentación externa, pero llegar al bloque k obliga a leer los k anteriores, cada bloque pierde unos bytes con el enlace y, si uno se daña, se pierde todo lo que viene detrás. La FAT es su variante con los enlaces reunidos en una tabla.

En la indexada todos los punteros del archivo están en un bloque de índices cuya dirección guarda el directorio; tampoco hay fragmentación externa y el acceso directo cuesta dos lecturas para cualquier bloque, a cambio de gastar un bloque extra por archivo (pesa en los pequeños) y de perderlo todo si se daña el bloque de índices.

Lo que se valora:

  • Qué guarda el directorio en cada una
  • Coste del acceso directo (1 / k + 1 / 2 lecturas)
  • Fragmentación externa solo en la contigua
  • Fragilidad de la enlazada y del bloque de índices
  • Mención a la FAT o al i-nodo como variantes
Pregunta 2Desarrollo

Explica la diferencia entre un enlace duro y un enlace simbólico en Unix. ¿Qué pasa con cada uno si se borra el archivo original? Pon un ejemplo con ln.

Solución

Respuesta modelo:

Un enlace duro es otra entrada de directorio que apunta al mismo i-nodo que el original: no hay original y copia, sino dos nombres para el mismo archivo, y el i-nodo cuenta cuántos nombres tiene. Se crea con ln datos.csv copia.csv. Si se borra datos.csv, el contador baja de 2 a 1 y los datos siguen accesibles por copia.csv; solo se liberan cuando el contador llega a 0. Solo se puede hacer a archivos y dentro del mismo sistema de archivos.

Un enlace simbólico es un archivo pequeño que guarda la ruta del original, como un acceso directo de Windows. Se crea con ln -s datos.csv atajo.csv. Puede apuntar a directorios y a otros sistemas de archivos, pero si se borra el original queda colgando: apunta a una ruta que ya no existe.

Lo que se valora:

  • Duro = mismo i-nodo y contador de enlaces
  • Simbólico = guarda una ruta
  • Qué pasa al borrar en cada caso
  • Las dos órdenes (ln y ln -s)
  • Restricciones del duro (archivos y mismo sistema de archivos)
Pregunta 3Desarrollo

Explica cómo es el i-nodo de Unix y por qué usa punteros indirectos. Calcula el tamaño máximo de un archivo con 12 punteros directos, uno simple, uno doble y uno triple, bloques de 4 KiB y punteros de 8 bytes.

Solución

Respuesta modelo:

El i-nodo guarda los atributos del archivo (modo, propietario, tamaño, fechas, contador de enlaces) y los punteros a sus bloques. Un único bloque de índices limitaría el tamaño del archivo a los punteros que caben en un bloque, así que Unix usa varios niveles: 12 punteros directos llevan a bloques de datos (los archivos pequeños no gastan bloques de índices), el indirecto simple lleva a un bloque de punteros, el doble a un bloque de bloques de punteros y el triple añade un nivel más.

Con bloques de 4096 bytes y punteros de 8 caben 4096 / 8 = 512 punteros por bloque. El máximo es (12 + 512 + 512² + 512³) bloques × 4 KiB = 48 KiB + 2 MiB + 1 GiB + 512 GiB, unos 513 GiB. Casi todo lo aporta el triple: 512³ × 4 KiB = 2^27 × 2^12 B = 2^39 B = 512 GiB.

Lo que se valora:

  • Qué guarda el i-nodo
  • Por qué no basta un bloque de índices
  • Directos para archivos pequeños
  • Punteros por bloque = bloque / puntero (512)
  • Suma de los cuatro niveles (unos 513 GiB)
Pregunta 4Desarrollo

¿Cómo sabe el sistema de archivos qué bloques están libres? Explica el mapa de bits, la lista enlazada y la FAT, y calcula cuánto ocupa el mapa de bits de un disco de 64 GiB con bloques de 4 KiB.

Solución

Respuesta modelo:

Con un mapa de bits se reserva una zona fija del disco con un bit por bloque que dice si está libre u ocupado; es compacto y permite buscar huecos seguidos, y es el método del Unix tradicional.

Con una lista enlazada, el SO solo guarda el número del primer bloque libre y cada libre guarda el del siguiente; no gasta espacio extra, pero recorrerla obliga a leer bloques. Una variante usa el primer libre como bloque de índices con los números de los demás.

En los sistemas FAT no hace falta otra estructura: la entrada de un bloque libre en la FAT tiene un valor que lo marca como libre.

Cálculo: 64 GiB / 4 KiB = 2^36 / 2^12 = 2^24 bloques, así que el mapa tiene 2^24 bits = 2^21 bytes = 2 MiB.

Lo que se valora:

  • Mapa de bits (un bit por bloque)
  • Lista enlazada (puntero al primer libre)
  • FAT (la propia tabla)
  • Cálculo con potencias de 2
  • Resultado de 2 MiB

En las de comparar (asignaciones, enlaces, estructuras de libres), la nota sale de los ejes de comparación: qué guarda cada una, cuánto cuesta el acceso, qué pasa si algo falla. Una lista de definiciones sueltas, sin comparar, se queda a medias.

Todo el tema en un dibujo

Antes del chuletario, el tema entero de un vistazo: arriba, lo que ves como usuario (6.1); abajo, cómo se guarda (6.2).

Todo el tema de archivos en un dibujoMapa de repaso: archivo y atributos, operaciones y open, métodos de acceso, cinco modelos de directorio y enlaces, cuatro asignaciones con sus pros y contras, i-nodo, espacio libre e implementación de directorios.6.1 Interfaz (lo que ves)6.2 Implementación (cómo se guarda)Archivoobjeto con nombredatos persistentes7 atributosOperacionescrear, leer, escribir,reposicionar, borrar,truncar · open/closeAccesosecuencial (cinta)directo (lseek)indexado (clave)Directoriosúnico, dos niveles,árbol, acíclico,general (ciclos)Enlacesduro: mismo i-nodosimbólico: rutaACL, montajeContiguainicio + longitud+ acceso rápido− fragmentaciónEnlazadacadena de bloques+ sin fragmentación− directo lentoFATenlaces en tabla+ cabe en RAM− tabla dañadaIndexadabloque de índices+ 2 lecturas− un bloque extrai-nodo (Unix)12 directos + simple+ doble + triple4 KiB → 4,00 TiBEspacio libre: mapa de bits · lista enlazada · FAT | Directorios: lista lineal · hash · árbol BCálculos: todo en potencias de 2 · bloques = ⌈tamaño / útil⌉ · máximo = punteros × bloque
De arriba abajo, lo que ve el usuario; de abajo arriba, cómo lo guarda el SO en bloques.

Si sabes explicar cada caja con un ejemplo de la carpeta de la práctica (practica.c, Makefile, datos.csv, informe.pdf), tienes el tema.

Chuletario: Sistemas de archivos

Lo esencial en 30 segundos

  • Archivo: objeto con nombre que guarda información persistente. Usuario → estructura duradera; API → bytes; núcleo → bloques.
  • Atributos: nombre, tipo, localización, tamaño, protección, fechas, versión.
  • Operaciones: crear, escribir, leer, reposicionar, borrar, truncar (solo el contenido). Abrir copia la información de control a RAM; el descriptor es un índice de la tabla de abiertos.
  • Acceso: secuencial (cinta), directo (lseek), indexado (clave).
  • Directorios: nivel único → dos niveles → árbol → grafo acíclico → grafo general.
  • Asignación: contigua, enlazada, FAT, indexada; Unix = indexada multinivel (i-nodo).

Directorios y enlaces

Quiero…CómoResultado
Otro nombre para el mismo archivoln datos.csv copia.csvEnlace duro: mismo i-nodo, contador 2
Un atajo (también a directorios)ln -s datos.csv atajo.csvEnlace simbólico: guarda la ruta
Saber qué pasa al borrar el originalrm datos.csvDuro: siguen los datos · Simbólico: roto
Ruta absolutadesde la //home/sergio/ic2/practica/informe.pdf
Ruta relativa desde /home/sergio/ic2sin la parte comúnpractica/informe.pdf
Usar un pendrivemontarloaparece bajo el punto de montaje (/media/usb)

Asignación de un vistazo

AsignaciónEl directorio guardaLecturas para el bloque kFragmentación externaPunto débil
Contiguainicio + longitud1Sícrecer, huecos
Enlazadaprimer (y último) bloquek + 1Noacceso directo, bloque dañado
FATprimer bloque1 (FAT en RAM)Nobloque de la FAT dañado (hay copias)
Indexadabloque de índices2Nobloque extra, bloque de índices dañado

Plantillas de cálculo (con resultados)

Quiero…CuentaEjemplo
Bloques con enlazada⌈tamaño / (bloque − enlaces)⌉2 MiB, 1 KiB, enlace 4 B → ⌈2 097 152 / 1020⌉ = 2057
Bloques con indexada⌈tamaño / bloque⌉ + 1410 B con 4 KiB → 1 + 1 = 2
Máximo con un solo bloque de índices(bloque / puntero) × bloque1 KiB y 2 B → 512 × 1 KiB = 512 KiB
Máximo con un i-nodo(12 + N + N² + N³) × bloque4 KiB y 4 B → N = 1024 → unos 4 TiB
Mapa de bitsbloques / 8 bytes2 TiB con 32 KiB → 2^26 bits = 8 MiB
FATbloques × bytes por entrada2^26 × 4 B = 256 MiB

Síntoma / Causa probable

SíntomaCausa probable
Te sale un bloque menos que la soluciónDividiste sin restar los enlaces o redondeaste hacia abajo
La indexada te da igual que la FATOlvidaste el bloque de índices
El tamaño del mapa de bits te sale 8 veces grandeContaste bytes en lugar de bits por bloque
El máximo del i-nodo te sale enorme o diminutoMezclaste KiB y bytes: pásalo todo a potencias de 2
Dices que el árbol permite compartirEso lo añade el grafo acíclico (enlaces)
Pones «enlazada» donde un bloque dañado afecta a muchos archivosEse es el riesgo de la FAT

Antes de entregar, pregúntate

  1. ¿He restado los bytes de enlace antes de dividir y he redondeado hacia arriba?
  2. ¿He contado los bloques de índices (el de la indexada, los del simple y del doble)?
  3. ¿He pasado todo a potencias de 2 antes de hacer cuentas de bits y bytes?
  4. En los enlaces, ¿he dicho si guarda una ruta o comparte el i-nodo, y qué pasa al borrar el original?

Con este tema se termina la teoría de IC2: once temas de redes y sistemas operativos. Lo siguiente será un simulacro de examen con preguntas al azar de todos los temas, nota con penalización y repaso de errores. Mientras tanto, repasa los temas que peor lleves y vuelve a este test dentro de unos días: si lo aciertas sin mirar, el T6 está listo.

Sigue aprendiendoTodos los artículos de Sistemas operativos

¿Te ha servido este artículo? Así puedes apoyar SergioLearns →

¿Listo para el examen?Simulacro del examen de teoría de IC2 — primer parcial, segundo parcial o convocatoria, con tu nota real y el repaso de cada fallo (como si estuvieras en el aula)