//---------------funcion encargado de recibir conexiones de CPUs ------------------------- int recibir_conexion(){ int socketCpu; int id; socketCpu = crearSocketParaAceptarSolicitudes(socketEscucha); // recibirMensajeCompleto(socketCpu, &id, sizeof(int));// recibo id de CPU pthread_mutex_lock(&cpuss); list_add(CPUs, cpu_create(id,1,socketCpu)); // guardo en la lista pthread_mutex_unlock(&cpuss); enviarMensaje(socketCpu,&quantum,sizeof(quantum)); // le mando el quantum, que es un int FD_SET(socketCpu, &master); // Agrega socketCpu al master set if (socketCpu > fdmax) { // es el mayor fdmax = socketCpu; // guardo el mayor } read_fds = master; // actualizo el temporal sem_post(&solicitud_cpuLibre); // desperta a al hilo "ejecutar_proceso" return 0; }
int main(void) { tipoConfigSWAP* configuracion = cargarArchivoDeConfiguracionDeSWAP("cfgSWAP"); int socketSwap = crearSocket(); t_list* listaPaginas = list_create(); asociarAPuerto(socketSwap,configuracion->puertoDeEscucha); escucharConexiones(socketSwap,1); int socketMemoria = crearSocketParaAceptarSolicitudes(socketSwap); while(ejecutando){ tipoInstruccion* instruccionRecibida = recibirInstruccion(socketMemoria); tipoRespuesta* respuestaAMemoria = atenderInstruccion(instruccionRecibida,listaPaginas); enviarRespuesta(socketMemoria,respuestaAMemoria); } liberarSocket(socketMemoria); liberarSocket(socketSwap); destruirConfigSWAP(configuracion); return EXIT_SUCCESS; }
void conectar_maestroCPU(){ socketEscucha = crearSocket(); asociarAPuerto(socketEscucha,puerto); printf(BLANCO "\n\n Esperando Conexion de CPU...\n\n" FINDETEXTO); // me pongo a escuchar conexiones escucharConexiones(socketEscucha,5); //se bloquea hasta q haya cpus nuevas socketMaestro = crearSocketParaAceptarSolicitudes(socketEscucha); // }
int main(void) { int socketEscuchaCPU = crearSocket(); asociarAPuerto(socketEscuchaCPU, PUERTOCPU); escucharConexiones(socketEscuchaCPU, 1); int socketCPU = crearSocketParaAceptarSolicitudes(socketEscuchaCPU); while(1) { tipoInstruccion* instruccion = recibirInstruccion(socketCPU); printf("INSTRUCCION RECIBIDA | pID: %i | instruccion: %c | numeroDePagina: %i | texto: %s\n", instruccion->pid, instruccion->instruccion, instruccion->nroPagina, instruccion->texto); tipoRespuesta respuesta; respuesta.respuesta = 'p'; respuesta.informacion = "contenido de la pagina"; enviarRespuesta(socketCPU, &respuesta); printf("RESPUESTA ENVIADA | respuesta: %c | informacion: %s\n", respuesta.respuesta, respuesta.informacion); } liberarSocket(socketCPU); liberarSocket(socketEscuchaCPU); return EXIT_SUCCESS; }
int main(void) { //////////////////////////INICIALIZACION DE VARIABLES//////////////////////////////// tipoConfigMemoria* configuracion = cargarArchivoDeConfiguracionDeMemoria("cfgMemoria"); int socketParaCpus = crearSocket(); int socketParaSwap = crearSocket(); int socketCpuEntrante; bool memoriaActiva = true; //--------------ACA EMPIEZA FERNILANDIA-------------------------- //t_list* listaRAM = list_create(); //t_list* listaTLB = list_create(); //t_list* listaAdministracionPaginas = list_create(); fd_set listaPrincipal; fd_set listaFiltrada; FD_ZERO(&listaPrincipal); FD_ZERO(&listaFiltrada); FD_SET(socketParaCpus,&listaPrincipal); tipoEstructuraMemoria* datosMemoria = malloc(sizeof(tipoEstructuraMemoria)); //datosMemoria->listaRAM = listaRAM; //datosMemoria->listaTLB = listaTLB; datosMemoria->socketSWAP = socketParaSwap; datosMemoria->maximoSocket = socketParaCpus; datosMemoria->configuracion = configuracion; datosMemoria->cpusATratar = &listaFiltrada; //datosMemoria->administradorPaginas = listaAdministracionPaginas; datosMemoria->memoriaActiva = &memoriaActiva; datosMemoria->socketCpus = socketParaCpus; setearEstructuraMemoria(datosMemoria); //-------------END OF FERNILANDIA----------------------------------- asociarAPuerto(socketParaCpus,configuracion->puertoDeEscucha); conectarAServidor(socketParaSwap,configuracion->ipSWAP,configuracion->puertoSWAP); escucharConexiones(socketParaCpus,maxConexionesEntrantes); pthread_t hiloSignals; crearThread(&hiloSignals,funcionPrueba,datosMemoria); ///////////////////////////////////////////////////////////////////////////////////// while(memoriaActiva){ FD_ZERO(&listaFiltrada); listaFiltrada = listaPrincipal; select(datosMemoria->maximoSocket+1,&listaFiltrada,NULL,NULL,NULL); if(FD_ISSET(socketParaCpus,&listaFiltrada)){ socketCpuEntrante = crearSocketParaAceptarSolicitudes(socketParaCpus); FD_SET(socketParaCpus,&listaPrincipal); FD_SET(socketCpuEntrante,&listaFiltrada); datosMemoria->maximoSocket = maximoEntre(datosMemoria->maximoSocket,socketCpuEntrante); } tratarPeticiones(&datosMemoria); } destruirConfigMemoria(configuracion); return EXIT_SUCCESS; }