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
- Estudiantes de ciclo 5 de Ingeniería en Sistemas que toman la materia.
- Programadores que quieren entender qué pasa abajo del lenguaje (hilos, memoria, archivos).
- Devops, sysadmin, ciberseguridad — todas estas profesiones usan SO a fondo.
- Curiosos en general: el SO es probablemente el sistema software más complejo y elegante que la humanidad ha construido.
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
-
Linux es el SO de referencia para los ejemplos. Los conceptos son los mismos en macOS y Windows; los comandos cambian. Cuando algo es Windows-específico, lo aviso.
-
Los comandos se muestran con prompt
$(terminal de usuario) o#(root):$ ps aux # comando como usuario normal # mount /dev/sda1 /mnt # comando como root (cuidado) -
Los fragmentos de código son C o Python. C porque es el lenguaje de los SO modernos; Python porque es lo que ya manejás de Programación I.
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:
- Proceso: te deja "pretender" que tu programa es el único.
- Memoria virtual: te deja "pretender" que tenés toda la RAM para vos.
- Archivos: te dejan "pretender" que el disco es una secuencia infinita de bytes.
- Pipes: te dejan conectar programas como tubos de agua.
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.