Sie sind auf Seite 1von 2

Problema de lectores y escritores

Explicación del problema

Este es un problema que modela el acceso a una base de datos. Supóngase una base de
datos, con muchos procesos que compiten por leer y escribir en ella. Se puede permitir que
varios procesos lean de la base de datos al mismo tiempo, pero si uno de los procesos está
escribiendo (es decir, modificando) la base de datos, ninguno de los demás debería tener
acceso a ésta, ni siquiera los lectores. De igual modo si existe un lector en la base de datos, el
escritor no posee acceso.
Para que el problema se considere resuelto un escritor debe realizar su tarea lo antes
posible, si interferencia de los lectores.
2

Posible solución

En este caso nos encontramos con unas condiciones de que puede haber múltiples
lectores accediendo al recurso, pero únicamente un escritor por vez en el recurso.
Una posible solución es implementar un semáforo que les dé prioridad a los escritores
al momento de acceder al recurso, y para evitar que haya un bloqueo en el que los lectores se
quedan en espera de forma indefinida hasta que no haya más escritores, se podría implementar
una condición de que él sea más corto vaya primero, si la lectura será más rápida que la
escritura, el lector ira primero. Ahora bien, si existe una lectura que sea larga se le dará
prioridad al escritor hasta acumularse una cantidad establecida de lectores en cola (por
ejemplo 3), al ocurrir esto, ellos pasarían a leer de forma conjunta con un estado de prioridad.

Ejemplificación

Teniendo el semáforo y la condición impuesta:


1- Llegan 2 lectores junto a 1 escritor; debido a que los escritores tienen prioridad.
2- El escritor pasa al frente y utiliza el recurso; mientras el escritor está en esto, llega
otro más a la fila, el cual es pasado al primer puesto por tener prioridad.
3- Como ya hay un escritor utilizando el recurso el según escritor queda en espera.
4- Durante esta espera llega 1 nuevo lector, aquí se cumple con una condición
establecida, por lo que los lectores como grupo adquieren mayor prioridad que el
escritor.
5- Al acabar el primer escritor, sale y a continuación al revisarse la fila y ver que hay
3 lectores en espera y ninguno supera el tiempo del escritor en fila, estos pasan
primero de forma conjunta y el escritor queda en espera hasta que acaben.
De esta manera se puede organizar y controlar el acceso de los lectores y escritores al
recurso compartido, además de evitar un posible bloqueo causado por una espera
indefinida. Los parámetros a seguir fueron:
- Implementación de un semáforo.
- Establecimiento previo por parte del administrador de una condición (o varias) para
asignar una prioridad en caso de la llegada de múltiples clientes al mismo tiempo.
- El recurso solo es capaz de ser usado por múltiples lectores, pero no por múltiples
escritores.
- Cuando un lector o escritor acaba debe liberar el recurso.

Das könnte Ihnen auch gefallen