Sistemas Operativos

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!

Volver a Tutoriales Programación Ya