Lunes, 03 de noviembre de 2008

3.1 Política y filosofía.

Según Andrew S. Tanenbaum-1994. La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, asi como algunos datos a emplear.
Una de las funciones basicas que debe implementar un SO es la Administracion de la Memoria para tener un control sobre los lugares donde estan almacenados los procesos y datos que actualmente se estan utilizando.

3.2 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 más importantes en el diseño de los S. O. [1987, Deitel].

Los términos “memoria” y “almacenamiento” se consideran equivalentes.

Los programas y datos deben estar en el almacenamiento principal para:

  • Poderlos ejecutar.
  • Referenciarlos directamente.

Se considera almacenamiento secundario” o “almacenamiento auxiliar” al generalmente soportado en discos. (Morris Mano - 1994)

Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rápido como las memorias:

  • “Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda la memoria disponible para ellos.

La parte del S. O. que administra la memoria se llama “administrador de la memoria”: (David Luis la Red Martínez)

  • Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no.
  • Asigna espacio en memoria a los procesos cuando estos la necesitan.
  • Libera espacio de memoria asignada a procesos que han terminado.

 

3.2.1 Administración de almacenamiento.

Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento.

Para Duncan Mackenzie -1999, Las “estrategias de administración” deben considerar:

  • ¿ cuándo se consigue un nuevo programa para colocar en la memoria ?:
    • ¿ cuando el sistema lo pide específicamente o se intenta anticiparse a las peticiones ?.
  • ¿ dónde se colocará el programa que se ejecutará a continuación ?:
    • ¿ se prioriza el tiempo de carga o la optimización en el uso del almacenamiento ?.
  • ¿ con qué criterio se desplazarán programas ?.

3.2.2 Jerarquía.

Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados (Duncan Mackenzie -1999)

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 “caché” o memoria de alta velocidad, que posee las siguientes características:

  • Es más rápida y costosa que la memoria principal.
  • Impone al sistema un nivel más de traspaso:
    • Los programas son traspasados de la memoria principal al caché antes de su ejecución.
  • Los programas en la memoria caché ejecutan mucho más rápido que en la memoria principal.
  • Al utilizar memoria caché se espera que:
    • La sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecución mucho más rápida en la caché.

3.2.3 Estrategia de administración de memoria.

Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.( Behrouz A. Forouzan-2004)

Se dividen en las siguientes categorías:

  • Estrategias de búsqueda:
    • Estrategias de búsqueda por demanda.
    • Estrategias de búsqueda anticipada.
  • Estrategias de colocación.
  • Estrategias de reposición.

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áGui?o 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.

3.2.4 Asignación contigua vs no contigua.

En la “asignación contigua” cada programa ocupa un bloque contiguo y sencillo de localizaciones de almacenamiento.

En la “asignación no contigua” un programa se divide en varios bloques o “segmentos” que pueden almacenarse en direcciones que no tienen que ser necesariamente adyacentes, por lo que es más compleja pero más eficiente que la asignación continua. (Behrouz A. Forouzan-2004)

 

3.2.5 Multiprogramación de partición fija, partición variable, con intercambio de almacenamiento.

Multiprogramación de Partición Fija

Los sistemas de un solo usuario desperdician gran cantidad de recursos computacionales debido a que: (Ann McIver McHoes - 2001)

  • Cuando ocurre una petición de e / s la cpu normalmente no puede continuar el proceso hasta que concluya la operación de e / s requerida.
  • Los periféricos de e / s frenan la ejecución de los procesos ya que comparativamente la cpu es varios órdenes de magnitud más rápida que los dispositivos de e / s.

Los sistemas de “multiprogramación” permiten que varios procesos usuarios compitan al mismo tiempo por los recursos del sistema:

  • Un trabajo en espera de e / s cederá la cpu a otro trabajo que esté listo para efectuar cómputos.
  • Existe paralelismo entre el procesamiento y la e / s.
  • Se incrementa la utilización de la cpu y la capacidad global de ejecución del sistema.
  • Es necesario que varios trabajos residan a la vez en la memoria principal.

Multiprogramación de Partición Variable

Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible de memoria. (Ann McIver McHoes - 2001)

No hay límites fijos de memoria, es decir que la partición de un trabajo es su propio tamaño.

Se consideran “esquemas de asignación contigua”, dado que un programa debe ocupar posiciones adyacentes de almacenamiento.

Los procesos que terminan dejan disponibles espacios de memoria principal llamados “agujeros”:

  • Pueden ser usados por otros trabajos que cuando finalizan dejan otros “agujeros” menores.
  • En sucesivos pasos los “agujeros” son cada vez más numerosos pero más pequeños, por lo que se genera un desperdicio de memoria principal.

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. (Ann McIver McHoes - 2001)

Una variante consiste en que un trabajo se ejecuta hasta que ya no puede continuar:

  • Cede el almacenamiento y la cpu al siguiente trabajo.
  • La totalidad del almacenamiento se dedica a un trabajo durante un breve período de tiempo.
  • Los trabajos son “intercambiados”, dándose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminación.

Es un esquema razonable y eficiente para un número relativamente reducido de procesos de usuarios.

 

3.3 Organización de memoria virtual.

“Almacenamiento virtual ” significa la capacidad de direccionar un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación. (George W. Reynolds-2002)

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.

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.

Conceptos Básicos de Almacenamiento Virtual

La clave del concepto de memoria (almacenamiento) virtual esta en la disociación: ((George W. Reynolds-2002))

  • De las direcciones a las que hace referencia un programa.
  • De las direcciones disponibles en la memoria real (almacenamiento primario).

Los principales conceptos son los siguientes:

  • “Direcciones virtuales”:
    • Son las referidas por un proceso en ejecución.
  • “Direcciones reales”:
    • Son las disponibles dentro del almacenamiento primario.
  • “Espacio de direcciones virtuales (v)” de un proceso:
    • Es el número de direcciones virtuales a que puede hacer referencia el proceso.
  • “Espacio de direcciones reales (r)” de un computador:
    • Es el número de direcciones reales disponibles en el ordenador.

 

 

 

 

3.3.1 Evaluación de las organizaciones de almacenamiento.

Organización del Almacenamiento de Niveles Múltiples

Se deben proporcionar los medios para retener programas y datos en un gran almacenamiento auxiliar para: (Roberto Escalona García - 2004)

 

  • Permitir que el espacio de direcciones virtuales de un usuario sea mayor que el espacio de direcciones reales.
  • Soportar multiprogramación de forma efectiva en un sistema con muchos usuarios que compartan el almacenamiento real.

Se utiliza un esquema de almacenamiento de dos niveles:

  • Primer nivel: “almacenamiento real ”:
    • En él se ejecutan los procesos y en él deben estar los datos para que un proceso pueda referirse a ellos.
  • Segundo nivel: “almacenamiento auxiliar, secundario o adicional ”:
    • 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.

 

3.3.2 Paginación.

Los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa. (Roberto Escalona García - 2004)

 

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.

 

 

3.3.3 Segmentación.

En los sistemas de “segmentación” un programa y sus datos pueden ocupar varios bloques separados de almacenamiento real. (Roberto Escalona García - 2004)

Los bloques:

  • No necesitan ser de igual tamaño.
  • Los bloques separados no necesitan ser adyacentes.
  • Deben estar compuestos de posiciones contiguas de almacenamiento.

Se complica la protección de bloques de memoria de un proceso de usuario.

Es más difícil limitar el rango de acceso de cualquier programa [1997, Deitel].

 

3.3.4 Sistemas de paginación segmentación.

Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual. (Morris Mano - 1994)

El tamaño de los segmentos es múltiplo del de las páginas.

No es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario.

Las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.

El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v = (s,p,d)”:

  • “s” es el número del segmento.
  • “p” es el número de página.
  • “d” es el desplazamiento en la página donde se encuentra asignado el elemento deseado.

 

3.4 Administración de memoria virtual.

Los sistemas de administración de memoria se pueden clasificar en dos tipos. Los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecución (intercambio y paginación) y aquellos que no.

Monopogramación sin intercambio o paginación.

Es en forma secuencial pues solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa, esto implica que cada proceso debe contener controladores de dispositivo para cada uno de los dispositivos E/S que utilice. ( Ralph M. Stair,2000)

Multiprogramación y uso de la memoria.

La multiprogramación facilita la programación de una aplicación al dividirla en dos o mas procesos. La mayoría de los procesos tardan cierto tiempo en la espera de datos de dispositivos E/S. ( Ralph M. Stair,2000)

Un modelo para el uso y aprovechamiento de la CPU es el modelo probabilístico dado por la fórmula :

Uso de la CPU = 1 - pn

Multiprogramación con particiones fijas

El objetivo en todo esto es tener mas de un proceso en memoria a la vez, solución posible sería dividir la memoria en n partes al inicio de una sesión de uso de la máquina, pero aún así se obtiene el desperdicio de particiones grandes con una tarea pequeña, la respuesta puede ser tener particiones pequeñas también. ( Ralph M. Stair,2000)

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.

 

3.4.1 Estrategias de administración.

Tags: adpedro-Martinez1

Publicado por adpedro-Martinez1 @ 15:22
Comentarios (2)  | Enviar
Comentarios
Publicado por skifreeha
S?bado, 10 de octubre de 2009 | 23:59
Qeu tal. saludos desde oaxaca...
Gracias por publicar todo esto sbre el administrador de memoria.
me dejaron una tarea y en tu blog aparece casi todo lo que me dejaron investigar..
Publicado por skifreeha
Domingo, 11 de octubre de 2009 | 0:12
mepregunto si tienes los temas de tecnicas de organizacion de memoriaen windows, linux y unix, concepto de combinacion y conpactacion(ago asi),la fragmentacion y tipos de memoria que ocurre en la memoria,y mas temas,espero los tengas.. mi email: frg_28@ho