void crearProceso(int orden) { if (1==orden) { if(primeroOrdenado==NULL) { primeroOrdenado=(struct processList*)malloc(sizeof(struct processList)); insertarProceso(primeroOrdenado); ultimoOrdenado=primeroOrdenado; ultimoOrdenado->next=NULL; } else { actualOrdenado=(struct processList*)malloc(sizeof (struct processList)); insertarProceso(actualOrdenado); ultimoOrdenado->next=actualOrdenado; //Enlace de nodos ultimoOrdenado=actualOrdenado; ultimoOrdenado->next=NULL; } } else { if(primero==NULL) { primero=(struct processList*)malloc(sizeof(struct processList)); insertarProceso(primero); ultimo=primero; ultimo->next=NULL; } else { actual=(struct processList*)malloc(sizeof (struct processList)); insertarProceso(actual); ultimo->next=actual; //Enlace de nodos ultimo=actual; ultimo->next=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); }