gestión de memoria
DESCRIPTION
Introducción, Asignación de espacio contiguo, asignación de espacio no contiguo, gestión de memoria virtual.TRANSCRIPT
CARRERA DE INGENIERIA EN SISTEMAS
Docente:
SISTEMAS OPERATIVOS
Periodo:
Ing. Freddy Patricio Ajila Z.
septiembre 2013 – febrero 2014
AREA DE LA ENERGÍA LAS INDUSTRIAS Y LOS RECURSOS NATURALES NO RENOVABLES
Email: [email protected]
Segunda Parte:
Gestión de Memoria
OBJETIVO
1. Analizar las estrategias con las que cuenta el
sistema operativo para compartir la memoria
entre los procesos.
Contenido
1. Introducción
2. Asignación de espacio contiguo
– Asignación estática de memoria particionada
– Asignación dinámica de memoria particionada
– Protección y uso compartido
3. Asignación de espacio no contiguo
– Segmentación
– Paginación
– Segmentación con paginación
4. Gestión de memoria virtual
– Introducción
– Paginación por demanda
– Algoritmos de reemplazo de páginas
– Algoritmos de asignación de marcos de página
La CPU es compartida por un conjunto de procesos y
esta tarea es controlada por el planificador de procesos,
pero para mejorar el grado de utilización del procesador
y la velocidad de respuesta a los usuarios es necesario
mantener varios procesos en memoria y para ello se
nececita gestionar de forma eficiente el espacio de
memoria.
1. Introducción
Para lograrlo el S.O utiliza técnicas de gestion de
memoria que entre las más utilizadas están la
paginación y la segmentación.
C/U de las técnicas tiene sus propias ventajas y
desventajas y para ejecutarse dependen de muchos
factores, en especial del hardware del sistema (CPU).
Introducción
La CPU toma inst de memoria de acuerdo con el
valor del contador del programa PC.
Las inst pueden provocar otras operaciones de
lectura o almace en dir específicas de memoria. Por
ejemplo: Ciclo Inst (Extraer Inst + Decodifi +
Operandos + ejecución = almacenamiento
resultados)
Fundamentos
Un programa debe cargarse en memoria desde disco y colocarse dentro de un proceso para que se ejecute.
La unidad de memoria tan solo ve un flujo de direciones
de memoria no como se generan ni tampoco para que se
utilizan las inst o datos.
Por lo tanto ignoramos como generar dir de memoria y
nos centramos en la secuencia de dir de memoria
generadas por el programa en ejecución
- La memoria principal y los registros son los únicos dispositivos de almacenamiento a los que puede acceder desde la CPU directamente•
- Los datos siempre deben estar en memoria para que la CPU pueda pueda operar con ellos
•- El acceso a registro es muy rápido; supone un ciclo de CPU (o menos)
- El acceso a memoria principal puede durar varios ciclos del reloj del procesador para completarse y x tanto el procesador tiene que detenerse ya q nodispone de los datos para completar la inst que está ejecutando
- El remedio son las memorias caché se colocan entre la memoria principal y la CPU para resolver la diferencia de veloc.
Hardware Básico
Procesamiento de un programa de usuario
• Algo fundamental que se debe garantizar es que no se pueda acceder a espacios de memoria que no corresponden, ya sea del Sistema Operativo como de otros procesos. Este tipo de protección debe ser proporcionada por el hardware.
Para hacer esto se debe determinar el rango de direcciones legales a las que el proceso puede acceder.
Estas direcciones están dadas a través de dos registros: Registro base y límite
Registro base. contiene la dirección de la memoria física desde donde empieza el proceso.
Registro límite. especifica el rango de direcciones utilizadas por el proceso.
Esto quiere decir que si un proceso empieza en la dirección 3000 ese es su registro base y si el límite es 325, entonces solo podrá acceder ese proceso a las direcciones comprendidas entre 3000 y 3325 incluyendo el extremo inferior.
Un registro base y un registro límite definen un espacio lógico de direcciones
Unidad de Gestión de Memoria (MMU)
La MMU (Memory-Management Unit) es un dispositivo hardware que transforma las direcciones virtuales en físicas
Con la MMU el valor del registro de reubicación (registro base) es añadido a cada dirección generada por un proceso de usuario en el momento en que es enviada a la memoria
El programa de usuario trabaja con direcciones lógicas; nunca ve las direcciones físicas reales
La protección de la memoria en este caso consiste en que el hardware de la CPU compare las direcciones generadas, para saber si se encuentran dentro del rango establecido para ese proceso, si este acceso es legal no existe problema alguno, pero si es ilegal entonces se genera una interrupción lo que provoca una llamada al sistema para que el sistema operativo conozca que se está haciendo un acceso a una dirección incorrecta y la repuesta del SO es generar un error de direccionamiento.
Protección de espacio de memoria
Protección hardware de las direciones, utilizando un registro base y un registro límite.
Estos registros solo pueden ser cargados por el S.O ya que las instrucciones privilegiadas solo se pueden ser ejecutadas en modo kernel.
El S.O que se ejecuta en modo kernel tiene acceso no restringido a la memoria del S.O como de los usuarios.
Lo anterior permite al S.O cargar los prog de usuarios en la memoria de los usuarios y volcar estos programas en caso de error.
Normalmente los programas se encuentran almacenados en Disco cuando un usuario los invoca o el mismo sistema operativo lo hace, estos se carga en memoria, para luego ejecutarse en la CPU instrucción por instrucción. Estos procesos que se encuentran en el disco forman la cola de entrada o cola de trabajo.
Cuando el proceso termina su ejecución, se produce una llamada al sistema para que el SO conozca sobre esta terminación y actualice sus tablas de datos en las cuales posee info sobre los espacios de memoria que están siendo utilizados y por quién están siendo utilizados, obviamente el resto de espacios serán los que estén disponibles.
Reasignación de direciones
Recuerde que la asignación de memoria a un proceso no es secuencial si no más bien aleatoria, eso quiere decir que en cualquier espacio de memoria que esté disponible y este sea lo suficiente para albergar al proceso, este se alojará.•
•A medida que se ejecute el proceso, este accesa a memoria para obtener instruciones y datos•
En el caso de un proceso de usuario se puede reasignar las direcciones, esto implica que se cambie la dirección establecida al principio, por otra. La reasignación de las direcciones puede darse en cualquiera de los pasos:Tiempo de compilación.Tiempo de carga.Tiempo de ejecución.
Dirección lógica.- es una dirección generada por la CPU.
Dirección física.- es una dirección vista en la memoria principal.
Los métodos de reasignación en tiempo de compilación y en tiempo de carga generan direcciones lógicas y físicas iguales. En cambio el esquema de reasignación de direcciones en tiempo de ejecución hace que las direcciones físicas y lógicas difieran, es por eso que en esta parte analizaremos este caso.
Espacio de direciones lógico y físico
El conjunto de todas las direcciones lógicas generadas por un programa se denomina espacio de direcciones lógicas, y al conjunto de todas las direcciones físicas correspondientes a esas direcciones lógicas, se las denomina espacio de direcciones físicas.
A las direcciones lógicas también se les denomina direcciones virtuales.
El cambio de direcciones virtuales a físicas es realizada por un dispositivo HW denominado Unidad de Administración de Memoria (MMU)
En la MMU se realiza la suma de la dirección virtual generada por la CPU y el Registro base que ahora le vamos a llamar registro de reubicación, esta operación nos da como resultado un acceso válido a un espacio de memoria física ocupada por el proceso que actualmente se encuentra en la CPU ejecutándose.
Al cambio de direcciones lógicas a físicas también se le denomina Mapeo de direcciones lógicas.
Recuerde que cualquier acceso a un espacio de memoria que no se encuentre dentro del rango establecido producirá un error de direccionamiento.
Reubicación dinámica mediante registro
Para que un programa se ejecute sabemos que debe estar cargado en memoria, en consecuencia entonces el tamaño de un proceso está limitado por el tamaño de la memoria física.
¿Qué pasa si no hay tamaño suficiente de memoria para satisfacer una solicitud de un proceso?
Para mejorar la utilización del espacio en memoria principal se puede utilizar el mecanismo de carga dinámica.
Con la carga dinámica, una rutina no se carga hasta que se la invoca, todas las rutinas se mantienen en disco
Carga Dinámica
La idea es mejorar la utilización del espacio de memoria con lo que la utilización de este método garantizaría que tenga más espacio en memoria para satisfacer una solicitud de otro proceso que quiera ejecutarse, por lo que solo se cargaría en memoria la instrucción que se necesita, eso si se debe estar actualizando cada vez la tabla de direcciones del programa en memoria
La ventaja de este método, es que una rutina o instrucción no utilizada no se cargará nunca en memoria.
Intercambio
Un proceso puede ser retirado temporalmente de la memoria a algún almacenamiento auxiliar; más tarde será incorporado de nuevo a la memoria para que continúe su ejecución
•Por ejemplo En un entorno de multiprogramación al usar el algoritmo de planificación basado en Round Robin, cuando se termina el quantun de tiempo el gestor de memoria retira el proceso y en el espacio que queda es cargado otro proceso. Mientras esto ocurre el planificador de la CPU, asigna un cuanto de tiempo a otro proceso que ya está en memoria.•
En los algoritmos con prioridad el gestor de memoria puede descargar un proceso de menor prioridad y cargar un proceso de prioridad mayor; de tal manera que asigna un espacio de memoria acorde a lo solicitado por el proceso de mayor prioridad•
El SO mantiene una cola de listos para los procesos intercambiados que pueden ejecutarse
Vista esquemática del intercambio
Particionamiento fijo o estático
Particionamiento fijo o estático
Con esta técnica es que cada partición permite cargar un proceso.
Cada partición permite ejecutar un proceso de forma independiente ya que todas las instruciones y datos se encuentran dentro de la partición.
Un proceso no puede invadir el espacio de direcciones de otro proceso que se encuentra en otra partición, hay esquemas que permiten proteger el espacio de direciones de cada partición.
Con esta técnica existe mucho desperdicio de memoria ya que el tamaño de la partición suele ser mayor que el tamaño del proceso.
Particionamiento fijo o estático
Particionamiento fijo o estático
Con el esque de cola única; el proceso completo debe cargarse en cualquier partición donde quepa.
Con el esquema de cola única; surge la pregunta ¿Cual de las particiones libres es ideal para cargar el proceso?(Tecnicas primer ajuste, mejor ajuste y peor ajuste).
Con el esquema de varias colas (una por partición); los procesos están diseñados para ejecutarse en dicha partición.
El problema que existe es el desperdicio de memoria que queda al final de cada partición (Fragmentación Interna) ya que no se puede garantizar que el proceso quepa exactamente en la partición.
Fragmentación Interna
Ala diferencia entre el tamaño de la partición y el tamaño del proceso se conoce como fragmentación interna.
Fragmentación Externa
Se produce cuando un proceso por su tamaño no puede ser cargado en ninguna de las particiones libres y por lo tanto existe desperdicio de particiones completas, a lo que se conoce como fragmentación externa.
La fragmentación externa se soluciona por medio de la compactación
Compactación: Consiste en mover las particiones de memoria asignadas para colocar toda la memoria libre en un bloque grande y contiguo
Particionamiento variable o dinámico
●Este equema fué diseñado para solucionar el problema de particionamiento fijo, ya que conforme llegan los procesos se les asisgna la cantidad exacta de memoria que necesitan. ● Cuando llega un proceso se le asigna una partición lo suficientemente grande donde quepa el proceso.
– Con el espacio sobrante se crea una nueva partición libre (hueco)● En este tipo de asignación las consideraciones de protección son las mismas que en la asignación estática
Particionamiento variable o dinámico Esquema con una sola partición grande para cargar a los
procesos. El S.O lleva una tabla de registro de las particiones Libres y sus tamaños
Ejemplo de compactación
Técnicas de asignación de particiones
En estos dos esquemas de particionamiento; fijo y variable es importante saber en que partición se va a colocar el proceso que va ha ser cargado. Los siguientes algoritos se aplican a los dos esquemas de particionamiento fijo y variable.
Primer ajuste (First-fit): Colocar el proceso en el primer hueco libre donde quepa el proceso.
Mejor ajuste (Best-fit): Se busca de entre las particiones libres la que mejor se ajuste al tamaño del proceso o la más adecuada procurando que la fragmentación interna sea lo mas pequeña posible.
Peor ajuste (Worst-fit): Se busca de entre las particiones libres la particion más grande posible, usando la lógica de que la fragmentación interna sea lo suficientemente grande para cargar otro proceso
Los métodos de primer y mejor ajuste son mejores que el peor ajuste en términos de velocidad y aprovechamiento de la memoria
Ejemplo de los algoritmos de primer, mejor y peor ajuste
Recomendaciones
Los espacios libres en memoria no están ordenados de una manera específica, y en algunas ocasiones es conveniente ordenarla:
En el algoritmo de mejor ajuste al tener ordenado las particiones de menor a mayor, en el primer hueco que quepa el proceso se lo asignará, teniendo un menor espacio de fragmentación interna.
En el algoritmo de peor ajuste es conveniente ordenarlo de mayor a menor, ya que si en el primer hueco no cabe el proceso, se deduce que en este momento no es posible cargar dicho proceso
Se debe tomar en cuenta: El cómo tiene organizada un S.O. su lista de huecos y el cómo se asigna los huecos a los procesos, son elementos a tomar en cuenta cuando se analizan las características de un S.O. particular.
3. Asignación de espacio no contiguo o Almacenamiento Disperso
a. Paginación
b. Segmentación
c. Segmentación con paginación
Paginación
Es un esquema de gestión de memoria que permite que el espacio de direcciones físicas de un proceso no sea contiguo.
El método básico de la paginación consiste en descomponer la memoria física en una serie de bloques de tamaño fijo denominado marcos de pagina y descomponer la memoria lógica en en bloques del mismo tamaño denominado páginas.
Cuando se carga un proceso sus páginas se cargan desde el disco duro en los marcos de memoria disponibles.
La porción de disco conocida como memoria auxiliar está dividida en bloques de tamaño fijo del mismo tamaño que los marcos de memoria.
Toda dirección generada por la CPU está dividida en dos partes: un número de página (p) y un desplazamiento (d), El número de página se utiliza como índice para la tabla de páginas.
Esquema del hardware de Paginación
PaginaciónLa tabla de páginas contiene la dirección báse de cada página en memoria física que se combina con el desplazamiento de página para obtener la dirección de memoria física.
Modelo de paginación de la memoria lógica y física
PaginaciónEl tamaño de página es una potencia de 2, que varía entre 512 Bytes y 16 Mbytes por página
La estructura de una dirección lógica es:
Donde p es un índice de la tabla de páginas y d es el desplazamiento dentro de la página.
Por ej: El tamaño de las paginas es de 4 bytes y la memoria física es de 32 bytes (8 páginas). La dir lógica 0 representa la pagina 0 y se encuentra en el marco 5, por lo tanto la dir lógica 0 se corresponde con la dir física 20. Esto se calcula de la sig manera:
Dir física = (Marco de página * támaño de pagina)+desplazamiento
Dir lógica 0 coresponde con dir física 20 > 20 = (5*4)+ 0
Dir lógica 3 coresponde con dir física 23 > 23 = (5*4)+ 3
Dir lógica 4 coresponde con dir física 24 > 24 = (6*4)+ 0
Dir lógica 13 coresponde con dir física 20 > 9 = (2*4)+ 1
número de página desplazamientop d
m - n n
Ejemplo de paginación para una memoria de 32 bytes con páginas de 4 bytes
Memoria lógica
0123
abcd
4567
efgh
891011
ijkl
12131415
mnop
0 5
1 6
2 1
3 2
Tabla de páginas
0
1
2
3
0
4 ijkl
8 mnop
12
16
20 abcd
24 efgh
28
Memoria Fisica
0
1
2
3
4
5
6
7
Num Pag
Marco Pag
PaginaciónCuando usamos el esquema de paginación no tenemos fragmentación externa.
Pero si puede existir en cierto grado de fragmentación interna ya que el ultimo marco de pagina asignado puede no estar completamnte lleno. Por ejemplo:
Si el tamaño de pagina es 2048 byes y el proceso es de 72226 bytes nececitará:
Num paginas = 72226 / 2048 = 35 paginas completas
Porcion de página = 72226 (35 * 2048) = 546 bytes
Fragmnetación Interna = 2048 – 546 = 1052 bytes
PaginaciónMarcos Libres
Cuando llega un proceso al sistema para ejecutarlo, se examina su tamaño expresado en páginas, donde cada pagina necitará un marco. Por lo tanto si el proceso requiere n paginas deberán haber almenos n marcos libres en memoria. Si hay n marcos libres se los asignara al proceso que acaba de llegar. La primera página del proceso se carga en uno de los marcos asignados y se incluye el numero de marco en la tabla de páginas para ese proceso. La siguiente pagina se carga en otro marco y su numero de marco se guarda en la tabla de páginas y así sucecivamente.
Ver siguiente diagrama:
Esquema de marcos libres
Antes de la asignación Después de la asignación
Protección
La protección de la memoria en un entorno paginado se implementa mediante una serie de bits de protección asociados con cada marco, estos bits se mantienen en la tabla de páginas.
Al mismo tiempo que se clacula la dir física, puede comprobarse los bits de protección para verificar que no se esté haciendo ninguna escritura en una página de solo lectura.
Generalmente se asocia un bit de validez con cada entrada de la tabla de páginas de tal forma que cuando un bit es:
“válido” indica que la página asociada está en el espacio de direcciones lógico del proceso, y por tanto es legal el acceso.
Un bit “inválido” indica que la página no está en el espacio de direcciones lógico del proceso.
Paginación
Esquema de un bit de validez en una tabla de páginas
Páginas Compartidas
Una ventaja de la paginación es la posibilidad de compartir código común en un entrono de tiempo compartido.
Para ello se comparten los marcos de memoria; donde el marco compartido debe estar asociado a una página en la tabla de páginas de cada proceso
Código compartido
Los procesos comparten una copia de código reentrante (o código puro) no modificable o sólo lectura (ej., editores de texto, compiladores) estos pueden estar en varias páginas compartidas para cada proceso
Los datos privados de cada proceso se encuentran en páginas no compartidas
Paginación
EJEMPLO DE PÁGINAS COMPARTIDAS (Un editor de 3 páginas de código puro y una página para espacio de datos)
Ejercicios1. Empleando un tamaño de página (tp) de 8 bytes y una memoria física (mf) de 64 bytes, indique el número de páginas y calcule la direción física de memoria para los datos indicados en el diagrama. Los datos son 3, 9, 14, 18 y 28.
Paginación
0 3
1 4
2 2
3 1
Tabla de páginas
01234567
0
89101112131415
1
1617181920212223
2
2425262728293031
3
Num PagDatos
Memoria lógica
Num
Pag
Mar
co P
ag
Solución ejercicio 1
Ejercicios2. Empleando un tamaño de página (tp) de 4 bytes y una memoria física (mf) de 16 bytes, indique el número de páginas y calcule la direción de la memoria física para los datos indicados en el diagrama. Los datos son a, f, l, o.
Paginación
0 3 v
1 4 i
2 2 v
3 5 i
Tabla de páginas
Num PagDatos
Memoria lógica
abcd
0
efgh
1
Ijkl
2
mnop
3
Num
Pag
Mar
co P
ag
Bit V
al- In
v
Solución ejercicio 2
Segmentación
La segmentación es un esquema de gestión de memoria que apoya la visión que el usuario tiene de la memoria, aquí los espacios lógicos es una colección de segmentos, cada segmento tiene un nombre y una longitud(desplazamiento).
Cuando el programa se compila, el compilador automaticamente construye los segmentos. Un segmento es una unidad lógica tal como:
programa principal,
procedimiento,
función,
método,
objeto,
variables locales, variables globales,
bloque común,
pila,
tabla de símbolos, arrays
1.4 SEGMENTACIÓN
Programa Visto por un Usuario
Segmentación
Por ejemplo:
Uncompilador C, podría crear elementos separados para los siguientes elementos:
1. El código
2. Las variables
3. El cúmulo de memoria a partir del cual se asigna la memoria
4. Las pilas utilizadas por cada hebra de ejecución
5. La biblioteca de C estandar
1.4 SEGMENTACIÓN
Vista Lógica de la Segmentación
1
3
2
4
Espacio de usuario
1
4
2
3
Espacio de memoria física
Elementos de la sementación
Una dirección lógica consiste en un par:
<número de segmento, desplazamiento>
Tabla de segmentos – contiene información sobre la ubicación de los segmentos en memoria; cada entrada tiene:
– base – contiene la dirección física en la que comienza el segmento
– límite – especifica la longitud del segmento
Hardware de segmentación
1.4 SEGMENTACIÓN
Ejemplo de Segmentación
Segmentación con paginación
La paginación y la segmentación se pueden combinar en la segmentación con paginación
En este esquema de gestión de memoria los segmentos se paginan
– Se apoya la visión de la memoria que tiene el usuario
– Se resuelve el problema de la asignación dinámica
Es necesario una tabla de segmentos y una tabla de páginas por cada segmento
– La traducción de direcciones es más compleja y puede requerir un mayor número de accesos a memoria en el peor caso
Segmentación con paginación
El espacio de direcciones de un usuario se divide en varios segmentos según el criterio del programador.Cada segmento se vuelve a dividir en varias páginas de tamaño fijo, que tienen la misma longitud que un marco de memoria principal. Si el segmento tiene menor longitud que la página, el segmento ocupará sólo una página.Desde el punto de vista del programador, una dirección lógica también está formada por un número de segmento y un desplazamiento en el segmento.Desde el punto de vista del sistema, el desplazamiento del segmento se ve como un número de página dentro del segmento y un desplazamiento dentro de la página.
Cada proceso tiene una tabla de segmentos y varias tablas de páginas (una por cada segmento).
Ejemplo
Segmentación con paginación
4. Gestión de memoria virtual
Es una técnica que permite al S.O. la ejecución de procesos que no se encuentran completamente cargados en memoria. Una de las principales ventajas de este esquema es que los programas pueden tener un tamaño mayor que la propia memoria física.
Fundamentos
Sólo partes del proceso necesitan estar en memoria para su ejecución. Una ventaja es que el espacio de direcciones lógicas puede ser mayor que el espacio de direcciones físicas. Facilita la tarea de programación porque el programador ya no se debe preocupar por la cantidad de memoria física disponible. Se podrían ejecutar más programas al mismo tiempo aprovechando el uso del procesador sin incrementar el tiempo de respuesta. Permite compartir espacios de direcciones entre procesos. Se requiere mecanismos para traer paginas de disco a memoria y retirar paginas de memoria para pasrlas a disco.
La memoria virtual suele implementarse usando esquemas como:
– Paginación por demanda
– Segmentación por demanda
Administración de memoria virtual
Políticas de carga (Fetch).
➔ Cuando traer una pagina/segmento a memoria Politicas de colocación (Placement).
➔ Donde colocar una pagina/segmento a memoria Politicas de reemplazo (Replacement).
➔ Si la memoria principal está llena, se debe decidir cual página/segmento se debe reemplazar
Políticas de carga
Paginación por demenada
La memoria virtual basada en paginación por demanda solo se cargan las paginas que sean necesarias de tal forma que las paginas no necesarias jamas se cargan a memoria.
Se requiere menos memoria La respuesta es más rápida Puede haber más procesos en memoria
La herramienta que usa el S.O para traer una página a memoria o llevarla a disco se llama Paginador conocida tambien como intercambiador perezoso.
Esquema memoria paginada a disco
¿Dentro del esquema de paginación, que pasa si quiere accesar a una página que no está en memoria?
La respuesta es que ocurre un fallo de página
Un fallo de pagina sucede cuando un proceso en ejecución intenta accesar a una dirección lógica de una página que no está cargada en memoria
Si ocurre un fallo de página se provoca una interrupción al S.O de fallo de página para que se encargue de subir la pagina solicitada.
Cuando se carga la página el bit de estado en la tabla de paginas cambia a 1 indicando que la pagina está en memoria.
Fallo de página Bit de estado
En cada entrada de la tabla de páginas hay un bit de validez(v/1 ⇒ en memoria, i/0 ⇒ no en memoria o acceso ilegal)
Al comienzo el bit de validez es inicializado a i en todas las entradas
Ejemplo de tabla de páginas:
Durante la traducción de direcciones, si el bit de validez de la entrada de la tabla de páginas es i ⇒ fallo de página
Esquema de una tabla de páginas cuando algunas páginas no se encuentran en memoria principal
¿Que hace el S.O cuando existe un fallo de página?
Cuando existe un fallo de pagina el procedimiento a seguir es sencillo:
1. Se comprueba en la tabla de páginas del proceso (PCB) si la referencia era un acceso a memoria válido o invalido.
2. Si la referencia era inválida, se aborta el proceso. Si la referencia es válida y la pagina no está en memoria, se la debe cargar.
3. Buscamos un marco libre
4. Cargamos la página desde disco al marco asignado
5. Completada la carga, modificamos la tabla de paginas cambiando el bit a válido.
6. Reinicia la instrucción que fué interrumpida o causó el fallo de página
Esquema de los pasos para tratar un fallo de página
Políticas de colocación
Para paginación es trivial, ya que todos los marcos de pagina son iguales y por lo tanto la pagina podría ser colocada en cualquiera de ellos. Para segmentación y debido a que sus
segmentos son de tamaño variable se debe utilizar mecanismos o algoritmos de colocación como:
Primer Ajuste Mejor Ajuste Peor Ajuste
¿Que pasa si no existe un marco de página libre?
La respuesta es que se debe seguir alguna política de reemplazo.
Mediante algun algoritmo el S.O decide que página retirar de memoria para dejar el marco libre.
Es necesario que el algoritmo que se use para el reemplazo de páginas no genere muchos fallos de pa ina para futuras referencias, osea debe retirar la ǵpagina adecuada.
Políticas de reemplazo
: Aleatorio (RANDOM) Mejor OPTIMA (OPT) Primera en llegar, primera en salir (FIFO) Menos recientemente utilizada (LRU) Aproximaciones LRU
Referencia bit, segunda oportunidad, reloj Algoritmos basados en contadores
Menos frecuentemente utilizada (LFU) Mas frecuentemente utilizada (MFU)
Conceptos clave
String de referencia
Es el registro de las páginas que han sido
accesadas por un proceso.
Por ejemplo el PRS del proceso A es:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5La secuencia signifinicca que el proceso en
ejecución accesó a la pag 1, luego a la 2, luego a la 3 y asi susecivamente.
Conceptos clave
Rendimiento de estrategias de reemplazo
Significa que cualquier estrategia de reempazo debe permitir el mejor rendimiento para la ejecución del proceso. EL rendimiento está dado por
R = 1 – F
donde:
F = # de fallos de pagina / # total de referencias
Cualquier estrategia que se aplique dependera PRS que indica el historial de acceso a las paginas y esto influirá directamente sobre el rendimiento.
Algoritmo Optimo
Es el mejor que existe Consiste en reemplazar la página que no va ha ser utilizada por el período más largo de tiempo. Significa que cuando se llenó la memoria, se debe tomar una decisión en base al historial del PRS con el fin escoger la pagina más distante o la que menos voy accesar más adelante.
Ejemlpo con tres marcos
Respuesta
Algoritmo FIFO
Este algorimo tomo en cuenta el orden de llegada por lo tanto la primera pagina en llegar es la primera página en salir. Ejemplo con 3 marcos libres
Respuesta
Algoritmo LRU (Menos recientemente utilizada)
Este algorimo se basa en el tiempo de ejecución, ya que analiza desde el tiempo actual hacia atrás cual es la página mas lejana o la que menos recientemente he utilizado. Ejemplo con 3 marcos libres
Respuesta
Ejercicio
Usar FIFO y LRU para 4 marcos de página
Respuesta FIFO
Respuesta LRU
4. Asignación de marcos libres
■ ¿Cuantos marcos libres asiganamos a cada proceso?
■ La respuesta es los marcos necesarios de acuerdo a las nececidades de los procesos.
■ Una razón fundamental de asignar de marcos necesarios es el rendieminto, ya que mientras se reduce el numero de marcos asignados a un proceso incrementa la tasa de fallos de página y el tiempo de ejecución del proceso tambien aumenta.
■ Existe dos algoritmos principales de asignación:
• Asignación equitativa• Asignación proporcional
4.1 Asignación equitativa
■ Consiste en repartir los m marcos libres entre n procesos para que cada proceso tenga un número igual de márcos.
■ Por ejemplo:
Si hay 100 marcos libres y 5 procesos:
# marcos x proceso = 100 / 2 = 20
4.2 Asignación proporcional
■ Consiste en repartir los m marcos libres entre n procesos de acuerdo al tamaño de los procesos.
■ Por ejemplo: Si hubiera 64 marcos libres y dos procesos, el uno de 10 páginas y el otro de 127 páginas:
mS
spa
m
sS
ps
iii
i
ii
×==
=
=
=
∑
para asignación
marcos de totalnúmero
proceso del tamaño
5964137
127
564137
10
127
10
64
2
1
2
1
≈×=
≈×=
===
a
a
s
s
m
■ En conclusión podemos decir que tanto con la asignación equitativa como con la proporcional el número de marcos por proceso puede variar de acuerdo al nivel de multiprogramación
4.3 Asignación global y local
■ Si hay múltiples procesos compitiendo por los marcos, podemos clasificar los algoritmos de sustitución de páginas en dos categorías amplias: sustitución global y sustitución local.
– Sustitución Global (Se selecciona un marco de sustitución de entre un conjunto de todos los marcos asignados; es decir cualquier proceso puede quitar un marco de otro proceso)
– Sustitución Local (Cada proceso solo puede sustituir el marco; dentro del conjunto de marcos asignados al mismo)
■ Se puede concluir entonces que con sustitución local el numero de marcos asignados a un proceso no varia, mientras que con sustitución global el número de marcos incrementa.
5. Sobrepaginación
■ Si el # de marcos asignados a un proceso de baja prioridad cae por debajo del #mínimo requerido por el sistema; se dice entonces que el proceso no tiene el # de marcos que nececita para soportar las páginas que está usando activamente y por lo tanto generará rapidamente una y otra vez sucecivos fallos de pagina.
■ A esta alta actividad de páginación se la conoce como sobrepaginación, ya que se invierte mas tiempo recargando páginas que ejecutando el proceso.
5.1 Solución a la Sobrepaginación
?
Fin de la unidad
Gracias.