PRACTICA DE SISTEMAS OPERATIVOS

DOCUMENTACIÓN:

Esta práctica pretende dar solución al problema del monitor mediante la implementación de éste con semáforos.

Tenemos una variable global sobre la que queremos realizar tres operaciones:

Esto lo hacemos con tres funciones a las que se accede a través de un monitor . Hay dos procesos que intentan entrar en el monitor para realizar estas operaciones, para sincronizar los procesos y el monitor utilizamos dos semáforos:

Para el manejo de los semáforos utilizamos semaph.c .

Para decirle al monitor la operación que tiene que realizar utilizamos una nueva variable ( llamada "operacion" ) , que al igual que la variable global ("recurso") van sobre memoria compartida. Esta variable "operacion" es aleatoria y su valor indica al proceso la operación que tiene que realizar en cada momento.

Para el manejo de memoria compartida utilizamos rshmem.c .

volver al principio


IMPLEMENTACIÓN:

#include "rshmem.h"
#include <sys/sem.h>
#include <stdlib.h>
#include <time.h>
/*Funcion que lee la variable*/
int leer(int *variable){
return(*variable);
}

/*Funcion que escribe en la variable*/
void escribir(int *variable){
}

/*Funcion que incrementa la variable*/
void incrementa(int *variable){
(*variable)++;
}

/*Monitor*/
void monitor(int pid,float *operacion,int *variable,int s){
}



/****FUNCION PRINCIPAL****/
void main(){
}

volver atras


Ejemplo de una posible SALIDA del programa:

Soy el proceso 2
Escriba un numero entero:3
Escribe la variable var=3
Soy el proceso 1
Escriba un numero entero:8
Escribe la variable var=8
Soy el proceso 2
Incrementa la variable var=9
Soy el proceso 2
Incrementa la variable var=10
Soy el proceso 2
Escriba un numero entero:6
Escribe la variable var=6
Soy el proceso 1
Incrementa la variable var=7
Soy el proceso 1
Incrementa la variable var=8
Soy el proceso 1
Escriba un numero entero:25
Escribe la variable var=25
Soy el proceso 2
Lee la variable var=25
Soy el proceso 2
Lee la variable var=25
Soy el proceso 2
Lee la variable var=25
Soy el proceso 2
Escriba un numero entero:7
Escribe la variable var=7
Soy el proceso 1
Lee la variable var=7
Soy el proceso 1
Lee la variable var=7
Soy el proceso 1
Escriba un numero entero:21
Escribe la variable var=21
Soy el proceso 2
Incrementa la variable var=22
Soy el proceso 2
Lee la variable var=22
Soy el proceso 1
Incrementa la variable var=23
Soy el proceso 1
Lee la variable var=23

volver atras


AUTORAS:


volver al principio