En cada práctica habrá un archivo .txt que, al final de la cursada, se pasó en limpio a un README para mayor claridad. Si estás en una PC, en el display del README (esquina superior derecha) hay un menú donde se mostrarán todas las secciones, que corresponden a cada ejercicio realizado. Aunque algunos ejercicios fueron consultados en clase, la gran mayoría están sujetos a errores y podrían no estar completamente justificados (especialmente los de protección y seguridad).
Espero que les sea de ayuda y utilidad.
- Práctica 1: Procesos y API del SO
- Práctica 2: Scheduling
- Práctica 3: Sincronización entre procesos
- Práctica 4: Administración de memoria
- Práctica 5: Entrada/Salida
- Práctica 6: Sistemas de archivos
- Práctica 7: Sistemas distribuidos
- Práctica 8: Protección y seguridad
Clases teóricas
Clases prácticas
- Taller de syscalls y señales (Completado)
- Taller de IPC (Incompleto)
- Taller de drivers (Completado)
- Taller de filessystem (Completado)
- Qué es un SO
- Introducción histórica
- Elementos básicos de un SO
- Manejo básico de un shell Unix
- Procesos
- Estados de un proceso
- Introducción al scheduler
- E/S bloqueante / no bloqueante
- IPC (InterProcess Communication)
- Objetivos de la política de scheduling
- Scheduling con y sin desalojo
- Políticas de scheduling
- Scheduling para tiempo real y para SMP
- Contención
- Condiciones de carrera
- Secciones críticas
- TestAndSet
- Busy waiting / sleep
- Productor - Consumidor
- Semáforos
- Introducción a deadlock
- Monitores
- Variables de condición
- Algoritmos wait-free
- Algoritmos lock-free
- CAS (Compare-And-Swap)
- Programación de multicores
- Invalidación de caché
- Reorden de instrucciones
- Segmentación
- Paginación
- Swapping
- MMU
- Memoria virtual
- Copy-on-write
- Algoritmos de reemplazo de páginas
- Polling, interrupciones, DMA
- Almacenamiento secundario
- Drivers
- Políticas de scheduling de E/S a disco
- Gestión del disco (formateo, booteo, bloques dañados)
- RAID
- Copias de seguridad
- Spooling
- Clocks
- Responsabilidades del FS
- Punto de montaje
- Representación de archivos
- Manejo del espacio libre
- FAT, inodos
- Atributos
- Directorios
- Caché
- Consistencia, journaling
- Características avanzadas
- NFS, VFS
- Conceptos de protección y seguridad
- Matrices de permisos
- MAC vs. DAC
- Autenticación, autorización y auditoría
- Funciones de hash de una vía
- Encriptación simétrica
- RSA
- Privilegios de procesos
- Buffer overflows
- Inyección de parámetros
- Condiciones de carrera
- Sandboxes
- Principios generale de seguridad
- Taxonomía de Flynn
- Arquitecturas de HW y SW para sistemas distribuidos
- RPC
- Threads
- Pasaje de mensajes
- Orden parcial entre eventos
- Livelock
- Acuerdo bizantino
- Intuición de safety, liveness, fairness
- Algoritmo del banquero
- Panadería de Lamport
- Modelos de fallas y métricas de complejidad
- Exclusión mutua y locks distribuidos
- Elección de líder
- Instantánea global consistente
- 2PC
- Virtualización
- Contenedores
- Cloud computing
- Diego Slezak (Profesor)
- Rodolfo Sumoza (JTP)
- Fernando Schapachnik (JTP)
- Gisela Confalonieri (AY1)
- Hernán Gagliardi (AY1)
- David Venegas (AY1)
- Franco Pyrih (AY1)
- Tomás Chimenti (AY2)
- Debora Oca (AY2)
Si ves un error, queres completar/corregir un ejercicio o compartir una mejor resolución en el repo, podes abrir un issue o hacer un pull request sin drama, o incluso me podes mandar mail y con gusto le hecho un ojo. :D