Fundamentos de sistemas operativos

Autores:

Gunnar Wolf (FI / IIEc • UNAM)
Esteban Ruiz (CIFASIS • UNR)
Federico Bergero (CIFASIS • UNR)
Erwin Meza (UNICAUCA)

En esta sección encontrarán el código ejemplo presentado a lo largo del libro. El código aquí presentado es relevante principalmente al capítulo 3 (Administración de procesos).

Introducción a la concurrencia: El jardín ornamental
Programa Lenguaje
Programa fallido: ¿Por qué (casi) nunca suma 20+20 = 40? C
Segundo intento: Suspendiendo la multitarea durante la sección crítica C
Tercer intento: Utilizar una variable a modo de bandera C
Ilustrando el fallo del tercer intento: Nueva sección crítica C
Cuarto intento: Manejar la bandera con instrucciones atómicas C
Espera activa del cuarto intento C
Quinto intento: Utilizar turnos C
Sexto intento: Indicar la intención de emplear la sección crítica C
Solución de Peterson aplicada a resolver el jardín ornamental C
Introducción a la concurrencia: Venta de pasajes
Programa Lenguaje
Código muestra del empleo de mutexes para sincronizar el uso de secciones críticas Perl
Código en shell que implementa mutexes Shell
Patrones de uso de semáforos
Programa Lenguaje
Ejemplo del patrón Señalizar Python
Ejemplo del patrón Barrera Python
Ejemplo del patrón Cola Python
Ejemplo del patrón Mutex Python
Ejemplo del patrón Rendezvous Python
Ejemplo del patrón Torniquete Python
Problemas clásicos de sincronización
Programa Lenguaje
Primer acercamiento al problema de Productores y consumidores, sin considerar sincronización Python
Solución a Productores y consumidores empleando mutex y señalización Python
Python permite un uso más idiomático del mutex Python
Solución a Lectores y escritores (permite inanición) Python
Solución a Lectores y escritores (evita inanición) Python
Primer acercamiento la cena de los filósofos, empleando semáforos: Lleva a bloqueo mutuo Python
Modificación al primer acercamiento para la cena de los filósofos, que elimina el bloqueo mutuo Python
Otra modificación válida (tal vez menos óptima) para evitar el bloqueo mutuo en la cena de los filósofos Python
Primer acercamiento a la resolución de los fumadores compulsivos, empleando semáforos Python
Adición y modificación de intermediarios que, cumpliendo los requisitos dados, resuelve a los fumadores compulsivos Python
El problema de la cena de los filósofos, em con monitores (no semáforos) C
Concurrencia: Otros puntos
Programa Lenguaje
Ejemplo de mal uso de trywait (o del error de ser optimista) C
Java ofrece un esquema sincronización simple propia de la JVM basado en Mutex Java
Bloqueos mutuos
Programa Lenguaje
Implementación muy simple del algoritmo del banquero Ruby
Administración de memoria: Consideraciones de rendimiento
Programa Lenguaje
Ejemplo de la importancia de considerar al caché al recorrer un arreglo C