Está en la página 1de 2

c 


  
  


c
c 

El problema en cuestión es el siguiente:


Hay un objeto de datos (fichero de texto) que es utilizado por varios procesos, unos leen
y otro que escribe.
Solo puede utilizar el recurso un proceso y solo uno, es decir, o bien un proceso estará
escribiendo o bien leyendo, pero nunca ocurrirá simultáneamente (teniendo en cuenta
que si no lo está utilizando nadie, tendrá preferencia el escritor ante el lector).?
?
?

 
c  
?
Se considera a cada usuario (lector y escritor) como dos procesos y al fichero en
cuestión como un recurso. De modo que, para que un proceso acceda al recurso que
necesita, tenemos que considerar a cada usuario (lector y escritor) como dos semáforos.
Estos semáforos son binarios y valen 0 si el recurso (fichero) está siendo utilizado por
otro proceso y 1 si dicho recurso está disponible.
La solución de este problema se basa en implementar un algoritmo eficiente (véase
algoritmo) en el manejo de semáforos y memoria compartida que seguidamente
describimos. A lo largo del programa se utilizan funciones necesarias para el manejo de
memoria compartida (véase "rshmem.h Y "rshmem.c") manejo de semáforos (véase
"semaph.c" .)

Para que el problema esté bien resuelto se tiene que cumplir:

- No se puede hacer esperar a ningún proceso lector si ningún proceso escritor accede al
recurso.
- Cuando un escritor debe realizar su tarea, debe ocurrir cuanto antes, sin que deban
interferir los procesos lectores.(Para ello se establecen prioridades)

Para saber en que algoritmo nos hemos basado ver "LECTORES ESCRITORES"

Ver programa "LECTORES.C"

FUNCION MAIN:
Creación de un proceso padre y de su proceso hijo (lectores, escritores).

DESCRIPCION
á  Esta función implementa el acceso a un recurso compartido, que será la
variable que contabiliza el total de veces que el usuario escribe. En esta función se han
incluido varias llamadas al macro TP. Este macro implementa un retardo aleatorio con
el fin de dar cierto tiempo a que ocurran interrupciones que puedan detener la ejecución
del proceso en su "cuanto" de tiempo asignado por el S.O.. En nuestro caso, es
necesario realizar unas cuantas llamadas para dar tiempo a que todos los usuarios tengan
oportunidad de escribir.
uár Permite que el lector pueda acceder al recurso. Una vez que acaba de leer se
encarga de dejar el recurso para que sean de nuevo utilizado (por él o por otros). Para
ello se basa en funciones de manejo de semáforos y memoria compartida.

Utiliza las siguientes funciones:

Manejo de semaforos:
‡semWait ( )
‡semSignal ( )
‡semOpen ( )
‡semClose ( )

Manejo de memoria compartida:

Cada vez que escribe un usuario lo refleja en el incremento de la variable de memoria


compartida.

Cuando los lectores y escritores han realizado la tarea que desean(leer y escribir) un
número M de veces prefijado (3) se lo comunican al padre, no sin antes haber cerrado
adecuadamente todos los semáforos utilizados en esta función.

   c   

DEPENDENCIAS:

ficheros:
`? üstdlib.h>
`? "rshmem.h"
`? "rshmem.c"
`? "semaph.c"

c
La salida se encuentra en el fichero fich.txt

   
SALGADO PANIAGUA, INMACULADA.
VAQUERO GRANDAS, LAURA.


 15-JUNIO-1998
?
?

También podría gustarte