Publicado el 14 de Enero del 2017
874 visualizaciones desde el 14 de Enero del 2017
276,6 KB
46 paginas
Creado hace 14a (15/03/2011)
UNIVERSIDAD
DE CANTABRIA
Bloque I: Principios de sistemas
operativos
Tema 1. Principios básicos de los sistemas operativos
Tema 2. Concurrencia
Tema 3. Ficheros
Tema 4. Sincronización y programación dirigida por eventos
Tema 5. Planificación y despacho
Tema 6. Sistemas de tiempo real y sistemas empotrados
Tema 7. Gestión de memoria
Tema 8. Gestión de dispositivos de entrada-salida
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
4
© Michael González, J. Javier Gutiérrez
15/mar/11
1
Notas:
UNIVERSIDAD
DE CANTABRIA
Tema 4. Sincronización y programación dirigida por eventos
• Necesidad de la sincronización y principales métodos.
• Sincronización de acceso mutuamente exclusivo.
• Sincronización de espera mediante semáforos.
• Sincronización de espera mediante variables condicionales.
• Interbloqueos (deadlocks).
• Generación, bloqueo y aceptación de señales.
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
2
1. Necesidad de la sincronización y
principales métodos
Los procesos o threads pueden:
• ser independientes de los demás
• cooperar entre ellos
• competir por el uso de recursos compartidos
En los dos últimos casos los procesos deben sincronizarse para:
• intercambiar datos o eventos, mediante algún mecanismo de
UNIVERSIDAD
DE CANTABRIA
señalización y espera, o de paso de mensajes
• usar recursos compartidos de manera mutuamente exclusiva
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
3
UNIVERSIDAD
DE CANTABRIA
Exclusión mutua
Se usa para asegurar la congruencia de los datos o dispositivos
compartidos
Mecanismos habituales:
• semáforos (binarios o contadores)
• mutexes y regiones críticas
• monitores
• regiones críticas condicionales
• variables condicionales
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
4
UNIVERSIDAD
DE CANTABRIA
Semáforos
Tienen una cola de procesos en espera, y un valor que es:
• un entero positivo o cero para los semáforos contadores
• un valor binario (0,1) para los semáforos binarios
Tienen dos operaciones definidas
• “P” o esperar:
- si valor>0 entonces valor:=valor-1
- si valor=0 entonces suspender el proceso (metiéndolo en la cola)
• “V” o señalizar:
- si hay un proceso esperando, activarlo
- si no, valor:=valor+1 (con límite 1 para los binarios)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
5
Semáforos: exclusión mutua
UNIVERSIDAD
DE CANTABRIA
Proceso_1:
begin
...
P(sem);
usar recurso
compartido;
V(sem);
...
end;
Proceso_2:
begin
...
P(sem);
usar recurso
compartido;
V(sem);
...
end;
sem:semáforo (
valor_inicial => 1)
Recurso
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
6
Semáforos: sincronización de espera a
un evento
UNIVERSIDAD
DE CANTABRIA
Proceso_1:
begin
...
Wait(sem);
...
end;
evento
Proceso_2:
begin
...
Post(sem);
...
end;
sem:semaphore (
initial_value => 0)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
7
Mutexes
Muy similares a los semáforos, pero con un nuevo concepto:
• cada recurso tiene un propietario
Su estado puede ser libre, o tomado. Tienen dos operaciones:
• tomar (lock):
UNIVERSIDAD
DE CANTABRIA
- si libre, el estado se cambia a tomado
- si no, espera
- el proceso que toma el mutex es el propietario
• liberar (unlock), sólo permitido al propietario:
- si hay procesos esperando, se activa uno, que se convierte en el
nuevo propietario
- si no, el mutex se libera
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
8
Regiones críticas
Son instrucciones estructuradas en algunos lenguajes
concurrentes
Funcionan como un mutex, pero de manera más fiable
• ya que la operación de liberar está implícita en la instrucción
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
9
UNIVERSIDAD
DE CANTABRIA
Monitores
Un monitor encapsula el código relativo a un recurso compartido
en un solo módulo de programa; ventajas:
• mantenimiento más simple
• menos errores de programación
La interfaz del monitor es un conjunto de funciones que
representan las diferentes operaciones que pueden hacerse con el
recurso
La implementación del monitor garantiza la exclusión mutua
• mediante semáforos o algún otro mecanismo
• o implícitamente en los lenguajes concurrentes
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
10
Monitor: ejemplo
UNIVERSIDAD
DE CANTABRIA
Process_1:
begin
...
d1=Mon1.read();
...
Mon1.write(d2);
...
end;
Process_2:
begin
...
Mon1.write(d3);
...
d4=Mon1.read();
...
end;
monitor Mon1 is
type data is ...;
data read();
void write(data d);
end Mon1;
Mon1 impl.
Recurso:datos
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
11
Monitor: implementación
UNIVERSIDAD
DE CANTABRIA
monitor body Mon1 is
mutex m;
data shared_data;
data read () is
begin
lock(m);
d:=shared_data;
unlock (m);
return d;
end read;
void write(data d) is
begin
lock(m);
shared_data=d;
unlock(m);
end write;
end Mon1;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
12
Paso de mensajes
El paso de mensajes es un mecanismo de sincronización común
en programas concurrentes. Tiene dos operaciones:
• esperar (wait): un proceso espera hasta poder recibir un
UNIVERSIDAD
DE CANTABRIA
mensaje
• señalizar (signal): un proceso envía un mensaje a otro(s)
proceso(s); tiene tres alternativas:
- asíncrona: el proceso que señaliza no espera
- síncrona: el proceso que señaliza espera hasta que el mensaje se
recibe
- punto de encuentro o rendezvous: el proceso que señaliza espera;
cuando el receptor está listo ejecutan un fragmento de código en
común, en el que pueden intercambiar datos en ambas direcciones
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
13
Paso de mensajes (cont.)
Hay dos formas de especificar el destino de un mensaje:
• especificando un proceso destino
• especificando un objeto “buzón” (también llamado canal o cola
UNIVERSIDAD
DE CANTABRIA
de mensajes)
Muchos sistemas ofrecen la espera selectiva, que se puede usar
para esperar a uno de entre varios eventos
Otras operaciones: espera condicional, espera temporizada, y
espera con barreras o condiciones extra
Se suelen usar monitores para encapsular todo el código relativo
a una clase particular de eventos o mensajes
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
14
Paso de mensajes: ejemplo
UNIVERSIDAD
DE CANTABRIA
Proceso Productor:
begin
loop
producir datos;
señalizar
enviando datos
al buffer;
end loop;
end producer;
Proceso Consumidor:
begin
loop
esperar a obtener
datos del buffer;
consumir datos;
end loop;
end consumer;
Buffer
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
15
2. Sincronización de acceso
mutuamente exclusivo
Mutex:
• objeto de sincronización por el que múltiples threads acceden
de forma mutuamente exclusiva a un recurso compartido
UNIVERSIDAD
DE CANTABRIA
• operaciones:
-
-
tomar o bloquear: si el mutex está libre, se toma y el thread
correspondiente se convierte en propietario; si no el thread se
suspende y se añade a una cola
liberar: si hay threads esperando en la cola, se elimina uno de la
cola y se convierte en el nuevo propietario; si no, el mutex queda
libre; sólo el propietario del mutex puede invocar esta operación
• los mutex permiten opcionalmente la herencia de prioridad
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
16
Mutexes en POSIX
Atributos de inicialización:
• pshared: indica si es compartido o no entre procesos:
- PTHREAD_PROCESS_SHARED
- PTHREAD_PROCESS_PRIVATE
UNIVERSIDAD
DE CANTABRIA
• hay otros atributos relativos a la planificación, que veremos más
adelante
Estos atributos se almacenan en un objeto de atributos
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
17
Objetos de atributos para mutex
UNIVERSIDAD
DE CANTABRIA
#include <pthread.h>
int pthread_mutexattr_init
(pthread_mutexattr_t *attr);
int pthread_mutexattr_destroy
(pthread_mutexattr_t *attr);
int pthread_mutexattr_getpshared
(const pthread_mutexattr_t *attr,
int *pshared);
int pthread_mutexattr_setpshared
(pthread_mutexattr_t *attr,
int pshared);
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
18
Inicializar y destruir un mutex
Inicializar un Mutex:
int pthread_mutex_init (pthread_mutex_t *mutex,
const pthread_mutexattr_t *attr);
UNIVERSIDAD
DE CANTABRIA
Destruir un mutex:
int pthread_mutex_destroy (
pthread_mutex_t *mutex);
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
19
Tomar y liberar un mutex
Tomar un mutex y suspenderse si no está libre:
UNIVERSIDAD
DE CANTABRIA
int pthread_mutex_lock (
pthread_mutex_t *mutex);
Tomar un mutex, sin suspenderse:
int pthread_mutex_trylock (
pthread_mutex_t *mutex);
Liberar un mutex
int pthread_mutex_unlock (
pthread_mutex_t *mutex);
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
15/mar/11
2
Comentarios de: Bloque I: Principios de sistemas operativos (0)
No hay comentarios