La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Teoría de Sistemas Operativos Sincronización Procesos

Presentaciones similares


Presentación del tema: "Teoría de Sistemas Operativos Sincronización Procesos"— Transcripción de la presentación:

1 Teoría de Sistemas Operativos Sincronización Procesos
Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz

2 Dos o más procesos leen o escriben ciertas zonas compartidas
El resultado final puede depender de lo que cada proceso ejecutó.

3 Supongamos el siguiente problema:
Tenemos una Base de Datos financiera. Cada ficha representa una persona y puede o no tener deuda. El código que permite buscar deudores es el siguiente:

4 void main(){ int deudores busca(0,3000); busca(3001, 5000); printf(“Deudores: %d”,deudores); } void busca(int ind1, ind2) { for(i=ind1; i<=ind2; i++) if(esDeudor(i)) deudores++;

5 Qué pasa si modificamos el código de la siguiente manera?
void main(){ int deudores pid=fork() if(pid==0){ busca(0,3000);} else{ busca(3001, 5000); } printf(“Deudores: %d”,deudores); }

6 Lo anterior se conoce como una
“condición de competencia”. Existe la necesidad de eliminar este tipos de condiciones. El resultado final no puede depender Del tiempo ni del lugar de ejecución de los procesos

7 Exclusión Mutua: concepto que garantiza que si un proceso utiliza un recurso compartido, los demás no pueden utilizarlo. Sección Crítica: Parte del programa en la que tiene acceso al recurso compartido.  Para evitar que existan condiciones de competencia, se debe evitar que dos o más procesos accedan al mismo tiempo a la Sección Crítica

8 Cualquier solución al problema debe cumplir:
1.Dos procesos no deben encontrarse al mismo tiempo dentro de sus secciones críticas. 2.No se deben hacer hipótesis sobre la velocidad o el número de CPU. 3.Ningún proceso que esté en ejecución fuera de su sección crítica puede bloquear a otros procesos. 4.Ningún proceso debe esperar eternamente para entrar a su sección crítica.

9 Alternancia estricta:
 ¿Qué sucede si un proceso quiere entrar dos veces consecutivas a su sección crítica?

10 Solución de Peterson: Para el proceso P(i), i=0,1: otro=1-i;
while (TRUE) { interesado[i] = TRUE; turno = otro; while (interesado[otro] && turno==otro); sección_crítica(); interesado[i]=FALSE; sección_no_crítica(); } Inicialmente interesado[0]=interesado[1]=FALSE y turno puede ser 1 o 0.

11 Solución de Peterson: Exclusión Mutua: Dos procesos quieren entrar:
No pueden entrar al mismo tiempo, porque la condición de espera en el while no puede ser falsa para ambos procesos a la vez. Entonces supongamos que Pi entra primero. En ese caso, turno=i, y para que el otro entre, turno debe cambiar a 1-i, o bien interesado[i] a FALSE. El único que hace esos cambios es el propio proceso i, y lo hace cuando está fuera de su sección crítica.

12 Solución de Peterson: Ausencia de Aplazamiento indefinido (starvation)
Si el proceso i quiere entrar y el otro está ejecutando su sección no crítica,  interesado[otro]==FALSE y Pi no tiene impedimento para entrar. Entrada garantizada. Si un proceso quiere entrar, a lo más debe esperar que el otro salga de la sección crítica

13 Instrucción TSL: Lee el contenido de una palabra de memoria en un registro para después almacenar un valor distinto de cero en esa dirección Las operaciones de lectura y almacenamiento de la palabra tienen la garantía de ser indivisibles

14 Instrucción TSL: Se emplea una variable compartida, flag. Ésta coordina el acceso al recurso compartido. Cuando flag==0, cualquier proceso puede darle el valor 1 mediante la instrucción TSL y después leer o escribir en el recurso compartido. Al terminar, el proceso vuelve a hacer flag=0.

15 Instrucción TSL:

16 Semáforos: Un semáforo es una variable entera (positiva), cuyo valor sólo puede ser accesado mediante las operaciones wait y signal

17 Semáforos: WAIT: verifica si el valor de un semáforo es mayor que cero y en este caso decrementa dicho valor y el proceso continúa. Si es cero, el proceso se va a dormir Las modificaciones al valor del semáforo sólo se ejecutan en forma indivisible, es decir, si un proceso está modificando un semáforo ningún otro proceso puede esta modificando el mismo valor

18 Semáforos: SIGNAL: incrementa el valor del semáforo respectivo. Si uno o más procesos dormían y no podían completar una operación SIGNAL anterior, el SO elige alguno de ellos y se le permite terminar la operación WAIT.  después de un SIGNAL en un semáforo con procesos durmiendo, dicho semáforo seguirá con valor 0, pero habrá un menor número de procesos durmiendo.

19 Semáforos:

20 Se produce cuando un proceso de un sistema multiprogramado espera un evento que nunca va a ocurrir.
Un conjunto de procesos está en deadlock cuando cada proceso en el conjunto está esperando por un evento que solo puede ser causado por otro proceso en el conjunto.

21 Ejemplo ¿ Cuándo hay Bloqueo Mutuo ?

22 Condiciones para un bloqueo:
1.- Condición de exclusión mutua. Cada recurso está asignado a un proceso o está disponible P1 R1 Asignado R1

23 Condiciones para un bloqueo:
2.- Condición de posesión y espera Los procesos que tienen recursos asignados con anterioridad, pueden solicitar nuevos recursos. P1 R1 Asignado Solicita R2

24 Condiciones para un bloqueo:
Condición de no apropiación Los recursos asignados no pueden ser forzados a dejar un proceso  El proceso que los posee debe liberarlos en forma explícita.

25 Condiciones para un bloqueo:
Condición de espera circular Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso asignado por el siguiente miembro de la cadena. Asignado P1 Solicita R2 R1 P2 Solicita Asignado

26

27

28

29 Evitar un bloqueo: En vez de restringir la forma u orden en que los procesos deben solicitar recursos, podríamos chequear que sea seguro conceder un recurso, antes de otorgarlo. Obs: Necesitamos que cada proceso declare la cantidad máxima de recursos de cada clase que va a necesitar:

30 Evitar un bloqueo: Un estado de asignación de recursos es el número de recursos disponibles y asignados, y el máximo declarado por cada proceso. Un estado seguro es un estado en el cual el sistema puede asignar recursos a los procesos (hasta su máximo) en alguna secuencia, y evitar bloqueo mutuo

31 Evitar un bloqueo: Un estado es seguro sólo si existe una secuencia segura, es decir, una secuencia de procesos <P1, P2,...,Pn > donde, para cada Pi, los recursos que Pi aún puede solicitar pueden satisfacerse con los recursos disponibles y los retenidos por Pj con j<i. (Si los recursos que Pi necesita no están disponibles, Pi puede esperar hasta que los Pj terminen). Si no existe tal secuencia, se dice que el sistema está en un estado inseguro

32 Consideremos un sistema con 12 unidades
de cinta y 3 procesos: P1,P2,P3. t0 Asignado Máximo Requerimiento Total recursos libres P0 5 10 3 P1 2 4 P2 9 En t0 el sistema esta en un estado seguro, con secuencia P1,P0,P2.

33 Consideremos un sistema con 12 unidades
de cinta y 3 procesos: P1,P2,P3. t0 Asignado Máximo Requerimiento Total recursos libres P0 5 10 2 P1 4 P2 3 9 En t0 el sistema está en un estado inseguro, No hay secuencia segura  puede existir bloqueo mutuo.

34 Algoritmo del Banquero
Generalización del esquema anterior. N Procesos(Pi , i=1,..N) y M recursos (Rj, j=1,..M). Cada recurso puede tener más de una instancia. Estructuras necesarias: Disponible: Vector de tamaño M. Indica el número de recursos disponibles de cada tipo. Disponible[j] =k significa que k instancias del Recurso Rj están disponibles.

35 Algoritmo del Banquero
Estructuras necesarias: Máx: Matriz de NxM. Define la máxima demanda de cada proceso. Max[i,j]=k ,implica que el Proceso Pi requiere a lo más k instancias del recurso Rj . Asignado: Matriz de NxM. Define el número de recursos de cada tipo concurrentemente asignado a cada proceso. Asignado[i,j]=k ,implica que el proceso Pi tiene asignado k instancias del recurso Rj .

36 Algoritmo del Banquero
Estructuras necesarias: Necesarios: Matriz de NxM. Indica el remanente de recursos necesarios para cada proceso. Necesarios[i,j]=k , indica que el proceso Pi puede necesitar k instancias del recurso Rj para completar su tarea. Necesarios[i,j] = Max[i,j] – Asignado[i,j]

37 Algoritmo del Banquero
1.- Sea W:=Disponible y F[i]=[0 0 … 0] (1 x N) 2.- Buscar un Pi tal que F[i]==0 Necesarioi <= W Si no existe, ir al paso 4 3.- W:= W + Asignadoi F[i] := 1 Ir al paso 2 4.- Si F[i]==1 para todo i, el sistema está en un estado seguro.

38 Consideremos un sistema con 5 procesos y 3 tipos de recursos, cuyas instancias son A=10, B=5, C=7 y en t0 el estado es el siguiente:

39 1 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

40 2 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

41 ¿Es seguro el estado del sistema?
2 OK  W:= W + Asignadoi F[i] := 1

42 ¿Es seguro el estado del sistema?
3 OK  W:= W + Asignadoi F[i] := 1

43 4 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

44 4 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

45 4 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

46 ¿Es seguro el estado del sistema?
5 OK  W:= W + Asignadoi F[i] := 1

47 ¿Es seguro el estado del sistema?
5 OK  W:= W + Asignadoi F[i] := 1

48 6 ¿Es seguro el estado del sistema? ? Buscamos : F[i]==0
Necesarioi <= W

49 ¿Es seguro el estado del sistema?
Si se termina el algoritmo, se tendrá que Una secuencia segura es: Secuencia = [P1, P3, P0, P2, P4] El sistema es seguro en t0 y la asignación de recursos no producirá bloqueos. Si en t1 Asignado4=[3 3 0], ¿es seguro el sistema?


Descargar ppt "Teoría de Sistemas Operativos Sincronización Procesos"

Presentaciones similares


Anuncios Google