Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Semaforos por Mind Map: Semaforos

1. Son tipos de datos compuestos por dos tipos de datos

1.1. 1.-Un contador que siempre su valor es igual o mayor a cero 2.-Una lista de procesos inicialmente vacia

2. Se constituyen por dos metodos elementales

2.1. 1.-Wait ( ) - Denominado por P

2.2. 2.- Signal ( ) - Denomiado por V

3. Existen distintos tipos de semaforos dependiendo del numero de recursos a gestionar

3.1. 1.- Semaforo Contador: Gestiona mas de un recurso

3.2. 2.- Semaforo Binario: Gestiona un solo recurso

3.3. 3.- Semaforo de Exclusion Mutua: Permite que haya un unico proceso simultaneamente dentro de la seccion critica

3.4. 4.- Semaforo de Espera: Se emplea para forzar que un proceso a estado bloqueado hasta que se cumpla la condicion que le permita ejecutarse

4. Ventajas

4.1. Son faciles de implementar

4.2. Restringen o permiten el acceso a recursos

4.3. Se puede ocupar con cualquier numero de recursos

5. Sirve para restringir o dar acceso a recursos compartidos

5.1. Fueron inventados por Edsger Dijkstra en 1965

5.2. Son mecanismos de sincronizacion, ayudan a la ejecucion de dos o mas procesos

6. Metodos o Procesos

6.1. Inicializacion Inicia (Semaforo s, Entero r) { s=r; }

6.1.1. La variable s toma el valor de r, en el que r es el numero de recursos a gestionar

6.2. Espera Wait ( ) - P P(Semaforo s){ { if(s>0) s = s-1; else wait(); }

6.2.1. Si s>0, entonces s tomara el valor s-1 si no se llamara al proceso wait

6.3. Señal Signal ( ) - V V(Semáforo s) { if(!procesos_bloqueados) s = s+1; else signal(); }

6.3.1. SI no existen proceso bloqueados s se le asignara el valor de s+1, si no llamaremos a signal

6.4. Los procesos son indivisibles, no pueden existir modificacion simultanea del o los semaforos o pueden causarse conflictos

7. Desventajas

7.1. La espera activa consume tiempo del procesador

7.2. No existe una asociacion directa entre el semaforo y el recurso que regula u ocupa

8. Aplicaciones

8.1. Se ocuparan con las instrucciones COBEGIN-COEND para lanzar de forma concurrente la ejecución de todos los programas que se encuentran dentro de dicha instrucción.