2. Lectores y Escritores
En el presente trabajo resolveremos un
problema clásico dentro del mundo de los
sistemas operativos.
Resolvemos el problema de Lectores/Escritores
con prioridad Lectores.
Presentaremos un programa que muestra por
pantalla la información que posee el archivo
pasado como parámetro por el usuario.
3. ANALISIS DEL PROBLEMA
Existe un área de datos compartida entre una serie de
procesos, algunos sólo leen los datos (lectores) y otros sólo
escriben datos (escritores). El problema es satisfacer las
siguientes condiciones:
1. Cualquier número de lectores puede leer el archivo
simultáneamente.
2. En el archivo sólo puede escribir un escritor en cada
instante.
3. Si un escritor está accediendo al archivo, ningún lector
puede leerlo.
El problema general de exclusión mutua, consiste en permitir
a cualquiera de los procesos (lectores o escritores) leer o
escribir en el área de datos.
4. PLANTEAR SOLUCION
En esta solución, el primer lector que obtiene el
acceso a la base de datos realiza un while sobre
el semáforo bd. Los lectores siguientes sólo
incrementan un contador, rc. Al salir los lectores,
éstos decrementan al contador, y el último en
salir realiza un signal sobre el semáforo, lo que
permite entrar a un escritor bloqueado, si existe.
5. PRIORIDAD A LOS LECTORES
Es una solución que utiliza semáforos para respetar
la exclusión mutua. Se permite el acceso a varios
lectores, pero mientras que un escritor está
accediendo a los datos compartidos, no se permite
acceder a ningún escritor o lector.
El primer lector que intenta acceder debe esperar
en el semáforo, Cuando haya al menos un lector, los
lectores siguientes no necesitan esperar para
entrar, se les da prioridad.
6. PRIORIDAD A LOS ESCRITORES
Esta solución garantiza que no se permitirá
acceder a los datos a ningún nuevo lector una
vez que, al menos, un escritor haya declarado su
deseo de escribir. Se utilizan los mismos
semáforos que en la solución anterior y se
añaden otros más.
7. ALGORITMO
Lector
Esperar a que no haya escritores
acceder a la b.d.
Avisar a los escritores que esperan
Escritor
Esperar a que no haya lectores ni escritores
acceder a la b.d.
Avisar a los lectores o escritores que esperan