ACTIVIDAD 1._
4.1 Política y Filosofía.
Filosofía |
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 datos y procesos que actualmente se están utilizando.
Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema especifico es necesario decidir que estrategias se deben utilizar para obtener un rendimiento optimo.
|
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 (Shortest remaining time scheduling) Tiempo restante mas 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 mas alta): Politica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para asi 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.
4.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 información contenida en ella es de más rápido acceso.
Solo la memoria cache es
más rápida que la principal, pero su costo es a su vez mayor.
Cuando no existe memoria virtual no
hay diferenciación entre el espacio de direcciones y la memoria real;
el espacio de direcciones que puede ser usado en los programas
tiene idéntico tamaño al espacio de memoria real posible. Si se
utiliza memoria virtual, el espacio de direcciones disponibles para los
programas es aquel determinado por el tamaño 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:
4.2.1 Administración de Almacenamiento
4.2.2 Jerarquía
Los programas y datos tienen que estar en la memoria
principal para poder ejecutarse o ser referenciados. Los programas y
datos que no son necesarios de inmediato pueden mantenerse en el almacenamiento
secundario. El almacenamiento principal es más costoso y menor que el
secundario pero de acceso más rápido.
Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles.
Un nivel adicional es el “cache” o memoria
de alta velocidad, que posee las siguientes características:
4.2.3 Estrategia de administración de memoria.
Están dirigidas a la obtención del mejor uso posible del
recurso del almacenamiento principal
Se dividen en las siguientes categorías:
Las “estrategias de búsqueda” están
relacionadas con el hecho de cuándo obtener el siguiente fragmento de programa
o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de
programa o de datos se carga al almacenamiento principal cuando algún programa
en ejecución lo referencia.
Se considera que la “búsqueda anticipada” puede
producir un mejor rendimiento del sistema.
Las “estrategias de colocación” están relacionadas con
la determinación del lugar de la memoria donde se colocará (cargará) un
programa nuevo.
Las “estrategias de reposición” están relacionadas con
la determinación de qué fragmento de programa o de datos desplazar para dar
lugar a los programas nuevos.
4.2.4 Asignación contigua v.s. no contigua.
Una asignación de
almacenamiento contiguo es que cada programa tiene que ocupar un único bloque
contiguo de localidad de memoria.
En la asignación de
almacenamiento no contiguo un programa se divide en varios bloques o segmentos
que se pueden colocar en el almacenamiento principal en fragmentos que no
necesitan ser adyacentes o permanecer relativamente cerca.
4.2.5 Multiprogramación de partición fija, partición variable, con intercambio de almacenamiento.
MULTIPROGRAMACIÓN CON PARTICIONES FIJAS:
El sistema de multiprogramación en los cuales varios
usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo está
esperando la terminación de una operación E/S cederá la CPU a otro trabajo que esté
listo para realizar cálculos. Si es que hay una espera. De esta forma pueden
efectuarse simultáneamente las operaciones de E/S y cálculos de la CPU.
FRAGMENTACIÓN EN LA MULTIPROGRAMACIÓN CON PARTICIONES FIJAS:
La fragmentación de almacenamiento ase presenta
en todos los sistemas de cómputo, sea cual sea la organización de su
almacenamiento. En los sistemas con multiprogramación y particiones fijas, la
fragmentación ocurre porque los trabajos de los usuarios no llenan por completo
las particiones designadas o porque una partición se queda sin utilizar por ser
demasiado pequeña para contener un trabajo en espera.
MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES:
Esta hace suposiciones sobre el tamaño de los
trabajos. Llega un espacio cuando lo necesite. No hay desperdicio, pues la
partición de un trabajo tiene exactamente el tamaño del trabajo.
MULTIPROGRAMACIÓN CON INTERCAMBIO DE ALMACENAMIENTO:
En el esquema de “intercambio” los programas del
usuario no requieren permanecer en la memoria principal hasta su terminación.
Una variante consiste en que un trabajo se ejecuta hasta que ya no pueda
continuar: Cede el almacenamiento y la CPU al siguiente trabajo. La totalidad
del almacenamiento se dedica a un trabajo durante un breve periodo de tiempo.
Los trabajos son “intercambiados”, dándose que un trabajo puede ser
intercambiado varias veces antes de llegar a su terminación.
Los sistemas de intercambio fueron los predecesores
de los sistemas de paginación. Manteniendo al mismo tiempo varias “imágenes de usuario o imágenes de
memoria” en la memoria principal.
*Manteniendo al mismo tiempo varias
“imágenes de usuario o imágenes de memoria” en la memoria principal.
*Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen. *Incrementando la cantidad de memoria principal disponible en el sistema. *Las imágenes de usuario (imágenes de memoria) retiradas del almacenamiento principal se graban en el almacenamiento secundario (discos). ACTIVIDAD 2._4.3 Organización de Memoria Virtual.
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
maquina. Esta ilusión permite que los programas se hagan sin tener en cuenta el
tamaño exacto de la memoria física.
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 mas procesos en la memoria.
La memoria
virtual también simplifica la carga del programa para su ejecución llamado
reubicación, este procedimiento permite que el mismo programa se ejecute en
cualquier posición de la memoria física.
4.3.1 Evaluación de las organizaciones de almacenamiento.
Almacenamiento virtual "significa la capacidad
de direccional un espacio de almacenamiento mucho mayor que el disponible en el
almacenamiento primario de determinado sistema de computación” .
Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”. Los métodos más comunes de implementación son mediante:
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 numero mucho mayor de direcciones que las
disponibles dentro del almacenamiento primario.
La evolución en las organizaciones de almacenamiento puede resumirse como sigue:
4.3.2 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 páginas y cuando
carga todas sus páginas 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 está
presente en la memoria principal o no. Si el bit indica que la pagina está en
la memoria, la entrada incluye también el número de marco para esa página.
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.
Estructura de la tabla de páginas
El mecanismo básico de lectura de una palabra de la memoria supone la
traducción por medio de la tabla de páginas de una dirección virtual o lógica
formada por un numero de pagina y un desplazamiento, a una dirección física que
está formada por un numero de marco y un desplazamiento.
Con la memoria virtual, la CPU produce direcciones
virtuales que son traducidas por una combinación de hardware y software a
direcciones físicas, pues pueden ser utilizadas para acceder a memoria
principal. Este proceso se denomina correspondencia de memoria o traducción de
direcciones. Actualmente los dos niveles de la jerarquía de memoria controlados
por la memoria virtual son las DRAM y los Discos magnéticos.
Puesto que la tabla de páginas es de longitud variable, en
función del tamaño del proceso, no es posible suponer que quepa en los
registros.
4.3.3 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).
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 prioridad 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 comparació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 más 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 está presente
en la memoria principal. Si el bit indica que el segmento está 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.
4.3.4 Sistemas 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 verá
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'.
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.
La carga anticipada consiste en tratar de adivinar
que paginas serán solicitadas en el futuro inmediato y cargarlas de antemano,
para que cuando se pidan ya no ocurran fallos de pagina.
Ese `adivinar' puede ser que se aproveche el
fenómeno de localidad y que las paginas que se cargan por anticipado sean
aquellas que contienen direcciones contiguas a la dirección que se acaba de
refenciar. De hecho, el sistema operativo VMS usa un esquema combinado para
cargar páginas: cuando se hace referencia a una dirección cuya página no esta
en RAM, se provoca un fallo de página y se carga esa página junto con algunas
páginas adyacentes. En este caso la página solicitada se cargo por demanda y
las adyacentes se cargaron por anticipación.
4.4 Administración de Memoria Virtual.
La clave del concepto de memoria (almacenamiento)
virtual está en la disociación:
·
De las direcciones a las que hace
referencia un programa.
·
De las direcciones disponibles en la
memoria real (almacenamiento primario).
Mientras el proceso se ejecuta con sus páginas
actuales, el sistema carga las demás páginas que estarán disponibles cuando las
requiera el proceso.
El S. O. intenta predecir las páginas que un proceso
va a necesitar y a continuación precarga estas páginas cuando hay espacio
disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga
páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello,
el tiempo de ejecución de un proceso se puede reducir.
4.4.1 Estrategia 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 pagina o el segmento de almacenamiento
primario. Los esquemas de obtención anticipada intentan determinar por
adelantado a cuales paginas o segmentos hará referencia un proceso.
Estrategias de Colocación
Determinan en qué
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 pagina
disponible.
Estrategias de Reemplazo
Sirven para
decidir cual pagina o segmento se debe desplazar para dar espacio a una página
o segmento entrante cuando está completamente ocupado el almacenamiento
primario.
4.4.2 Técnicas de Reemplazo de Páginas.
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 Optimalidad
Para obtener un rendimiento optimo, la pagina que se
debe reemplazar es aquella que tardara más tiempo en ser utilizada. Esta
estrategia optima 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 pagina
para ser reemplazada, incluyendo la siguiente pagina la que se hará referencia.
Las decisiones de reemplazo aleatorio se de páginas se pueden tomar rápidamente
y con un número 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 página se registra en el instante que entro en
el almacenamiento primario. Cuando se necesita reemplazar una página, 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 número 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 paginas se carguen a memoria y se reemplacen en secuencia PEPS
cuando se asignan tres marcos de páginas a proceso.
La segunda tabla muestra cómo 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
página 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 página
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 paginas
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 páginas por reloj y reemplazo de páginas con segunda
oportunidad
La estrategia PEPS puede decidir reemplazar una
página muy utilizada que ha permanecido en memoria durante mucho tiempo. Esta
posibilidad se puede evitar reemplazando solo aquellas páginas cuyos bits de
referencia valgan O.
La variante de PEPS denominada "con segunde
oportunidad" examina el bit de referencia de la pagina más 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 página 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 pagina 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 página al
final de la lista PEPS).
4.4.3 Paginación por demanda.
Considere como podría
cargarse un programa ejecutable desde el disco a la memoria. Una opción
consiste encargar el programa completo en memoria física en el momento de
ejecutar el programa. Sin embargo, esta técnica presenta el problema de que puede
que no necesitemos inicialmente todo el programa en la memoria.
Las páginas de un
proceso deben cargarse por demanda. No se debe transferir ninguna pagina al
almacenamiento secundario al primado hasta que un proceso en ejecución haga
explícitamente referencia a ella. Hay varias razones por las cuales es
atractiva esta estrategia. Los resultados de la teoría de la compatibilidad,
especifica mente el problema de la detención (Mi67) (He77), indican que no se
puede predecir con precisión la trayectoria de ejecución que seguirá un
programa. Así pues, cualquier intento de cargar páginas con anticipación a su
uso puede hacer que se carguen las páginas equivocadas.
La paginación por
demanda garantiza que las únicas páginas que se transfieren al almacenamiento
principal son aquellas que requieren los procesos. El trabajo extra requerido
para decidir cuales páginas se deben transferir al almacenamiento principal es
mínimo. Las estrategias de obtención anticipada de paginas G pueden requerir
mucho tiempo de ejecución adicional
4.4.4 Paginación Anticipada.
¿Qué es la paginación anticipada?
En la paginación anticipada, el sistema operativo intenta predecir las paginas que necesitara un proceso y entonces carga dichas cuando hay espacio disponible.
Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demas paginas que estarán disponibles cuando las requiera el proceso.
El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga paginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.
4.4.5 Liberación de Página.
¿Qué es la paginación
anticipada?
En la paginación anticipada, el sistema
operativo intenta predecir las paginas que necesitara un proceso y entonces
carga dichas cuando hay espacio disponible.
Mientras el proceso se
ejecuta con sus páginas actuales, el sistema carga las demás paginas que estarán
disponibles cuando las requiera el proceso.
El S. O. intenta
predecir las paginas que un proceso va a necesitar y a continuación precarga estas
páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas
actuales, el sistema carga paginas nuevas que estarán disponibles cuando el
proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede
reducir.
|