int main(int argc, char **argv) { //Recibe la ruta del archivo de configuracion del Kernel o el nombre del archivo si esta en la misma carpeta
 	program_pid=0;
 	block_sem = list_create();
 	PATH_config = argv[1];
 	inicializarMutex();

 	inicializarConfiguracion(); //Lee el archivo de configuracion y asigna las configuraciones a configuracion_kernel
 	inicializarColas();
 	crearSemaforos();
 	pthread_create(&conexion_plp_umv, NULL, (void*) &core_conexion_umv, NULL);
 	pthread_create(&plp, NULL, (void*) &core_plp, NULL);
 	pthread_create(&pcp, NULL, (void*) &core_pcp, NULL);


 	esperarYCerrarConexiones();
 	cerrarSemaforos();
 	pthread_join(pcp, NULL);
 	pthread_join(plp, NULL);
 	pthread_join(conexion_plp_umv,NULL);
 	destruirColas();
 	liberarMutex();


 	return EXIT_SUCCESS;
 }
int main(int argc, char * argv[]) {

	pid_global = 0;

	//Chequear argumentos
	if ((chequear_argumentos(argc, 2)) == -1)
		return EXIT_FAILURE;

	//Cargar configuracion
	cargar_archivo_config(argv, (void *) cargarConfiguracion);

	//Crear las listas
	crearListasYColas();

	//Crear cliente para UMC
	crearClienteUMC();

	//Crear semaforos
	crearSemaforos();

	//Crear servidor de consolas
	pthread_create(&pIDServerConsola, NULL, (void *)crearServerConsola, NULL);

	//Crear servidor de cpus
	pthread_create(&pIDServerCPU, NULL, (void *)crearServerCPU, NULL);

	//Planificar consolas
	pthread_create(&pIDPlanificador, NULL, (void *)planificar_consolas, NULL);

	pthread_join(pIDServerConsola, NULL);
	pthread_join(pIDServerCPU, NULL);
	pthread_join(pIDPlanificador, NULL);

	//Liberar
	pthread_detach(pIDServerConsola);
	pthread_detach(pIDServerCPU);
	pthread_detach(pIDPlanificador);

	//Destruir semaforos
	destruirSemaforos();
}