ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Lectura Escritura


Enviado por   •  7 de Agosto de 2014  •  1.227 Palabras (5 Páginas)  •  388 Visitas

Página 1 de 5

PROBLEMAS DE LECTURA / ESCRITURA

Para el diseño de mecanismos de sincronización y concurrencia, es útil ser capaz de relacionar el problema en concreto con problemas conocidos y ser capaz de probar cualquier solución según su capacidad para resolver estos problemas conocidos.

El problema de lectores / escritores se define como sigue: Hay un área de datos compartida entre un número de procesos. El área de datos puede ser un fichero, un bloque de memoria principal o incluso un banco de registro del procesador. Hay un número de procesos que solo leen del área de datos (lectores) y otro número que solo escriben en el área de datos (escritores). Las siguientes condiciones deben satisfacer.

1. Cualquier número de lectores pueden leer del fichero simultáneamente.

2. Solo un escritor al tiempo que puede escribir en el fichero.

3. Si un escritor está escribiendo en el fichero ningún lector puede leerlo.

Antes de continuar, distingamos este problema de otros dos: el problema general de exclusión mutua y el problema productor/consumidor. En el problema lectores/escritores los lectores no escriben en el área de datos ni los escritores leen del área de datos. Un caso más general, que incluye este caso, es permitir a cualquier proceso leer o escribir en el área de datos. En tal caso, podemos declarar cualquier parte del proceso que accede al área de datos como una sección crítica e imponer la solución general de la exclusión mutua. La razón para preocuparnos por el caso más restrictivo es que es posible una solución más eficiente para este caso y que la solución menos eficiente al problema general es inaceptablemente lenta. Por ejemplo, supóngase que el área compartida es un catálogo de biblioteca. Los usuarios ordinarios de la biblioteca leen el catalogo para localizar un libro. Uno o más bibliotecarios deben poder actualizar el catalogo. En la solución general, cada acceso al catálogo seria tratado como una sección crítica y los usuarios se verían forzados a leer el catálogo de uno en uno. Esto claramente impondría retardos intolerables. Al mismo tiempo, es importante impedir a los escritores interferirse entre sí y también es necesario impedir la lectura mientras la escritura está en curso para impedir que se acceda a la información inconsistente.

¿Puede considerarse el problema productor/consumidor simplemente un caso especial del problema lectores/escritores con un único escritor (el productor) y un único lector (el consumidor)? La respuesta es no. El productor no es simplemente un escritor. Él debe leer las posiciones sobre la cola para determinar donde escribir el siguiente dato y debe determinar si el buffer está lleno. De igual modo, el consumidor no es solo un lector, porque debe ajustar los punteros de la cola para mostrar que ha eliminado una unidad de buffer.

LOS LECTORES TIENEN PRIORIDAD

La figura 5.22 es una solución utilizando semáforo, que muestra una instancia de cada, un lector y un escritor. El proceso es sencillo. El semáforo sescr se utiliza para cumplir la exclusión mutua. Mientras un escritor este accediendo al área de datos compartidos, ningún otro escritor y ningún lector podrán acceder. El proceso lector también utiliza sescr para cumplir la exclusión mutua. No obstante, para permitir múltiples lectores, necesitamos que, cuando no hay lectores leyendo, el primer lector que intenta debe esperar en sescr. Cuando ya haya al menos un lector leyendo, los siguientes lectores no necesitan esperar antes de entrar. La variable global cuentalec se utiliza para llevar la cuenta del número de lectores, y el semáforo X se usa para asegurar que cuentalect se actualiza adecuadamente.

LOS ESCRITORES TIENEN PRIORIDAD

En la sección previa, los lectores tienen prioridad.

...

Descargar como (para miembros actualizados) txt (8 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com