[Pr 4][Ej 8 y 9]

[Pr 4][Ej 8 y 9]

de Matias Rodal Medina -
Número de respuestas: 10

https://eva.fing.edu.uy/pluginfile.php/75707/mod_resource/content/1/Practicos/Practico4.pdf

En ambos ejercicios cuando dice que la operación es indivisible no quiere decir que no se pueda ejecutar en paralelo no?
Si tengo 2 núcleos y se ejecutan al mismo tiempo una en cada uno no funcionaría porque las 2 a's se cargarían con el valor que deja entrar a la región crítica.

Después en el 9 cuando pide generalizar para n procesos, no entiendo por que el codigo tal como esta funciona sólo para 2 procesos. A la variable c le veo una semántica como de que "hay algún proceso en su región crítica", entonces si c es 1 se quedan todos bloqueados esperando. 
No hay que hacer ningún cambio o estoy viendo algo mal?

Gracias

En respuesta a Matias Rodal Medina

Re: [Pr 4][Ej 8 y 9]

de Andres Bello Ureta -

Pasa que, por ejemplo, si tuviéramos tres procesos hay uno que podría no ejecutarse nunca, supongamos que el primero ejecuta la sección critica, y pone c=0, luego se ejecuta el 2do, y en vez de ejecutarse el 3ero se ejecuta el primero de vuelta, y así sucesivamente. Ahora mi duda es si eso es un error de consistencia, porque por mas que pase eso no entran a la sec_critica dos procesos a la vez.

En respuesta a Andres Bello Ureta

Re: [Pr 4][Ej 8 y 9]

de Matias Rodal Medina -

Aaah claro, es posposición indefinida, que como no hay prioridades no debería pasar. Igualmente con 2 no pasa también? Que el segundo sea mucho mas rápido y cada vez que el primero intenta entrar esta el segundo en su sección crítica

En respuesta a Matias Rodal Medina

Re: [Pr 4][Ej 8 y 9]

de Mauro Ernesto Picó Olivera -

No me queda del todo claro el tema de la implicancia de la equivalencia a una ejecución indivisible. 

Lo que he pensado va de acuerdo con el comentario "...se ejecutan al mismo tiempo una en cada uno no funcionaría porque las 2 a's se cargarían con el valor que deja entrar a la región crítica". ¿Que sean indivisibles implica que esto no ocurre?

Es decir, ¿nunca podría ser cargado el valor "0" de "c" en los respectivos "a1" y "a2" en el ejercicio 9?

En respuesta a Matias Rodal Medina

Re: [Pr 4][Ej 8 y 9]

de Jorge Merlino -

En este contexto indivisible implica que solo la puede ejecutar un proceso, es como si estuviera todo dentro de una región crítica. En caso de que haya varios procesadores solo lo puede ejecutar uno

Sobre el ejercicio 9 no hay que cambiar nada asumiendo que cada proceso tiene su variable ai local.

En respuesta a Jorge Merlino

Re: [Pr 4][Ej 8 y 9]

de Matias Rodal Medina -

Ahi va, gracias. Pero los 2 tienen el problema de posposición indefinida no?

En respuesta a Matias Rodal Medina

Re: [Pr 4][Ej 8 y 9]

de Jorge Merlino -
En respuesta a Jorge Merlino

Re: [Pr 4][Ej 8 y 9]

de Nicolas Tabare Tomeo Raspino -

Pero esa posposición indefinida es considerada incorrecta? Porqué el algoritmo resuelve correctamente la mutua exclusión. O sea el hecho de que un mismo procedimiento pudiera ejecutarse siempre sucede también en Dekker y a propósito para resolver el problema de la alternancia.

En respuesta a Nicolas Tabare Tomeo Raspino

Re: [Pr 4][Ej 8 y 9]

de Matias Rodal Medina -

Claro, esta bien que pueda entrar todas las veces que quiera.. siempre y cuando no haya otro esperando, ahí es la posposición indefinida, cuando hay uno esperando y el otro entra sin dejar entrar al otro