112
UNIDAD III. ADMINISTRACION DE MEMORIA.
3.1._ POLÍTICA Y FILOSOFÍA.
113
Una vez que hayan respondido esas preguntas, entonces será posible
determinar cuál es la mejor política de asignación de memoria.
Política de Ubicación.
Tiene que ver con determinar dónde va a residir una parte de un proceso en la
memoria principal.
Sin embargo, para un sistema que usa tanto paginación pura como paginación
combinada con segmentación, la ubicación carece de importancia puesto que
el hardware de traducción de direcciones y el hardware de acceso a la memoria
principal pueden desarrollar sus funciones en cualquier combinación de marco
de página con idéntica eficiencia.
Política de Reemplazo.
114
• Si el conjunto de páginas a considerar para el reemplazo debe limitarse
a las del proceso que provocó el fallo de página o abarcar todos los
marcos de página situados en la memoria principal.
• De entre el conjunto de páginas consideradas, cuál es la página
específica que debe
Todas las políticas tienen como objetivo que la página a reemplazar sea la que
tenga una menor posibilidad de ser referenciada en un futuro cercano. Debido
al principio de cercanía, hay una alta correlación entre la historia de referencias
recientes y las pautas de futuras referencias.
Política de Vaciado.
115
Vaciado por demanda una página se escribirá en la memoria secundaria sólo
cuando haya sido elegida para reemplazarse. Una política de Vaciado previo
escribe las páginas modificadas antes de que se necesiten sus marcos, de
forma que las páginas pueden escribirse por lotes.
Política de Protección
116
Un objeto está protegido, cuando un proceso en particular no tiene permitido
leer, escribir ni ejecutar ese objeto, mientras que otros sí.
Cuando un proceso quiera ejecutar código del sistema operativo, por ejemplo,
para realizar una E/S, no tiene acceso directo a las rutinas que tiene el sistema
operativo en memoria para implementar dicha función, sino que debe realizar
una llamada al sistema para no violar la protección.
Este esquema es necesario, pues los programas de usuario tienen que avisar
al sistema operativo de que le solicitan servicios (al hacer una llamada al
sistema), el sistema operativo atenderá las peticiones si son correctas, o si
pueden ser factibles en dicho momento (por ejemplo, no se asignará una
impresora que está siendo utilizada por otro proceso). Los procesos de usuario
no pueden llamar directamente al sistema operativo gracias a la protección de
memoria.
Política de Compartición
Supóngase que 20 usuarios usan un compilador que tiene 100 KB, de los
cuales 20 KB son para los datos, entonces serían necesarios 2 MB de
memoria. Si el código no se modifica a sí mismo, sólo es necesario tener
117
presente una copia en memoria, la cual es compartida por todos los usuarios.
La memoria necesaria se reduce ahora a 480 KB = 80 KB + 20 * 20 KB.
La desventaja pasa a ser el hecho que pasamos de una protección total a una
desprotección total. Por otro lado, cuando un programa tiene su propio espacio
de direccionamiento virtual y quiere compartir algún objeto también es un
inconveniente, ya que dependiendo de cual programa lo ha ejecutado serán las
direcciones donde se buscarán y almacenarán los datos. Una solución es tener
un espacio de direccionamiento virtual común para todos los programas,
entonces los datos de cada programa podrían usar la misma dirección virtual
de modo que es transparente respecto a cual de los procesos lo ejecuta.
118
SJF (Shortest Job First) Prioridad del trabajo más corto
119
HRN (Highest response Ratio Next ) Prioridad de la tasa de respuesta
más alta
120
Los recursos no utilizados por un grupo de porción justa se distribuyen a otros
grupos en proporción a sus necesidades relativas. Figura B.
121
3.2._ MEMORIA REAL.
Memoria interna del sistema informático, con direcciones accesibles por los
programas y que puede cargarse en los registros para su posterior ejecución o
procesamiento.
122
Poderlos ejecutar.
Referenciarlos directamente.
PROCESOS Y MEMORIA
• sincronización de procesos
• comunicación entre procesos
123
Para que un proceso se ejecute se requiere ubicarlo en memoria principal
junto con los datos que direcciona.
Para optimizar el uso del computador se requiere tener varios procesos en
memoria principal. (grado de multiprogramación).
Pasos en la ejecución
de un programa de usuario
124
UNIDAD DE ADMINISTRACIÓN DE MEMORIA (MMU
Relocalización Dinámica
vía Registro
LIGADO DINÁMICO
MEMORIA VIRTUAL
125
La memoria principal es pequeña como para acomodar todos programas y
datos permanentemente.
La memoria virtual es una técnica para dar la ilusión de tener más memoria
que la memoria principal
ADMINISTRADOR DE
MEMORIA
126
Entre las principales operaciones que desarrolla la administración de
memoria se encuentran:
Administrador de Memoria
127
Se distinguen los siguientes propósitos del sistema de administración de
memoria:
· Protección.
· Compartimiento.
· Reubicación.
· Organización física.
Debido al costo de una memoria principal rápida, ésta se usa en conjunto con
una memoria secundaria mucho más lenta (y por consiguiente, barata) a fines
de extender su capacidad, por ejemplo los dispositivos de almacenamiento
magnéticos tales como los discos rígidos. Esta clasificación de la memoria
hace necesario el control del flujo de la información entre esas dos clases de
memoria.
128
dinámica. Por ello es más conveniente que esta tarea la realice el sistema, de
manera transparente al usuario.
· Organización lógica.
129
¿Se concede a cada uno la misma cantidad de espacio o se divide el
almacenamiento en porciones o “particiones” de diferente tamaño?
¿Se requerirá que los trabajos de los usuarios sean diseñados para
funcionar en una partición específica o se permitirá que se ejecuten en
cualquiera donde quepan?
3.2.2._ JERARQUÍA.
• Cantidad
• Velocidad
• Coste
Como puede esperarse los tres factores compiten entre sí, por lo que hay que
encontrar un equilibrio. Las siguientes afirmaciones son válidas:
130
Se busca entonces contar con capacidad suficiente de memoria, con una
velocidad que sirva para satisfacer la demanda de rendimiento y con un coste
que no sea excesivo. Gracias a un principio llamado cercanía de referencias,
es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento
cercano al de la memoria más rápida.
• Nivel 0: Registros
• Nivel 1: Memoria caché
• Nivel 2: Memoria principal
• Nivel 3: Disco duro (con el mecanismo de memoria virtual)
• Nivel 4: Redes (Actualmente se considera un nivel más de la
jerarquía de memorias)
Los programas y datos tienen que estar en la memoria principal para poder
ejecutarse o ser referenciados
131
Cache
132
Gestión de memoria
133
3.2.3._ ESTRATEGIA DE ADMINISTRACIÓN DE MEMORIA.
Están dirigidas a la obtención del mejor uso del recurso memoria principal,
estas pueden ser:
Mecanismos de Asignación.
Un mecanismo de asignación determina la cantidad de bloques (particiones)
que serán administrados en la memoria
134
3.2.4._ ASIGNACIÓN CONTIGUA V.S. NO CONTIGUA.
La memoria principal debe dar cabida tanto al sistema operativo como a los
diversos procesos de usuario. Generalmente, la memoria se divide en dos
particiones, una para el sistema operativo residente y otra para los procesos de
usuario. Es posible colocar el sistema operativo en memoria alta o baja. El
factor principal que afecta esta decisión es la ubicación del vector de
interrupciones.
Puesto que dicho vector suele estar en la memoria baja, es más común colocar
el sistema operativo en esa misma Área. Por ello, solo examinaremos la
situación en la que el sistema operativo reside en memoria baja como se
muestra en la siguiente figura.
512 k
Partición de memoria
135
repartir la memoria disponible entre los diversos procesos que están en la cola
de entrada esperando ser transferidos a la memoria. Uno de los esquemas de
asignación de memoria más sencillos consiste en dividir la memoria en varias
particiones de tamaño fijo.
La memoria virtual
136
La clave del concepto de memoria virtual es la disociación de las direcciones a
las que hace referencia un proceso en ejecución de las direcciones disponibles
en la memoria principal.
137
programa tienden a agruparse en pequeñas zonas del espacio de direcciones.
Estas zonas, además, tienden a cambiar sólo de forma intermitente".
Se han desarrollado varios métodos para asociar las direcciones virtuales con
las reales. Los mecanismos de traducción dinámica de direcciones convierten
la direcciones virtuales en direcciones reales en tiempo de ejecución. Todos
estos sistemas tienen la propiedad de que las direcciones contiguas en el
espacio de direcciones virtuales de un proceso no son necesariamente
contiguas en la memoria principal.
Esto se conoce como contigüidad artificial (fig. 6.8). Debe quedar claro que
toda esta correspondencia es transparente al programador, que escribe sus
programas en términos de direcciones consecutivas de memoria virtual.
138
3.2.5._MULTIPROGRAMACION DE PARICION FIJA, PARTICIÓN
VARIABLE, CON INTERCAMBIO DE ALMACENAMIENTO.
Una vez implementada la partición, hay dos maneras de asignar los procesos a
ella. La primera es mediante el uso de una cola única que asigna los procesos
a los espacios disponibles de la memoria conforme se vayan desocupando. El
tamaño del hueco de memoria disponible es usado para localizar en la cola el
primer proceso que quepa en él.
Las tareas que van llegando se forman hasta que una partición adecuada está
disponible, en cuyo momento la tarea se carga en esa partición y se ejecuta
hasta terminar.
139
Particiones Fijas Con Una Cola De Entrada Independiente
140
Particiones Fijas Con Una Cola de espera
Una forma de salir del problema es tener siempre una pequeña partición por
ahí, tal partición permitirá la ejecución de las tareas pequeñas sin tener que
asignarles una partición de gran tamaño.
Otro punto de vista es obedecer como regla que un trabajo elegible para su
ejecución no sea excluido más de k veces. Cada vez que se excluya obtiene un
punto cuando adquiera k puntos ya no podrá ser excluido de nuevo.
141
Nunca hay que olvidar que es posible que varios procesos de usuario residan
en la memoria al mismo tiempo, es decir, ejecutarse varios programas o
aplicaciones. Por lo tanto, necesitamos considerar el problema de cómo
repartir la memoria disponible entre los diversos procesos que están en cola de
entrada esperando ser transferidos a la memoria.
142
143
INTERCAMBIO
144
El objetivo del intercambio es dar cabida a la ejecución de mas aplicaciones de
las que pueden residir simultáneamente en la memoria del sistema:
Consiste en trasladar el código y los datos de un proceso completo de memoria
al sistema de almacenamiento secundario , para cargar otro previamente
almacenado, no permite a un proceso utilizar mas memoria RAM de la que
realmente existe en el sistema. Esta técnica puede ser ineficiente ya que se
tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a
ejecutar una pequeña porción del código.
Durante el intercambio un proceso puede ser sacado temporalmente de
memoria y llevado a un lugar especial del disco y posteriormente vuelto a
memoria y continuada su ejecución..
El lugar de almacenamiento temporal suele ser un espacio suficientemente
grande como para acomodar copias de las imágenes de meoria de todos los
usuarios.
Multiprogramación?
Es una técnica que permite que dos o más procesos ocupen la misma unidad
de memoria principal y que sean ejecutados al "mismo tiempo" (pseudo-
paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la
unidad central de proceso o CPU.
VENTAJAS:
145
Partición variable
Este método consiste en las particiones de memoria de tamaños, esto quiere
decir, que cada proceso se le asigna la cantidad de memoria que necesita.
Pasando el tiempo, la memoria comienza a estar más fragmentada y su
rendimiento decae; este fenómeno se denomina fragmentación externa.
FRAGMENTACION EXTERNA: Es la compactación del sistema operativo que
desplaza los procesos para que estén contiguos de forma que toda la memoria
libre quede junta en un bloque.
– Mapa de bits
• Lista única
_ Intercambio
• Condensación de huecos
• Compactación
Fragmentación externa
147
Fragmentación interna, sólo si existe limitación en el tamaño mínimo de
las particiones.
VENTAJAS:
COMPACTACION DE MEMORIA:
Es una función de bloques adyacentes para formar un solo bloque más grande.
148
3.3. ORGANIZACIÓN DE MEMORIA VIRTUAL
La memoria virtual es una técnica para proporcionar la simulación de un
espacio de memoria mucho mayor que la memoria física de una máquina. Esta
"ilusión" permite que los programas se hagan sin tener en cuenta el tamaño
exacto de la memoria física.
149
Los argumentos se basan en el principio de cercanía o principio de localidad
que afirma que las referencias a los datos y el programa dentro de un proceso
tienden a agruparse. Por lo tanto, es válida la suposición de que, durante cortos
períodos de tiempo, se necesitarán sólo unos pocos fragmentos de un proceso.
150
La clave del concepto de memoria (almacenamiento) virtual está en la
disociación:
“Direcciones virtuales”:
o Son las referidas por un proceso en ejecución.
“Direcciones reales”:
o Son las disponibles dentro del almacenamiento primario.
“Espacio de direcciones virtuales (v)” de un proceso:
o Es el número de direcciones virtuales a que puede hacer
referencia el proceso.
“Espacio de direcciones reales (r)” de un computador:
o Es el número de direcciones reales disponibles en el ordenador.
151
Existen varios medios para asociar las direcciones virtuales con las reales
(Figura 3.13).
152
Organización del Almacenamiento de Niveles Múltiples
153
Segundo nivel: “almacenamiento auxiliar, secundario o adicional ”:
o Generalmente consta de discos de gran capacidad que pueden
mantener los programas y datos que no caben al mismo tiempo
en el más limitado almacenamiento real.
154
3.3.1. EVALUACIÓN DE LAS ORGANIZACIONES DE
ALMACENAMIENTO
Las direcciones generadas por los programas en su ejecución no son,
necesariamente, aquellas contenidas en el almacenamiento primario (memoria
real), ya que las direcciones virtuales suelen seleccionarse dentro de un
número mucho mayor de direcciones que las disponibles dentro del
almacenamiento primario.
Real:
o Sistemas dedicados a un solo usuario.
Real:
o Sistemas de multiprogramación en memoria real:
Multiprogramación en partición fija:
Absoluta.
Relocalizable (reubicable).
Multiprogramación en partición variable.
Virtual:
o Multiprogramación en almacenamiento virtual:
Paginación pura.
Segmentación pura.
Combinación paginación / segmentación.
3.3.2. PAGINACIÓN.
El concepto de paginación aparece junto con el de memoria virtual, ¿qué es
eso?. Este método fue creado por Fotheringham y la idea básica es la
siguiente.
155
Frecuentemente se diferencia entre la “paginación pura” y la “combinación de
paginación y segmentación.
156
157
Traducción de Direcciones de Paginación por Transformación Directa
158
La dirección base de la tabla de mapa de páginas es “b”.
159
Las referencias a esta tabla requieren un ciclo completo de
almacenamiento primario, que generalmente es la parte más larga de un
ciclo de ejecución de instrucciones.
Se requiere otro ciclo de ejecución de almacenamiento primario para la
transformación de páginas, lo que puede ocasionar degradación
equivalente a un 50%, para lo cual una solución sería tener la tabla
completa de mapa de páginas de transformación directa en la “caché” de
muy alta velocidad.
160
Implementar la transformación asociativa pura resulta demasiado
costoso, tal lo ocurrido con la implementación de la transformación
directa pura utilizando “caché”.
161
Se presupone que una página recientemente referenciada tendrá
posibilidades de serlo de nuevo próximamente.
162
Habrá marcos (celdas) de páginas compartidos por varios procesos.
El compartimiento:
3.3.3. SEGMENTACIÓN.
163
Los bloques:
164
Una dirección virtual es un par ordenado v=(s,d) (Figura 3.28):
165
Un proceso solo puede ejecutarse si su segmento actual (como mínimo) está
en el almacenamiento primario.
166
Un proceso con “acceso de ejecución” de un segmento puede ejecutarlo como
si fuera un programa.
Modo Aplicación
0 Seguridad
Un programa disponible a los usuarios, que no pueden copiarlo
1
ni modificarlo, pero sí ejecutarlo
2 Recuperación de información
Un programa puede ser copiado o ejecutado, pero no puede
3
ser modificado
4 Protege los datos contra un intento erróneo de ejecutarlos
5 Este acceso se concede a los usuarios de confianza
167
Tabla 3.2: Ejemplo de aplicaciones de la combinación de accesos.
168
Un “bit de residencia”, “r”, indica si en la actualidad el segmento se encuentra o
no en el almacenamiento primario.
169
Dos procesos pueden compartir un segmento con solo tener entradas en sus
tablas generales que apunten al mismo segmento del almacenamiento primario
(Figura 3.30).
170
El proceso en ejecución hace referencia a la dirección virtual v = (s,p,d) (Figura
3.32).
171
Las páginas de referencia más reciente tienen entradas en un almacenamiento
asociativo.
172
o La entrada de la tabla de mapa de segmentos indica la dirección
base “s‟ ” de la tabla de páginas para el segmento “s”.
o El número de página “p” se añade a “s ‟ ” formando la dirección “p
+ s ‟ ” de la entrada en la tabla de páginas para la página “p” del
segmento “s”:
Indica que “p‟ ” es el número del marco correspondiente a
la página virtual “p”.
“p‟ ” se concatena con el desplazamiento “d” formando la
dirección real “r” que corresponde a la dirección virtual v =
(s,p,d).
Si una dirección de almacenamiento virtual está más allá del final del segmento
se genera un “fallo de desbordamiento de segmento”, el que debe ser atendido
por el S. O.
173
El sistema correría casi a 1 / 3 de su velocidad nominal.
La traducción de direcciones insumiría 2 / 3 del tiempo.
174
El compartimiento requiere una administración cuidadosa por parte del S. O.,
ya sea en sistemas de paginación, segmentación o paginación / segmentación,
pues se debe considerar qué sucedería si una nueva página reemplazara a
otra página compartida por muchos procesos.
Paginación.
Segmentación.
Segmentación y paginación.
175
Se consideran las siguientes estrategias:
“Estrategias de búsqueda”:
o Tratan de los casos en que una página o segmento deben ser
traídos del almacenamiento secundario al primario.
o Las estrategias de “búsqueda por demanda” esperan a que se
haga referencia a una página o segmento por un proceso antes
de traerlos al almacenamiento primario.
o Los esquemas de “búsqueda anticipada” intentan determinar por
adelantado a qué páginas o segmentos hará referencia un
proceso para traerlos al almacenamiento primario antes de ser
explícitamente referenciados.
“Estrategias de colocación”:
o Tratan del lugar del almacenamiento primario donde se colocará
una nueva página o segmento.
o Los sistemas toman las decisiones de colocación de una forma
trivial ya que una nueva página puede ser colocada dentro de
cualquier marco de página disponible.
“Estrategias de reposición”:
o Tratan de la decisión de cuál página o segmento desplazar para
hacer sitio a una nueva página o segmento cuando el
almacenamiento primario está completamente comprometido.
El principio de optimización.
Reposición de páginas al azar.
Primero en entrar - primero en salir.
Menos recientemente usada.
Menos frecuentemente usada.
No usada recientemente.
Conjuntos de trabajo.
El Principio de Optimización
176
Consiste en escoger al azar la página que va a ser reemplazada.
Para reemplazar una página, se selecciona aquella que ha estado más tiempo
almacenada.
177
Reposición de Página Menos - Recientemente - Usada (LRU)
Requiere que cada página reciba un “sello de tiempo” cada vez que se
referencia:
178
La página que será reemplazada es aquella que ha sido usada con menos
frecuencia o que ha sido referida con menos intensidad.
Presupone que las páginas que no han tenido uso reciente tienen poca
probabilidad de ser usadas en el futuro próximo y pueden ser reemplazadas
por otras nuevas.
“Bit referenciado”:
o = 0 si la página no ha sido referenciada.
o = 1 si la página ha sido referenciada.
“Bit modificado” (también llamado “bit sucio”):
o = 0 si la página no ha sido modificada.
o = 1 si la página ha sido modificada.
179
Se pierde la capacidad para distinguir las páginas más deseables para
ser reemplazadas.
Para evitarlo se ajustan periódicamente todos los “bits referenciados” a
“0”:
o Se logra un nuevo inicio.
o Se vuelve vulnerable al reemplazo aún a las páginas activas, pero
solo brevemente, mientras se reajustan los bits.
o
Localidad
180
o Tendencia de los programadores a colocar definiciones de
variables relacionadas, próximas entre sí.
Tan pronto como las páginas del subconjunto favorecido son retiradas del
almacenamiento primario, la actividad de paginación del proceso aumenta en
gran medida al referenciar y traer de nuevo estas páginas al almacenamiento
primario.
181
Conjuntos de Trabajo
182
El “tiempo del proceso” es el tiempo durante el cual este proceso tiene la cpu.
183
Respecto de variar el tamaño de la página manteniendo constante la cantidad
de almacenamiento primario:
184
3.4._ ADMINISTRACION DE MEMORIA VIRTUAL.
185
Debido a que solo la parte de memoria virtual que está almacenada en la
memoria principal, es accesible a la CPU, según un programa va ejecutándose,
la vecindad de referencias a memoria cambia, necesitando que algunas partes
de la memoria virtual se traigan a la memoria principal desde el disco, mientras
que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de
paginación).
Vitalización de la memoria
Protección
Reutilizar la memoria
186
Así en cualquier momento el espacio de direcciones virtual hace un
seguimiento de tal forma que una pequeña parte de el, esta en memoria real y
el resto almacenado en el disco, y puede ser referenciado fácilmente.
Las columnas están formadas por 5 filas. Las filas que forman cada columna,
de arriba abajo representan:
188
hay en la primera fila, ha podido ser servida sin necesidad de cambiar el
contenido de los marcos de página.
189
El principal inconveniente está en los procesos que requieren acumular sus
páginas una por una:
190
3.4.5._ LIBERACIÒN DE PÁGINAS
Los interrogantes tienen que ver con el tamaño de las páginas, si todas las
páginas tendrán igual tamaño, si en caso de utilizar páginas de diferente
tamaño las páginas mayores deben ser o no múltiplos enteros de las menores,
etc.
191
Algunas consideraciones para determinar el tamaño de página son las
siguientes:
192