Multiprogramación
Multiprocesador
Multicomputadora
Facilita la programación
Acelera los cálculos
Posibilita el uso interactivo
Permite un mejor aprovechamiento de los recursos
Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes.
Sección Crítica
Productor - Consumidor
Lectores - Escritores
Cliente - Servidor
Ejemplo: generación de un PID
Es necesario un mecanismo de sincronización donde cada proceso:
Cualquier solución a este problema debe cumplir los tres requisitos siguientes:
Problema del Productor - Consumidor.
Deberá disponer de algún mecanismo de comunicación que permita a los procesos intercambiar información
Deberá sincronizar el acceso al mecanismo de comunicación para que la interacción entre ellos no sea problemática
Problema de los Lectores - Escritores.
Tiene las siguientes restricciones:
Problema del Cliente - Servidor.
Los procesos llamados servidores ofrecen una serie de servicios a otros procesos que se denominan clientes.
El proceso servidor puede residir en la misma máquina que el cliente o en una distinta.
El S.O. debe ofrecer servicios que permitan comunicarse a los procesos cliente y servidor.
Permite comunicar a un número potencialmente ilimitado de procesos.
Los servidores de archivos ofrecen servicios sencillos y fáciles de utilizar.
Es un mecanismo bastante poco eficiente.
Necesita algún otro mecanismo de sincronización.
Comunicación en una tubería.
Es un mecanismo de comunicación y sincronización.
Es como un pseudoarchivo mantenido por el S.O.
Cada proceso ve la tubería como un conducto con dos extremos.
El flujo de datos es unidireccional.
Escritura en una tubería:
Lectura en una tubería:
Los procesos se comunican mediante dos operaciones básicas:
Aspectos de diseño:
Mensajes usando colas y puertos.
Servidores secuenciales o concurrentes.
Las señales pueden utilizarse para sincronizar procesos.
Las señales tienen un comportamiento asíncrono.
Las señales no se encolan.
Un semáforo [Dijkstra, 1965] es un mecanismo de sincronización que se utiliza generalmente en sistemas con memoria compartida.
Un semáforo es un objeto con un valor entero, al que se le puede asignar un valor inicial no negativo y al que sólo se puede acceder utilizando dos operaciones atómicas: wait y signal.
Operaciones sobre un semáforo.
Son mecanismos especialmente concebidos para la sincronización de procesos ligeros.
Sobre un mutex se pueden realizar dos operaciones atómicas básicas: lock y unlock.
Una variable condicional es una variable de sincronización asociada a un mutex que se utiliza para bloquear a un proceso hasta que ocurra algún suceso.
Sobre un mutex se pueden realizar dos operaciones atómicas básicas: c_wait y c_signal.