sistemas operativos - department of computer scienceso-grado/so-procesos-conc.pdf · sistemas...

23
Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS. Concurrencia P. Cabalar ( Depto. de Computación Universidade da Coruña ) Sistemas Operativos III. Procesos. Concurrencia 1 / 10

Upload: others

Post on 11-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Sistemas Operativos

Pedro Cabalar

Depto. de ComputaciónUniversidade da Coruña

TEMA III. PROCESOS. Concurrencia

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 1 / 10

Page 2: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Ejemplo: spooler de impresora

Spool: Simultaneous Peripheral Operations On-Line. El demoniode impresión consulta el spooler y va imprimiendo los ficheros.

out = siguiente a imprimir; in = siguiente slot libre. Se guardan,p.ej., en un fichero.

Entran 2 procesos A y B y ambos quieren imprimir casi a la vez

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 2 / 10

Page 3: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Ejemplo: spooler de impresora

Spool: Simultaneous Peripheral Operations On-Line. El demoniode impresión consulta el spooler y va imprimiendo los ficheros.

out = siguiente a imprimir; in = siguiente slot libre. Se guardan,p.ej., en un fichero.

Entran 2 procesos A y B y ambos quieren imprimir casi a la vez

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 2 / 10

Page 4: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Ejemplo: spooler de impresora

Podría darse lo siguiente:

time Process A Process B0 regA:=in (regA=7)1 regB:=in (regB=7)2 spooler[regB]:=

“fileB.txt”3 in:=regB+1 (in=8)4 spooler[regA]:=

“fileA.txt”5 in:=regA+1 (in=8)

Error: la orden de impresión de “fileB.txt” se ha perdido. Eldemonio de impresión sólo encontrará “fileA.txt” enspooler[7].

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 3 / 10

Page 5: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Ejemplo: spooler de impresora

Podría darse lo siguiente:

time Process A Process B0 regA:=in (regA=7)1 regB:=in (regB=7)2 spooler[regB]:=

“fileB.txt”3 in:=regB+1 (in=8)4 spooler[regA]:=

“fileA.txt”5 in:=regA+1 (in=8)

Error: la orden de impresión de “fileB.txt” se ha perdido. Eldemonio de impresión sólo encontrará “fileA.txt” enspooler[7].

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 3 / 10

Page 6: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Race conditions

Hay incoherencia en los valores compartidos. A no sabe que Bcambió in := 8 y aún cree regA = 7 = in (incorrecto)

A este tipo de situaciones las llamamos race conditions(“condiciones de carrera”): el resultado final depende del orden deentrelazado de procesos.

Se dan sólo cuando hay recursos compartidos (las variables in,out y el spooler ).

Depurar errores en esta situación es muy complejo. La situaciónde error puede ser infrecuente, pero posible (ver model checkingen VVS, itinerarios Computación e Ingeniería SW)

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 4 / 10

Page 7: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Race conditions

Hay incoherencia en los valores compartidos. A no sabe que Bcambió in := 8 y aún cree regA = 7 = in (incorrecto)

A este tipo de situaciones las llamamos race conditions(“condiciones de carrera”): el resultado final depende del orden deentrelazado de procesos.

Se dan sólo cuando hay recursos compartidos (las variables in,out y el spooler ).

Depurar errores en esta situación es muy complejo. La situaciónde error puede ser infrecuente, pero posible (ver model checkingen VVS, itinerarios Computación e Ingeniería SW)

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 4 / 10

Page 8: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Race conditions

Hay incoherencia en los valores compartidos. A no sabe que Bcambió in := 8 y aún cree regA = 7 = in (incorrecto)

A este tipo de situaciones las llamamos race conditions(“condiciones de carrera”): el resultado final depende del orden deentrelazado de procesos.

Se dan sólo cuando hay recursos compartidos (las variables in,out y el spooler ).

Depurar errores en esta situación es muy complejo. La situaciónde error puede ser infrecuente, pero posible (ver model checkingen VVS, itinerarios Computación e Ingeniería SW)

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 4 / 10

Page 9: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Race conditions

Hay incoherencia en los valores compartidos. A no sabe que Bcambió in := 8 y aún cree regA = 7 = in (incorrecto)

A este tipo de situaciones las llamamos race conditions(“condiciones de carrera”): el resultado final depende del orden deentrelazado de procesos.

Se dan sólo cuando hay recursos compartidos (las variables in,out y el spooler ).

Depurar errores en esta situación es muy complejo. La situaciónde error puede ser infrecuente, pero posible (ver model checkingen VVS, itinerarios Computación e Ingeniería SW)

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 4 / 10

Page 10: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Sección crítica

¿Cómo se evitan las “carreras”?

Detectar regiones o secciones críticas: partes del código de unproceso que manipulan recursos compartidos de formasusceptible de entrar en carrera.

La solución debe garantizar:I Exclusión mutua: dos procesos no están a la vez en sus secciones

críticas

I Independencia de la velocidad o el número de procesadores

I Ningún proceso fuera de sección crítica bloquea a otros procesos

I Ningún proceso debería esperar para siempre a entrar en seccióncrítica

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 5 / 10

Page 11: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Sección crítica

¿Cómo se evitan las “carreras”?

Detectar regiones o secciones críticas: partes del código de unproceso que manipulan recursos compartidos de formasusceptible de entrar en carrera.

La solución debe garantizar:I Exclusión mutua: dos procesos no están a la vez en sus secciones

críticas

I Independencia de la velocidad o el número de procesadores

I Ningún proceso fuera de sección crítica bloquea a otros procesos

I Ningún proceso debería esperar para siempre a entrar en seccióncrítica

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 5 / 10

Page 12: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Sección crítica

¿Cómo se evitan las “carreras”?

Detectar regiones o secciones críticas: partes del código de unproceso que manipulan recursos compartidos de formasusceptible de entrar en carrera.

La solución debe garantizar:I Exclusión mutua: dos procesos no están a la vez en sus secciones

críticas

I Independencia de la velocidad o el número de procesadores

I Ningún proceso fuera de sección crítica bloquea a otros procesos

I Ningún proceso debería esperar para siempre a entrar en seccióncrítica

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 5 / 10

Page 13: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Atomicidad

Existen muchas soluciones (ver Concurrencia y paralelismo 2ocuatrimestre).

En la mayoría se usa atomicidad. Una secuencia de operacioneses atómica si el SO garantiza que no se cambia de procesodurante ellas. Su ejecución es indivisible.

Ejemplos de soluciones con atomicidad: : semáforos (Dijkstra1965), monitores (Hansen 1973, Hoare 1974)

La solución más habitual para procesos en UNIX es el uso desemáforos.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 6 / 10

Page 14: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Atomicidad

Existen muchas soluciones (ver Concurrencia y paralelismo 2ocuatrimestre).

En la mayoría se usa atomicidad. Una secuencia de operacioneses atómica si el SO garantiza que no se cambia de procesodurante ellas. Su ejecución es indivisible.

Ejemplos de soluciones con atomicidad: : semáforos (Dijkstra1965), monitores (Hansen 1973, Hoare 1974)

La solución más habitual para procesos en UNIX es el uso desemáforos.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 6 / 10

Page 15: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Atomicidad

Existen muchas soluciones (ver Concurrencia y paralelismo 2ocuatrimestre).

En la mayoría se usa atomicidad. Una secuencia de operacioneses atómica si el SO garantiza que no se cambia de procesodurante ellas. Su ejecución es indivisible.

Ejemplos de soluciones con atomicidad: : semáforos (Dijkstra1965), monitores (Hansen 1973, Hoare 1974)

La solución más habitual para procesos en UNIX es el uso desemáforos.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 6 / 10

Page 16: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

SemáforosUn semáforo es una variable entera sem con dos operaciones:

1 P(sem) o Wait(sem). Ejecuta de forma atómica las instrucciones:

wait until sem>0;sem--;

2 V (sem) o Signal(sem). Ejecuta simplemente:

sem++;

Un proceso bloqueado en wait until sem>0 no consumeCPU (queda en espera)

Cuando otro proceso ejecuta un Signal(sem), el SO toma algunode los que esperan por sem y lo despierta. Esto lo hace de formaatómica.

Por último, el proceso que despierta de su Wait(sem) decrementael semáforo de forma atómica.

Un semáforo binario es aquel que toma sólo valores {0,1}.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 7 / 10

Page 17: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

SemáforosUn semáforo es una variable entera sem con dos operaciones:

1 P(sem) o Wait(sem). Ejecuta de forma atómica las instrucciones:

wait until sem>0;sem--;

2 V (sem) o Signal(sem). Ejecuta simplemente:

sem++;

Un proceso bloqueado en wait until sem>0 no consumeCPU (queda en espera)

Cuando otro proceso ejecuta un Signal(sem), el SO toma algunode los que esperan por sem y lo despierta. Esto lo hace de formaatómica.

Por último, el proceso que despierta de su Wait(sem) decrementael semáforo de forma atómica.

Un semáforo binario es aquel que toma sólo valores {0,1}.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 7 / 10

Page 18: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

SemáforosUn semáforo es una variable entera sem con dos operaciones:

1 P(sem) o Wait(sem). Ejecuta de forma atómica las instrucciones:

wait until sem>0;sem--;

2 V (sem) o Signal(sem). Ejecuta simplemente:

sem++;

Un proceso bloqueado en wait until sem>0 no consumeCPU (queda en espera)

Cuando otro proceso ejecuta un Signal(sem), el SO toma algunode los que esperan por sem y lo despierta. Esto lo hace de formaatómica.

Por último, el proceso que despierta de su Wait(sem) decrementael semáforo de forma atómica.

Un semáforo binario es aquel que toma sólo valores {0,1}.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 7 / 10

Page 19: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

SemáforosUn semáforo es una variable entera sem con dos operaciones:

1 P(sem) o Wait(sem). Ejecuta de forma atómica las instrucciones:

wait until sem>0;sem--;

2 V (sem) o Signal(sem). Ejecuta simplemente:

sem++;

Un proceso bloqueado en wait until sem>0 no consumeCPU (queda en espera)

Cuando otro proceso ejecuta un Signal(sem), el SO toma algunode los que esperan por sem y lo despierta. Esto lo hace de formaatómica.

Por último, el proceso que despierta de su Wait(sem) decrementael semáforo de forma atómica.

Un semáforo binario es aquel que toma sólo valores {0,1}.

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 7 / 10

Page 20: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Solución al spooler

Declaramos un semáforo binario mutex inicializado conmutex = 1.

Cada vez que un proceso imprime, ejecuta:

void printFile(char *fname) {wait(mutex);load shared var "in" into reg;spooler[reg]=fname;write reg+1 in shared var "in";signal(mutex);

}

Cuando vaya a imprimir, el printer daemon también tendrá queacceder al spooler usando mutex

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 8 / 10

Page 21: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Solución al spooler

Declaramos un semáforo binario mutex inicializado conmutex = 1.

Cada vez que un proceso imprime, ejecuta:

void printFile(char *fname) {wait(mutex);load shared var "in" into reg;spooler[reg]=fname;write reg+1 in shared var "in";signal(mutex);

}

Cuando vaya a imprimir, el printer daemon también tendrá queacceder al spooler usando mutex

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 8 / 10

Page 22: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Llamadas UNIX: semop, semget y semctl

UNIX permite manipular un array de semáforos de forma atómica

Ejemplo de llamadas con semáforos:

/* similar a descriptor de fichero */int idgruposem;

/* Creando tres semaforos: 0,1,2 */if( (idgruposem = semget(IPC_PRIVATE, 3,

IPC_CREAT|0777))== -1 ){perror("Error al crear los semaforos");return(-1);

}

/* Valor inicial del semaforo 0 es 5 */semctl(idgruposem, 0, SETVAL, 5);

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 9 / 10

Page 23: Sistemas Operativos - Department of Computer Scienceso-grado/SO-Procesos-conc.pdf · Sistemas Operativos Pedro Cabalar Depto. de Computación Universidade da Coruña TEMA III. PROCESOS

Llamadas UNIX: semop, semget y semctlvoid wait(ushort num_sem) {struct sembuf operac;operac.sem_num = num_sem;operac.sem_op = -1;operac.sem_flg = 0;semop(idgruposem, &operac, 1);

}void signal(ushort num_sem) {struct sembuf operac;operac.sem_num = num_sem;operac.sem_op = 1;operac.sem_flg = 0;semop(idgruposem, &operac, 1);

}void liberar(ushort num_sem) {semctl(idgruposem,0,IPC_RMID);

}

P. Cabalar ( Depto. de Computación Universidade da Coruña )Sistemas Operativos III. Procesos. Concurrencia 10 / 10