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

Lectura Escritura


Enviado por   •  7 de Agosto de 2014  •  1.227 Palabras (5 Páginas)  •  373 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. Cuando un único lector ha comenzado a acceder al área de datos, es posible que los lectores retengan el control del área de datos mientras quede un lector realizando la lectura. Por tanto, los escritores están sujetos a inanición.

La figura 5.23 muestra una solución que garantiza que no se le permitirá a ningún lector el acceso al área una vez que al menos un escritor haya declarado su intención de escribir. Para los escritores, los siguientes semáforos y variables se añaden a las ya definidas:

 Un semáforo slect qie inhibe a los lectora mientras haya un único escritor deseando acceder al área de datos.

 Una variable de cuentaeser que controla el cambio de slect.

 Un semáforo y que controla la actualización de cuentaeser.

Para los lectores, se necesita un semáforo adicional. No se debe permitir que ocurra una gran cola de slect; de otro modo los escritores no serán capaces de saltar la cola. Por tanto, sólo se le permite a un lector encolarse en slect, cualquier lector adicional se encolará en el semáforo z, inmediatamente antes de esperar en slect. La tabla 5.5 resume las posibilidades.

En la figura 5.24 se muestra una solución alternativa, que da prioridad a los escritores y está implementada con el paso de los mensajes. En estre caso, hay un proceso controlador que tiene el acceso al área de datos compartidos. Otros procesos que desean acceder al área de datos envían un mensaje de solicitud al controlador, que concede el acceso respondiendo con un mensaje <OK>, e indican que el acceso se ha completado con un mensaje <terminado>.

El proceso controlador, para dar prioridad a los escritores, sirve antes los mensajes que solicitan escribir que los mensajes que solicitan leer. Además deben cumplirse la exclusión mutua. Para hacer eso se usa la variable cuenta que se inicializa en algún número mayor que él que el, máximo número posible de lectores. En este ejemplo, se usa el valor 100. La acción del controlador puede resumirse como sigue:

• Si cuenta >0. Entonces no hay escritor esperando y puede haber o no lectores activos. Servir primero todos los mensajes <<terminado>> para limpiar los lectores activos.

• Si cuenta = 0. Entonces la única solicitud pendiente es una solicitud de escritura permitir continuar al escritor y esperar el mensaje <<terminado>>

Los temas centrales de los sistemas operativos modernos son multiprogramación, y multiprocesamiento y proceso distribuido. La concurrencia es fundamental en estos temas y fundamental en las tecnologías de diseño de sistemas operativos. Cuando múltiples procesos están ejecutando concurrentemente, bien realmente, en el caso de un sistema multiprocesador, o bien virtualmente, en el caso de un sistema multiprogramado de proceso único, surgen cuestiones sobre la resolución de conflictos y la cooperación

Los procesos concurrentes pueden interactuar de varias maneras los procesos que no se percatan uno de otros pueden, sin embargo, competir por recursos, como tiempo de procesador o acceso de dispositivos de entrada/salida. Los procesos pueden percatarse indirectamente uno de otros cuando compartan acceso a un objeto común, como un bloque de memoria principal o un fichero finalmente, los procesos pueden ser directamente consistentes unos de otros y cooperar intercambiando información. Los aspectos clave que surgen en estas interacciones son exclusión mutua e interbloqueo

La exclusión mutua es una condición en el cual hay un conjunto de procesos concurrentes entre los cuales solo uno es capaz de acceder a un recurso dado a realizar una función dada en un momento determinado. Las técnicas de exclusión mutua pueden usarse para resolver conflictos, como competencia por recursos o para sincronizar procesos y que así puedan cooperar. Un ejemplo de esto último es el modelo productor/consumidor, en el cual el proceso pone datos en un buffer y uno o más procesos extraen datos de ese buffer.

...

Descargar como  txt (7.7 Kb)  
Leer 4 páginas más »
txt