Skip to content

~/si/ud03 $ cat 06-archivos-directorios-y-entrada-salida.md

  • Sistemas Informáticos
  • UD03
  • lección 06/06

Archivos, directorios y entrada/salida

Abrir las diapositivas de apoyo: Archivos, directorios y entrada/salida (pantalla completa)

Un proceso recibe CPU y usa memoria, pero necesita conservar resultados y comunicarse con dispositivos. En este bloque introduciremos archivos, directorios y E/S desde las funciones del SO. Su administración mediante comandos, permisos y herramientas se desarrollará en UD05 Linux y UD06 Windows; la gestión de discos, copias y automatización se consolidará en UD07.

6.1. Datos persistentes y sistema de archivos

Section titled “6.1. Datos persistentes y sistema de archivos”

El sistema de archivos organiza datos persistentes y mantiene información para localizarlos y controlar el acceso. Un archivo reúne datos; un directorio organiza nombres y referencias a archivos o subdirectorios. El tamaño, fechas y permisos son metadatos: describen el objeto, no son todo su contenido.

Abrir, leer, escribir y cerrar un archivo son operaciones solicitadas por aplicaciones al SO. El sistema comprueba permisos, localiza la información y coordina el dispositivo. La aplicación trabaja con la abstracción de archivo; no necesita conocer cada sector físico.

No confundas el árbol de directorios con el disco. Un mismo árbol puede reunir datos de varios dispositivos montados. Tampoco todos los directorios necesitan una partición independiente. Ver una carpeta llamada home no demuestra que exista una partición separada para ella.

En GNU/Linux, / es la raíz del árbol. Este ejemplo tiene una carpeta personal, un proyecto y un registro:

/
├── home/
│ └── alumno/
│ ├── documentos/
│ │ └── informe.txt
│ └── proyecto/
│ └── main.py
└── var/
└── log/
└── practica.log

Una ruta absoluta indica el recorrido desde la raíz: /home/alumno/proyecto/main.py. Una ruta relativa se interpreta desde el directorio actual. Desde /home/alumno/documentos, ../proyecto/main.py llega al mismo archivo: .. representa el padre y . el directorio actual. No estamos ejecutando una orden; estamos interpretando referencias sobre un árbol conocido.

En Windows es habitual encontrar rutas absolutas como C:\Users\Alumno\Documents\informe.txt; también existen otros tipos de rutas, como las de recursos de red. La letra de unidad y las barras requieren atención al comparar sistemas. Aquí importa entender raíz, directorio actual y recorrido, no memorizar toda la jerarquía del SO.

Desde la raíz, /home/alumno/proyecto/main.py identifica main.py; desde /home/alumno/documentos, ../proyecto/main.py sube al padre y entra en proyecto.

Figura 6.1. Dos recorridos hacia el mismo archivo. La ruta absoluta comienza en /; la relativa comienza en documentos, sube a alumno con .. y entra en proyecto. Las ramas representan directorios y archivos, no particiones.

6.3. Sistemas de archivos, particiones y formato

Section titled “6.3. Sistemas de archivos, particiones y formato”

Una partición es una división del espacio de un disco; un sistema de archivos proporciona estructuras para organizar datos. Formatear crea las estructuras del sistema de archivos en el destino seleccionado y puede destruir el acceso a los datos que había. No equivale a un borrado seguro de cada byte.

El SO puede trabajar con diferentes sistemas de archivos. ext4 es habitual en Linux; NTFS, en Windows; FAT32 puede aparecer en una partición de sistema EFI. Cada uno tiene características y límites que deben comprobarse para la configuración utilizada. La comparación técnica y la administración detallada de formatos, volúmenes y discos se estudian en UD07.

La tabla de particiones registra dónde empieza y termina cada partición. Hay dos esquemas habituales, MBR y GPT. En un disco MBR, se distinguen tres tipos:

  • Una partición primaria se registra directamente en la tabla principal. Esta dispone de cuatro entradas.
  • Una partición extendida ocupa una de esas entradas y actúa como contenedor para crear particiones lógicas. Puede haber una extendida por disco.
  • Una partición lógica está dentro de la extendida y puede contener un sistema de archivos. Por ejemplo, un disco MBR puede tener tres primarias y una extendida con varias lógicas dentro.

En GPT, cada partición se registra directamente en la tabla. Las cinco del ejemplo son particiones GPT independientes, que algunas herramientas denominan primarias. GPT permite superar las cuatro particiones sin crear una extendida ni particiones lógicas. Documentación de Microsoft sobre MBR y GPT.

El siguiente ejemplo representa un PC con arranque UEFI, un disco GPT de 500 GB y dos sistemas, Windows y Linux. Los tamaños son orientativos para este reparto.

Disco GPT de 500 GB con cinco particiones independientes: EFI de 512 MB, MSR de 16 MB, Windows de 250 GB, WinRE de 2 GB y Linux con el resto, aproximadamente 247,5 GB.

Figura 6.2. Un disco con Windows y Linux. Los bloques representan particiones consecutivas del mismo disco. Se han ampliado las pequeñas para que sus etiquetas sean legibles.

Partición Tamaño del ejemplo Sistema de archivos Función
1. EFI o ESP 512 MB FAT32 Contiene los archivos de arranque de Windows y Linux que utiliza el firmware UEFI. Ambos sistemas comparten esta partición.
2. MSR 16 MB Sin sistema de archivos Es una pequeña reserva que Windows utiliza para gestionar el disco GPT. No guarda documentos del usuario.
3. Windows 250 GB NTFS Contiene Windows, sus aplicaciones y los datos de sus usuarios. En Windows suele verse como la unidad C:.
4. WinRE 2 GB NTFS Guarda el entorno de recuperación de Windows, con herramientas para reparar problemas de inicio y otras incidencias.
5. Linux El resto, unos 247,5 GB ext4 Contiene Linux, sus aplicaciones y los datos de sus usuarios. Se monta en /, el directorio raíz. En este diseño, /home y el archivo swap están dentro de esta partición.

La capacidad de Windows y Linux se adapta al uso previsto. Los 512 MB de EFI y los 2 GB de WinRE son elecciones del ejemplo; el espacio de recuperación necesario depende de la imagen y de sus actualizaciones. El diseño conserva las cuatro particiones del esquema habitual de Windows y añade una para Linux, que reutiliza la EFI existente. Particiones UEFI/GPT de Windows, particionado de Ubuntu, Ubuntu y UEFI.

Durante la instalación será necesario elegir un destino y un diseño básico, pero todavía no haremos una práctica de administración de discos. La diferencia entre directorio, partición y sistema de archivos permitirá interpretar el instalador sin confundir las tres ideas.

6.4. Entrada/salida: del servicio al dispositivo

Section titled “6.4. Entrada/salida: del servicio al dispositivo”

La entrada/salida (E/S) incluye operaciones con teclado, pantalla, red, discos e impresoras. El SO las coordina mediante controladores y mecanismos de hardware, retomando las interrupciones de UD01.

En una operación síncrona, si un proceso solicita datos que aún no están disponibles, puede quedar bloqueado mientras se completa la E/S. La CPU puede ejecutar otro proceso listo. Cuando llega el evento esperado, el proceso pasa a listo, pero el planificador decide cuándo vuelve a ejecutarse. No toda solicitud exige esperar un dispositivo: los datos podrían estar ya en caché.

Aplicación, núcleo, controlador y dispositivo cooperan para guardar un archivo; búferes y caché pueden aplazar su persistencia.

Figura 6.3. Cooperación durante una escritura. Lee las flechas desde la petición de la aplicación hasta el dispositivo. El aviso de finalización vuelve al sistema; no selecciona por sí solo al siguiente proceso.

La figura representa guardar, mientras que el párrafo anterior describe leer. En ambos casos cooperan aplicación, SO, controlador y dispositivo. Lo que cambia es el sentido de los datos: al escribir van desde la memoria de trabajo hacia el destino; al leer se recuperan hacia la memoria. Además, una petición puede atenderse con datos ya disponibles en caché, sin esperar una nueva lectura física.

Por ejemplo, al enviar un documento a imprimir, la aplicación entrega el trabajo al servicio de impresión; este organiza la cola y utiliza el controlador para comunicarse con la impresora. La aplicación puede continuar antes de que salga la última página. El caso permite separar petición, transferencia y finalización física sin suponer que toda lectura o escritura siga los mismos tiempos.

6.4.1. Consulta del estado e interrupciones

Section titled “6.4.1. Consulta del estado e interrupciones”

En la consulta activa, también llamada encuesta o polling, software comprueba repetidamente el estado de una operación. Consume atención de CPU mientras consulta, aunque puede resultar adecuado en circunstancias concretas. No está limitado a sistemas monotarea ni significa que toda aplicación gestione directamente los registros del dispositivo.

Con interrupciones, el hardware avisa de un evento y el SO ejecuta su rutina de atención. Después puede actualizar el estado del proceso que esperaba. El dispositivo no selecciona directamente al próximo proceso: avisar del fin de E/S y planificar CPU son funciones diferentes.

El acceso directo a memoria o DMA permite que un dispositivo/controlador transfiera datos hacia o desde RAM sin que la CPU copie cada unidad individualmente. El sistema prepara y supervisa la operación; su finalización puede notificarse mediante una interrupción. DMA no elimina toda intervención de CPU ni sustituye al controlador.

6.5. Búferes, caché y cola de impresión

Section titled “6.5. Búferes, caché y cola de impresión”

Un búfer almacena temporalmente datos para coordinar productores y consumidores que trabajan a ritmos distintos. La caché conserva copias reutilizables para reducir accesos más lentos. Pueden intervenir en una misma operación, pero sus propósitos no son idénticos.

Al guardar, algunos datos pueden quedar pendientes de escritura en memoria antes de alcanzar almacenamiento persistente. Por eso apagar bruscamente o retirar un dispositivo sin expulsarlo puede perder cambios. No debemos prometer que toda escritura se aplaza: el comportamiento depende de operación y configuración.

Una cola de impresión mantiene trabajos pendientes y permite que la aplicación continúe sin controlar la impresora durante toda la impresión. Este ejemplo conecta el archivo que se envía, el proceso que lo solicita, el servicio de impresión y el dispositivo físico.

6.6. Leer un árbol, sin administrar discos

Section titled “6.6. Leer un árbol, sin administrar discos”

RA2.b.

Usa exclusivamente el árbol del apartado 6.2. El directorio actual es /home/alumno/documentos. Escribe las rutas absolutas y relativas hacia informe.txt, main.py y practica.log.

Archivo destino Ruta absoluta Ruta relativa desde documentos
informe.txt
main.py
practica.log

Explica además si crear una carpeta exige crear una partición y distingue contenido de metadatos usando informe.txt. Entrega tabla y dos respuestas razonadas. No necesitas crear archivos ni ejecutar comandos.

RA2.b.

Reutilizarás este producto en la práctica integrada de funcionamiento del SO, apartado 6.8; no tiene una nota ni una entrega separadas.

Un proceso solicita una lectura síncrona de un archivo; los datos no están en caché y el dispositivo tarda en entregarlos. Hay otro proceso listo. Explica la relación causal entre estas fases: petición al SO, comprobación/localización, inicio de E/S mediante controlador, proceso bloqueado, ejecución de otro proceso, aviso de finalización y vuelta del primero a listo. Indica dónde ayuda DMA y qué cambiaría si los datos ya estuvieran en caché.

Entrega una secuencia de pasos y explica por qué “listo” no significa “ya ejecutándose”. Añade una razón para expulsar correctamente un dispositivo después de escribir datos. Se comprobará la relación entre gestión de procesos, memoria, archivos y E/S.

6.8. Práctica integrada. Funcionamiento del SO Aules

Section titled “6.8. Práctica integrada. Funcionamiento del SO Aules”

Práctica individual calificable · RA principal: RA2 · CE: RA2.b.

Reúne en un único documento los cuatro productos siguientes, elaborados progresivamente en clase. Usa los mismos escenarios, datos, tablas y reglas de los apartados enlazados; no necesitas otro mapa ni una memoria adicional. Esta es una sola entrega, con una única nota para el 30 % de actividades/prácticas de RA2.b. La fecha se comunicará en Aules.

Reutiliza el esquema y el párrafo de 3.7, en Procesos, hilos y estados. Explica los dos procesos del editor, qué comparten sus hilos y qué conservan por separado, y cómo progresan con uno o dos núcleos.

De 4.8, en Planificación de CPU, incluye solo FCFS y Round Robin con quantum 2: dos Gantt, sus tablas completas y la comparación razonada entre estas dos políticas. Conserva llegadas, ráfagas y reglas de cola del enunciado. Comprueba las 13 unidades de CPU, esperas no negativas y las métricas de cada proceso; explica cómo cambia la atención a D y por qué la media no describe todos los casos.

SJF, SRTF y prioridades siguen siendo contenidos obligatorios de clase, junto con 4.9 y 4.10. Esta selección afecta únicamente a lo que reúnes en esta entrega. El simulador enlazado en el bloque 04 es opcional: una captura no sustituye Gantt, tablas y razonamiento.

Reutiliza la tabla de 5.7, en Memoria y paginación. Indica el marco y conserva la posición dentro de la página para el primer acceso. Para el segundo, explica qué hace el SO antes de que el proceso pueda volver a intentarlo.

Incluye la secuencia y las explicaciones de 6.7 de este mismo bloque. Relaciona aplicación, SO, controlador, memoria y dispositivo; distingue bloqueo, vuelta a listo y ejecución. Explica la intervención de DMA, qué cambia si los datos están en caché y por qué expulsar correctamente un dispositivo tras escribir.

6.8.5. Antes de entregar y criterios de corrección

Section titled “6.8.5. Antes de entregar y criterios de corrección”

Comprueba que los cuatro apartados están identificados y que el documento contiene tus esquemas, tablas y explicaciones, no solo resultados del simulador. Se valorará:

  • La distinción entre programa, proceso e hilo y la explicación de recursos compartidos y contexto propio.
  • La coherencia de las decisiones de CPU con las reglas, los intervalos y las métricas calculadas.
  • La consulta de la tabla de páginas, la conservación de la posición y la explicación de qué hace el SO si falta la página.
  • La relación causal entre funciones, componentes y estados durante la E/S, diferenciando listo de ejecución y respuesta de persistencia.

Los ejercicios de origen se practican y corrigen en clase: reutiliza sus productos aquí, sin subirlos de nuevo como entregas independientes. No se pide instalar ni configurar un sistema o ejecutar comandos.

Los fundamentos ya permiten justificar decisiones de instalación. La siguiente unidad, Virtualización e instalación de SO, comienza con la preparación de un laboratorio virtual para aplicar estos conocimientos a sistemas libres y propietarios.