tomi@so:~/parcial-1

Sistemas Operativos // Teoría

Apunte interactivo · Unidad 1 (Conceptos e Historia) + Unidad 2 (Procesos)

Este apunte no es para leer y ya. Es para tocar: vas a poder prender y apagar el modo kernel, recorrer la historia generación por generación, ver cómo la CPU salta entre procesos, simular algoritmos de planificación con su diagrama de Gantt en vivo, provocar una condición de carrera y resolverla con un semáforo. Cada concepto del apunte original está acá, explicado paso a paso y, donde suma, ampliado con la bibliografía de Tanenbaum y Stallings.

Cómo usar Andá bajando en orden: los conceptos están encadenados para que cada uno se apoye en el anterior. Hacé clic en los diagramas, dale a los botones de simulación y respondé las autoevaluaciones al final de cada unidad. La barra verde de arriba te marca cuánto avanzaste.
UNIDAD 1

Historia, introducción y conceptos de SO

Idea general: antes de hablar de qué hace un sistema operativo "por dentro", necesitamos entender dónde está parado (entre el hardware y el resto del software), para qué existe (las dos miradas de Tanenbaum), de dónde viene (su historia) y qué conceptos básicos maneja (procesos, memoria, archivos, llamadas al sistema...). Esta unidad es el mapa; las siguientes son el territorio.

1.1 ¿Qué es y dónde vive el SO?

Una computadora moderna es un sistema complejo: integra muchos componentes físicos (CPU, memoria, discos, periféricos) y lógicos (programas). Nadie quiere hablarle directamente al hardware en cada aplicación. El sistema operativo se mete justo en el medio como intermediario entre el hardware de la máquina y el resto del software.

Hacé clic en cada capa para ver su rol:

👤 Usuario / Aplicaciones de usuario
navegador, editor, juegos…
🧰 Software de sistema (compiladores, shell, utilidades)
programas que asisten pero no son el SO
⚙️ SISTEMA OPERATIVO (kernel)
el intermediario — modo privilegiado
🔌 Hardware (CPU, memoria, discos, E/S)
el fierro físico
👆 Tocá una capa para ver qué hace.

1.2 Modo Kernel vs Modo Usuario

El hardware ofrece dos modos de ejecución. Esta separación es la base de la protección: sin ella, cualquier programa podría romper todo.

  • Modo Kernel (Supervisor): el SO tiene acceso completo y privilegiado al hardware. Puede ejecutar cualquier instrucción que soporte el equipo.
  • Modo Usuario: el resto del software corre con restricciones. Solo puede hacer operaciones permitidas y limitadas; si necesita algo privilegiado, le tiene que pedir al SO (vía llamada al sistema, lo vemos más abajo).

Probá ejecutar instrucciones en cada modo:

🔐 MODO KERNEL

El SO. Todo permitido.

🙋 MODO USUARIO

Tu programa. Privilegios recortados.

1.3 Tres definiciones de "Sistema Operativo"

No hay una sola definición canónica. La cátedra junta tres autores. Dale vuelta a cada tarjeta:

📘
Stallings (2005)
visión "control"
Programa encargado del control en la ejecución de aplicaciones y programas, sirviendo como interfaz entre estos y el hardware.
📗
Silva (2010)
visión "sistema"
Un sistema formado por elementos relacionados entre sí que funcionan coordinadamente para operar o conducir al hardware.
📙
Tanenbaum (2009)
visión "doble función"
Cumple dos funciones: dar abstracciones sencillas a los programadores y administrar el hardware complejo.

Las tres apuntan a lo mismo desde ángulos distintos: interfaz, coordinación y abstracción+administración.

1.4 Las dos perspectivas de Tanenbaum

Tanenbaum dice que el SO se puede mirar de dos formas, y las dos son ciertas a la vez:

🎁
Máquina Extendida

El SO esconde el hardware complejo detrás de abstracciones lindas. En vez de pelearte con sectores, cabezales y motores del disco, vos hacés crear / abrir / leer / escribir / cerrar un archivo. Ese "archivo" no existe en el fierro: es una abstracción que te regala el SO.

👮
Administrador de Recursos

El SO reparte de forma ordenada y controlada los recursos (CPU, memoria, dispositivos de E/S) entre muchos programas que compiten por ellos. Decide quién usa qué y cuándo, para que no se pisen.

¿Cómo reparte? → Multiplexado

Para administrar recursos, el SO usa multiplexado (compartir un recurso entre varios). Hay dos sabores:

⏱️ Multiplexado en TIEMPO

Varios programas usan el recurso por turnos, uno después del otro. Caso típico: la CPU.

CPU: —
🧱 Multiplexado en ESPACIO

A cada programa se le da una porción del recurso al mismo tiempo. Caso típico: la memoria.

1.5 Historia de los SO — Generaciones

⚠️ Ojo Tomi: vos mismo anotaste que la cátedra puede tomar fechas y nombres. Por eso los dejé todos. Hacé clic en cada generación para repasarlas.

~1822–1871
Prehistoria
1945–1955
1ª Gen
1955–1965
2ª Gen
1965–1980
3ª Gen
1980–hoy
4ª Gen

1.6 Repaso del hardware (Unidad 1, parte 2)

El SO está pegado al hardware: extiende sus instrucciones y gestiona sus recursos. Conviene recordar las piezas básicas.

Procesadores — el ciclo de la CPU

La CPU ejecuta instrucciones en ciclos continuos. Modernamente usa canalización (pipelining) para tener varias instrucciones en vuelo a la vez. El ciclo básico:

📥 Obtener
(fetch)
→
🔍 Decodificar
(decode)
→
⚡ Ejecutar
(execute)
↺

Memoria — jerarquía por velocidad/capacidad/costo

La memoria se organiza en jerarquías: arriba lo más rápido, chico y caro; abajo lo más lento, grande y barato. Tocá un nivel:

Registros / CMOS
la más rápida y cara
Caché
RAM
memoria principal, volátil
ROM / EEPROM / Flash
Discos y cintas magnéticas
la más lenta, grande y barata
⬆ + rápido / + caro / - capacidad+ lento / + barato / + capacidad ⬇

Discos, cintas, E/S y buses

Los discos dan acceso más lento que la RAM pero son económicos y grandes; las cintas magnéticas sirven de respaldo para grandes volúmenes. Los dispositivos de E/S tienen controladores y se comunican por buses que transfieren datos entre componentes.

Arranque (boot): BIOS → MBR → SO

Al prender la máquina, el BIOS verifica el hardware básico y decide desde dónde arrancar, probando una lista de dispositivos guardada en la memoria CMOS. Luego carga el MBR y de ahí salta a la partición donde vive el SO.

BIOSchequea hardware
→
CMOSlista de dispositivos
→
MBRmaster boot record
→
Particióndonde está el SO
→
SO 🚀arranca

1.7 Tipos de Sistemas Operativos

Según el tipo de máquina y propósito, los SO se especializan:

🏢
Mainframes

Gran capacidad y E/S. OS/390, S/360, UNIX, Linux

🌐
Servidores

Brindan servicios por red. Solaris, FreeBSD, Linux, Windows Server

🧮
Multiprocesadores

Gestionan múltiples CPUs o núcleos.

💻
Personales

Un solo usuario. Linux, Windows, macOS

📱
De bolsillo (PDAs)

Compactos y funcionales. Palm OS, Symbian, iOS, Android

🔧
Integrados (embebidos)

Controlan dispositivos específicos. Linux embebido, QNX, VxWorks

📡
Nodos sensores

Redes inalámbricas chicas para monitoreo remoto. TinyOS

⏰
Tiempo real

Restricciones temporales estrictas. eCos, FreeRTOS

💳
Tarjetas inteligentes

Recursos muy limitados, funciones específicas. Java Virtual Machine

1.8 Conceptos clave que maneja el SO

El SO trabaja con un puñado de abstracciones centrales. Acá las presentamos rápido; algunas (procesos, memoria, archivos) tienen unidades enteras dedicadas más adelante.

🏃 Proceso Un programa en ejecución, asociado a un espacio de direcciones (ubicaciones de memoria que puede leer/escribir). Cuando el SO suspende un proceso, guarda su estado exacto en la tabla de procesos para poder reanudarlo después. Un proceso puede crear procesos hijos, formando jerarquías.
🧠 Memoria y espacios de direcciones La memoria principal guarda los programas en ejecución. Con memoria virtual se pueden tener varios programas a la vez: parte del espacio de direcciones está en RAM y parte en disco. Esto desacopla el espacio lógico del proceso de la memoria física.
📁 Archivos y sistema de archivos El SO abstrae los archivos de los detalles físicos del disco. Se agrupan en directorios jerárquicos y se manipulan con llamadas al sistema (crear, abrir, leer/escribir, cerrar). En UNIX, el montaje integra sistemas de archivos externos, y existen archivos especiales (de bloque y de carácter) que representan dispositivos de E/S como si fueran archivos comunes.
🔗 Canales (pipes) Pseudo-archivos que permiten la comunicación directa entre procesos. La salida de uno se conecta a la entrada de otro (ej: ls | grep .txt).
⌨️ Entrada/Salida (E/S) El subsistema de E/S maneja dispositivos físicos (teclado, monitor, periféricos). Hay drivers específicos por dispositivo y también componentes genéricos que aplican a muchos dispositivos.
🔒 Protección y seguridad El SO administra seguridad y confidencialidad con mecanismos de protección. En UNIX, los permisos de archivo son lectura, escritura y ejecución, identificados por los bits rwx.

El Shell

El shell es el intermediario entre el usuario y el SO: traduce comandos a llamadas al sistema. Ejemplos: sh, csh, ksh, bash. No es parte del kernel: es un programa de usuario más.

Llamadas al sistema (system calls)

Son la interfaz entre los programas y el SO: la forma "oficial" en que un programa de modo usuario le pide al kernel que haga algo privilegiado. Algunas:

read

leer datos

fork

crear proceso (POSIX)

open / close

administrar archivos

mkdir / rmdir

directorios

mount

combina 2+ sistemas de archivos en uno

link

pone el mismo archivo bajo 2+ nombres

¿Para qué sirve link? Para que dos o más miembros del mismo equipo puedan acceder al mismo archivo con nombres distintos, sin duplicarlo.

1.9 Estructuras de los Sistemas Operativos

¿Cómo se organiza el SO por dentro? Hay varias arquitecturas:

EstructuraCómo funcionaEjemplo
MonolíticoTodo el SO corre como un solo programa en modo kernel.—
De capasEstructura jerárquica en capas con distintos niveles de privilegio.THE (Dijkstra, 1968), MULTICS
MicrokernelNúcleo pequeño; los módulos extra corren en modo usuario.MINIX 3
Cliente-servidorProcesos servidor ofrecen servicios a clientes vía mensajes.—
Máquinas virtualesMúltiples ambientes aislados sobre un mismo hardware físico.VM/370
ExokernelParticiona el hardware, asignando recursos específicos a cada usuario/aplicación.—

// (En tu apunte MINIX 3 viene con un cariñoso comentario hacia Tanenbaum. Lo dejamos a tu imaginación.)

1.10 Clasificación de los SO

Cuatro ejes para clasificar cualquier SO:

Por tareas

Monotarea vs Multitarea (usa multiplexaje para correr varias tareas).

Por usuarios

Monousuario vs Multiusuario (varios usuarios ejecutan programas a la vez, compartiendo recursos).

Por sesiones

Monosesión vs Multisesión (varias sesiones de usuario activas a la vez).

Por manejo de recursos

Centralizado vs Distribuido (puede usar recursos de más de una computadora simultáneamente).

⌨ Autoevaluación — Unidad 1

Elegí una opción. Te marca al instante y te explica por qué.

UNIDAD 2

Procesos: modelo, planificación y concurrencia

Idea general: el proceso es la abstracción más importante del SO; todo lo demás se construye sobre él. Vamos a ver qué es y cómo se crea/termina (Clase 4), cómo el SO decide a quién le toca la CPU (Clase 5: planificación) y qué pasa cuando varios procesos compiten o cooperan por recursos compartidos (Clase 6: concurrencia, exclusión mutua y sincronización).

2.1 Concepto y modelo de proceso

Un proceso es un programa en ejecución. Es la abstracción clave sobre la que se apoya todo el SO. Permite la ejecución pseudo-concurrente: la CPU conmuta rápidamente entre procesos (esto se llama multiprogramación), dando la ilusión de que todos corren a la vez.

Cada proceso es una instancia independiente de un programa, con su propio contador de programa, registros y variables. Aunque cada uno simula tener su CPU virtual propia, la CPU física en realidad salta entre ellos:

CPU física

Cada proceso "cree" que la CPU es solo suya. En realidad la comparten por turnos a gran velocidad.

2.2 Creación de procesos

Hay cuatro eventos que disparan la creación de un proceso:

1. Arranque del sistema

Se crean procesos de primer plano (interacción directa con el usuario) y de segundo plano (daemons / servicios).

2. Llamada al sistema

Un proceso existente crea otro para una tarea específica.

3. Petición del usuario

El usuario arranca un proceso con un comando o un clic.

4. Trabajo por lotes

Los sistemas batch crean procesos para trabajos en cola.

UNIX vs Windows

UNIXWindows
Crearfork: duplica exacto al padre. Luego el hijo suele cambiar su imagen de memoria con otra llamada.CreateProcess: gestiona directamente creación y ejecución, con muchos parámetros.
TerminarkillTerminateProcess

// Nota de tu apunte: "CreateProcess //no existe realmente" — guiño a que en Win32 hay un montón de variantes y wrappers. En ambos sistemas, tras crearse, los procesos tienen espacios de direcciones independientes, aunque pueden compartir ciertos recursos.

2.3 Terminación y jerarquías de procesos

Cuatro razones para terminar

  1. Salida normal: completó su tarea.
  2. Salida por error: encontró un error que sí puede manejar (sale a propósito).
  3. Error fatal: error grave, como acceso inválido a memoria.
  4. Eliminado por otro proceso: alguien lo mata (kill en UNIX, TerminateProcess en Windows).

Jerarquías

Algunos SO mantienen una jerarquía clara: UNIX organiza los procesos en un árbol, con init como raíz. Windows no mantiene jerarquías estrictas, lo que da una administración más flexible.

2.4 Estados y transiciones de un proceso

Acá hay dos modelos que la cátedra distingue. Cambiá de pestaña y hacé clic en los botones para mover el proceso entre estados.

Ejecución Listo Bloqueado se acabó quantum despachado espera E/S ocurrió el evento
Estado actual: —
Las transiciones, según tu apunte (Stallings)
  1. El SO descubre que el proceso no puede continuar (se bloquea).
  2. El planificador dice "ya usaste todo tu tiempo de CPU" (fin de quantum) → vuelve a Listo.
  3. El planificador, cuando todos usaron su turno, vuelve a arrancar por el primero.
  4. Sucede el evento externo que el proceso esperaba → se desbloquea.

2.5 Implementación: la tabla de procesos

El SO mantiene una tabla de procesos: una entrada por proceso (a veces llamada PCB, Process Control Block) con toda la info crítica para suspender y reanudar. Incluye:

Estado

ejecución / listo / bloqueado…

Registros

contador de programa, etc.

Memoria

su espacio de direcciones

Archivos abiertos

y planificación de tareas

Gracias a esta tabla, cuando la CPU vuelve a un proceso suspendido puede retomarlo exactamente donde lo dejó.

2.6 Hilos (threads)

Un proceso puede tener varios hilos: múltiples secuencias de ejecución dentro del mismo espacio de direcciones. Ventajas: facilitan tareas concurrentes, mejoran la eficiencia en operaciones de E/S y permiten aprovechar sistemas multiprocesador.

ProcesosHilos
Memoriacada uno tiene la suya (independiente)la comparten dentro del proceso
Costo de conmutarcarobarato
Cuidado—requiere coordinación explícita para no pisarse (¡spoiler: sección crítica!)
Dato fino (Tanenbaum) El kernel planifica por hilos, no por procesos. Y la conmutación de procesos es cara justamente porque hay que cambiar todo el espacio de direcciones.

2.7 Planificación (Clase 5)

La planificación decide qué proceso o hilo se ejecuta cuando varios compiten por la CPU. La hace el planificador con algoritmos que buscan optimizar rendimiento y equidad. Históricamente era simple (sistemas batch), pero la multiprogramación y los sistemas interactivos la complicaron.

Comportamiento de un proceso: CPU-bound vs IO-bound

Los procesos alternan ráfagas de cálculo con esperas por E/S:

🧮 Limitado por cálculo (CPU-bound)

Ráfagas largas de CPU, pocas esperas. Ej: render, compresión.

CPU██████████·E/S·██████████
⌨️ Limitado por E/S (IO-bound)

Ráfagas cortas de CPU, esperas frecuentes. Ej: editor de texto.

CPU██···E/S···██···E/S···

¿Cuándo planificar?

  • Se crea un nuevo proceso.
  • Un proceso termina.
  • Un proceso se bloquea por E/S u otra razón.
  • Se produce una interrupción que requiere atención.

Apropiativos vs No apropiativos

No apropiativo

El proceso corre hasta bloquearse o terminar voluntariamente. Nadie le saca la CPU a la fuerza.

Apropiativo (preemptive)

El SO puede quitarle la CPU tras un intervalo definido (quantum).

Tres categorías de algoritmos (y sus metas)

CategoríaCaracterísticaMetas propias
Por lotesFavorecen reducir cambios de contexto. Suelen ser no apropiativos.Rendimiento, tiempo de retorno mínimo, utilización de CPU
InteractivosNecesitan apropiación para respuesta rápida y evitar que uno monopolice. Suelen ser apropiativos.Tiempo de respuesta rápido, proporcionalidad
Tiempo realPrioridad a plazos estrictos o suaves. No tienen por qué ser apropiativos.Cumplir plazos, predictibilidad
Metas comunes a TODOS los algoritmos Equidad (repartir CPU justo) · Aplicación de políticas (cumplir las reglas definidas) · Balance (optimizar el uso de todos los recursos).

2.8 🎮 Simulador de algoritmos de planificación

Acá está lo bueno. Elegí un algoritmo, editá los tiempos de llegada y de ráfaga de cada proceso, y mirá cómo cambia el diagrama de Gantt y las métricas (tiempo de retorno y de espera promedio).

ProcesoLlegadaRáfaga (CPU)
Qué mirar FCFS es justo pero un proceso largo al frente demora a todos (efecto convoy). SJF minimiza el tiempo de espera promedio… si conocieras las ráfagas de antemano. SRTN es la versión apropiativa de SJF: si llega uno más corto, lo deja pasar. Round-Robin da un quantum fijo a cada uno por turnos: quantum chico = más equidad pero más cambios de contexto.

2.9 El resto del catálogo de algoritmos

En sistemas de procesamiento por lotes

  • FCFS (First-Come First-Served): se atienden en orden de llegada.
  • SJF (Shortest Job First): prioriza los cortos, minimizando el tiempo promedio.
  • SRTN (Shortest Remaining Time Next): versión apropiativa de SJF, mira el tiempo restante.

En sistemas interactivos

Turno circular (Round-Robin)

Cada proceso recibe un quantum fijo, cíclicamente.

Por prioridad

Se ejecuta el de mayor prioridad. En cada pulso de reloj la prioridad baja; si cae por debajo del siguiente, se ejecuta el siguiente.

Múltiples colas

Prioridades en clases; los procesos cambian de clase según uso. Mayor clase ⇒ más quantums.

Proceso más corto a continuación

SJF adaptado a interactivos, usando estimaciones previas.

Planificación garantizada

Garantiza una porción de CPU proporcional.

Por sorteo (lottery)

Cada proceso recibe boletos; se sortea al azar el ganador.

Por partes equitativas

Reparte la CPU equitativamente entre usuarios, no entre procesos.

En tiempo real

Es crucial respetar los plazos (deadlines). Hay dos tipos:

⏰ Tiempo real DURO

Plazos estrictos obligatorios. Ej: control de un airbag.

🕐 Tiempo real SUAVE

Plazos deseables pero no críticos. Ej: reproducir video.

Política vs Mecanismo

Separar para tener flexibilidad Política = qué procesos priorizar. Mecanismo = cómo hacerlo técnicamente. Separarlos da flexibilidad: el kernel provee el mecanismo y los usuarios definen la política.

Planificación de hilos

A nivel usuarioA nivel kernel
Quién planificala propia aplicación, sin el kernelel kernel
Proseficientemejor administración y estabilidad
Contrasmenos robustomás lento (conmutación de contexto cara)

2.10 Concurrencia, exclusión mutua y sincronización (Clase 6)

Tres formas de gestionar múltiples procesos:

Multiprogramación

Múltiples procesos en un monoprocesador.

Multiprocesamiento

Múltiples procesos en un multiprocesador.

Proc. distribuido

Procesos en varias computadoras distribuidas.

La concurrencia aparece en 3 contextos: múltiples aplicaciones, aplicaciones estructuradas (divididas en procesos/hilos) y en la propia estructura del SO.

Principio clave En un único procesador se entrelazan procesos en el tiempo para simular simultaneidad. En múltiples procesadores, además se solapan: hay ejecución realmente simultánea.

Los 6 términos clave

Dales vuelta — son las palabras que más caen en el parcial:

🚪
Sección crítica
Código que requiere acceso exclusivo a recursos compartidos.
🔒
Exclusión mutua
Garantía de que uno solo accede al recurso a la vez.
🤝
Interbloqueo (Deadlock)
Varios procesos se bloquean mutuamente: cada uno espera algo que tiene el otro.
🔄
Círculo vicioso (Livelock)
Cambio continuo de estado sin progreso efectivo. (Se mueven pero no avanzan.)
🏁
Condición de carrera
El resultado depende del orden de ejecución de las instrucciones.
🍽️
Inanición (Starvation)
Un proceso queda excluido indefinidamente del acceso a un recurso.

Dificultades en mono y multiprocesador

  1. Compartir recursos globales es un peligro.
  2. Al SO le es complicado asignar recursos de forma óptima.
  3. Es difícil localizar errores: los resultados son no deterministas y no reproducibles (¡condición de carrera!).

Las 4 preocupaciones del SO

  1. Seguir la pista de los varios procesos (tabla de procesos).
  2. Asignar y desasignar recursos: CPU, memoria (virtual), ficheros y dispositivos de E/S.
  3. Proteger datos y recursos de cada proceso frente a interferencias de otros.
  4. Que el resultado de un proceso sea independiente de la velocidad a la que corre respecto a los demás.

2.11 🏁 Demo: condición de carrera

Dos hilos quieren incrementar el mismo contador. Cada incremento son en realidad 3 micro-pasos: leer → sumar 1 → escribir. Si el SO entrelaza mal los pasos, se pierde un incremento. Probá las dos ejecuciones:

contador = 0
Hilo A
leer contador → reg
reg = reg + 1
escribir reg → contador
Hilo B
leer contador → reg
reg = reg + 1
escribir reg → contador

Resultado esperado: 2. Pero si ambos leen antes de que cualquiera escriba, los dos escriben "1" y se pierde un incremento. Eso es una condición de carrera, y se arregla con exclusión mutua.

2.12 Interacción de procesos y exclusión mutua

Tres niveles de interacción

NivelRelaciónProblemas posibles
No se percibenCompetenciaexclusión mutua, interbloqueo, inanición
Se perciben indirectamenteCooperación por comparticiónlos 3 anteriores + incoherencia de datos
Se perciben directamenteCooperación por comunicacióninterbloqueo, inanición

Los tres males de la competencia

Exclusión mutua

Necesitamos que solo un proceso entre a su sección crítica a la vez.

Interbloqueo

Provocado por la exclusión mutua: P1 y P2 tienen recursos que el otro necesita y no los liberan.

Inanición

También por exclusión mutua: un proceso espera eternamente recursos que no se liberan.

Cooperación entre procesos

Vía compartición

Comparten objetos sin conocer explícitamente al otro. Hay que garantizar integridad de datos y exclusión mutua al escribir.

Vía comunicación

Interactúan explícitamente con paso de mensajes. Claves: sincronización y prevención de interbloqueos.

Los 6 requisitos para la exclusión mutua

  1. Un único proceso a la vez dentro de su sección crítica.
  2. Un proceso detenido en su sección no crítica no debe interferir con otros.
  3. No se puede postergar indefinidamente el acceso de un proceso a su zona crítica.
  4. Si nadie está en su sección crítica, cualquiera debe poder entrar sin demora.
  5. No se hacen suposiciones sobre las velocidades relativas de los procesos.
  6. Un proceso permanece en la sección crítica solo un tiempo finito.

Soporte por hardware

El hardware ayuda con: deshabilitar interrupciones e instrucciones máquina atómicas como Test-and-Set o Exchange. Mantienen acceso atómico, pero tienen 3 desventajas:

1. Espera activa

El proceso desperdicia CPU "haciendo busy-wait".

2. Posible inanición
3. Posible interbloqueo

2.13 🚦 Semáforos (Dijkstra, 1965)

Un semáforo es una variable que sincroniza procesos con dos operaciones atómicas: semWait(s) y semSignal(s). Permiten frenar procesos en un punto hasta recibir una señal. Es la herramienta estrella para exclusión mutua.

Semáforo general (con contador)
  1. Se inicia con un valor no negativo.
  2. semWait decrementa el semáforo. Si queda negativo, el proceso se bloquea; si no, sigue.
  3. semSignal incrementa el semáforo. Si el valor es ≤ 0, desbloquea a uno de los procesos en espera.

Probalo con un semáforo inicializado en 1 (es un mutex, deja entrar de a uno). Mandá procesos a pedir la sección crítica:

1
valor del semáforo
SECCIÓN
CRÍTICA
libre
Cola de bloqueados:
Variantes Semáforo binario (mutex): solo vale 0 o 1. semWaitB: si es 0 se bloquea; si es 1 sigue y lo pone en 0. semSignalB: si hay alguien bloqueado lo desbloquea, si no pone el semáforo en 1.
Semáforo fuerte: la cola es FIFO (el más usado, evita inanición). Semáforo débil: no define orden de extracción de la cola.
Para ambos es crucial tener una cola de procesos en espera.

2.14 Monitores y paso de mensajes

Monitores

Los monitores los incorpora el lenguaje de programación. Encapsulan la exclusión mutua con procedimientos y datos locales, asegurando que solo un proceso acceda al recurso protegido a la vez. Simplifican mucho la programación concurrente al ofrecer estructuras claras. Se comunican con send(destino, mensaje) y receive(origen, mensaje).

Paso de mensajes

Permite a los procesos sincronizarse y comunicarse enviando/recibiendo mensajes. Tres ejes de diseño:

EjeOpciones
SincronizaciónBloqueante / no bloqueante en envío y recepción. Casos: envío bloq.+recepción bloq. (ambos esperan a la entrega), envío no bloq.+recepción bloq., y envío no bloq.+recepción no bloq.
DireccionamientoDirecto (se especifica emisor y receptor) o indirecto (vía buzones: colas que guardan mensajes temporalmente).
FormatoMensajes cortos/fijos o variables, según el contexto.

Exclusión mutua con paso de mensajes

El truco del "testigo" Se usa un buzón compartido con receive bloqueante y send no bloqueante. Se inicializa con un único mensaje nulo. Para entrar a la sección crítica, el proceso intenta recibir ese mensaje: si lo agarra, entra (y al salir lo devuelve al buzón); si el buzón está vacío, se bloquea esperando. Así el mensaje funciona como un testigo que solo uno puede tener: garantiza que entre un único proceso por vez.
⌨ Autoevaluación — Unidad 2

Procesos, planificación y concurrencia.


🎯 Repaso relámpago para el parcial U1: el SO es intermediario HW↔SW (máquina extendida + administrador de recursos), corre en modo kernel, reparte recursos por multiplexado (tiempo/espacio), nació en 4+1 generaciones, y maneja procesos, memoria, archivos, syscalls y un shell. Estructuras: monolítico, capas, microkernel, cliente-servidor, VM, exokernel.
U2: proceso = programa en ejecución con su PCB; estados Listo/Ejecución/Bloqueado (Tanenbaum) o con Suspendidos (Stallings); planificación FCFS/SJF/SRTN/RR + interactivos + tiempo real; concurrencia trae condición de carrera, deadlock e inanición, que se resuelven con exclusión mutua: semáforos, monitores y paso de mensajes.
Apunte interactivo generado a partir de tu resumen de Sistemas Operativos (Unidades 1 y 2).
Bibliografía: Tanenbaum, A. S. (2009). Sistemas operativos modernos (3ª ed.). Pearson · Stallings, W. (2005). Sistemas operativos (5ª ed.). Pearson.
Archivo único, sin dependencias externas. Hecho para hatear a Tanenbaum con cariño. 🐧