UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
Gestión de memoria
1. AREA DE LA ENERGÍA LAS
INDUSTRIAS Y LOS RECURSOS
NATURALES NO RENOVABLES
CARRERA DE INGENIERIA EN SISTEMAS
SISTEMAS OPERATIVOS
Docente:
Email: fpajila@unl.edu.ec
Periodo:
Ing. Freddy Patricio Ajila Z.
septiembre 2013 – febrero 2014
3. OBJETIVO
1. Analizar las estrategias con las que cuenta el
sistema operativo para compartir la memoria
entre los procesos.
4. 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
5. 1. Introducción
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.
6. 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).
7. Fundamentos
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)
8. 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
9. Hardware Básico
- 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.
11. •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.
12. 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.
13. Un registro base y un registro límite definen un espacio lógico de direcciones
14. 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
15. Protección de espacio de memoria
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.
16. Protección hardware de las direciones, utilizando un registro base y un registro límite.
17. 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.
18. Reasignación de direciones
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.
19. 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.
20. Espacio de direciones lógico y físico
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.
21. 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)
22. 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.
24. Carga Dinámica
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
25. 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.
26. 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
29. 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.
31. 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.
32. 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.
33. 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
34. 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
35. 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
37. 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
38. Ejemplo de los algoritmos de primer, mejor y peor ajuste
39. 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.
40. 3. Asignación de espacio no contiguo o
Almacenamiento Disperso
a. Paginación
b. Segmentación
c. Segmentación con paginación
41. 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.
43. Paginación
La 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
44. Paginación
El tamaño de página es una potencia de 2, que varía entre 512 Bytes
y 16 Mbytes por página
número de página desplazamiento
La estructura de una dirección lógica es:
p d
m - n n
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
45. Ejemplo de paginación para una memoria de 32 bytes con páginas de 4 bytes
0123
abc
d
4567
ef
gh
891
0
11
ij
kl
12
13
14
15
mnop
Memoria lógica
0 5
1 6
2 1
3 2
Tabla de páginas
0
1
2
3
0
4 ij
kl
8 mnop
12
16
20 abc
d
24 ef
gh
28
0
1
2
3
4
5
6
7
Memoria Fisica
Num Pag
Marco Pag
46. Paginación
Cuando 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
47. Paginación
Marcos 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:
48. Esquema de marcos libres
Antes de la asignación Después de la asignación
49. Paginació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.
50. Esquema de un bit de validez en una tabla de páginas
51. Paginación
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
52. EJEMPLO DE PÁGINAS COMPARTIDAS (Un editor de 3 páginas
de código puro y una página para espacio de datos)
53. Paginación
Ejercicios
1. 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.
0 3
1 4
2 2
3 1
Tabla de páginas
Datos Num Pag
01234567
0
891
0
11
12
13
14
15
1
16
17
18
19
20
21
22
23
2
24
25
26
27
28
29
30
31
3
Memoria lógica
Num Pag
Marco Pag
55. Paginación
Ejercicios
2. 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.
Bit Val- Inv
0 3 v
1 4 i
2 2 v
3 5 i
Tabla de páginas
Datos Num Pag
abc
d
0
ef
gh
1
Ij
kl
2
mnop
3
Memoria lógica
Num Pag
Marco Pag
57. 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
59. 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
60. 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
61. 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
64. 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
65. 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).
67. 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.
68. 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
69. 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
70. 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.
72. ¿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.
73. 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
74. Esquema de una tabla de páginas cuando algunas páginas no se encuentran en memoria principal
75. ¿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
77. 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
78. ¿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.
79. 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)
80. 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, 5
La secuencia signifinicca que el proceso en
ejecución accesó a la pag 1, luego a la 2,
luego a la 3 y asi susecivamente.
81. 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.
82. 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.
85. 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
87. Algoritmo LRU (Menos
recientemente utilizada)
Este algorimo se b asa 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
92. 4. Asignación de marcos libres
n ¿Cuantos marcos libres asiganamos a cada proceso?
n La respuesta es los marcos necesarios de acuerdo a las
nececidades de los procesos.
n 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.
n Existe dos algoritmos principales de asignación:
• Asignación equitativa
• Asignación proporcional
93. 4.1 Asignación equitativa
n Consiste en repartir los m marcos libres entre n
procesos para que cada proceso tenga un número
igual de márcos.
n Por ejemplo:
Si hay 100 marcos libres y 5 procesos:
# marcos x proceso = 100 / 2 = 20
94. 4.2 Asignación proporcional
n Consiste en repartir los m marcos libres entre n
procesos de acuerdo al tamaño de los procesos.
n Por ejemplo: Si hubiera 64 marcos libres y dos
procesos, el uno de 10 páginas y el otro de 127 páginas:
m
=
å
tamaño del proceso
s p
i i
=
S s
i
=
número total de marcos
a p s
= = ´
S
m
i
asignación para
i i
=
=
=
= ´ »
64 59
64
10
127
10
127
137
64 5
137
m
s
1
2
s
a
1
2
= ´ »
a
n 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
95. 4.3 Asignación global y local
n 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)
n 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.
96. 5. Sobrepaginación
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.
n 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.