SlideShare una empresa de Scribd logo
1 de 14
UNIVERSIDAD TECNICA DE AMBATO

       FACULTAD DE CIENCIAS
      HUMANAS Y DE LA EDUCACION
           SISTEMAS OPERATIVOS

      TEMA: LECTORES Y ESCRITORES

  INTEGRANTES:
                    •PABLO FALCONI
                  •STALIN PALLANGO
                 •SANTIAGO TIXILEMA
DESCRIPCION DEL PROBLEMA




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



                         Se considera a cada
                          usuario como dos      La solución de este
Se considera a cada       semáforos. Estos      problema se basa en
  usuario(lector y          semáforos son         implementar un
 escritor) como dos     binarios y valen 0 si      algoritmo en el
procesos y al fichero    el recurso (fichero)         manejo de
 en cuestión como       está siendo utilizado        semáforos y
     un recurso.         por otro proceso y 1         memoria
                        si dicho recurso está       compartida.
                              disponible.
PARA QUE EL PROBLEMA ESTÉ BIEN
     RESUELTO SE TIENE QUE CUMPLIR:

                     Cuando un escritor
                     debe realizar su
No se puede hacer
                     tarea, debe ocurrir
esperar a ningún
                     cuanto antes, sin
proceso lector si
                     que deban interferir
ningún proceso
                     los procesos
escritor accede al
                     lectores.(Para ello se
recurso.
                     establecen
                     prioridades)
ALGORITMO LECTORES-ESCRITORES
                     Lector (){
                while (TRUE){
             Sección no crítica
              wait(semáforo1)
                  contador++;
               if (contador =1)
              wait(semáforo2)
             signal(semáforo1)
        Acceso al recurso (LECTURA)
              wait(semáforo1)
                    contador--
                if (contador=0)
             signal(semáforo2);
             signal (semáforo1)
                         }
                         }
                    Escritor(){
                while (TRUE){
             Sección no crítica
              wait (semáforo2)
             Acceso al recurso
             signal (semáforo2)
                         }
                         }
FUNCION MAIN:

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

DESCRIPCION

escribir( ); 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.

lectura( ); 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.
LECTORES.C
#include "rshmem.h"
#include <string.h>
#include <stdio.h>

int main(int argc, char *argv[]){

/*DECLARACION DE VARIABLES*/

int contador=0;
FILE *fpl,*fpe;
int i,n;
char texto [250],c;

int mutex_s; /*semáforo 1*/
int mutex_w; /*semáforo 2*/
key_t claveMutex_s; /*clave semáforo 1*/
key_t claveMutex_w; /*clave semáforo 2*/
/*CONTROL DEL PASO DE ARGUMENTOS*/
if(argc!=2){
fprintf(stderr,"main:error en el paso de argumentosn");
exit(3);
}
 /*obtener una clave cualquiera para el recurso ipc*/
if((key_t)-1==(claveMutex_s = ftok("lectores.c",'s'))){
fprintf(stderr,"main:Error al crear la clave con ftokn");
exit(1);
}
 if((key_t)-1==(claveMutex_w = ftok("lectores.c",'s'))){
fprintf(stderr,"main:Error al crear la clave con ftokn");
exit(1);
}
/*crear el semáforo*/
if(-1==(mutex_s=semCreate(claveMutex_s,1))){
fprintf(stderr,"main:No se puede crear el semáforo 1n");
exit(1);
}
 if(-1==(mutex_w=semCreate(claveMutex_w,1))){
fprintf(stderr,"main:No se puede crear el semáforo 2n");
exit(1);
}
/*crear zona de memoria compartida*/
if(!crearMemoria())
fprintf(stderr,"Error al crear memoria compartidan");
if(0!=fork()){ /*PROCESO ESCRITOR*/
  if((fpl=fopen(argv[1],"r+"))==NULL){
printf("Error en la apertura del fichero %s n",argv[1]);
exit(-1);
semClose(mutex_w);
}
 rewind(fpl);
for(i=0;i<3;i++){
printf ("Dime una frase que quieras escribir:");
gets(texto);
n=strlen(texto);
  semWait(mutex_w);
 fwrite(texto,(n*sizeof(char)),1,fpl);
 semSignal(mutex_w);
  semClose(mutex_w);
exit(0);
}
fclose(fpl);
}
else{
/* PROCESO LECTOR*/
if((fpe=fopen(argv[1],"w"))==NULL){
fprintf(stderr,"Error no se puede abrir el fichero %s n",argv[1]);
semClose(mutex_w);
semClose(mutex_s);
exit(2);
}
 for(i=0;i<3;i++) {
semWait(mutex_s);
contador ++;
if(contador==1)
semWait(mutex_w);
 while(!feof(fpe)){
semSignal(mutex_s);
fread((char *)c,sizeof(char),1,fpe);
semWait(mutex_s);
printf("%c",c);
}
contador --;
if(contador==0)
semSignal(mutex_w);
semSignal(mutex_s);
semClose(mutex_s);
semClose(mutex_w); /*CERRAMOS LOS
FICHEROS*/
fclose(fpe);
}
/*eliminamos memoria compartida*/
if(!eliminarMemoria()){
fprintf(stderr,"Error al eliminar la memoria compartida");
exit(9);
}
}
 return (0);
}

Más contenido relacionado

La actualidad más candente

Procesos Introduccion a los sistemas operativos
 Procesos Introduccion a los sistemas operativos Procesos Introduccion a los sistemas operativos
Procesos Introduccion a los sistemas operativos
G Hoyos A
 
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosCurso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Juan Rafael Alvarez Correa
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
Omarzingm
 

La actualidad más candente (20)

Administración de Memoria en UNIX
Administración de Memoria en UNIXAdministración de Memoria en UNIX
Administración de Memoria en UNIX
 
Sincronizacion de Procesos
Sincronizacion de ProcesosSincronizacion de Procesos
Sincronizacion de Procesos
 
Procesos Introduccion a los sistemas operativos
 Procesos Introduccion a los sistemas operativos Procesos Introduccion a los sistemas operativos
Procesos Introduccion a los sistemas operativos
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOSUnidad 4:  INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
Unidad 4: INTEROPERABILIDAD ENTRE SISTEMAS OPERATIVOS
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
Gestion de memoria en Linux
Gestion de memoria en LinuxGestion de memoria en Linux
Gestion de memoria en Linux
 
Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Modelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativosModelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativos
 
Ventajas y desventajas
Ventajas y desventajasVentajas y desventajas
Ventajas y desventajas
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Optimizacion de la busqueda de discos
Optimizacion de la busqueda de discosOptimizacion de la busqueda de discos
Optimizacion de la busqueda de discos
 
Unidad 4 graficación
Unidad 4 graficaciónUnidad 4 graficación
Unidad 4 graficación
 
Round robin apa
Round robin apaRound robin apa
Round robin apa
 
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosCurso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e Hilos
 
Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Algoritmo de dekker
Algoritmo de dekker Algoritmo de dekker
Algoritmo de dekker
 
Estrategias de busqueda
Estrategias de busquedaEstrategias de busqueda
Estrategias de busqueda
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 

Destacado

Capítulo 7 sincronización de procesos 09 01-2012
Capítulo 7 sincronización de procesos 09 01-2012Capítulo 7 sincronización de procesos 09 01-2012
Capítulo 7 sincronización de procesos 09 01-2012
ecuatareas
 
Mapa conceptual recursos web
Mapa conceptual recursos webMapa conceptual recursos web
Mapa conceptual recursos web
marthampd
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivel
sistemaaabbbb
 
La formación del lector y el escritor
La formación del lector y el escritorLa formación del lector y el escritor
La formación del lector y el escritor
yanalmyangel
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
lorenapardo
 
Verbos en pasado simple
Verbos en pasado simpleVerbos en pasado simple
Verbos en pasado simple
jote1981
 
Integración didactica de las nuevas tecnologías
Integración didactica de las nuevas tecnologíasIntegración didactica de las nuevas tecnologías
Integración didactica de las nuevas tecnologías
Luis Alberto Medina Ramón
 

Destacado (20)

Problema de los Filosofos
Problema de los FilosofosProblema de los Filosofos
Problema de los Filosofos
 
Barbero Dormilon
Barbero DormilonBarbero Dormilon
Barbero Dormilon
 
Construcción de lectores y escritores
Construcción de lectores y escritoresConstrucción de lectores y escritores
Construcción de lectores y escritores
 
Sistemas operativos tarea 3
Sistemas operativos tarea 3Sistemas operativos tarea 3
Sistemas operativos tarea 3
 
Capítulo 7 sincronización de procesos 09 01-2012
Capítulo 7 sincronización de procesos 09 01-2012Capítulo 7 sincronización de procesos 09 01-2012
Capítulo 7 sincronización de procesos 09 01-2012
 
Mapa conceptual recursos web
Mapa conceptual recursos webMapa conceptual recursos web
Mapa conceptual recursos web
 
Herramientas case alto y bajo nivel
Herramientas case alto y bajo nivelHerramientas case alto y bajo nivel
Herramientas case alto y bajo nivel
 
La formación del lector y el escritor
La formación del lector y el escritorLa formación del lector y el escritor
La formación del lector y el escritor
 
Problema del barbero durmiente
Problema del barbero durmienteProblema del barbero durmiente
Problema del barbero durmiente
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 
Filósofos
FilósofosFilósofos
Filósofos
 
Verbos en pasado simple
Verbos en pasado simpleVerbos en pasado simple
Verbos en pasado simple
 
GESTION DE PROCESOS EN SISTEMAS OPERATIVOS
GESTION DE PROCESOS EN SISTEMAS OPERATIVOSGESTION DE PROCESOS EN SISTEMAS OPERATIVOS
GESTION DE PROCESOS EN SISTEMAS OPERATIVOS
 
PAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIAPAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIA
 
Sinapsis y neurotransmisores
Sinapsis y neurotransmisoresSinapsis y neurotransmisores
Sinapsis y neurotransmisores
 
Integración didactica de las nuevas tecnologías
Integración didactica de las nuevas tecnologíasIntegración didactica de las nuevas tecnologías
Integración didactica de las nuevas tecnologías
 
Revista del proceso Diálogos Comprensivos en Alta Verapaz
Revista del proceso Diálogos Comprensivos en Alta VerapazRevista del proceso Diálogos Comprensivos en Alta Verapaz
Revista del proceso Diálogos Comprensivos en Alta Verapaz
 
Ep 2011
Ep 2011Ep 2011
Ep 2011
 
Motos
MotosMotos
Motos
 
Crosa presentacion
Crosa presentacionCrosa presentacion
Crosa presentacion
 

Similar a PROBLEMA DE LECTORES Y ESCRITORES DE UNA IPC

Similar a PROBLEMA DE LECTORES Y ESCRITORES DE UNA IPC (20)

Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Cooperación entre procesos
Cooperación entre procesosCooperación entre procesos
Cooperación entre procesos
 
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetosUnidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
 
Clasificacion de los s.o.1.
Clasificacion de los s.o.1.Clasificacion de los s.o.1.
Clasificacion de los s.o.1.
 
Clasificación de los s.o.
Clasificación de los s.o.Clasificación de los s.o.
Clasificación de los s.o.
 
Portafolio 2
Portafolio 2Portafolio 2
Portafolio 2
 
linux44
linux44linux44
linux44
 
Tarea s.o
Tarea s.oTarea s.o
Tarea s.o
 
Thread
ThreadThread
Thread
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Tipos de sistema operativo y funcionamiento del Sistema Operativo
Tipos de sistema operativo y funcionamiento del Sistema OperativoTipos de sistema operativo y funcionamiento del Sistema Operativo
Tipos de sistema operativo y funcionamiento del Sistema Operativo
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Kimberly (2) mapau trabajo
Kimberly (2) mapau trabajoKimberly (2) mapau trabajo
Kimberly (2) mapau trabajo
 
S.o
S.oS.o
S.o
 
Hilo de ejecución
Hilo de ejecuciónHilo de ejecución
Hilo de ejecución
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
 
Mi exposición
Mi exposición Mi exposición
Mi exposición
 
Capitulo6
Capitulo6Capitulo6
Capitulo6
 
S.O.
S.O. S.O.
S.O.
 
Funciones y clasificacion de los sistemas operativos.
Funciones y clasificacion de los sistemas operativos.Funciones y clasificacion de los sistemas operativos.
Funciones y clasificacion de los sistemas operativos.
 

Más de falco87 (19)

Tarea 5
Tarea 5Tarea 5
Tarea 5
 
Aprendizaje y clase invertida
Aprendizaje y clase  invertidaAprendizaje y clase  invertida
Aprendizaje y clase invertida
 
Cumpleaos melanie
Cumpleaos melanieCumpleaos melanie
Cumpleaos melanie
 
Pablo falconi
Pablo falconiPablo falconi
Pablo falconi
 
Ensayo sobre los metaversos
Ensayo sobre los metaversosEnsayo sobre los metaversos
Ensayo sobre los metaversos
 
Ensayo sobre los metaversos
Ensayo sobre los metaversosEnsayo sobre los metaversos
Ensayo sobre los metaversos
 
Ensayo metaversos
Ensayo metaversosEnsayo metaversos
Ensayo metaversos
 
Metaversos
MetaversosMetaversos
Metaversos
 
Metaversos
MetaversosMetaversos
Metaversos
 
Auditoria informatica cv
Auditoria  informatica cvAuditoria  informatica cv
Auditoria informatica cv
 
Falconi pablo conta
Falconi pablo contaFalconi pablo conta
Falconi pablo conta
 
Glosario de Contabilidad
Glosario de ContabilidadGlosario de Contabilidad
Glosario de Contabilidad
 
Servidor web linux
Servidor web linuxServidor web linux
Servidor web linux
 
DNS
DNSDNS
DNS
 
Dhcp consulta
Dhcp consultaDhcp consulta
Dhcp consulta
 
Como hecer una shell programada en lenguaje c
Como hecer una shell programada en lenguaje cComo hecer una shell programada en lenguaje c
Como hecer una shell programada en lenguaje c
 
Monitor advanced
Monitor advancedMonitor advanced
Monitor advanced
 
Pacie
PaciePacie
Pacie
 
TAREA 6
TAREA 6TAREA 6
TAREA 6
 

Último

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
AndreaTurell
 

Último (20)

Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
12 - Planetas Extrasolares - Seminario de las Aulas de la Experiencia UPV/EHU
12 - Planetas Extrasolares - Seminario de las Aulas de la Experiencia UPV/EHU12 - Planetas Extrasolares - Seminario de las Aulas de la Experiencia UPV/EHU
12 - Planetas Extrasolares - Seminario de las Aulas de la Experiencia UPV/EHU
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxAEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Programa dia de las madres para la convi
Programa dia de las madres para la conviPrograma dia de las madres para la convi
Programa dia de las madres para la convi
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
FICHA CUENTO BUSCANDO UNA MAMÁ 2024 MAESTRA JANET.pdf
FICHA CUENTO BUSCANDO UNA MAMÁ  2024 MAESTRA JANET.pdfFICHA CUENTO BUSCANDO UNA MAMÁ  2024 MAESTRA JANET.pdf
FICHA CUENTO BUSCANDO UNA MAMÁ 2024 MAESTRA JANET.pdf
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
El liderazgo en la empresa sostenible, introducción, definición y ejemplo.
 
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLAACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
ACERTIJO EL NÚMERO PI COLOREA EMBLEMA OLÍMPICO DE PARÍS. Por JAVIER SOLIS NOYOLA
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
UNIDAD 3 -MAYO - IV CICLO para cuarto grado
UNIDAD 3 -MAYO - IV CICLO para cuarto gradoUNIDAD 3 -MAYO - IV CICLO para cuarto grado
UNIDAD 3 -MAYO - IV CICLO para cuarto grado
 
GRUPO 2 - LA GRAN TRIBULACIÓN 25-03-2024 vf.pdf
GRUPO 2 - LA GRAN TRIBULACIÓN 25-03-2024 vf.pdfGRUPO 2 - LA GRAN TRIBULACIÓN 25-03-2024 vf.pdf
GRUPO 2 - LA GRAN TRIBULACIÓN 25-03-2024 vf.pdf
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
 
MINEDU BASES JUEGOS ESCOLARES DEPORTIVOS PARADEPORTIVOS 2024.docx
MINEDU BASES JUEGOS ESCOLARES DEPORTIVOS PARADEPORTIVOS 2024.docxMINEDU BASES JUEGOS ESCOLARES DEPORTIVOS PARADEPORTIVOS 2024.docx
MINEDU BASES JUEGOS ESCOLARES DEPORTIVOS PARADEPORTIVOS 2024.docx
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 

PROBLEMA DE LECTORES Y ESCRITORES DE UNA IPC

  • 1. UNIVERSIDAD TECNICA DE AMBATO FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACION SISTEMAS OPERATIVOS TEMA: LECTORES Y ESCRITORES INTEGRANTES: •PABLO FALCONI •STALIN PALLANGO •SANTIAGO TIXILEMA
  • 2. DESCRIPCION DEL PROBLEMA Pero nunca ocurrirá Solo puede utilizar simultáneamente Hay un objeto de el recurso un (teniendo en cuenta datos(fichero de proceso y solo que si no lo esta texto) que es uno, es decir, o bien utilizando utilizado por varios un proceso estará nadie, tendrá procesos, unos leen escribiendo o bien preferencia el y otro que escribe. leyendo escritor antes que el lector).
  • 3. DOCUMENTACION DEL PROGRAMA Se considera a cada usuario como dos La solución de este Se considera a cada semáforos. Estos problema se basa en usuario(lector y semáforos son implementar un escritor) como dos binarios y valen 0 si algoritmo en el procesos y al fichero el recurso (fichero) manejo de en cuestión como está siendo utilizado semáforos y un recurso. por otro proceso y 1 memoria si dicho recurso está compartida. disponible.
  • 4. PARA QUE EL PROBLEMA ESTÉ BIEN RESUELTO SE TIENE QUE CUMPLIR: Cuando un escritor debe realizar su No se puede hacer tarea, debe ocurrir esperar a ningún cuanto antes, sin proceso lector si que deban interferir ningún proceso los procesos escritor accede al lectores.(Para ello se recurso. establecen prioridades)
  • 5. ALGORITMO LECTORES-ESCRITORES Lector (){ while (TRUE){ Sección no crítica wait(semáforo1) contador++; if (contador =1) wait(semáforo2) signal(semáforo1) Acceso al recurso (LECTURA) wait(semáforo1) contador-- if (contador=0) signal(semáforo2); signal (semáforo1) } } Escritor(){ while (TRUE){ Sección no crítica wait (semáforo2) Acceso al recurso signal (semáforo2) } }
  • 6.
  • 7. FUNCION MAIN: Creación de un proceso padre y de su proceso hijo (lectores, escritores). DESCRIPCION escribir( ); 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. lectura( ); 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.
  • 8. 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.
  • 9. LECTORES.C #include "rshmem.h" #include <string.h> #include <stdio.h> int main(int argc, char *argv[]){ /*DECLARACION DE VARIABLES*/ int contador=0; FILE *fpl,*fpe; int i,n; char texto [250],c; int mutex_s; /*semáforo 1*/ int mutex_w; /*semáforo 2*/ key_t claveMutex_s; /*clave semáforo 1*/ key_t claveMutex_w; /*clave semáforo 2*/
  • 10. /*CONTROL DEL PASO DE ARGUMENTOS*/ if(argc!=2){ fprintf(stderr,"main:error en el paso de argumentosn"); exit(3); } /*obtener una clave cualquiera para el recurso ipc*/ if((key_t)-1==(claveMutex_s = ftok("lectores.c",'s'))){ fprintf(stderr,"main:Error al crear la clave con ftokn"); exit(1); } if((key_t)-1==(claveMutex_w = ftok("lectores.c",'s'))){ fprintf(stderr,"main:Error al crear la clave con ftokn"); exit(1); }
  • 11. /*crear el semáforo*/ if(-1==(mutex_s=semCreate(claveMutex_s,1))){ fprintf(stderr,"main:No se puede crear el semáforo 1n"); exit(1); } if(-1==(mutex_w=semCreate(claveMutex_w,1))){ fprintf(stderr,"main:No se puede crear el semáforo 2n"); exit(1); } /*crear zona de memoria compartida*/ if(!crearMemoria()) fprintf(stderr,"Error al crear memoria compartidan");
  • 12. if(0!=fork()){ /*PROCESO ESCRITOR*/ if((fpl=fopen(argv[1],"r+"))==NULL){ printf("Error en la apertura del fichero %s n",argv[1]); exit(-1); semClose(mutex_w); } rewind(fpl); for(i=0;i<3;i++){ printf ("Dime una frase que quieras escribir:"); gets(texto); n=strlen(texto); semWait(mutex_w); fwrite(texto,(n*sizeof(char)),1,fpl); semSignal(mutex_w); semClose(mutex_w); exit(0); } fclose(fpl); } else{
  • 13. /* PROCESO LECTOR*/ if((fpe=fopen(argv[1],"w"))==NULL){ fprintf(stderr,"Error no se puede abrir el fichero %s n",argv[1]); semClose(mutex_w); semClose(mutex_s); exit(2); } for(i=0;i<3;i++) { semWait(mutex_s); contador ++; if(contador==1) semWait(mutex_w); while(!feof(fpe)){ semSignal(mutex_s); fread((char *)c,sizeof(char),1,fpe); semWait(mutex_s); printf("%c",c); } contador --; if(contador==0) semSignal(mutex_w); semSignal(mutex_s); semClose(mutex_s);
  • 14. semClose(mutex_w); /*CERRAMOS LOS FICHEROS*/ fclose(fpe); } /*eliminamos memoria compartida*/ if(!eliminarMemoria()){ fprintf(stderr,"Error al eliminar la memoria compartida"); exit(9); } } return (0); }