Sistemas Operativos Unidad III Administración de procesos.

33
Sistemas Operativos Unidad III Administración de procesos

Transcript of Sistemas Operativos Unidad III Administración de procesos.

Page 1: Sistemas Operativos Unidad III Administración de procesos.

Sistemas Operativos

Unidad III

Administración de procesos

Page 2: Sistemas Operativos Unidad III Administración de procesos.

Administración de procesos

Procesos concurrentes Problemas clásicos de comunicación

y sincronización Mecanismos de comunicación y

sincronización Paso de mensajes Aspectos de implementación de los

mecanismos de sincronización

Page 3: Sistemas Operativos Unidad III Administración de procesos.

Procesos concurrentes

Plataformas: Multiprogramación en un

único procesador. Multiprocesador. Multicomputador

(procesamiento distribuido) Razones

Compartir recursos físicos. Compartir recursos lógicos. Almacenar los cálculos Modularidad Comodidad

Multiprogramación con un solo CPU

Multiprogramación con dos CPU’s

Page 4: Sistemas Operativos Unidad III Administración de procesos.

Procesos concurrentes (2)

Tipos de procesos concurrentes Independientes

• Se ejecuta sin requerir la ayuda o cooperación de otros procesos.

• Ejemplo: el shell o intérprete de mandatos.

Cooperantes• Están diseñados para trabajar conjuntamente en

alguna actividad.• Deben ser capaces de comunicarse entre ellos• Ejemplo: el compilador (gcc: precompila, compila

y enlaza).

Page 5: Sistemas Operativos Unidad III Administración de procesos.

Procesos concurrentes (3)

Interacción entre procesos Los procesos comparten o compiten por el

acceso a recursos físicos o lógicos.• Por ejemplo dos procesos independientes pueden

competir por el acceso a disco.• El SO debe garantizar que todos los procesos

accedan ordenadamente a los recursos. Los procesos se comunican y sincronizan.

• Se trata de alcanzar un objetivo común• Por ejemplo al generar código ejecutable los

procesos de compilación y ensamble deben comunicarse y sincronizarse.

Page 6: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización

La interacción entre procesos plantea una serie de situaciones clásicas de comunicación y sincronización:El problema de la sección críticaEl problema del Productor-ConsumidorEl problema de los Lectores-EscritoresComunicación Cliente-Servidor

Page 7: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (2)

El problema de la sección crítica Es el de mayor frecuencia cuando se ejecutan n

procesos concurrentes. Cada uno tiene un fragmento de código: la sección

crítica. Sólo uno de los procesos en cada instante puede

ejecutar en la sección crítica• Cuando un proceso está ejecutando en la sección

crítica, ningún otro puede hacerlo. Ejemplos:

1. Generación de un PID en un sistema mutiprocesador.2. Calcular la suma de los n primeros números naturales

de forma paralela con dos hilos.

Page 8: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (3)

Ejemplo 1: Generación de un PID en un sistema multiprocesador Si no existe sincronización se puede incurrir en el error de asignar el

mismo PID a dos procesos distintos

Page 9: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (4)

Ejemplo 2: Calcular la suma de los n primeros números naturales de forma paralela con dos hilos.

Page 10: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (5)

Solución al problema de la sección crítica La estructura general de cualquier mecanismo para resolver el

problema de la sección crítica es:• Entrada en la sección crítica• Código de la sección crítica• Salida de la sección crítica

Los tres requisitos que debe tener cualquier solución del problema de la sección critica son:

• Exclusión mutua• Si un proceso está ejecutando un código de la sección crítica, ningún otro

proceso lo podrá hacer.• Progreso

• Si ningún procesos esta ejecutando dentro de la sección crítica, la decisión de qué proceso entra en la sección se hará sobre los procesos que desean entrar, tal decisión debe realizarse en un tiempo finito.

• Espera acotada• Debe haber un límite en el número de veces que se permite que los

demás procesos entren a ejecutar código de la sección crítica.

Page 11: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (6)

Problema del productor-consumidor Uno o más procesos, los “productores”, generan un cierto tipo

de datos que son utilizados por otros procesos, los “consumidores”.

Es necesario un mecanismo de comunicación para que productores y consumidores intercambien información.

Cuando el mecanismo de comunicación se llena el productor debe dejar de producir.

Cuando el mecanismo de comunicación está vacío el lector debe esperar a que se produzca un dato

Page 12: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (7)

El problema de los lectores-escritores Existe un determinado objeto que va a ser utilizado y

compartido por una serie de procesos concurrentes. Algunos procesos solo acceden al objeto sin modificarlo y

algunos acceden para modificarlo, lo que lleva a algunas restricciones:

• Solo se permite que un escritor tenga acceso al mismo tiempo.• Se permite cualquier numero de lectores accediendo al mismo

tiempo.

Page 13: Sistemas Operativos Unidad III Administración de procesos.

Problemas clásicos de comunicación y sincronización (8)

Comunicación cliente-servidor Existen procesos llamados servidores que ofrecen una serie

de servicios a otros proceso denominados clientes. El proceso servidor puede residir en la misma máquina o en

una máquina distinta. Se utilizan técnicas basadas en el paso de mensajes.

Page 14: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización

El SO ofrece una serie de servicios que permiten a los procesos comunicarse y sincronizarse.

Principales mecanismos de comunicación: Archivos. Tuberías. Variables en memoria compartida. Paso de mensajes.

Principales mecanismos de sincronización: Tuberías. Semáforos. Mutex y variables condicionales. Paso de mensajes.

Page 15: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (2)

Archivos Es un mecanismo que puede utilizarse para

comunicar procesos. Presenta las siguientes ventajas:

• Permite comunicar un número potencialmente ilimitado de proceso.

• Los servidores de archivos ofrecen servicios sencillos y fáciles de utilizar.

También presenta una serie de inconvenientes:• Es poco eficiente, la escritura y lectura a disco es lenta.• Necesita de algún otro mecanismo que permita que los

procesos se sincronicen en el acceso de los datos almacenados en el archivo.

Page 16: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (3)

Tuberías Es un mecanismo de comunicación y sincronización. Existen dos tipos:

• Tuberías sin nombre (pipe)• Solo el proceso que la crea y sus descendientes pueden utilizarla.

• Tuberías con nombre (FIFO)• Para los procesos que no guardan ninguna relación de parentesco.

Conceptualmente cada proceso ve a la tubería como un conducto con dos extremos, uno para insertar y otro para extraer datos de la tubería.

Page 17: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (4)

Comunicación bidireccional con tuberías.

Page 18: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (5)

Escritura en una tubería Introduce los datos en orden FIFO Si tubería llena se bloquea el escritor. Si no hay lectores se retorna el error correspondiente.

Lectura de una tubería Recupera los datos en el orden en que se introdujeron. Si tubería vacía se bloquea el lector. Si la tubería almacena M bytes y se quieren leer n bytes,

entonces:• Si M ≥ n, se recuperan n bytes• Si M < n, se recuperan M bytes

Si no hay escritores y la tubería está vacía se retorna fin de archivo

Ambas operaciones (escritura y lectura) son atómicas, es decir, si dos procesos intenta acceder al mismo tiempo, uno de ellos se bloqueará.

Page 19: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (6)

Sección crítica con tuberías La solución consiste en

crear una tubería y escribir en ella un dato testigo.

Escrito el dato testigo, los procesos protegen su código de la sección crítica.

Ej:• Leer dato de la tubería• Código correspondiente a la

sección crítica• Escribir el dato en la tubería

void main(void){ int fildes[2]; char c;

pipe(fildes); write(fildes[1], &c, 1);

if( fork() == 0){ for( ; ; ){ read( fildes[0], &c, 1); /*SECCION CRITICA*/ write( fildes[1], &c, 1); } } else{ for( ; ; ){ read( fildes[0], &c, 1); /*SECCION CRITICA*/ write( fildes[1], &c, 1); }}

Page 20: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (7)

Productor-consumidor con tuberías Cuando el productor ha

elaborado un elemento lo escribe en la tubería.

Cuando el consumidor quiere procesar algún elemento lo lee de la tubería.

void main(void){ int fildes[2]; int dato_p[4]; char dato_c;

pipe(fildes);

if( fork() == 0){ for( ; ; ){ /*PRODUCIR DATO p*/ write( fildes[1], dato_p, 4*sizeof(int)); } } else{ for( ; ; ){ read( fildes[0], &dato_c, sizeof(int)); /*CONSUMIR DATO p*/ }}

Page 21: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (8)

Semáforos Mecanismo de sincronización

que se utiliza generalmente en sistemas con memoria compartida.

Es un objeto con un valor entero

Se le puede asignar un valor inicial no negativo.

Se accede mediante dos operaciones atómicas:

• wait• signal

wait(s){ s = s-1; if( s < 0 ) { /*BLOQUEAR PROCESO*/ }}

signal(s){ s = s+1; if( s <= 0) { /*DESBLOQUEAR UN PROCESO BLOQUEADO POR WAIT*/ }}

Page 22: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (9)

Sección crítica con semáforoswait(s); /*Entrada a la sección crítica*/<sección crítica>signal(s); /*Salida de la sección crítica*/

Page 23: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (10)

Productor-Consumidor con semáforos Se usa un buffer circular compartido por ambos procesos. Existen dos tipos de recursos: elementos y huecos. Un

semáforo por cada uno.Productor ( ){ int posicion = 0; for( ; ; ){ Producir un dato; wait (huecos); buffer[posicion] = dato; posicion = (posicion + 1) % TAMBUFF; signal (elementos); }}

Consumidor ( ){ int posicion = 0; for( ; ; ){ wait (elementos); dato = buffer [posicion]; posicion = (posicion + 1) % TAMBUFF; signal (huecos); Consumir el dato; }}

Page 24: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (11)

Memoria compartida Permite comunicar a procesos que se ejecutan en

la misma máquina. Dos procesos acceden a una misma variable.

Page 25: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (12)

Mutex Son mecanismos de sincronización especiales para

hilos. Es un semáforo binario con dos operaciones atómicas:

• lock(m) Intenta bloquear el mutex, si el mutex ya está bloqueado el hilo se suspende.

• unlock(m) Desbloquea el mutex, si existen procesos bloqueados en el mutex se desbloquea uno.

variables condicionales Variables de sincronización asociadas a un mutex Conviene ejecutarlas entre un lock y unlock Dos operaciones atómicas

• wait Bloquea el hilo y lo expulsa del mutex• signal Desbloquea uno o varios procesos suspendidos

en la variable condicional. El hilo que despierta compite nuevamente por el mutex.

Page 26: Sistemas Operativos Unidad III Administración de procesos.

Mecanismos de comunicación y sincronización (13)

Sección critica con mutex La operación unlock debe realizarla el hilo que ejecutó el lock

lock (m);< sección crítica >unlock (m);

Page 27: Sistemas Operativos Unidad III Administración de procesos.

Paso de mensajes

Son especialmente útiles cuando se necesita comunicar y sincronizar procesos que se ejecutan en máquinas distintas.

Permiten resolver: Exclusión mutua Sincronización entre un proceso que recibe un

mensaje y otro que lo envía. Comunicación entre espacios de memoria diferentes

(en la misma computadora o de una computadora a otra)

Se tienen dos primitivas básicas: send (destino, mensaje) envía un mensaje al

proceso destino. receive (destino, mensaje) recibe un mensaje del

proceso destino.

Page 28: Sistemas Operativos Unidad III Administración de procesos.

Paso de mensajes (2)

Aspectos de implementación Tamaño del mensaje

• Tamaño (fijo o variable) Flujo de datos

• Unidireccional o bidireccional Nombrado

• Directo• Nombrar de forma explicita al proceso receptor o emisor

• Indirecto• El menaje es enviado a través de colas de mensajes o puertos.

Sincronización• Tres combinaciones habituales

• Envío y recepción bloqueante• Envío no bloqueante y recepción bloqueante• Envío y recepción no bloqueante

Almacenamiento• Tiene o no tiene capacidad para almacenar mensajes.

Page 29: Sistemas Operativos Unidad III Administración de procesos.

Paso de mensajes (3)

Uso de colas y puertos para comunicación indirecta

Page 30: Sistemas Operativos Unidad III Administración de procesos.

Aspectos de implementación de los mecanismos de sincronización Todo mecanismo de sincronización

conlleva un bloqueo bajo determinadas circunstancias y se puede conseguir de dos formas: Espera activa

• Los procesos efectúan un ciclo continúo hasta que pueden continuar, lo que representa un problema en sistemas multiprogramados.

Espera pasiva• La operación de bloqueo coloca un proceso en

una cola de espera asociada al mecanismo de sincronización y transfiere el control al planificador.

Page 31: Sistemas Operativos Unidad III Administración de procesos.

Aspectos de implementación de los mecanismos de sincronización (2)

Implementación de los mecanismos de sincronización

Page 32: Sistemas Operativos Unidad III Administración de procesos.

Aspectos de implementación de los mecanismos de sincronización (3)

Implementación de las espera pasiva Operaciones para bloquear a un proceso en un semáforo

Page 33: Sistemas Operativos Unidad III Administración de procesos.

Aspectos de implementación de los mecanismos de sincronización (4)

Implementación de las espera pasiva Operaciones para desbloquear a un proceso bloqueado en un semáforo