Hola, buenas tardes,
Realizando el ejercicio 7 del práctico 4 me encontré por primera vez con el problema de manejar la prioridad con mailbox, por lo que, naturalmente, me fijé en el problema avanzado de lectores-escritores, donde se plantea el problema de la prioridad. Pero, de manera similar al caso que comenté el día de ayer con respecto al mismo problema pero con monitores, encuentro situaciones donde un lector puede acceder tranquilamente al documento a pesar de que haya un escritor a punto de hacerlo.
Por ejemplo, si el primero en ejecutar es un escritor, lo que va a hacer es obtener la prioridad, luego hace lo suyo hasta que, antes de irse, devuelve la prioridad y, por último, avisa que hay uno menos. Pero ¿qué pasa si justo después de devolver la prioridad y antes de avisar que hay uno menos pierde la CPU y llega un nuevo escritor? Lo que pasaría es que este no va a obtener prioridad, puesto que solo lo hace si no hay escritores, y esto hasta ese momento no es así, por lo que pasaría del if y, luego, justo antes de obtener el documento, puede perder la CPU y llegar un lector. Cuando esto pase, va a poder recibir la prioridad tranquilamente a pesar de que había un escritor a punto de obtener el documento.
De nuevo, como en el caso que comenté el día de ayer, entiendo que esto no es un error tan grande como tal, pues no genera deadlock ni ningún otro problema grave, pero me parece curioso que, siendo la prioridad entre procesos uno de los temas a tratar en el curso, las soluciones que proponen en el teórico no parecen reflejar tal importancia.
De cualquier forma, igual puede ser que esté entendiendo mal los temas, eso siempre es una posibilidad, y con lo complicado que es justamente este (el de la concurrencia), hay una gran posibilidad de que sea así. En dicho caso, agradecería si me despejan las dudas.
No obstante, igual se me hace raro el concepto de prioridad dentro de mailbox, pues estos funcionan como colas de mensajes. Pero si tengo varios procesos peleando por un mismo recurso, estos esperarán siempre en orden de llegada, por ser justamente colas, por lo que el concepto de prioridad como tal no le encuentro mucho sentido dentro de este ámbito.
Por ejemplo, con este mismo problema de lectores-escritores, bien podría suceder que lleguen lectores antes de que el primer escritor devuelva la prioridad, y estos lectores tendrán prioridad sobre los escritores que lleguen después. Básicamente, termina siendo una fila de espera para acceder al documento como tal y nada más. En ningún caso se ve una prioridad; los lectores y escritores van llegando y se van atendiendo según la fila de espera de estos en el mailbox de mtxprio, y ni tan así, por lo que comenté con anterioridad.
Desde ya, muchas gracias y saludos.