Anda di halaman 1dari 4

Algoritmo de Reemplazo Optimo

Definición:
El algoritmo óptimo, denominado también MIN, debe generar el mínimo número de fallos de
página. Por ello, la página que se debe reemplazar es aquélla que tardará más tiempo en volverse
a usar.

FUNCIONAMIENTO:
Consiste en escoger la página que mayor tiempo va a tardar en utilizarse.

Figura 1-1. Ejemplo práctico de la aplicación del algoritmo de reemplazo OPTIMO


Fuente: (Imagen referencial)William Stanllings, “Sistemas Operativos: Aplicativos internos y
principios de diseño”, Segunda Edición, Pearson, Capitulo 3, Memoria Virtual, pag. 9.

 En el instante 3 se llena la memoria real.


 Se sigue la pagina A pero como la memoria está llena se debe decidir a quién quitar.
 La política optima nos dice de los que se tienen en memoria real hay que fijarse quién
de ellos esta mas distante en el futuro. Se observa que es la B.
 En el instante 4 se hizo el reemplazo de pagina.
 En 5 D ya esta en memoria por tanto permanece igual, no hay fallo.
 En 9 como E la voy a utilizar en el futuro y C y D no aparecen escojo por política FIFO.

Problemática:
Desafortunadamente, el algoritmo de reemplazo óptimo es fácil en teoría, pero prácticamente
imposible de implementar, dado que requiere conocer a futuro las necesidades del sistema.

Ventajas:
 Es el que produce menos fallos de pagina para cualquier cantidad de marcos.
 Se reemplaza la pagina que va a tardar más tiempo en ser referenciada.
 Aunque no puede implementarse se utiliza como referencia para los demás algoritmos.
 Tiene la frecuencia de fallos de página más baja de entre todos los algoritmos y no
presenta Anomalía de Belady.

Desventajas:
 No puede implementarse pues implicaría conocer de antemano las paginas que va a
referenciar el proceso.

Código en C:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdbool.h>
intmain()
{
intnumMarcos=0,numPaginas=0;
intnoSeraUsado=(-1);//posicion de la pagina del marco que no sera usada mas
boolyaEsta=false;//indica si la pagina a poner ya esta o no en el marco
intnulo=(-1);//posicion del marco vacio
inti=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;//contadores
printf("Ingreselacantidad de marcos:\n");
scanf("%d",&numMarcos);
printf("Ingreselacantidad de paginas:\n");
scanf("%d",&numPaginas);
intpaginas[numPaginas];//arreglo para las paginas a poner en los marcos
intmarcos[numMarcos];//arreglo para los marcos
for(i=0;i<numPaginas;i++)
{
printf("Ingresela pagina %d: \n",(i+1));
scanf("%d",&paginas[i]);
}
//al inicio todos los marcos estanvacios
for(o=0;o<numMarcos;o++)
{
marcos[o]=(-1);
}

for(j=0;j<numPaginas;j++)
{
for(k=0;k<numMarcos;k++)
{
//verificar si la pagina ya esta en algun marco
for(q=0;q<numMarcos;q++)
{
if(paginas[j]==marcos[q])
{
yaEsta=true;
break;
}
}
if(yaEsta==true)//si esta
{
yaEsta=false;
break;
}
else//si no esta
{
if(marcos[k]==(-1))//si hay un espacio vacio se pone la paginaahi
{
printf("Fallo de pagina\n");
marcos[k]=paginas[j];
break;
}
else
{
//ALGORITMO PARA COMPROBAR SI TODAVIA QUEDAN ESPACIOS VACIOS
if((k+1)<numMarcos)
{
for(p=k+1;p<numMarcos;p++)
{
if(marcos[p]==(-1))
{
nulo=p;
break;
}
}
}

if(nulo==(-1))//si no hay espacios vacios


{
//se ve si sera usada la pagina a futuro
for(m=0;m<numMarcos;m++)
{
for(l=j;l<numPaginas;l++)
{
if(marcos[m]==paginas[j])
{
noSeraUsado=(-1);
}
else
{
noSeraUsado=m;
break;
}
}
if(noSeraUsado==m)
{
break;
}
}

//se reemplazara la pagina que no se usara mas


if(noSeraUsado==(-1))
{
}
else
{
printf("Fallo de pagina\n");
marcos[noSeraUsado]=paginas[j];
noSeraUsado=(-1);
break;
}
}
else
{
//si hay un espacio vacio se pone la pagina en el marco vacio
printf("Fallo de pagina\n");
marcos[nulo]=paginas[j];
nulo=(-1);
break;
}
}
}
}
for(n=0;n<numMarcos;n++)
{
printf("%d ",marcos[n]);
}
printf("\n\n");
}
return0;
}
Ejemplo Algoritmo de Reemplazo Optimo
4 Marcos y 25 Referencias

Figura 1-2. Ejemplo práctico de la aplicación del algoritmo de reemplazo OPTIMO


Fuente: (Imagen referencial)William Stanllings, “Sistemas Operativos: Aplicativos internos y principios
de diseño”, Segunda Edición, Pearson, Capitulo 3, Memoria Virtual, pag. 9.

CONCLUSIONES
Como se vio este algoritmo es solo de simulación mas no implementación porque
como se vio necesita valores a futuro lo cual es imposible a predecir ,con lo cual
se avanza con los demás algoritmos de reemplazo para realizar cual es el que
más se aproxima a el para ver su rendimiento de funcionamiento y cual es mas
optimo a excepción claro esta de este ultimo.

Anda mungkin juga menyukai