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);
        }
    }
}
Esempio n. 4
0
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);
    }
}