Las Artes Escenicas, origen y evolucion de la musica
Algoritmos de reemplazo de páginas en sistemas operativos
1. Introducción
Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea, la cual, dado un
estado inicial, culminará por arrojar un estado final reconocible. Esta definición asume que la
ejecución del algoritmo concluye en algún momento, dejando fuera los procedimientos que ejecutan
permanentemente sin detenerse. Para incluir a éstos en la definición, algunos autores prefieren obviar
la condición de que la ejecución concluya.
Con lo cual basta con que un procedimiento sea una secuencia de pasos que puede ser ejecutada por
una entidad para que se lo considere algoritmo. En el caso que no haya un estado final reconocible, el
éxito del algoritmo no puede definirse como la culminación del proceso con un resultado significativo.
En cambio, se requiere una definición de éxito que contemple secuencias ilimitadas de resultados, por
ejemplo, un sistema de compresión/descompresión de datos en tiempo real (como los utilizados en el
manejo de voz sobre IP); en este caso, el algoritmo no define por sí mismo la finalización del proceso,
debiendo seguir su funcionamiento mientras haya datos para procesar. El éxito del algoritmo estará
dado por el hecho de que los datos, una vez descomprimidos, sean iguales que antes de comprimirse.
El concepto de algoritmo se ilustra frecuentemente comparándolo con una receta: al igual que las
recetas, los algoritmos habitualmente están formados por secuencias de instrucciones que
probablemente se repiten (iteran) o que requieren decisiones (comparaciones lógicas) hasta que
completan su tarea. Un algoritmo puede no ser correcto, con lo cual, por más que sus pasos se lleven
a cabo correctamente, el estado final no será el esperado.
2. Algoritmo del banquero
Llamado también negativa de asignación de recursos, el algoritmo resuelve
un problema planteado porEdsger Dijkstra.
Existe un banco que tiene una reserva limitada de dinero a prestar y clientes con línea
de crédito. Un cliente pide dinero y no hay garantía de que haga reposiciones hasta
que saque la cantidad máxima. El banco puede rechazar el préstamo si hay riesgo de
que no tenga fondos para prestar a otros clientes
Viéndolo como Sistema Operativo, los clientes serían los procesos, el dinero a
prestar los recursos y el banquero el S.O.
Para este algoritmo es importante considerar los siguientes puntos:
Estado. Es la asignación actual de los recursos a los procesos.
Matriz demanda (o máximo necesario). Son las exigencias máximas de
recursos para cada proceso.
Matriz asignación. Son las asignaciones actuales de recursos para cada
proceso.
Vector disponible. Cantidad total de recursos sin asignar a los procesos.
Estado seguro. Es un estado en el que existe al menos un orden en el que
todos los procesos pueden ejecutar hasta el final sin generar interbloqueo.
Cuando un proceso realiza una solicitud de recursos, se supone que se concede,
se actualiza el estado y se toma una decisión. Si se llega a un estado seguro, se concede
la petición. Si se llega a uno inseguro, se rechaza y el proceso es bloqueado.
Ventajas del algoritmo del banquero:
No es necesario expulsar y hacer retroceder procesos como en la detección del
interbloqueo.
Es menos restrictivo que la prevención.
Desventajas:
Se debe conocer la máxima demanda de recursos por anticipado.
La ejecución de los recursos no debe estar forzada por la sincronización.
Se tiene un número fijo de procesos y recursos.
Los procesos no finalizan mientras retengan recursos.
Requiere que los procesos salden sus préstamos en un tiempo finito.
A continuación se presenta un ejemplo:
3. Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el
orden en que los procesos pasan a ser estados seguros evitando el problema del
interbloqueo.
Lista de procesos: P1-P3-P4-P0 ó P2
A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C. En la
primer columna de asignados está la cantidad de recursos que el proceso ha obtenido
a lo largo de un tiempo; en la segunda columna de Máximo Necesario, están los
recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por
ejemplo, el P0 no ha obtenido ningún recurso del tipo A, sólo 1 del tipo B y ninguno
del tipo C, y necesita para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.
En la última columna se tienen los recursos disponibles que da el sistema, los que se
pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.
El algoritmo del banquero trata de asegurar qué proceso tiene un “estado seguro” es
decir, se requiere alcanzar el máximo requerido entre los que estén en Asignados y los
que se encuentren en Disponibles.
Ejemplo: El proceso 0 no está en estado seguro. Si se suman Asignados + Disponibles
para cada uno de los recursos A, B y C, realmente no se alcanzan los Máximos
Requeridos.
Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados +
Disponibles. Allí sí se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como se
alcanza a llenar los Máximos, ese proceso se ejecuta.
Una vez que el proceso se ejecutó, entonces se procede a SUMAR los recursos
asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al
terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo
A, B y C a sumarse con los disponibles 3-3-2 y se tendrán nuevos DISPONIBLES que
repartir, siendo ahora éstos 5-3-2.
4. Con estos se pasa al proceso P2 y así sucesivamente.
Y el algoritmo es como sigue:
Algoritmo de remplazo
En sistemas operativos que utilizan paginación para el manejo de memoria, los algoritmos de
reemplazo de páginas son usados para decidir qué páginas pueden ser sacadas de memoria
cuando se necesita cargar una nueva y ya no hay marcos de páginas libres.
Algoritmo de reemplazo óptimo
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.
Evidentemente, este algoritmo es irrealizable, ya que no se puede predecir cuáles serán las siguientes
páginas a lasquese va a acceder. Este algoritmo sirvepara comparar el rendimiento de los algoritmos que sí
son factibles en la práctica.
Algoritmo FIFO (First Input/First Output, primera en entrar/primera en salir)
Una estrategia sencillaeintuitivamente razonablees seleccionar para lasustitución la página que lleva más
tiempo en memoria, es decir, basarse en el tiempo de residencia. La implementación de este algoritmo es
simple.Además, no necesita ningún apoyo hardwareespecial. El sistema operativo debe mantener una l ista
de las páginas que están en memoria, ordenada por el tiempo que llevan residentes.
5. Sin embargo, el rendimiento del algoritmo no es bueno en muchas ocasiones. La página que lleva más
tiempo en memoria puede contener instrucciones o datos a los que se accede con frecuencia. Poniendo un
ejemplo extremo, piense en un programa pequeño, cuyo código cabe en una sola página. Lo razonable sería
que esa página nunca se expulsase, pero, con el algoritmo FIFO se expulsaría con bastante frecuencia.
En determinadas situaciones este algoritmo presenta un comportamiento sorprendente, conocido como la
anomalía de Belady. Intuitivamente, parece que cuantos más marcos de página haya en el sistema, menos
fallos de página se producirán. Sin embargo, ciertos patrones de referencias causan que este algoritmo
tenga un comportamiento opuesto. El descubrimiento de esta anomalía resultó al principio sorprendente y
llevó al desarrollo de modelos teóricos para analizar los sistemas de memoria virtual. En la práctica, esta
anomalía es sólo una curiosidad, que demuestra que los sistemas pueden tener a veces comportamientos
inesperados.
Algoritmo LRU (Least Recently Used, menos recientemente usada)
El algoritmo LRU está basado en el principio de proximidad temporal de referencias: si es probable que se
vuelvan a referenciar las páginas a las que se ha accedido recientemente, la página que se debe reemplazar
es aquélla a la que no se ha hecho referencia desde hace más tiempo. Dicho de otra forma, se intenta
predecir el futuro próximo usando el pasado reciente. Se basa, por tanto, en un criterio de frescura de la
página.
El algoritmo LRU no sufre la anomalía de Belady. Pertenece a una clase de algoritmos denominados
algoritmos de pila. La propiedad de estos algoritmos es que las páginas residentes en memoria para un
sistema con n marcos de página son siempre un subconjunto de las que habría en un sistema con n+1
marcos.
Hay un aspecto sutil en este algoritmo cuando se considera su versión global. A la hora de seleccionar una
página no habría que tener en cuenta el tiempo de acceso real,sino el tiempo lógico decada proceso. O sea,
habría que seleccionar la página que haya sido menos recientemente usada teniendo en cuenta el tiempo
lógico de cada proceso.
El algoritmo LRU se utiliza muy frecuentemente para la gestión de la caché del sistema de ficheros. Sin
embargo, una implementación exacta en un sistema de memoria virtual es difícil, ya que requiere un
considerable apoyo hardware.
Algoritmo del reloj
El algoritmo de reemplazo del reloj (o de la segunda oportunidad) es una modificación sencilla del FIFO, que
evita el problema de que una página muy utilizada sea eliminada por llevar mucho tiempo residente,
proporcionando unas prestaciones similares a las del algoritmo LRU, sin requerir un hardware específico.
En este algoritmo, cuando se necesita reemplazar una página, se examina el bit de referencia de la página
más antigua (la primera de la lista en orden FIFO). Si no está activo, se usa esta página para el reemplazo.
En caso contrario, se le da una segunda oportunidad a la página, poniéndola al final de la lista y
desactivando su bit de referencia. Por tanto, se la considera como si acabara de llegar a memoria. La
búsqueda continuará hasta que se encuentre una página con su bit de referencia desactivado. Si todas las
6. páginas tienen activado su bit de referencia, el algoritmo se convierte en FIFO.
Para implementar este algoritmo se puede usar una lista circular de las páginas residentes en memoria, en
vez de una lineal (en el caso de una estrategia local,seutiliza una lista circular por cada proceso). Existe un
puntero que señala en cada instanteal principio dela lista.Cuando llega a memoria una página,se coloca en
el lugar donde señala el puntero y, a continuación, se avanza el puntero al siguiente elemento de la lista.
Como se comentó previamente, se trata de un algoritmo sencillo, que sólo requiere que el procesador
gestione un bit de referencia,que suele ser lo habitual (incluso en procesadores que no gestionan este bit es
relativamente sencillo implementarlo, simulándolo por software). Como el algoritmo LRU, también está
basado en la frescura de la página, proporcionando un rendimiento similar. Esto ha hecho que, con
pequeñas variaciones específicas, sea el algoritmo utilizado en la mayoría de los sistemas operativos
actuales.
Algoritmo LFU (Least Frequently Used, menos frecuentemente usada)
Existe un número incontablede algoritmos dereemplazo en la literatura sobre gestión de memoria, por ello
no tiene sentido hacer un repaso exhaustivo de los mismos en esta sección. Sin embargo, se ha considerado
conveniente hacer una breve reseña de este algoritmo, puesto que, aunque no proporciona una buena
solución al problema, tiene en cuenta un factor que no era tomado en consideración en los algoritmos
presentados: la frecuencia de uso.
La idea de este algoritmo es expulsar la página residente que menos accesos ha recibido. El problema de
esta técnica es que una página que se utilice con mucha frecuencia en un intervalo de ejecución del
programa obtendrá un valor del contador muy alto, no pudiendo ser expulsada en el resto de la ejecución
del programa.
Dada la escasa utilidad del algoritmo, no se entrará más en detalle sobre su implementación, aunque hay
que resaltar que, como ocurría con el algoritmo LRU, necesitaría una MMU específica que gestionase un
contador de referencias, o bien usar una versión aproximada del mismo, que gestionara el contador
mediante muestreos periódicos del bit de referencia.
http://sistemasoperativosm317.wikispaces.com/Algoritmos+de+Reemplazo
https://es.wikipedia.org/wiki/Algoritmo_de_reemplazo_de_p%C3%A1ginas
http://sistemas-operativos.blogspot.com/2012/10/algoritmo-del-banquero.html
http://www.conocimientosweb.net/portal/article782.html