Segundo parcial 2013

Segundo parcial 2013

de Agustina Sierra Lima -
Número de respuestas: 1

Hola tengo consulta,la letra del parcial es:

Hay un grupo de 5 funcionarios que consultan los registros de la base en busca de errores en lotes
de 100 registros (compartido entre los 5 funcionarios). Si encuentran un error en un registro deben
actualizar el mismo con la información corregida. Se debe permitir que varios funcionarios
consulten a la vez el mismo registro. Un funcionario que quiere modificar un registro deberá tener
prioridad sobre los que quieren leerlo.
Un funcionario A no podrá modificar un registro que haya sido modificado por otro funcionario B
luego de la lectura de A; en ese caso deberá volver a leer y verificar nuevamente el registro.
Un supervisor cambiará el lote de 100 registros periódicamente, para lo cual ningún funcionario
deberá estar usando el lote. El supervisor tendrá prioridad sobre los funcionarios para el acceso al
lote.
(se pide implementar con monitores)

en practico me dijeron que era peligroso llamar a un monitor dentro de otro monitor , que podria tener dedloks.

y mirando la solucion del ejercicio de este parcial lo hicieron , no entiendo bien por que la funcion lote.entra-funcionario(); esta dentro del monitor registro . Cuando yo lo hice lo puse por fuerta osea en el procedimiento funcionario y creo q no tendria problema .

Luego no se como modelar esto:

Un funcionario A no podrá modificar un registro que haya sido modificado por otro funcionario B
luego de la lectura de A; en ese caso deberá volver a leer y verificar nuevamente el registro.

Osea si llevo una especie de marca dentro de el monitor registro no sabria cuando desmarcarla, ej: tengo un bool y cuando modifico aviso para los que estan verificando este mismo registro que si llegan a querer modificar tendran que re-verificar.
Pero una vez que puse en true esa variable cuando se podria en false la misma? no logro darme cuenta.
El problema esta en que si yo estoy verificando un registo y entre que yo termine de verificar y fui a modificiar se me meta otro funcionario y me modifique antes que yo llegue a modificiar no?
Gracias.
En respuesta a Agustina Sierra Lima

Re: Segundo parcial 2013

de Jorge Merlino -

La razón para pedir el lote adentro del registro es que si un funcionario está esperando que un registro se libere para poder modificarlo técnicamente no está usando el lote y por lo tanto no debe evitar que el supervisor lo cambie. Si se ocupa el lugar en el lote y luego se espera a tener el acceso de escritura el supervisor no podrá cambiarlo hasta que el funcionario escriba.


Para resolver el tema de volver a leer un registro modificado por otro lo que se hace en la solución es preguntar cuando alguien quiere modificar un registro si hay otro esperando para modificar. Si no hay nadie soy el primero en modificar y si hay otro entonces se vuelve a hacer la lectura (como el que quiere modificar tiene prioridad, la lectura se hará luego de terminada la modificación)