Actualizado el 21 de Marzo del 2018 (Publicado el 23 de Febrero del 2018)
632 visualizaciones desde el 23 de Febrero del 2018
45,0 KB
11 paginas
Creado hace 21a (16/04/2004)
Contenidos
(cid:132) El problema de la sección crÃtica
(cid:132) Semáforos
(cid:132) Regiones crÃticas
(cid:132) Monitores
© Alexis Quesada Arencibia
ProgramaciónConcurrente
1
BibliografÃa
(cid:132) Programación Concurrente
J. Palma, C. Garrido, F. Sánchez, A. Quesada, 2003
(cid:132)
(cid:132) CapÃtulo 6
(cid:132) Concurrent Programming
(cid:132) A. Burns, G. Davies. Addison-Wesley, 1993
(cid:132) CapÃtulo 7
(cid:132) Principles of Concurrent and Distributed Programming
(cid:132) M. Ben-Ari. Prentice Hall, 1990
(cid:132) CapÃtulo 5
(cid:132) Sistemas Operativos
(cid:132) A. Silberschatz, P. Galvin. Addison-Wesley, 1999
(cid:132) CapÃtulo 6
© Alexis Quesada Arencibia
ProgramaciónConcurrente
2
Monitor
(cid:132) Tipo de datos
(cid:132) Estructuras de datos
(cid:132) Conjunto de operaciones asociadas a tales
estructuras
+
(cid:132) Exclusión mutua
(cid:132) Sincronización (variables condición)
© Alexis Quesada Arencibia
ProgramaciónConcurrente
3
Monitor
monitor nombre_monitor;
{código del procedimiento}
var variables locales;
export procedimientos exportados;
procedure P1(parametros)
var variables locales;
begin
end;
...
procedure PN(parametros)
var variables locales;
begin
end;
{código de inicialización}
{código del procedimiento}
begin
end;
© Alexis Quesada Arencibia
ProgramaciónConcurrente
4
Variables condición
(cid:132) Declaración
(cid:132) var x: condition;
(cid:132) Operaciones
(cid:132) delay(x);
(cid:132) resume(x);
(cid:132) empty(x);
© Alexis Quesada Arencibia
ProgramaciónConcurrente
5
Variables condición
(cid:132) ¿ Qué ocurre cuando un proceso P
realiza una operación resumesobre
una variable condición x y existe un
proceso suspendido Q asociado a dicha
variable?
© Alexis Quesada Arencibia
ProgramaciónConcurrente
6
Semántica de la operación
resume
(cid:132) Desbloquear y continuar
(cid:132) Lenguaje Mesa
(cid:132) Retorno forzado
(cid:132) Concurrent Pascal
(cid:132) Desbloquear y esperar
(cid:132) Modula-2, Concurrent Euclid
(cid:132) Desbloquear y espera urgente
(cid:132) Pascal-FC, Pascal Plus
© Alexis Quesada Arencibia
ProgramaciónConcurrente
7
Variables condición
(cid:132) Si varios procesos están suspendidos
por la condición x y algún proceso
ejecuta x.signal, ¿ qué proceso se
reanuda?
© Alexis Quesada Arencibia
ProgramaciónConcurrente
8
Monitor con variables condición
colas asociadas a las
variables condición x e y
x
y
datos compartidos
cola de ingreso
...
operaciones
código de
inicialización
© Alexis Quesada Arencibia
ProgramaciónConcurrente
9
Ejercicios
(cid:132) En un sistema concurrente existen dos tipos de
procesos, A y B, que compiten por utilizar cierto
recurso. Al recurso se accede mediante la rutina de
solicitarlo, esperar hasta que se pueda usar, usarlo y
luego liberarlo. En cualquier momento puede haber
un máximo de N procesos de cualquier tipo usando el
recurso (N es constante). Por otro lado, para que un
proceso de tipo A pueda entrar a emplear el recurso,
debe haber al menos el doble de procesos de tipo B
que procesos de tipo A dentro del recurso. Diseñe un
algoritmo que cumpla con estas reglas de
funcionamiento empleando regiones crÃticas
© Alexis Quesada Arencibia
ProgramaciónConcurrente
10
Ejercicios
(cid:132) Supongamos dos operaciones: pedir_memoria(cantidad) y
dejar_memoria(cantidad). Cuando un proceso pide memoria, se
bloquea hasta que haya la cantidad pedida de páginas libres, una vez
que ocurre las toma. Un proceso devuelve las páginas llamando a
dejar_memoria. Implementar dichas operaciones usando RCC en los
siguientes supuestos:
(cid:132)
Implementar la sincronización sin establecer ninguna polÃtica de quién
recibe primero.
(cid:132) Modificar lo anterior para que el trabajo que pide menos memoria sea el
primero.
salir o ser atendido.
(cid:132) Cambiar la polÃtica anterior para que el primero en llegar sea el primero en
(cid:132) Suponer que pedir y dejar devuelven páginas contiguas. Es decir, si un
proceso reclama dos páginas, se retrasa hasta que haya dos páginas
adyacentes disponibles. Desarrollar implementaciones de esa versión de
pedir_memira y dejar_memoria. Elegir una representación del estado de
páginas de memoria.
© Alexis Quesada Arencibia
ProgramaciónConcurrente
11
Comentarios de: Tema 2. Monitores (0)
No hay comentarios