Ejemplo n.º 1
0
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;		
		}
	}
	
	
}
Ejemplo n.º 2
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);
}