ELPROGRAMA:


/**************************************************************************************

******************** ALGORITMO DE PETERSON PARA N PROCESOS ****************************

**************************************************************************************/

#include <stdlib.h>

#include "rshmem.h"

#define Nproc 3

#define ENSECR 'S'

void incrementa(int *mem, int k){

int i;

i=*mem;TP

i=i+k;TP

*mem=i;

}

int main(int argn, char **argv){

FILE *fsal; /* puntero al fichero de salida */

char *marcaFin[Nproc], /* array que tiene los contenidos de marcafin1,...,marcafinN */

int *turno, /* variable turno de entrada del proceso */

/* comprobacion del numero de argumentos */

if(argn!=3){

exit(1);

}

/* crear zona de memoria compartida */

if(!crearMemoria()){

}

nIteraciones=atoi(argv[1]);

recurso=(int*)memoria;

turno=(int*)recurso+sizeof(int);

marcaFin[0]=(char*)turno+sizeof(int);

for(i=1;i<Nproc;i++)

c[0]=(char*)marcaFin[Nproc-1]+sizeof(int);

for(i=1;i<Nproc;i++)

*recurso=0;

for(i=0;i<Nproc;i++)

for(i=0;i<Nproc;i++)

/* creacion de tantos procesos como indique Nproc */

for(i=0;i<Nproc;i++){

}/* fin for (i) */

/* espera activa del padre por los procesos hijo */

for(l=0;l<Nproc;l++)

/* Apertura del fichero de salida de los resultados */

if((fsal=fopen(argv[2],"a+"))==NULL){

}

fprintf(fsal,"El recurso valia 0 y ahora vale %d y tiene que valer %d\n",*recurso,nIteraciones*Nproc*5);

fflush(fsal);

/* cierre del fichero de salida */

fclose(fsal);

/* eliminacion de la memoria compartida */

if(!eliminarMemoria())

/* terminacion del proceso padre */

exit(0);

}/* fin main */

Volver al menu principal