Beruflich Dokumente
Kultur Dokumente
Fernando Schapachnik
Departamento de Computaci on, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina
Fernando Schapachnik
Problema:
Tenemos una serie de procesos Pi , i {1 . . . N } que se est an ejecutando en simult aneo (supongamos que tenemos N CPUs). Cada proceso i tiene una sentencia si . Queremos que en el sistema global se ejecuten s 1, s 2, . . . , sN .
Fernando Schapachnik
Listing 2: Proceso Pi
p r o c P( i ) { s e m a n t= s e m a f o r o s [ i ] ; s e m s i g= s e m a f o r o s [ i + 1 ] ; sem ant . wait ( ) ; s( i ); sem sig . s i g n a l ( ) ; }
Fernando Schapachnik Problemas cl asicos de sincronizaci on entre procesos
Otro problema muy com un es el de rendezvous (punto de encuentro), o barrera de sincronizaci on. Dados Pi = [a(i ); b(i )], i {1 . . . N }, asegurarse que los b(i ) se ejecuten reci en despu es de que se ejecutaron todos los a(i ). Es decir, queremos poner una barrera entre los a y los b. Sin embargo, no hay que restringir de m as: no hay que imponer ning un orden entre los a(i ) ni entre los b(i ).
Fernando Schapachnik
Listing 3: Inicializaci on
proc i n i t () { e n b a r r e r a= 0 ; // Cant . de p r o c s en l a b a r r e r a . mutex= new S e m a f o r o ( 1 ) ; // P e r m i t o empezar de i n m e d i a t o . b a r r e r a= new S e m aforo ( 0 ) ; f o r ( i= 0 ; i <N ; } i ++) f o r k P( i ) ;
Fernando Schapachnik
Fernando Schapachnik
Listing 8: Proceso Pi
p r o c P( i ) { sem . w a i t ( ) ; sc ( i ) ; sem . s i g n a l ( ) ; }
Fernando Schapachnik Problemas cl asicos de sincronizaci on entre procesos
(11) Apareamiento
Vamos a presentar una versi on no cl asica de un problema cl asico. Est a el Crucero de Noel, donde queremos guardar parejas de distintas especies (no s olo una por especie). Hay una puerta por cada especie. Los animales forman la en cada puerta, en dos colas, una por sexo. Queremos que entren en parejas. Tarea: programar el c odigo de cada proceso P (i, sexo). Pista: usar dos sem aforos y la funci on entrar(i). Tarea adicional: una u nica puerta, pero tiene que coincidir la especie. Ojo con el deadlock!
Fernando Schapachnik
(12) Lectores/escritores
Otro problema m as. Se da mucho en bases de datos. Hay una variable compartida. Los escritores necesitan acceso exclusivo. Pero los lectores pueden convivir. C omo podr a solucionarse?
Fernando Schapachnik
Los escritores necesitan acceso exclusivo, sin vueltas: Listing 10: Escritores
proc E s c r i t o r ( i ) { a c c e s o e x c l u s i v o . wait ( ) ; E s c r i b i r ( compartida ) ; acceso exclusivo . signal (); }
Fernando Schapachnik Problemas cl asicos de sincronizaci on entre procesos
escritores .
Fernando Schapachnik
Puede haber deadlock? No, pero puede haber inanici on de escritores. Tarea: pensar c omo evitarlo.
Fernando Schapachnik
Empecemos por algunas deniciones b asicas: Macros c omodas para los tenedores:
izq(i) = i der(i) = (i + 1) mod 5
Qu e son los tenedores? Seguro que hay que garantizar acceso exclusivo a ellos: Un arreglo: tenedores[i]= new Sem aforo(1)
Fernando Schapachnik
Est a bien? Esta soluci on garantiza EXCL, pero falla con DEAD. C omo rompemos el deadlock? Pensemos en las condiciones. Tarea: pensar en soluciones para este problema. Buscar las ya existentes.
Fernando Schapachnik Problemas cl asicos de sincronizaci on entre procesos
(19) Barbero
Otro problema cl asico: En una peluquer a hay dos salas, una de espera, con n sillas y otra donde est a la u nica silla donde el u nico peluquero corta el pelo. Si no hay clientes, el peluquero se duerme una siesta. Si entra un cliente, y no se puede sentar a esperar, se va. Si el peluquero est a dormido, lo despierta.
Fernando Schapachnik
El peluquero es sencillo:
proc Peluquero while ( true ) { a l g u n c l i e n t e . wait ( ) ; pasar . s i g n a l ( ) ; cortar pelo (); }
Fernando Schapachnik
(22) Bibliograf a
The Little Book of Semaphores, Second Edition. Allen B. Downey. http://greenteapress.com/semaphores/ Cooperating sequential processes. Edgar W. Dijkstra. Technical Report 123, Univ. Texas. http://www.cs.utexas. edu/users/EWD/transcriptions/EWD01xx/EWD123.html.
Fernando Schapachnik