3.1 Politica y Filosofia.
Filosofia:
La memoria principal puede ser considerada como un
arreglo lineal de localidades de almacenamiento de un byte de tamaño.
Cada localidad de almacenamiento tiene asignada una dirección que la
identifica.
Una de las funciones básicas que debe implementar un
SO es la Administración de la Memoria para tener un control sobre los
lugares donde están almacenados los procesos y datos que actualmente se
están utilizando.
Sea cual sea es esquema de organización del
almacenamiento que se adopte para un sistema específico, es necesario
decidir que estrategias se deben utilizar para obtener un rendimiento
óptimo las estrategias de administración del almacenamiento determinan
el comportamiento de la administración de memoria cuando se siguen
ciertas políticas:
· ¿Cuándo se toma un nuevo programa para colocarlo en memoria?
· ¿Se toma el programa cuando el sistema lo solicita
específicamente o se intenta anticiparse alas particiones del
sistema?
· ¿En que lugar del almacenamiento principal se coloca el
programa por ejecutar?
· ¿Se colocan los programas lo más cerca unos de otros
en los
espacios disponibles de la memoria principal para reducir al
mínimo el desperdicio de espacio, o se colocan los programas
lo más rápido posible para reducir al mínimo el tiempo de
ejecución?
· Si se necesita colocar un nuevo programa en el
almacenamiento
principal y éste está lleno, ¿Cuál de los otros
programas se
desaloja?
Se han realizado sistemas que utilizan cada una de estas estrategias de administración.
Los programas y datos necesitan estar en el
almacenamiento principal para ser ejecutados o para poder hacer
referencia de ellos. Los que no se necesitan de inmediato pueden
guardarse en el almacenamiento secundario.
Unix permite procesos múltiples y en un proceso puede
generar otro fácilmente. La planificación del procesador usa un
algoritmo basado en prioridades. La administración de memoria es un
algoritmo de regiones variables con intercambios. Inicialmente los
algoritmos realizados se eligieron por sencillez, no por velocidad ni
complejidad. El desarrollo inicial se hizo bajo un espacio muy pequeño
de memoria.
Los recursos de memoria totales eran insuficientes
para justificar algoritmos complejos, por lo que UNIX intercambiaba el
contenido en memoria de los procesos.
POLÍTICAS:
FIFO: Los procesos se despachan de acuerdo a su tiempo
de llega a la cola de procesos listos, si un proceso llega al
procesador sale hasta que termine. La política FIFO actualmente no se
usa como el esquema principal de un sistema, pero si por ejemplo cuando
se usa una política de prioridades y hay procesos con la misma
prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que
lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo
(CUANTUM) en el procesador, si no termina en ese lapso se manda al final
de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo mas
corto): Se ejecuta primero el proceso en espera que tiene el menor
tiempo estimado. SJF favorece a los procesos cortos, ya que los largos
podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.
SRT (Sortest remaining time scheduling – Tiempo
restante más corto):
En SJF una vez que un proceso comienza su ejecución continua hasta
terminar. En SRT, un proceso en ejecución puede ser desposeído por uno
nuevo de menor tiempo de ejecución.
HRN: (highest response ratio next – Prioridad de la
tasa de respuesta más alta): Política no apropiativa que corrige el
retraso excesivo de procesos grandes que produce el SJF, para así no
caer en un favoritismo excesivo por los procesos cortos, lo logra usando
una formula basada en el tiempo de espera y el tiempo de servicio, con
lo cual la prioridad de cada trabajo no solo esta en función del tiempo
de servicio sino también del tiempo que ha esperado para ser atendido.
3.2 Memoria Real.
La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos.
Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacion contenida en ella es de mas rapido acceso.
Solo la memoria cache es mas rapida que la principal, pero su costo es a su vez mayor.
Cuando no existe memoria virtual no hay diferenciacion entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene identico tamano al espacio de memoria real posible. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamano de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual sera mayor que el de la memoria real).
La organización y administración de la “memoria principal”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores mas importantes en el diseño de los S. O.
Los términos “memoria” y “almacenamiento” se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
- Poderlos ejecutar.
- Referenciarlos directamente.
![](http://sistemasoperativos.angelfire.com/html/imagenes/3.2_clip_image001.gif)
3.3 Organizacion de Memoria Virtual
Mediante un esquema se ejecutan programas que no se encuentran totalmente en memoria principal. Por lo tanto, un programa puede tener un tamaño mayor a la memoria fisica disponible.
Los metodos mas comunes para poner en practica el almacenamiento visrual son:
- Paginacion.
- Segmentacion
- Las direcciones referidas por un proceso se denominan Direcciones Virtuales o Logicas (L). Por otra parte, las direcciones disponibles en memoria principal se denominan Direcciones Fisicas (F).
- En el momento de ejecucion de los programas, las direcciones logicas deben hacerse corresponder con las direcciones fisicas, mediante una aplicacion m: L ----> F , la cual se denomina Mapeo de Memoria (Mapping).
La memoria virtual ha llegado a ser un
componente esencial de la mayoría de los S.O actuales. Y como en un
instante
dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se
pueden mantener más procesos en la memoria.
Los métodos más comunes de
implementación son mediante:
- Técnicas de “paginación”.
- Técnicas de “segmentación”.
- Una combinación de ambas técnicas.
Paginación
|
¿Qué es la paginación?
El termino memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas.
Cada proceso tiene su propia tabla de
paginas y cuando carga todas sus paginas en la o memoria principal. Puesto que
solo algunas de las páginas de un proceso pueden estar en la memoria principal,
se necesita un bit en cada entrada de la tabla para indicar si la pagina
perteneciente esta presente en la memoria principal o no. Si el bit indica que
la pagina esta en la memoria, la entrada incluye también el número de marco
para esa pagina.
Otro bit de control necesario en la
entrada de la tabla de páginas es el bit de modificación (M), para indicar si
el contenido de la página correspondiente se ha alterado desde que la página se
cargo en la memoria principal. Si no ha habido cambios, no es necesario
escribir la página cuando sea sustituida en el marco que ocupa actualmente.
Segmentación
|
Implicaciones de la memoria virtual
La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (numero de segmento, desplazamiento).
La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (numero de segmento, desplazamiento).
Esta organización ofrece al programador
varias ventajas sobre un espacio de direcciones no segmentado:
1. Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.
2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.
3. Se presta a la comparición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.
4. Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrán asignar los permisos de acceso de la forma adecuada.
1. Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.
2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.
3. Se presta a la comparición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.
4. Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrán asignar los permisos de acceso de la forma adecuada.
Organización
En el estudio de la segmentación simple, se llego a la conclusión de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud. La misma estructura se necesitara al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser mas complejas.
Puesto que solo algunos de los segmentos
de un proceso estarán en la memoria principal, se necesita un bit en cada
entrada de la tabla de segmentos para indicar si el segmento correspondiente
esta presente en la memoria principal. Si el bit indica que el segmento esta en
la memoria, la entrada incluye también la dirección de comienzo y la longitud
del segmento.
Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargo por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente
Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargo por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente
Sistema de paginación / segmentación
|
La paginación y la segmentación puras son
métodos de manejo de memoria bastante efectivos, aunque la mayoría de los
sistemas operativos modernos implantan esquemas combinados, es decir, combinan
la paginación y la segmentación.
La idea de combinar estos esquemas se debe
a que de esta forma se aprovechan los conceptos de la división lógica de los
programas (segmentos) con la granularidad de las páginas. De esta forma, un
proceso estará repartido en la memoria real en pequeñas unidades (paginas) cuya
liga son los segmentos. También es factible así el compartir segmentos a medida
que las partes necesitadas de los mismos se van reverenciando (paginas).
Para comprender este esquema, nuevamente
se vera como se traduce una dirección virtual en una localidad de memoria real.
Para la paginación y segmentación puras se puede decir que el direccionamiento
es `bidimensional' porque se necesitan dos valores para hallar la dirección
real.
Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'.
Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'.
El sistema debe contar con una tabla de
procesos (TP) (Ver figura 3.3.4.1). Por cada renglón de esa tabla se tiene un
número de proceso y una dirección a una tabla de segmentos. Es decir, cada
proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia
a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso.
En cada tabla de segmentos de proceso (TSP) se tienen los números de los
segmentos que componen a ese proceso.
Por cada segmento se tiene una dirección a
una tabla de páginas. Cada tabla de páginas tiene las direcciones de las
páginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede
estar formado por las paginas reales `a','b','c','p' y `x'. El segmento `B'
puede estar compuesto de las paginas `f','g','j','w' y `z'. Otro aspecto
importante es la estrategia para cargar páginas (o segmentos) a la memoria RAM.
Se usan más comúnmente dos estrategias:
cargado de páginas por demanda y cargado de páginas anticipada. La estrategia
de cargado por demanda consiste en que las páginas solamente son llevadas a RAM
si fueron solicitadas, es decir, si se hizo referencia a una dirección que cae
dentro de ellas.
Administración de Memoria
3.4.1 Estrategias de Administración
|
Estrategias de Obtención
Determinan cuando se debe de transferir
una página o un segmento de almacenamiento secundario al primario. Las
estrategias de obtención por demanda esperan a que un proceso en ejecución haga
referencia a una página o un segmento antes de traer la página o el segmento de
almacenamiento primario. Los esquemas de obtención anticipada intentan
determinar por adelantado a cuales páginas o segmentos hará referencia un
proceso.
Estrategias de Colocación
Determinan en que lugar del almacenamiento
primario se debe colocar una página o un segmento entrante. Una página entrante
se puede colocar en cualquier marco de página disponible.
Estrategias de Reemplazo
Sirven para decidir cual pagina o segmento
se debe desplazar para dar espacio a una pagina o segmento entrante cuando esta
completamente ocupado el almacenamiento primario.
Técnicas de reemplazo de pagina
|
Las rutinas de administración de
almacenamiento del Sistema operativo deben decidir que pagina del
almacenamiento primario se debe desplazar para dejar espacio a una pagina
entrante.
Principio de Optimalizad
Para obtener un rendimiento optimo, la pagina que se debe reemplazar es aquella que tardara mas tiempo en ser utilizada. Esta estrategia óptima de reemplazo se denomina OPT o MIN.
Reemplazo de Páginas aleatorio
Es una técnica sencilla. Todas las páginas que se encuentran en el almacenamiento principal tienen la misma probabilidad de ser elegidas para el reemplazo. Esta estrategia podría seleccionar cualquier página para ser reemplazada, incluyendo la siguiente página la que se hará referencia. Las decisiones de reemplazo aleatorio se de paginas se pueden tomar rápidamente y con un numero significativo de marcos de pagina. Es un esquema que casi no se utiliza por su enfoque aleatorio de acertar o errar.
Reemplazo de páginas de primeras
entradas-primeras salidas (PEPS)
Cada pagina se registra en el instante que entro en el almacenamiento primario. Cuando se necesita reemplazar una pagina, se escoge la que ha permanecido en el almacenamiento durante el mayor tiempo.
Anomalías PEPS
Belady, Nelson y Shelder descubrieron que al utilizar el reemplazo de paginas
PEPS, ciertos patrones de referencia a pagina originan mas fallas de paginas
cuando aumenta el numero de marcos de pagina asignados a un proceso. Este fenómeno
se denomina Anomalía PEPS o anomalía Belady. La columna de la izquierda indica
el patrón de referencias a páginas de un proceso. La primera tabla muestra como
dicho patrón a referencia de páginas hace que las páginas se carguen a memoria
y se reemplacen en secuencia PEPS cuando se asignan tres marcos de páginas a
proceso.
La segunda tabla muestra como se comporta este proceso en las mismas circunstancias, pero con cuatro marcos de paginas asignados, a la izquierda de cada tabla se indica si la nueva referencia a una pagina ocasiona o no una falla de pagina. Cuando el proceso se ejecuta en cuatro páginas, experimenta una falla de página más que cuando se ejecuta con tres.
La segunda tabla muestra como se comporta este proceso en las mismas circunstancias, pero con cuatro marcos de paginas asignados, a la izquierda de cada tabla se indica si la nueva referencia a una pagina ocasiona o no una falla de pagina. Cuando el proceso se ejecuta en cuatro páginas, experimenta una falla de página más que cuando se ejecuta con tres.
Reemplazo de páginas de la menos reciente
utilizada
Se selecciona para su reemplazo, a aquella pagina que no se ha sido utilizada durante mayor tiempo. La estrategia se basa en que la heurística de localidad según en el cual el pasado reciente es un buen indicador del futuro cercano, de modo que LRU exige que se marque cada pagina con el instante en que .se hace referencia a ella. Por el trabajo adicional que requiere no se usa a menudo en los sistemas actuales; lo que se hace es utilizar estrategias que ese aproximen a la LRU y que no ocasionen grandes costos.
Reemplazo de páginas de la menos
frecuentemente utilizada (LFU)
La pagina por remplazar es aquella que ha sido utilizada menos frecuentemente o a la que se ha hecho referencia con menos frecuencia.
Al parecer estos esquemas de reemplazo de páginas corren cierto riesgo de tomar decisiones equivocadas. Esto sucede por el simple hecho de que no se puede predecir con precisión el futuro.
Modificaciones de PEPS; reemplazo de
paginas por reloj y reemplazo de paginas con segunda oportunidad
La estrategia PEPS puede decidir reemplazar una pagina muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta posibilidad se puede evitar reemplazando solo aquellas paginas cuyos bits de referencia valgan O.
La variante de PEPS denominada "con segunde oportunidad" examina el bit de referencia de la pagina mas antigua; si este bit vale O, se selecciona de inmediato la pagina para ser reemplazada. Si el bit de referencia vale 1, se le asigna el valor O y la pagina se pasa al final de la lista y se considera en esencia como una pagina nueva; gradualmente dicha pagina se desplaza hacia el principio de la lista, donde será seleccionada para reemplazo solo si su bit de referencia sigue valiendo O. En esencia, esto da a la página una segunda oportunidad de permanecer en el almacenamiento principal si su bit de referencia cambia a 1 antes de que la pagina llegue al principio de la lista. La variación 'z' del reloj" del algoritmo de la segunda oportunidad dispone las paginas en una lista circular, en lugar de en una lista lineal.
Un apuntador a la lista se desplaza
alrededor de la lista circular en la misma forma que gira la manecilla de un
reloj. Cuando el bit de referencia de una página toma el valor O, el apuntador
se mueve al siguiente elemento de la lista (simulando el movirl1iento de esta
pagina al final de la lista PEPS).