Ejemplo n.º 1
0
void crearBitMap()
{
	char* bits = malloc(sizeof(char)*config->cantidad_paginas);
	int i;
	for(i=0; i<config->cantidad_paginas; i++){
		bits[i]=0;
	}
	bitMap = bitarray_create(bits,config->cantidad_paginas);
}
Ejemplo n.º 2
0
void inicio_bitmap()
{
	bitmap = bitarray_create(data_disco + BLOCK_SIZE, tamanio_bitmap);

	return;
}
Ejemplo n.º 3
0
int main(void) {

	loggerManager = log_create("swap.log","SWAP", true, LOG_LEVEL_TRACE); //creo un archivo log


	/********************************  Configuraciones SWAP  ********************************/

	config_swap = malloc(sizeof(t_config_swap));
	config_swap->nombre_swap = malloc(30);
	cargar_configuracion_swap("config.swap.ini",config_swap);
	log_trace(loggerManager, "\nSe cargaron las configuraciones con los siguientes valores: \nPUERTO_ESCUCHA=%i \nNOMBRE_SWAP=%s\nCANTIDAD_PAGINAS=%i\nTAMANO_PAGINA=%i\nRETARDO_COMPACTACION=%i\nRETARDO_ACCESO=%i\n", config_swap->puerto_escucha, config_swap->nombre_swap, config_swap->cantidad_paginas, config_swap->tamano_pagina, config_swap->retardo_compactacion, config_swap->retardo_acceso);

	/***************************************************************************************/


	/***********************************  Archivo SWAP  ***********************************/

	int status = crear_archivo_swap(config_swap->nombre_swap, config_swap->cantidad_paginas * config_swap->tamano_pagina); //creo e inicializo el archivo SWAP
	if(status!=-1)
		log_trace(loggerManager,"Se creo correctamente el archivo swap");
	else
		log_error(loggerManager,"Hubo un problema al intentar crear el archivo swap");

	archivo_swap = fopen(config_swap->nombre_swap, "rb+");

	/**************************************************************************************/


	/******************************  Estructuras de control  ******************************/
	float tamano_paginas_array;

	if((config_swap->cantidad_paginas) % 8 == 0)
		tamano_paginas_array = (config_swap->cantidad_paginas) / 8;
	else
		tamano_paginas_array = (config_swap->cantidad_paginas) / 8 + 1;

	char paginas_array[(int) tamano_paginas_array]; //Divido por 8 porque cada char tiene 8 bits (1 byte), creo que funciona asi la cosa //TODO: verificar los ultimos cambios
	paginas_bitmap = bitarray_create(paginas_array, sizeof paginas_array); //Creo el bitmap

	inicializar_bitmap(paginas_bitmap); //Inicializo el bitmap en 0 (false)
	log_trace(loggerManager,"Se creo e inicializo la estructura bitmap con %d cantidad de bits", bitarray_get_max_bit(paginas_bitmap));


	lista_programas = list_create(); //Aca voy a meter los t_program_info a medida que el umc me pida crear un programa

	/**************************************************************************************/


	/************************************  Server SWAP  ************************************/

	t_configuracion_servidor *servidor_swap_config = malloc(sizeof(t_configuracion_servidor));
	servidor_swap_config->puerto = config_swap->puerto_escucha;
	servidor_swap_config->funcion = atender_UMC; //No deberia hacer falta el & pero ojo
	//servidor_swap_config->parametros_funcion = config_swap;
	crear_servidor(servidor_swap_config);
	log_trace(loggerManager,"Se establecio el SWAP como servidor");

	/**************************************************************************************/


	getchar(); //pausa


	/******************************  Liberacion de recursos  *******************************/
	fclose(archivo_swap);
	log_destroy(loggerManager);
	free(config_swap->nombre_swap);
	free(config_swap);
	free(servidor_swap_config);
	bitarray_destroy(paginas_bitmap);
	list_destroy(lista_programas);

	/***************************************************************************************/

	return EXIT_SUCCESS;
}