210 likes | 743 Views
Semáforos. Daniel Morillo Jorge Boscán Gregory Carrasco. Semáforos Conceptos. Un semáforo es una estructura diseñada para sincronizar dos o más threads o procesos, de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos.
E N D
Semáforos Daniel Morillo Jorge Boscán Gregory Carrasco
SemáforosConceptos • Un semáforo es una estructura diseñada para sincronizar dos o más threads o procesos, de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos. • Un semáforo nossirveparapoderpermitir o restringir a los procesos o hilos el acceso a algúnrecursocompartido. • Los semáforos son una solución, de tipo soporte al sistema operativo para garantizar la exclusión mutua.
OperacionesBásicas Inicializador •Los semáforos pueden ser de 2 tipos: Binarios o Generales (Contadores). •La operación de inicializador definirá si el semáforo será binario o no, es decir, si se inicializa con 1, el semáforo será binario ya que solo podrá manejar un recurso compartido, en caso de tener “N” recursos compartidos se inicializara con “N”. •Si tenemos “N” procesos inicializamos un semáforo para que solo “N” procesos acceda a un recurso compartido.
OperacionesBásicas Wait, Down o Espera Signal, Up o Señal Up (semaforo){ ifhay_proceso_bloqueado despertar_el_proceso(); else semáforo = semáforo + 1; } Down (semaforo){ if (semaforo > 0) semaforo=semaforo -1; else bloquear_el_proceso(); }
Semáforos Problemas Que Pueden Surgir Con Mala Sincronizacion: DeadLock: Dos o mas procesos estan esperando por una condicion que solo puede ser causada por una hebra que tambien esta esperando. Starvation o Espera Indefinida: Un proceso en la lista de espera de un semaforo de la cual estan entrando y saliendo continuamente hebras y listas de espera de semaforo.
SemáforosEjemplos Cena de los Filósofos • Los Filosofos Piensan • Los Filosofos Comen • Toman 2 tenedores • Los Filosofos Duermen Variables: • Status [1..N] - P (pensando), H (hambriento) • C(comiendo) Semaforos: • Exc_Mut -- Para Proteger a Status • Sem[1..N] -- Control De Filosofos Deadlock
SemáforosEjemplos Cena de los Filósofos Turnos Cíclicos
SemáforosEjemplos Cena de los Filósofos Varios Turnos
Productor y Consumidor ProgramProductor_y_consumidor; varcritica,vacios,llenos:Semaforo; Procedure Productor; begin whileejecucion do begin obtener_dato; P(Vacios); P(Critica); Introducir_dato_buffer; V(Critica); V(Llenos); end end; Procedure Consumidor; begin whileejecucion do begin P(Llenos); P(Critica); Tomar_dato_buffer; V(Critica); V(Vacios); Utilizar_Dato end end;
Productor y Consumidor BEGIN (*principal*) IniciaSemaforo (critica, 1); IniciaSemaforo (vacios, n); IniciaSemaforo (llenos, 0); COBEGIN Productor; Consumidor; COEND; END. (*PRODUCTOR_Y_CONSUMIDOR*)
Barbero Dormilón procedure cliente; begin P(critica); If esperando<Cantidad_Sillas; thenbegin Esperando:=Esperando+1; V(clientes); V(critica); P(barbero); Obtener_corte_de_pelo; end else V(critica); end; ProgramBarbero_Dormilon; varbarbero,cliente,critica:semaforo Esperando:Integer Ejecucion:Boolean; Procedure Barbero; begin whileejecucion do begin P(clientes); P(critica); Esperando=Esperando-1; V(Barberos); V(critica); Cortar_el_pelo; end end;
Barbero Dormilón BEGIN (*principal*) IniciaSemaforo (clientes,0); IniciaSemaforo (barbero,0); IniciaSemaforo (critica,1); COBEGIN Barbero; Clientes; COEND END.
Problema • Cenicienta y el Príncipe se quieren divorciar. Para dividir sus propiedades, han acordado el siguiente algoritmo. Cada mañana uno de ellos debe enviar una carta al abogado del otro para solicitar un elemento de su propiedad. Puesto que una carta tarda un día en ser entregada, han acordado que si ambos descubren que han solicitado el mismo artículo el mismo día, al día siguiente enviarán una carta para cancelar la solicitud. Entre sus propiedades están su perro Woofer, su perrera, su canario Piolín y la jaula del canario. Los animales aman sus casas, por lo cual han acordado invalidar cualquier división de la propiedad que separe a un animal de su casa, por lo que la división deberá volver a iniciarse desde cero. Tanto Cenicienta como el príncipe desean de forma desesperada a Woofer. Ambos se van de vacaciones (separados) y cada uno de ellos programa una computadora personal para manejar la negociación. Al regresar de sus vacaciones, las computadoras continúan negociando. ¿Por qué? ¿Es posible el bloqueo? ¿Es posible la inanición? Explique.
Solución • Tanto Cenicienta como el Príncipe se pueden asociar con dos procesos de igual prioridad que hacen petición de un conjunto de recursos (objetos de exclusión mutua) que representan el perro, la perrera, el pájaro y su jaula. Las peticiones que se efectúan por carta, son totalmente sincronías, por lo cual no hay forma de determinar la prioridad de la petición según el orden de llegada. Como ambos procesos piden primero al perro (desean de forma desesperada a Woofer) • Al efectuar ambos la petición del perro como primera petición, dicha solicitud será cancelada al día siguiente como se acordó en un principio. En caso de que se asigne el perro a cualquiera de los dos entes (procesos), existe la posibilidad de que el otro proceso se adjudique la casa del mismo. Esta transacción se anulara también, y se comenzara desde cero puesto que se acordó que no será valida ninguna partición donde algún animal quede sin su casa. Al reiniciarse el algoritmo, si no se usa un elemento aleatorio, existe el riesgo de interbloqueo, y por ende de inanición. • Una posible solución es que las peticiones no sean síncronas, o que exista un manejo de las prioridades de los procesos por parte del abogado (Sistema Operativo) para la asignación de los recursos.
¡GRACIAS POR SU ATENCIÓN!