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