Sistemas Operativos

Este libro acompaña la materia de Sistemas Operativos (SOP515) del quinto ciclo de Ingeniería en Sistemas en la UNIMO (y materias equivalentes en otras instituciones del país).

El sistema operativo es el software más importante de tu computadora. Sin él, todo lo demás no funciona. Con él, dejás de pensar en hardware y empezás a pensar en programas. Si entendés cómo funciona por dentro, entendés por qué las cosas pasan como pasan: por qué un programa se cuelga, por qué la pantalla congela, por qué a veces la PC anda lenta. Y empezás a poder diagnosticar y arreglar, en lugar de solamente reiniciar y rezar.

Quién debería leer este libro

Prerrequisitos

Materia Por qué
Programación I/II (PRO115/215) Vas a leer y escribir código en C y Python.
Estructuras de Datos (PRO315) Listas, colas, árboles, hashing — los SO los usan todo el tiempo.
Computación básica Memoria, CPU, disco — saber qué es cada cosa.

Si te falla algún prerrequisito, este libro tiene recordatorios cortos en cada capítulo. No vas a quedar perdido, pero conviene retroceder cuando aparezca un concepto que no manejes.

Cómo está organizado

Cada capítulo sigue el formato del proyecto: tres capas pedagógicas.

# Capítulo Idea central
1 ¿Qué es un sistema operativo? El SO como abstracción del hardware
2 Procesos e hilos La unidad básica de ejecución
3 Planificación de CPU Cómo decide qué se ejecuta cuándo (próximo)
4 Sincronización Cuándo dos hilos se pisan y cómo se evita (próximo)
5 Memoria virtual Por qué tu programa "ve" más memoria de la que hay (próximo)
6 Sistemas de archivos Cómo se guarda algo en disco (próximo)
7 E/S y dispositivos Discos, redes, periféricos (próximo)
8 Seguridad y permisos Quién puede hacer qué (próximo)

Convenciones del libro

Proyecto-hilo

A lo largo del libro vamos a escribir un mini-shell — un intérprete de comandos básico, parecido a bash pero recortado. Empezamos en el capítulo 2 (con fork y exec), agregamos pipes en el cap 3, redirección en el 4, y al final tenés algo funcional para ejecutar comandos, encadenarlos y manejar entradas.

Por qué importa esta materia

El sistema operativo es el lugar donde se concentran las abstracciones más útiles de la computación:

Esas abstracciones son las que permiten que un humano escriba print("hola") en lugar de mover bytes a registros. Si entendés cómo se construyen, vas a poder escribirlas mañana — no solo usarlas.

Notación

Símbolo Significado
PID Process ID, número que identifica un proceso
PCB Process Control Block, estructura del kernel con info del proceso
fork() Llamada al sistema (POSIX) que crea un proceso hijo
exec() Llamada que reemplaza el programa actual por otro
wait() Llamada que hace al padre esperar a un hijo
CPU-bound Proceso que gasta tiempo procesando
I/O-bound Proceso que gasta tiempo esperando dispositivos

Vamos.