81
Sistemas Operativos INF - 151 MODULO II. PROCESOS 2.3 Concurrencia y Exclusión Mutua Resumen preparado por Miguel Cotaña 12/10/07

Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

Embed Size (px)

Citation preview

Page 1: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

Sistemas OperativosINF - 151

MODULO II. PROCESOS2.3 Concurrencia y Exclusión Mutua

Resumen preparado por Miguel Cotaña12/10/07

Page 2: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

2

El diseño de SO están relacionados con la gestión de procesos e hilos:Multiprogramación. Gestión de múltiples procesos dentro de un sistema monoprocesador.Multiprocesamiento. Gestión de múltiples procesos dentro de un multiprocesador.Procesamiento distribuido. Gestión de múltiples procesos que ejecutan sobre múltiples sistemas de cómputo distribuidos.

Page 3: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

3

Principios de concurrenciaPrincipios de concurrencia

Según el diccionario, concurrencia es: “El Acaecimiento o concurso de varios sucesos en un mismo tiempo”

Concurrencia es el conjunto de actividades que se desarrollan de forma simultánea

En computación cada una de esas actividades se suele llamar proceso

Page 4: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

4

Comunicación entre procesos.

Compartición y competencia por los recursos.

Sincronización de la ejecución de variosprocesos.

Asignación del tiempo de procesador a los procesos.

Page 5: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

5

• Puede haber múltiples procesos en ejecución que correspondan al mismo programa

– Ejemplo: Un servidor de aplicaciones donde reside un navegador de Internet y existen varios usuarios ejecutando ese navegador

Programa y procesoPrograma y proceso

Page 6: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

6

Dos procesos serán concurrentes cuando exista solapamiento (intercalado) en la ejecución de sus instrucciones

Tres procesos (independientes) concurrentes ejecutándose al mismo tiempo sobre el sistema operativo (cada proceso corresponde a una instancia del programa del navegador)

Page 7: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

7

• Un Programa al ponerse en ejecución, puede dar lugar a más de un proceso, c/u de ellos ejecutando una parte del programa

Por ejemplo: El programa del navegador de Internet formado por n procesos: uno que controla las acciones del usuario con la interfaz, otro que hace las peticiones al servidor, etc.

Page 8: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

8

• El Proceso p1.1 y el Proceso p1.2 pueden estar colaborando para hacerle la vida más fácil al usuario

• El proceso p1.2 y el proceso p2.2 pueden estar compitiendo para acceder a disco

Page 9: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

9

En un sistema multiprogramado único, los procesos se entrelazan en el tiempo para ofrecer la apariencia de ejecución simultánea

Proceso 1

Proceso 2

Proceso 3

tiempo

Intercalado (multiprogramación, un procesador)

bloqueando ejecutando

Page 10: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

10

En un sistema de múltiples procesadores no sólo es posible entrelazar la ejecución de múltiples procesos sino también solaparlas

Proceso 1

Proceso 2

Proceso 3

tiempo

Intercalado y solapamiento (multiproceso; 2 procesadores)

Page 11: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

11

El entrelazado y el solapamiento son técnicas que pueden verse como ejemplos de procesamiento concurrente. En el caso de un monoprocesador, los problemas surgen de una característica básica de los sistemas multiprogramados: no puede predecirse la velocidad relativa de ejecución de los procesos. Ésta depende de la actividad de los otros procesos, de la forma en que el SO maneja las interrupciones y de las políticas de planificación del SO.

Page 12: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

12

Se plantean las siguientes dificultades:

1) La compartición de recursos globales estácargada de peligros. Por ejemplo, si 2 procesos utilizan ambos la misma variable global y ambos realizan lecturas y escritura sobre esa variable, entonces el orden en que se ejecuten las lecturas y escrituras es crítico

Page 13: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

13

2) Para el SO es complicado gestionar la asignación de recursos óptimamente. Por ejemplo, un proceso puede solicitar el uso de un canal concreto de E/S, y serle concedido el control, y luego ser suspendido justo antes de utilizar ese canal.

3) Llega a ser muy complicado localizar errores de programación.

Page 14: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

14

void echo(){

ent = getchar();sal = ent;putchar(sal);

}

En un sistema multiprocesador, también se presentan todas las dificultades mencionadas

Page 15: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

15

Es necesario proteger las variables globales compartidas (así como otros recursos globales compartidos) y que la única manera de hacerlo es controlar el código que accede a la variableHemos ido suponiendo de que se trata de un SO multiprogramado para un monoprocesador. En un sistema multiprocesador, aparecen los mismos problemas de recursos compartidos protegidos, y funcionan las mismas soluciones.

Page 16: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

16

Supóngase que no hay mecanismo para controlar los accesos a la variable global compartida:

Proceso P1 Proceso P2

. .

ent = getchar(); . .

. ent = getchar();

sal = ent; sal = ent;

putchar(sal); .

. putchar(sal);

. .

Page 17: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

17

En el caso de un sistema monoprocesador, el motivo por el que se tiene un problema es que una interrupción puede parar la ejecución de instrucciones en cualquier punto de un proceso. En un sistema multiprocesador, se tiene el mismo motivo y, además, puede suceder porque 2 procesos pueden estar ejecutando simultáneamente y ambos intentando acceder a la misma variable global. Sin embargo, la solución es la misma: controlar los accesos a los recursos compartidos.

Page 18: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

18

Condición de carreraCondición de carrera

Una condición de carrera sucede cuando múltiples procesos o hilos leen y escriben datos de manera que el resultado final depende del orden de ejecución de las instrucciones en los múltiples procesos.Ejemplo1: Considere los procesos P1 y P2, que comparten las variables globales b y c, con valores iniciales b=1 y c=2. En algún punto de su ejecución, P1 ejecuta b=b+1 y en algún punto de su ejecución, P2 ejecuta c=b+c

Page 19: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

19

Interacción de procesosInteracción de procesos

Podemos clasificar las formas en que los procesos interaccionan en base al grado en que perciben la existencia de cada uno de los otros:Procesos que no se perciben entre sí.

Son procesos independientes que no se pretende que trabajen juntos. Aunque los procesos no estén trabajando juntos, el SO necesita preocuparse de la competencia

por recursos.

Page 20: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

20

Procesos que se perciben indirectamente

entre sí. Son procesos que no están necesariamente al tanto de la presencia de los demás mediante sus respectivos ID de procesos, pero que comparten accesos a algún objeto, como un buffer de E/S. Tales procesos exhiben cooperación en la compartición del objeto comúnProcesos que se perciben directamente

entre sí. Capaces de comunicarse entre sí vía el ID del proceso. Tales procesos exhiben cooperación.

Page 21: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

21

Competencia entre procesos por recursosCompetencia entre procesos por recursos

Los procesos concurrentes entran en conflicto entre ellos cuando compiten por el uso del mismo recurso.No existe intercambio de información entre los procesos en competencia.Si 2 procesos desean ambos acceder al mismo recurso único, el SO reservará el recurso para uno de ellos y el otro tendráque esperar. Por tanto, el proceso al que se le deniega el acceso será ralentizado

Page 22: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

22

En el caso de procesos en competencia, deben afrontarse 3 problemas de control:

Exclusión mutuaInterbloqueoInanición

Recurso críticoSección crítica

Page 23: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

23

Suponiendo que 2 o más procesos requieren acceso a un recurso (impresora) único no compartible. Durante la ejecución, cada proceso estará enviando mandatos al dispositivo de E/S, recibiendo información de estado, enviando o recibiendo datos. Tal recurso es un recurso crítico, y a la porción del programa que lo utiliza como la sección crítica del programa

Page 24: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

24

La aplicación de la exclusión mutua crea 2 problemas: interbloqueo e inanición.

El interbloqueo se define como:

“El Bloqueo permanente de un conjunto de procesos que ya sea, compiten por los recursos del sistema o bien se comunican unos con otros”.

Page 25: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

25

Situación en la que se encuentran un conjunto de procesos, (al menos dos), tal que cada proceso del conjunto espera la ocurrencia de un evento que sólo puede ser provocado por otro proceso del mismo conjunto.

Todos los interbloqueos suponen demandas contradictorias de recursos por parte de 2 o más procesos.

Page 26: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

26

Un conjunto de procesos está en bloqueo mutuo/interbloqueo si cada proceso del conjunto está esperando un evento que sólo otro proceso del conjunto puede causar.

Los bloqueos ocurren en entornos multiprogramación, cuando varios procesos compiten por un número limitado de recursos.

El bloqueo ocurre cuando un proceso monopoliza el acceso a un recurso y requiere otro recurso que ha sido ya asignado a un segundo proceso, que a su vez necesita el recurso monopolizado por el primer proceso.

Page 27: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

27

Ejemplos:

• Ley del estado de Kansas: “Si dos trenes se aproximan uno al otro en un cruce, ambos harán alto total y ninguno arrancará de nuevo hasta que el otro se haya ido”

• 2 personas llamándose por teléfono mutuamente

Page 28: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

28

Page 29: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

29

Page 30: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

30

Recursos:

Son los objetos otorgados/usados por los procesos en un instante dado.

Secuencia de eventos necesarios para utilizar un recurso:

1. Solicitar el recurso2. Utilizar el recurso3. Liberar el recurso

Page 31: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

31

De acuerdo a su estructura real hay 2 tipos:

Físicos (dispositivos de HW): Memoria, dispositivos. etc.

Lógicos (elemento de información): archivos, semáforos, cerrojos, mensajes, señales, etc.

De acuerdo a su uso hay 2 tipos:

ReutilizablesConsumibles

Page 32: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

32

Recursos Reutilizables:Recursos Reutilizables:

Es aquél que puede ser usado por un proceso y no se agota con el uso.Los procesos obtienen recursos que liberan posteriormente para que otros procesos las reutilicen.

Ejemplo:

Procesadores, canales E/S, memoria principal y secundaria, archivos, BD, etc,

Page 33: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

33

Recursos ConsumiblesRecursos Consumibles

Es aquél que puede ser creado (producido) y destruido (consumido).

Ej: Interrupciones, señales, mensajes, etc.

Page 34: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

34

Un ejemplo de inanición:

Suponiendo 3 procesos (P1,P2, P3) requieren todos accesos periódicos al recurso R. Si P1 está en posesión del recurso y P2 y P3 están ambos retenidos, esperando por ese recurso. Cuando P1 termine su sección crítica, debería permitírsele acceso a R a P2 o P3. Suponiendo que el SO le concede acceso a P3 y que P1 solicita acceso otra vez antes de completar su sección crítica. Si el SO le concede acceso a P1 después de que P3 haya terminado, y posteriormente concede alternativamente acceso a P1 y P3, entonces a P2 puede denegársele indefinidamente el acceso al recurso, aunque no suceda interbloqueo

Page 35: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

35

En términos abstractos la exclusión mutua, se puede ilustrar:

/*PROCESO 1 */

Void P1{while (true){/* código anterior */;entrarcritica (Ra);/* sección crítica */;salircritica (Ra);/* código posterior */;

}}

/*PROCESO 2 */

Void P1{while (true){/* código anterior */;entrarcritica (Ra);/* sección crítica */;salircritica (Ra);/* código posterior */;

}}

/*PROCESO n */

Void P1{while (true){/* código anterior */;entrarcritica (Ra);/* sección crítica */;salircritica (Ra);/* código posterior */;

}}

Page 36: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

36

Cooperación entre procesos vía comparticiónCooperación entre procesos vía comparticiónCubre procesos que interaccionan con otros procesos sin tener conocimiento explícito de ellos.Por ejemplo, múltiples procesos pueden tener acceso a variables compartidas o a BD. Los procesos pueden usar y actualizar los datos compartidos sin referenciar otros procesos pero saben que otros procesos pueden tener acceso a los mismos. Así, los procesos deben cooperar para asegurar que los datos compartidos son manipulados adecuadamente.

Page 37: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

37

Tomando en cuanta que los datos están contenidos en recursos (dispositivos, memoria), los problemas de exclusión mutua, interbloqueo e inanición están presentes de nuevo. La única diferencia es que los datos individuales pueden ser accedidos de dos maneras diferentes, lectura y escritura, y sólo las operaciones de escritura deben ser mutuamente exclusivas

Page 38: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

38

Por encima de estos problemas, surge un nuevo requisito: el de la coherencia de datosEjemplo: P1 y P2 que comparten datos a y b que deben cumplir a=b

P1 P2(I11) a = a + 1; (I21) b = b * 2;(I12) b = b + 1; (I22) a = a * 2;

Supóngase ahora la secuencia de ejecución siguiente: (I11, I21 I12 I22)

“Sí el estado es inicialmente consistente, cada proceso tomado por separado dejará los datos compartidos en un estado consistente”.

Page 39: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

39

Cooperación entre procesos vía comunicaciónCooperación entre procesos vía comunicaciónEn los 2 casos tratados, cada proceso tiene su propio entorno aislado que no incluye a los otro procesos. Las interrelaciones entre los proceso son indirectas. En ambos casos hay cierta compartición. En el caso de la competencia hay recursos compartidos sin ser conscientes de los otros procesos. En el segundo caso, hay compartición de valores y aunque cada proceso no es explícitamente consciente de los demás procesos, es conciente de la necesidad de mantener la integridad de datos.

Page 40: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

40

Cuando los procesos cooperan vía comunicación, en cambio, los diversos procesos involucrados participan en un esfuerzo común que los vincula a todos ellos. La comunicación proporciona una manera de sincronizar o coordinar actividades varias.Típicamente, la comunicación se fundamenta en mensajes de algún tipo. Las primitivas de envío y recepción de mensajes deben ser proporcionadas como parte del lenguaje de programación o por el núcleo del SO.

Page 41: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

41

Requisitos para la exclusión mutuaRequisitos para la exclusión mutua

Cualquier mecanismo o técnica que vaya a proporcionar exclusión mutua debería contemplar los siguientes requisitos:

1. La exclusión mutua debe hacerse cumplir: sólo se permite un proceso al tiempo dentro de su sección crítica, de entre todos los procesos que tienen secciones críticas para el mismo recurso compartido.

2. Un proceso que se pare en su sección no crítica debe hacerlo sin interferir con otros procesos.

Page 42: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

42

3. No debe ser posible que un proceso que solicite acceso a una sección crítica sea postergado indefinidamente: ni interbloqueo ni inanición.

4. Cuando ningún proceso esté en una sección crítica, a cualquier proceso que solicite entrar en su sección crítica debe permitírsele entrar sin demora.

5. No se hacen suposiciones sobre las velocidades relativas de los procesos ni sobre el número de procesadores.

6. Un proceso permanece dentro de su sección crítica sólo por un tiempo finito.

Page 43: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

43

Exclusión mutua: soporte hardwareExclusión mutua: soporte hardware

En una máquina monoprocesador, los procesos concurrentes no pueden solaparse, sólo pueden entrelazarse. Es más, un proceso continuará ejecutando hasta que invoque un servicio del SO o hasta que sea interrumpido. Por tanto, para garantizar la exclusión mutua, basta con impedir que un proceso sea interrumpido

Deshabilitar interrupcionesDeshabilitar interrupciones

Page 44: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

44

Un proceso puede cumplir la exclusión mutua, de la siguiente forma:

While (true){

/*deshabilitar interrupciones */;/*sección crítica */;/*habilitar interrupciones */;/*resto */;

}

Page 45: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

45

A un nivel de hardware, el acceso a una posición de memoria excluye cualquier otro acceso a la misma posición. Con este fundamento, los diseñadores de procesadores han propuesto varias instrucciones máquina que llevan a cabo 2 acciones atómicamente, como leer y

escribir o leer y comprobar, sobre una única posición de memoria con un único ciclo de búsqueda de instrucción.

Instrucciones máquina especialesInstrucciones máquina especiales

Page 46: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

46

Durante la ejecución de la instrucción, el acceso a la posición de memoria se le bloquea a toda otra instrucción que referencie esa posición. Típicamente, estas acciones se realizan en un único ciclo de instrucción.Se consideran:

Instrucción Test and SetInstrucción Exchange

Page 47: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

47

Instrucción Test and Set (comprueba y establece). Esta instrucción puede definirse como: boolean testset (int i)

{if (i==o){

i=1;return true;

} else{

return false;}

}

Page 48: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

48

/* programa exclusión mutua */const int n= /* número de procesos */;int cerrojo;void P(int i){

while (true){

while (!testset (cerrojo))/* no hacer nada */;

/* sección crítica */;cerrojo=0;/* resto */

} void main(){

cerrojo=0;paralelos (P(1), P(2),…..,P(n));

}

Page 49: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

49

Instrucción Exchange. La instrucción exchange (intercambio) puede definirse como:

void exchange (int registro, int memoria){

int temp;temp = memoria;memoria = registro;registro = temp;

}

Page 50: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

50

/* programa exclusión mutua */const int n= /* número de procesos */;int cerrojo;void P(int i){

int llavei = 1;while (true){

do exchange (llavei, cerrojo)while (llavei !=0);/* sección crítica */;exchange (llavei, cerrojo);/* resto */

} } void main(){

cerrojo=0;paralelos (P(1), P(2),…..,P(n));

}

Page 51: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

51

Propiedades de la solución instrucción

máquina. El uso de una instrucción máquina especial para conseguir exclusión mutua tiene ciertas ventajas:

Es aplicable a cualquier número de procesos sobre un procesador único o multiprocesador de MP compartida.

Es simple y, por tanto, fácil de verificar.Puede ser utilizado para dar soporte a

múltiples secciones críticas: cada sección crítica puede ser definida por su propia variable.

Page 52: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

52

Entre las desventajas serias:Se emplea espera activa. Mientras un proceso está esperando para acceder a una sección crítica, continúa consumiendo tiempo de procesador.Es posible la inanición. Cuando un proceso abandona su sección crítica y hay más de un proceso esperando, la selección del proceso en espera es arbitraria.Es posible el interbloqueo.

Page 53: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

53

SemáforosSemáforos

Una de las soluciones más famosas y significantes del problema de cooperación entre procesos paralelos fue la propuesta de Dijkstra. Su solución introdujo un nuevo tipo de variables, llamadas semáforos, y 2 operaciones especiales.

Page 54: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

54

La propuesta de Dijkstra es el resultado de su crítica a las soluciones con espera activa. Y dice, cuando un proceso estáejecutando las instrucciones de la sección crítica, ningún otro puede estar en la sección. Además, si alguno quiere entrar, tiene que esperar hasta que termine la ejecución del proceso en turno.

Page 55: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

55

Durante este tiempo nada se puede cambiar, entonces no tiene caso que el proceso esté esperando, repitiendo inútilmente la revisión del valor de una variable (o más). Mejor que “descanse”abriendo la posibilidad de que el tiempo de procesador lo aproveche quien lo necesite verdaderamente.La idea básica es la suspensión de los procesos que no pueden entrar y su reactivación, cuando algún proceso sale de la sección.

Page 56: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

56

Dos o más procesos pueden cooperar por medio de simples señales, tales que un proceso pueda ser obligado a parar en un lugar específico hasta que haya recibido una señal específica. Cualquier requisito complejo de coordinación puede ser satisfecho con la estructura de señales apropiada

Page 57: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

57

Para la señalización, se utiliza la variable “semáforo”.

Para transmitir una señal vía el semáforo s, el proceso ejecutará la primitiva semSignal(s).

Para recibir una señal vía el semáforo s, el proceso ejecutará la primitiva semWait(s); si la correspondiente señal no se ha transmitido todavía, el proceso se suspenderá hasta que la transmisión tenga lugar.

Page 58: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

58

Las 3 operaciones son:1. Un semáforo puede ser inicializado a un valor

no negativo2. La operación semWait decrementa el valor

del semáforo. Si el valor pasa a ser negativo, entonces el proceso que está ejecutando semWait se bloquea. En otro caso, el proceso continúa su ejecución.

3. La operación SemSignal incrementa el valor del semáforo. Si el valor es menor o igual que cero, entonces se desbloquea uno de los procesos bloqueados en la operación semWait.

Page 59: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

59

Struct semaphore {int cuenta;queueType cola;}void semWait(semaphore s){

s.cuenta--;if (s.cuenta<0){

poner este proceso en s.cola;bloquear este proceso;

} } void semSignal(semaphore s){

s.cuenta++;if (s.cuenta <= 0){

extraer un proceso P de s.cola;poner el proceso P en la lista de listos;

}}

Defin

ició

n d

e p

rimitiv

as d

el s

em

áfo

ro

Page 60: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

60

Un semáforo binario, define 3 operaciones1. Un semáforo binario puede ser de inicio 0 o 12. La operación semWaitB comprueba el valor del

semáforo. Si el valor es cero, entonces el proceso que está ejecutando samWaitB se bloquea. Si el valor es 1, entonces se cambia el valor a cero y el proceso continúa su ejecución.

3. La operación semSignalB comprueba si hay algún proceso bloqueado en el semáforo. Si lo hay, entonces se desbloquea uno de los procesos bloqueados en la operación semWaitB. Si hay bloqueados, entonces el valor del semáforo se pone a uno.

Page 61: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

61

Struct binary_semaphore {enum { cero, uno } valor;queueType cola;}void semWaitB(binary_semaphore s){

if (s.valor == 1)s.valor = 0;else

{poner este proceso en s.cola;bloquear este proceso;

} } void semSignalB(binary_semaphore s){

if (esta_vacia(s.cola))s.valor = 1;else

{ extraer un proceso P de s.cola;poner el proceso P en la lista de listos;

}}

Def. d

e p

rim. d

el s

em

áfo

ro b

inario

o m

ute

x

Page 62: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

62

El orden en que son extraídos de la cola es FIFO: el proceso que lleve más tiempo bloqueado es el primero en ser extraído de la cola; un semáforo cuya definición incluye esta política se denomina semáforo fuerte. Un semáforo que no especifica el orden en que los procesos son extraídos de la cola es un semáforo

débil.

Page 63: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

63

Ejemplo de mecanismo de semáforo fuerte:

DCA

CA

BDCs = 1

s = 0

s = -1

A

B

D

procesador

semáforoCola de bloqueados Cola de listos

Cola de listos

Cola de listos

Cola de bloqueados

Cola de bloqueados

1

2

3

Page 64: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

64

CAB

AB C

ABDs = 0

s = -3

s = -2

C

D

D

Cola de bloqueados Cola de listos

Cola de listos

Cola de listos

Cola de bloqueados

Cola de bloqueados

5

6

7

CABs = 0

D

Cola de listosCola de bloqueados

4

Page 65: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

65

El problema de la exclusión mutua se puede resolver correctamente usando los semáforos con sus respectivas operaciones.Los semáforos fuertes garantizan estar libres de inanición, mientras que los semáforos débiles no.Se asumirán semáforos fuertes dado que son más convenientes y porque ésta es la forma típica del semáforo proporcionado por los SO.

Exclusión mutua usando semáforosExclusión mutua usando semáforos

Page 66: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

66

/* programa exclusión mutua */const int n= /* número de procesos */;semafore s = 1;void P(int i){

while (true){

semWait(s);/* sección crítica */;semSignal(s);/* resto */

} } void main(){paralelos (P(1), P(2),…..,P(n));

}

Page 67: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

67

En algún sistema están trabajando en paralelo N (N>=1) procesos de productores y K(K>=1) procesos consumidores. Cada proceso productor está preparando una porción de datos, mandándola después para que la pueda usar alguno de los consumidores. Cada proceso consumidor recibe una porción de datos y la consume

El problema productor/consumidorEl problema productor/consumidor

Page 68: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

68

Productor:while (true){

/*preparación de datos*/;/*envio de datos*/;

}

Consumidor:while (true){

/*recepción de datos*/;/*consumo de datos*/;

}

Page 69: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

69

Es decir, hay uno o más procesos generando algún tipo de datos (registros, caracteres) y poniéndolos en un buffer. Hay un único consumidor que está extrayendo datos de dicho buffer de uno en uno. El sistema estáobligado a impedir la superposición de las operaciones sobre los datos.Asumiremos que el buffer es infinito (buffer no restringido) y consiste en un vector de datos:

Page 70: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

70

Productor:while (true){

/*producir dato v */;b[entra] = v;entra++;

}

Consumidor:while (true){

while (entra <= sale)/*no hacer nada*/;

w = b[sale];sale++

/*consumir dato w */}

Page 71: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

71

/* programa productor consumidor con *//* buffer infinito usando semáforos binarios */int n;binary_semaphore s = 1;binary_semaphore retardo = 0;void productor(){

while (true){

producir();semWaitB(s);anyadir();n++;if (n==1) semSignalB(retardo);semSignalB(s)

} }

Page 72: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

72

void consumidor(){

int m; /* una variable local */ semWaitB(retardo);while (true)

{semWaitB(s);extraer();n--;m = n;semSignalB(s);consumir();if (m==0) semWaitB(retardo);

} } void main()

{n = 0;paralelos (productor, consumidor);

}

Page 73: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

73

MonitoresMonitores

Los semáforos proporcionan una herramienta potente y flexible para conseguir la exclusión mutua y para la coordinación de procesos. Sin embargo, puede ser difícil producir un programa correcto utilizando semáforos. La dificultad es que las operaciones semWait y semSignal pueden estar dispersas a través de un programa y no resulta fácil ver el efecto global de estas operaciones sobre los semáforos a los que afectan.

Page 74: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

74

El monitor es una construcción del lenguaje de programación que proporciona una funcionalidad equivalente a la de los semáforos pero es más fácil de controlar.La construcción monitor ha sido implementada en cierto número de lenguajes de programación, incluyendo Pascal Concurrente, Pascal-Plus, Modula-2, Modula-3 y Java. También ha sido implementada como una biblioteca de programa.

Page 75: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

75

Un monitor es un módulo software consistente en uno o más procedimientos, una secuencia de inicialización y datos locales. Las características son:

Las variables locales de datos son solo accesibles por los procedimientos del monitor y no por ningún procedimiento externo

Un proceso entra en el monitor invocando uno de sus procedimientos

Monitor con señalMonitor con señal

Page 76: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

76

Sólo un proceso puede estar ejecutando dentro del monitor al tiempo; cualquier otro proceso que haya invocado al monitor se bloquea, en espera de que el monitor quede disponible

Las 2 primeras características guardan semejanza con las de los objetos en software OO.

Page 77: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

77

/* programa productor consumidor usando monitor */monitor bufferacotado;char buffer[N];int dentro, fuera;int cuenta;cond nolleno, novacio;void anyadir(char x) {

if (cuenta == N)cwait(nolleno);

buffer[dentro] = x;dentro = (dentro +1) % N;cuenta++;csignal(novacio); }

Void extraer (char x) {if (cuenta == 0)

cwait(novacio);x = buffer[fuera];fuera = (fuera + 1) % N;cuenta--;csignal(no lleno); }

{dentro = 0; fuera = 0; cuenta = 0;

}

Page 78: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

78

void productor(){char x;while (true){

producir(x);anyadir(x);

}} void consumidor(){char x;while (true){

extraer(x);consumir(x);

}}Void main(){

paralelos (productor, consumidor);}

Page 79: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

79

Paso de mensajesPaso de mensajes

Cuando los procesos interaccionan entre sí, deben satisfacerse 2 requisitos fundamentales: sincronización y comunicación.Los proceso necesitan ser sincronizados para conseguir exclusión mutua.Los procesos cooperantes pueden necesitar intercambiar información. Un enfoque que proporciona ambas funciones es el paso de mensajes.

Page 80: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

80

El paso de mensajes tiene la ventaja añadida de que se presta a ser implementado tanto en sistemas distribuidos como en multiprocesadores de memoria compartida y sistemas monoprocesador.La funcionalidad real del paso de mensajes se da en forma de un par de primitivas:

send(destino, mensaje)receive(origen, mensaje)

Page 81: Sistemas Operativos INF -151cotana.informatica.edu.bo/downloads/concurrencia y exc.pdf · Sistemas Operativos INF -151 ... Gestión de múltiples procesos dentro de un multiprocesador

81

Formato de mensajeFormato de mensaje

S1 R1

S1

Sn

R1

R1

Sn

S1

S1

Sn

R1

Rn

PUERTO

BUZON

PUERTO

BUZON

a) uno a uno

c) uno a muchos

b) Muchos a uno

d) Muchos a muchos