2. La exclusión mutua es cuando existen 2
procesos que desean entrar al mismo
tiempo a la sección crítica.
La exclusión mutua se puede solucionar
de diversas maneras: mediante el
algoritmo de Peterson, realizando una
inhabilitación de interrupciones y
desarrollando funciones por hardware.
3. La inanición es un problema en donde un
proceso o un hilo de ejecución se le
deniega el acceso a un recurso
compartido. Sin este recurso, la tarea a
ejecutar no puede ser finalizada.
El interbloqueo, también conocido como
deadlock, es el bloqueo permanente de un
conjunto de procesos o hilos de ejecución
que compiten por el uso de recursos que
están siendo ocupados por otros procesos
o hilos de ejecución.
No existe una solución general para los
interbloqueos.
5. La variable flags lleva un registro de
qué procesos se encuentran en
ejecución.
Para decidir que proceso ejecutara
su sección critica existe la variable
turno que puede ser 0/1/2.
6. Supongamos que
flags[0]=true, turn=0 y
flags[1/2]=false, por lo
tanto se le permite al
proceso A saltear el
while y ejecutar su
sección critica.
Al terminar de
ejecutarse se define
flags[0]=false, con esto
los demás procesos que
se encuentran dentro
del while deberían
poder salir de él y
ejecutar su propia
sección crítica.
Sin embargo el proceso
A ya preparo antes de
comenzar su SC que
turn=1, por lo tanto el
próximo proceso a
ejecutar su SC será el
proceso B, y tanto el
proceso A como el
proceso C no podrán
ejecutar su SC sin que
antes no haya de
terminar de ejecutarse la
SC.
Cuando termine el B se
ejecutará el C y luego el
A, etc.