Cursos para comprender qué hay debajo de cada programa: cómo el
sistema operativo media entre el hardware y tu código, y cómo
trabajar con él desde la consola. Cada idea se comprueba en una
terminal Linux con ejemplos en C y Bash.
Fundamentos de Sistemas Operativos
Comprendé qué es un sistema operativo, qué problemas resuelve y
cómo media entre el hardware y los programas que escribimos. Cada
vez que un programa imprime un texto, abre un archivo o pide
memoria, no habla con la máquina: se lo pide a ese intermediario.
Sus 34 temas avanzan de abajo hacia arriba: la arquitectura de una
computadora, la CPU y el ciclo de instrucción, el kernel, el modo
usuario y el modo kernel, las llamadas al sistema, las
interrupciones y el proceso de arranque. Luego recorrerás los tipos
de sistemas operativos y las arquitecturas de kernel.
Una visión general de procesos, memoria, archivos, dispositivos y
permisos prepara los cursos siguientes. Con ejemplos en C y Bash
sobre Linux observarás las llamadas al sistema con strace,
consultarás /proc y /sys, y construirás un inspector del sistema
como proyecto final.
Comenzar!
Terminal y Línea de Comandos en Linux
Aprendé a trabajar con soltura desde la consola, la herramienta
diaria de todo programador. Cada comando hace una cosa pequeña y,
combinándolos en la shell Bash, se resuelve casi cualquier tarea.
A lo largo de 43 temas pasarás de lo cotidiano a lo potente:
navegar el sistema de archivos, manipular archivos y directorios,
gestionar usuarios, grupos y permisos, redirigir la entrada y la
salida, y encadenar comandos con tuberías. Filtrarás y
transformarás texto con grep, sed y awk.
El recorrido se completa con procesos, variables de entorno,
administración de paquetes, servicios, discos y red. Cada tema se
practica en una terminal real, hasta escribir tu primer script y
analizar un archivo de registro como proyecto final.
Comenzar!
Automatización con Scripts en Bash
Convertí las tareas repetitivas en scripts confiables y
reutilizables. Lo que hacés dos veces, escribilo una vez: un script
ejecuta siempre los mismos pasos y puede correr solo, a las tres de
la mañana, sin que nadie lo mire.
En 42 temas partirás de lo que ya escribís en la consola para
llegar a programas: variables y expansión de parámetros,
aritmética, arrays, códigos de salida, condicionales, bucles,
funciones, argumentos y opciones con getopts.
Luego harás tus scripts robustos con el modo estricto, trap,
registros y depuración; procesarás texto con expresiones regulares
y programarás tareas con cron para automatizar compilaciones,
respaldos, despliegues y alertas, hasta construir una herramienta
de mantenimiento como proyecto final.
Comenzar!
Programación en C para Sistemas Operativos
Dominá el lenguaje con el que se construyen los sistemas
operativos. Debajo de cada comando hay un programa en C: un
lenguaje pequeño, rápido y cercano a la máquina, que deja ver y
controlar lo que otros lenguajes esconden.
En 42 temas partirás del camino del código fuente al ejecutable,
los tipos, los operadores, el control de flujo y las funciones.
Luego te concentrarás en lo que distingue a C: punteros y
aritmética de punteros, cadenas, estructuras y memoria dinámica
con malloc y free.
Aprenderás a construir programas reales con compilación y
enlazado, bibliotecas estáticas y dinámicas y Makefiles; a
manejar los errores con errno y a depurar con gdb, hasta crear
una herramienta de sistema como proyecto final.
Comenzar!
Procesos e Hilos
Comprendé cómo el sistema operativo crea, ejecuta y controla los
programas en ejecución. Un programa es un archivo; un proceso es
un programa vivo, y dentro de cada proceso pueden avanzar varios
hilos que comparten la misma memoria.
En 43 temas partirás del concepto de proceso, su imagen en
memoria y el bloque de control donde el núcleo guarda todo lo que
sabe de él. Seguirás con los estados y el cambio de contexto, y
pasarás a la práctica en C con fork, exec y wait, los procesos
zombis, los huérfanos y los demonios.
Luego programarás hilos con la biblioteca pthreads y compararás
ambos modelos donde la elección importa de verdad: servidores,
navegadores y videojuegos, hasta construir una mini shell como
proyecto final.
Comenzar!
Planificación de la CPU
Comprendé cómo decide el sistema operativo qué proceso se ejecuta
en cada momento. Hay una CPU y muchos procesos que la quieren:
quien decide a cuál le toca, y por cuánto tiempo, es el
planificador.
En 44 temas partirás de las métricas de tiempo de espera, de
retorno y de respuesta, y estudiarás los algoritmos clásicos:
FCFS, SJF, prioridades, Round Robin y colas multinivel. Cada uno
se programa como un simulador interactivo en JavaScript.
Luego pasarás a multiprocesadores y tiempo real, y llegarás al
planificador de Linux con nice, CFS y su sucesor EEVDF,
contrastando las predicciones de tus simuladores con mediciones
en un sistema real como proyecto final.
Comenzar!
Concurrencia y Sincronización
Escribí programas que ejecutan tareas en paralelo sin corromper
datos. En cuanto dos hilos leen y escriben el mismo dato, el
resultado deja de depender del código y pasa a depender del
azar: del orden en que el planificador los intercala.
En 47 temas partirás de la condición de carrera y la sección
crítica, y aprenderás las herramientas de la más básica a la más
expresiva: operaciones atómicas, mutex, semáforos, variables de
condición y monitores, con ejemplos en C con pthreads.
Resolverás los problemas clásicos de productor-consumidor,
lectores-escritores y la cena de los filósofos, y estudiarás la
prevención, evasión y detección de interbloqueos con
simulaciones en JavaScript, hasta construir un pool de hilos
como proyecto final.
Comenzar!
Gestión de Memoria
Comprendé cómo el sistema operativo organiza, protege y reparte
la memoria entre los programas. Cada proceso ve su propio espacio
de direcciones virtuales, que el procesador y el sistema operativo
traducen para acceder a la RAM.
En 52 temas partirás del espacio de direcciones, la pila y el
heap, y avanzarás por la segmentación, la paginación, las tablas
de páginas y la TLB. Estudiarás la memoria virtual, los fallos de
página y los algoritmos de reemplazo FIFO, LRU y óptimo con
ejemplos en C y simuladores interactivos en JavaScript.
Luego explorarás el intercambio, el mapeo de archivos con mmap
y el funcionamiento interno de malloc, hasta integrar un
simulador de memoria virtual y construir un asignador propio
con reutilización de bloques, estadísticas y pruebas de estrés
como proyectos finales.
Comenzar!
Sistemas de Archivos y Entrada/Salida
Comprendé cómo se almacenan, organizan y protegen los datos en
disco. Un programa escribe con write y sigue su camino; lo que
ocurre después es una cadena de decisiones del sistema operativo
que determina si el dato sobrevive al apagado del equipo.
En 50 temas partirás de los descriptores de archivo y las
llamadas open, read, write y close, y bajarás capa por capa: el
búfer y la caché de disco, los inodos, los directorios, los
enlaces duros y simbólicos, los permisos y el montaje.
Luego estudiarás el journaling, los sistemas ext4, NTFS y FAT, la
planificación de disco y los dispositivos de bloque y de
caracteres, con ejemplos en C y Bash, hasta construir un mini
sistema de archivos y un respaldo incremental con enlaces duros
como proyectos finales.
Comenzar!