Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int compactar(){
- int i,inicioAnterior, libre, cont;
- traductor_marco* procesoAMover;
- int ordenarPorInicioDeMenorAMayor(traductor_marco* marco1, traductor_marco* marco2){
- return (marco1->inicio<marco2->inicio);
- }
- int proximoProceso(traductor_marco* proceso){
- return (proceso->inicio>=i);
- }
- list_sort(tablaPaginas,(void*)ordenarPorInicioDeMenorAMayor);
- log_info(logs,"INICIANDO COMPACTACION...");
- usleep(datosSwap->retardoCompactacion*1000);
- for(i=0;i<datosSwap->cantidadPaginas;i++){
- if (!bitarray_test_bit(bitArray,i)){
- libre = i;
- // busque el proximo proceso ocupado a mover
- procesoAMover=list_find(tablaPaginas,(void*)proximoProceso);
- if (procesoAMover!=NULL){
- log_info(logs, ">>>El proceso a mover es: %d<<<", procesoAMover);
- inicioAnterior=procesoAMover->inicio;
- for (cont=0;cont<procesoAMover->paginas;cont++){
- bitarray_clean_bit(bitArray,inicioAnterior+cont); //porque ahora va a estar vacia
- bitarray_set_bit(bitArray,libre+cont); //Ahora va a estar ocupada
- }
- memcpy(archivoSwap+ libre * datosSwap->tamPagina, archivoSwap+inicioAnterior * datosSwap->tamPagina, procesoAMover->paginas * datosSwap->tamPagina); //Modifique los marcos, ahora copio los datos
- procesoAMover->inicio = libre;
- }
- else{
- i=datosSwap->cantidadPaginas;} //No hay mas procesos para mover => salgo del ciclo, no necesito buscar mas
- }
- }
- log_info(logs,"Compactacion realizada con exito!!\n");
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement