int main(int argc, char *argv[]) { //char * nvalue; //char * pvalue; int nvalue; int pvalue; //char * pvalue=NULL; int c; while ((c = getopt(argc, argv, "n:p:")) != -1) { switch (c) { case 'n': nvalue = atoi(optarg); break; case 'p': pvalue = atoi(optarg); break; default: abort(); } } int nivelActual=1; //totalNiveles = nvalue; //numProcesos = pvalue; crearProceso(nivelActual,nvalue, pvalue); //printf("La suma es: %d", (pvalue+nvalue)); return 0; }
void consultarArrivalTimeDeProceso(int valorABuscar) { int n=0; int m=0; if(primero==NULL) { printf("Lista vacia...\n"); } else { actual=primero; while(actual!=NULL) { if(valorABuscar==actual->arrival_time) { id=actual->id; arrival_time=actual->arrival_time; cpu_burst=actual->cpu_burst; priority=actual->priority; crearProceso(1); } actual= actual->next; } } }
void crearProceso(int nivelActual, int totalNiveles, int numProcesos) { if (totalNiveles+1 == nivelActual) exit(0); int i; int j; for (i = 0; i < numProcesos; ++i) { if (fork() == 0) { for(j=0;j<nivelActual;++j){ printf("----"); } printf("%d\n", getpid()); crearProceso(nivelActual+1,totalNiveles, numProcesos); exit(0); } else { wait(NULL); } } }
void iniciar(void) { int* pid = recibirStream(socketAdministradorDeMemoria,sizeof(int)); int* cantidadPaginas = recibirStream(socketAdministradorDeMemoria,sizeof(int)); proceso* proceso = crearProceso(*pid, *cantidadPaginas); if (entraProceso(*proceso)) { //El proceso entra, realizar insercion pthread_mutex_lock(&mutex); insertarProceso(proceso); pthread_mutex_unlock(&mutex); logIniciar(proceso); int exito = 6; send(socketAdministradorDeMemoria, &exito, sizeof(int), 0); } else { //El proceso no entra, avisar rechazo logRechazar(proceso); printf( "No hay cantidad de paginas suficientes para alojar el proceso %d\n", proceso->pid); int fracaso = 7; send(socketAdministradorDeMemoria, &fracaso, sizeof(int), 0); } free(pid); free(cantidadPaginas); }
int main (int argc, const char * argv[]) { FILE *fp; /* Pointer to the file */ int quantum = 0; /* Quantum value for round robin */ //GSList *processList_p = NULL; /* Pointer to the process list */ int parameters[NUMVAL]; /* Process parameters in the line */ int i; /* Number of parameters in the process */ /* Check if the number of parameters is correct */ if (argc < NUMPARAMS){ printf("Need a file with the process information\n"); printf("Abnormal termination\n"); return (EXIT_FAILURE); } else { /* Open the file and check that it exists */ fp = fopen (argv[1],"r"); /* Open file for read operation */ if (!fp) { /* There is an error */ ErrorMsg("main","filename does not exist or is corrupted"); } else { /* The first number in the file is the quantum */ quantum = GetInt(fp); if (quantum == EXIT_FAILURE) { ErrorMsg("main","Quantum not found"); } else { /* * Read the process information until the end of file * is reached. */ while (!feof(fp)){ /* For every four parameters create a new process */ for (i = 0; ((i < NUMVAL) && (!feof(fp))); i++) { parameters[i] = GetInt(fp); } /* Do we have four parameters? */ if (i == NUMVAL) { id=parameters[0]; arrival_time=parameters[1]; cpu_burst=parameters[2]; priority=parameters[3]; crearProceso(0); /*processList_p = CreateProcess(processList_p, parameters[0], parameters[1], parameters[2], parameters[3], NULL);*/ } } } } /* Start by sorting the processes by arrival time */ OrdenarListaPorTiempoDeLlegada(); #ifdef DEBUG /* Now print each element in the list */ ConsultarProcesos(0,1); #endif /* * Apply all the scheduling algorithms and print the results */ /*FirstCome (processList_p); NonPreemptive(processList_p, PRIORITY); NonPreemptive(processList_p, CPUBURST); Preemptive(processList_p, PRIORITY); Preemptive(processList_p, CPUBURST); RoundRobin(processList_p, quantum); /* Deallocate the memory assigned to the list */ /*DestroyList(processList_p);*/ printf("Program terminated correclty\n"); //return (EXIT_SUCCESS); } }