Docstoc

CCTV y Software

Document Sample
CCTV y Software Powered By Docstoc
					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.

• Un semáforo nos sirve para poder permitir o restringir a los
  procesos o hilos el acceso a algún recurso compartido.

• Los semáforos son una solución, de tipo soporte al sistema
  operativo para garantizar la exclusión mutua.
                                           Operaciones
                                               Bá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.
                                                   Operaciones
                                                       Básicas


        Wait, Down o Espera                          Signal, Up o Señal


Down (semaforo){                           Up (semaforo){
        if (semaforo > 0)                           if hay_proceso_bloqueado
                  semaforo=semaforo -1;                       despertar_el_proceso();
        else                                        else
                  bloquear_el_proceso();                      semáforo = semáforo + 1;
}                                          }
                                                    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áforos
                                                   Ejemplos

                       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            Deadlock
•   Sem[1..N] -- Control De Filosofos
                        Semáforos
                         Ejemplos

Cena de los Filósofos




                        Turnos Cíclicos
                        Semáforos
                         Ejemplos

Cena de los Filósofos




                        Varios Turnos
Filósofos Comensales:

Filosofos(Integer i){         Tomar_Tenedores(Integer i){
   Pensar();                    Down(Exc_Mut);
   Tomar_Tenedores(i);          Status[i]=‘H’;
   Comer();                     Test=‘H’;
   Deja_Tenedores(i);            Up(Exc_Mut);
   Dormir();                     Down(Sema[i]);
}                             }
Dejar_Tenedores(Integer i){
Down(Exc_Mut);                Test(Integer i){
   Status[i]=‘P’;             If(status[izq[i]]<>’C’ and
   test(Der(i));              status[Der(i)]<>’C’ and
   test(Izq(i));              Status[i]==‘H’){
Up(Exc_Mut);                     Status[i]=‘C’;
}                                Up(Sem[i]);
                              }
                              }
              Productor y Consumidor
Program Productor_y_consumidor;       Procedure Consumidor;
var critica,vacios,llenos:Semaforo;     begin
Procedure Productor;                      while ejecucion do
  begin                                    begin
    while ejecucion do                       P(Llenos);
      begin                                  P(Critica);
        obtener_dato;                        Tomar_dato_buffer;
        P(Vacios);                            V(Critica);
        P(Critica);                           V(Vacios);
       Introducir_dato_buffer;                Utilizar_Dato
        V(Critica);                        end
        V(Llenos);                      end;
     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
Program Barbero_Dormilon;              procedure cliente;
var barbero,cliente,critica:semaforo      begin
      Esperando:Integer                     P(critica);
     Ejecucion:Boolean;
                                           If esperando<Cantidad_Sillas;
Procedure Barbero;
                                            then begin
  begin
   while ejecucion do
                                          Esperando:=Esperando+1;
      begin
       P(clientes);                              V(clientes);
       P(critica);                               V(critica);
       Esperando=Esperando-1;                     P(barbero);
       V(Barberos);
       V(critica);                        Obtener_corte_de_pelo;
       Cortar_el_pelo;                           end
     end                                    else V(critica);
 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.

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:0
posted:4/17/2013
language:Unknown
pages:16