fbpx
Wikipedia

Algoritmo de Eisenberg - McGuire

Es el primer algoritmo conocido que soluciona el problema de la Sección Crítica para n procesos, con un límite de n-1 turnos.

Fue realizado por Murray A. Eisenberg y Michael R. McGuire en la década de 1970.

Algoritmo

Todos los procesos comparten las siguientes variables, siendo n el número de hebras.

 enum estado = {IDLE, ESPERANDO, ACTIVO};  estado flags[n];  int turno; 

A la variable turno se le asigna aleatoriamente un valor entre 0 y n-1 al inicio del algoritmo.

La variable flags (Bandera) de cada hilo se pone en estado ESPERANDO cada vez que tiene intención de entrar en la sección crítica. La variable flasgs es inicializada en IDLE (Inactivo).

 Repetir {  /* anunciar que necesitamos el recurso */  flags[i] := ESPERANDO;  /* Escanear los procesos partiendo desde el que posee el turno. */  /* Repite hasta encontrar todos los procesos en IDLE */  indice := turno;  mientras (indice != i) {  Si (flags[índice] != IDLE) indice := turno;  Si_no índice := (indice+1) mod n;  }  /* Reclamamos temporalmente el Recurso */  flags[i] := ACTIVO;  /* Encontrar el primer proceso activo además de nosotros, si existe */  indice := 0;  mientras ((índice < n) && ((indice = i) || (flags[indice] != ACTIVO))) {  indice := indice+1;  }  /* Si no hay otros procesos activos, y tenemos el turno, o si todos los demás tienen estado IDLE, proceder, en otro caso, repetir */  } Hasta que ((indice >= n) && ((turno = i) || (flags[turno] = IDLE)));  /* INICIO SECCIÓN CRÍTICA */  /* reclamar el turno y proceder */  turno := i;  /* Código de Sección Crítica */  /* FIN de SECCIÓN CRÍTICA */  /* Encuentra un proceso que no esté IDLE */  /* (Si no hay otro nos encontraremos a nosotros mismos.) */  indice := (turno+1) mod n;  mientras (flags[indice] = IDLE) {  indice := (indice+1) mod n;  }  /* Dar el turno a una hebra que lo necesita, o mantenerlo */  turno := indice;  /* Hemos acabado */  flags[i] := IDLE;  /* Sección de restante */ 

Véase también

Referencias

Enlaces externos

  • Datos: Q5349901

algoritmo, eisenberg, mcguire, primer, algoritmo, conocido, soluciona, problema, sección, crítica, para, procesos, límite, turnos, realizado, murray, eisenberg, michael, mcguire, década, 1970, Índice, algoritmo, véase, también, referencias, enlaces, externos, . Es el primer algoritmo conocido que soluciona el problema de la Seccion Critica para n procesos con un limite de n 1 turnos Fue realizado por Murray A Eisenberg y Michael R McGuire en la decada de 1970 Indice 1 Algoritmo 2 Vease tambien 3 Referencias 4 Enlaces externos Algoritmo Editar Todos los procesos comparten las siguientes variables siendo n el numero de hebras enum estado IDLE ESPERANDO ACTIVO estado flags n int turno A la variable turno se le asigna aleatoriamente un valor entre 0 y n 1 al inicio del algoritmo La variable flags Bandera de cada hilo se pone en estado ESPERANDO cada vez que tiene intencion de entrar en la seccion critica La variable flasgs es inicializada en IDLE Inactivo Repetir anunciar que necesitamos el recurso flags i ESPERANDO Escanear los procesos partiendo desde el que posee el turno Repite hasta encontrar todos los procesos en IDLE indice turno mientras indice i Si flags i ndice IDLE indice turno Si no i ndice indice 1 mod n Reclamamos temporalmente el Recurso flags i ACTIVO Encontrar el primer proceso activo ademas de nosotros si existe indice 0 mientras i ndice lt n amp amp indice i flags indice ACTIVO indice indice 1 Si no hay otros procesos activos y tenemos el turno o si todos los demas tienen estado IDLE proceder en otro caso repetir Hasta que indice gt n amp amp turno i flags turno IDLE INICIO SECCIoN CRITICA reclamar el turno y proceder turno i Codigo de Seccion Critica FIN de SECCIoN CRITICA Encuentra un proceso que no este IDLE Si no hay otro nos encontraremos a nosotros mismos indice turno 1 mod n mientras flags indice IDLE indice indice 1 mod n Dar el turno a una hebra que lo necesita o mantenerlo turno indice Hemos acabado flags i IDLE Seccion de restante Vease tambien Editar Algoritmo de Dekker Algoritmo de la panaderia de Lamport Semaforo informatica Referencias Editar 1 Enlaces externos Editar notas mutex Eisenberg html enlace roto disponible en Internet Archive vease el historial la primera version y la ultima 2 Datos Q5349901 Obtenido de https es wikipedia org w index php title Algoritmo de Eisenberg McGuire amp oldid 125249394, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos