Sistemas operativos modernos
#define FALSE O #defineTRUE 1 #define N 2 ¡nt turno; int interesado[N); void entrar_region(int proceso); { int otro; otro = 1 proceso; /* número de procesos */ r ¿ a quién le toca? */ r todos son inicialmente O (FALSE) V r proceso es O o 1 */ /* número de otros procesos */ /* lo contrario de proceso V interesado(proceso] = TRUE; /* muestra Interés V turno = proceso; r establece indicador V } while (turno == proceso && interesadofotro] ==TRUE ) /* instrucción nulaA^ void salir_region(int proceso) { r proceso; quién sale V interesado[proceso] = FALSE; /* indica salida de región crítica V Figura 2-21. Solución de Peterson para lograr exclusión mutua. Antes de usar las variables compartidas (es decir, antes de entrar en su región crítica, cada proceso invoca a entrar_region con su propio número de proceso, Oo l, como parámetro. Es ta llamada lo hará que espere, si es necesario, hasta que pueda entrar sin peligro. Una vez que haya terminado de usar las variables compartidas, el proceso invocará a salirjregion para indi car que ya terminó y permitir al otro proceso que entre, si lo desea. Veamos cómo funciona esta solución. En un principio ninguno de los procesos está en su región crítica. Ahora el proceso O llama a entrar_region e indica su interés, activando su ele mento del arreglo y estableciendo tumo a 0. Puesto que el proceso 1 no está interesado, entrar _region regresa de inmediato. Si ahora el proceso 1 llama a entrar_region, dará vueltas ahí has ta que interesado[0] cambie a FALSE, algo que sólo sucede cuando el proceso O invoca salir _region para salir de su región crítica. Ahora consideremos el caso en el que ambos procesos invoquen a entrar_region casi en forma simultánea. Los dos colocarán su número de proceso en tumo. El último valor que se coloque ahí será el que cuente; el primero se sobrescribe y se pierde. Supongamos que el pro ceso l es el último que guarda su número de proceso, así que tumo contiene 1. Cuando los procesos llegan a su instrucción while, el proceso Ola ejecuta cero veces y entra en su región crítica. El proceso l da vueltas y no ingresa en su región crítica sino hasta que el proceso Osa le de la suya.
RkJQdWJsaXNoZXIy MjI4NDcx