Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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;
}
}
}
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.