Evolución de las Organizaciones de Memoria

EVOLUCIÓN DE LAS ORGANIZACIONES DE MEMORIA

 

Real Real Real Real Virtual Virtual Virtual
Sistemas dedicados con un solo usuario Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria real Sistemas multiprogramados de memoria virtual Sistemas multiprogramados de memoria virtual Sistemas multiprogramados de memoria virtual
Multiprogramación de particiones fijas Multiprogramación de particiones fijas Multiprogramación de particiones variables Paginación pura Segmentación Pura Paginación y segmentación combinados
Absoluto Relocalizable
Dirección fija Cambian de dirección de forma interna

Almacenamiento Virtual

ALMACENAMIENTO VIRTUAL

–          Capacidad de obtener acceso a direcciones en un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario del sistema.

–          SO Atlas, Manchester 1960.

–          Disociación de las direcciones a las que hace referencia un proceso en ejecución de las direcciones disponibles en el almacenamiento primario.

–          Las direcciones calculadas por procesos no necesariamente las disponibles en el almacenamiento primario.

–          Dirección real: Dirección disponible en memoria.

–          Dirección virtual: Direcciones usadas X procesos.

Intercambio/Swap

–          Un proceso puede intercambiarse temporalmente de memoria a un almacenamiento de respaldo y luego puede ser retornado hace la memoria para continuar su ejecución.

–          El almacenamiento de respaldo se hace en el disco, que debe ser rápido y tener suficiente espacio para ubicar copia de todas las imágenes de memoria para todos los usuarios; debe proveer acceso directo a estas imágenes de memoria.

–          Descargar (swap out), cargar (swap in) – Variante de intercambio en algoritmos de planificación por prioridad; los procesos de baja prioridad se saca de memoria de tal forma que el proceso de mayor prioridad pueda ser cargado y ejecutado

–          La mayor parte del tiempo es tiempo de transferencia; este es directamente proporcional a la cantidad de memoria intercambiada.

–          Existen versiones modificadas de intercambio de los diferentes sistemas, ejemplo Unix, Linux y Windows.

 FUNDAMENTOS DE LA MEMORIA VIRTUAL

-El procesador utiliza y genera direcciones virtuales.

-Parte del mapa de memoria (virtual) está en disco (swap) y parte en memoria principal

-La MMU (memory management unit) traduce las direcciones virtuales en físicas.

-La MMU produce un fallo de página (trap) cuando la dirección no está en memoria principal.

-El SO trata el fallo de página, haciendo un transvase entre la memoria principal y el área de intercambio (swap disco)

En el esquema de MMU, el valor del registro de reubicación de suma a cada dirección generada por el proceso del usuario al momento de ser enviado a la memoria.

El programa del usuario se preocupaba de las direcciones lógicas; nunca tenía que preocuparse por las direcciones físicas.

ALMACENAMIENTO VIRTUAL

-Espacio de direcciones virtuales, V: espacio de direcciones a las que puede hacer referencia un proceso

Espacio de direcciones reales, R: Almacenamiento físico disponible, en general V >> R

Traducción dinámica de direcciones (DAT): V ===> R

Mapa de correspondencia de traducción de direcciones: por bloques: =s páginas, <> segmento.

Direccionamiento bidimensional: Bloque, desplazamiento.

Problema de la Asignación Dinámica de Memoria

PROBLEMA DE LA ASIGNACIÓN DINÁMICA DE MEMORIA

Como satisfacer la solicitud de un tamaña n a partir de huecos libres.

Estrategia de colocación:

–          Mejor ajuste: huevo que mejor quepa y menos desperdicio: busque en toda la lista (puede estar ordenada).

–          El primer ajuste: el primer hueco que le sirva. Búsqueda al principio o a partir de este punto.

–          Peor ajuste: hueco más grande.

–          Siguiente ajuste: ubíquelo en el siguiente hueco.

–          Estrategia más sofisticada: Sistema Buddy.

  • Listas de huecos con tamaños en potencias de 2.

–          El primer ajuste y el mejor ajuste son mejores que el peor ajuste en términos de velocidad y de almacenamiento.

Administración de Memoria

ADMINISTRACIÓN DE MEMORIA

INTRODUCCIÓN

–          Los programas deben ser llevados a la memoria y convertirse en procesos para ser ejecutados.

–          Cola de entrada. Colección de programas en disco que esperan para ser llevados a la memoria para su ejecución.

 

VINCULACIÓN DE LAS INSTRUCCIONES Y LOS DATOS A LA MEMORIA

Pueden realizarse en tres estadios:

–          Tiempo de compilación: si se conoce previamente la ubicación de memoria, puede generarse código absoluto, el código debe ser recompilado si la dirección de inicio cambia.

–          Tiempo de carga: Si se conocen las direcciones en tiempo de compilación, debe generarse código reubicable.

–          Tiempo de ejecución: La vinculación se retarda hasta el tiempo de corrida si los procesos pueden ser movidos durante su ejecución de una posición de memoria a otra.

OVERLAYS (SUPERPOSICIONES)

–          Mantiene en memoria solo aquellas instrucciones y datos que se requieren en un momento determinado.

–          Se utilizaba cuando el proceso era mayor que la cantidad de memoria destinada para él.

–          Se implementaba por el usuario, no se requería un soporte especial del sistema operativo, su programación era compleja.

ASIGNACIÓN CONTINUA

–          Generalmente la memoria principal tiene dos particiones:

  • Para el sistema operativo.

ASIGNACIÓN CONTIGUA 2

–          ASIGNACIÓN con múltiples particiones:

  • Hueco: bloque de memoria disponible.

ASIGNACIÓN DE MÚLTIPLES PARTICIONES FIJAS

Particiones configuradas por usuarios predeterminadas, se usó en OS/360/MTF (multiprogramación con un número fijo de tareas).

Recolocación: el enlazador debe determinar que direcciones recolocarse, vs carga absoluta x parte.

Protección: Bloques de 2k con clave, o registro de base y limite.

Fragmentación interna: en una partición de memoria, si el espacio es de 200 y se utilizan 70, 130 permanecen ociosos y no se pueden utilizar.

 

FRAGMENTACIÓN

Explicación de programa en pascal de simulación de asignación de particiones fijas, en las particiones ejecuta programas específicos, muestras las particiones, los procesos.

 

ASIGNACIÓN DE MEMORIA CON PARTICIONAMIENTO FIJO

Al iniciar el sistema, se decide de que tamaño van a ser las particiones. Estos tamaños pueden ser diferentes. Lo que pasa, es que estas particiones permanecen fijas, para cambiar el tamaño de la partición, se debía reiniciar el sistema y elegir de nuevo el tamaño de las particiones. Si un tamaño de partición es de 20 espacios, y un programa de tamaño 10 es cargado en este espacio, se tiene una fragmentación interna de 10 espacios, ya que otro programa no puede ocupar este espacio, por lo tanto es espacio desperdiciado.

 

ASIGNACIÓN CON PARTICIONES VARIABLES.

El tamaño de la partición se crea al momento de ser utilizada, por lo tanto, si un programa necesita 10 espacios, se le asigna exactamente esa cantidad. El problema esta cuando el programa termina, ya que deja “huecos”, lo que lleva al problema de que si un programa necesita 12 espacios, no puede utilizar el hueco que dejó el anterior programa. Se le conoce con el nombre de fragmentacion externa.

 

Asignación dinámica de las particiones.

Esquema de Compresión (garbage collection): Ciber CDC 40mb/seg. Computador normal (velocidad) micro 1mb/seg. Mover el programa, de tal manera que puedan unirse los espacios.

Fragmentación externa: huevos después de ejecución.

Condensación: fusión de 2 huecos contiguos.

Explicación de un programa de simulación de asignación con particiones variables, memoria.

Historia de los Requerimientos de los S.O. MS WINDOWS

REQUERIMIENTOS DE MEMORIA MS WINDOWS.

Windows 1.0 salió el 20 de noviembre de 1985.

* CGA/Hercules/EGA (o compatible)

* MS-DOS 2.0

* 256 KB Ram

* 2 unidades de dos lados cada una o un disco duro

 

Windows 2.1 fue lanzado el 27 de mayo de 1988.

Algo interesante: las versiones 2.1 fueron lanzados para que se pueda tomar ventaja del procesador 286 de Intel.

* MS-DOS version 3.0 or más

* 512 KB de RAM

* Un disco floppy y un disco duro

* Tarjeta de adaptador de gráficos

* Mouse opcional

 

Windows 3.1x

Varias versiones de Windows 3.1 fueron lanzadas entre 1992 y 1994.

Lo que fue diferente con esta versión de Windows es que si un usuario estaba utilizando un sistema operativo diferente a MS DOS, el instalador podía fallar y el usuario no podría instalar Windows.

 

* MS-DOS 3.1 o superior

* Procesador Intel 80286 o superior

* 1 MB o más de memoria

* 6.5 MB libres en el disco duro (9 MB recomendados)

 

Windows 95

Windows 95 fue lanzado el 24 de agosto de 1995.

El interfaz gráfico de usuarios fue una de las mayores mejoras con este sistema operativo. De hecho, el formato y estructura general del GUI se sigue utilizando en Windows hoy en día.

* Intel 80386 DX CPU

* 4 MB de RAM del sistema

* 50 MB de espacio en el disco duro

 

Windows 98

Windows 98 fue lanzado el 25 de junio de 1998.

* Procesador 486DX-2/66 MHz o superior (Procesador Pentium recomendado)

* 16 MB de RAM (24MB recomendados)

* 500 MB de espacio disponible en el disco duro

* Monitor VGA o mayor resolución

* CD-ROM or DVD-Rom

* Mouse u otros dispositivos

 

Windows 2000

Windows 2000 fue lanzado el 17 de febrero de 2000. Existieron tres versiones diferentes de Windows 2000 y cada una tuvo diferentes requerimientos.

Con esta versión, fueron introducidas nuevas opciones como Windows Desktop Update, Internet Explorer 5 y Outlook Express.

 

Windows 2000 Professional

* 133 MHz o superior, compatible con Pentium

* 32 MB de RAM (64 MB recomendados)

* 700 MB de espacio en el disco duro (2 GB recomendados)

 

Windows 2000 Server/Advanced Server

* 133 MHz de CPU

* 256 MB de RAM como mínimo

* 2 GB de espacio en disco duro

 

Windows Me

Windows Me fue lanzado el 24 de septiembre de 2000

Windows Me duró muy poco, sólo un año, ya que luego fue reemplazado por Windows XP

* Procesador Pentium de 150 MHz

* 320 MB de espacio en el disco duro

* 32 MB de RAM

 

Windows XP

 

Windows XP salió al mercado el 25 de octubre de 2001.

Fue el primer sistema operativo producido por Microsoft que fue creado con la kernel y arquitectura de Windows NT. Abajo se encuentran los requerimientos mínimos para XP Home y Profesional.

* Procesador de 233 MHz

* 63 MB de RAM

* 1.5 GB libres en el disco duro

* Adaptador de video y monitor VGA

* CD-ROM o DVD

 

Windows Vista

Windows Vista salió el 30 de enero de 2007. Este es el sistema que más requerimientos tiene y, por ende, el más criticado.

Vista Premium

* Procesador de 1.0 GHz

* 1 GB de RAM

* Memoria gráfica de 128 MB

* 40 GB de capacidad en el disco duro

* 15 GB libres en el disco duro

Escenarios de Planificación de Tiempo Real

ESCENARIOS DE PLANIFICACIÓN DE PROCESOS DE TIEMPO REAL

  1. Planificador expropiativo de turno circular.
  2. Planificador no expropiativo dirigido por prioridad.
  3. Planificador expropiativo dirigido por prioridad en puntos de expropiación.
  4. Planificador expropiativo inmediato.

 

PLANIFICACIÓN DE TIEMPO REAL

–          Planificación de tiempo real estática:

  • No se ajustan las prioridades con el tiempo, poca recarga en el sistema, para procesos donde las condiciones eventualmente cambian.
  • Estática dirigida por tabla (plan): Determina, en tiempo de ejecución, cuando debe comenzar a ejecutarse cada tarea. Se aplica a tareas periódicas.
  • Estática con expropiación dirigida por prioridad (sin plan): se utiliza un planificador expropiativo tradicional basado en prioridades. Usado en los sistemas multi programados que no son de tiempo real. En tiempo real la prioridad se ajusta con base a las restricciones de tiempo de la tarea. Ej: planificación monótona en frecuencia (RMS).

–          Planificación de tiempo real dinámica:

  • Ajusta las prioridades en respuesta a condiciones cambiantes, puede tener una significativa sobre carga, pero debe asegurar que ella no genere incumplimiento en los tiempos.
  • Dinámica basada en un plan: la facilidad se determina en tiempo de ejecución.
  • Dinámica basada en el mejor esfuerzo: no se realiza análisis de factibilidad. El sistema trata de cumplir con todos los plazo y abandona cualquier proceso ya iniciado y cuyo plazo no se haya cumplido.

 

PLANIFICACIÓN POR PLAZOS

–          Las planificaciones de tiempo real no se preocupan tanto de la velocidad de ejecución como de completar sus tareas.

–          El proceso debe completarse en un tiempo específico.

  • Se utiliza cuando los resultados serían inútiles si no se realiza el proceso a tiempo.
  • Difícil de implementar.
    • Debe prever un plan de requerimientos de recursos.
    • Genera significativa sobrecarga.
    • El servicio proporcionado a los otros procesos se puede degradar.

–          Información utilizada: Tiempo de activación, plazo de inicio, plazo de conclusión, tiempo de proceso, recursos requeridos, prioridad, estructura de sub tareas.

–          Las propiedades en general se basan en los tiempos límites de los procesos.

  • El tiempo límite más temprano primero (EDF. Earliest Deadline First).
  • Mínima laxitud primero.
    • Similar a EDF, pero la prioridad se basa en laxitud, la cual se basa en el tiempo límite de los procesos y su tiempo restante para completar su objetivo.

PLANIFICACIÓN MÚLTIPLES PROCESADORES

PLANIFICACIÓN MÚLTIPLES PROCESADORES

–          La planificación es más compleja cuando se tienen varios procesadores.

–          Escenarios: asignación de procesos a procesadores. Uso de la multiprogramación en cada procesador individual. Activación del proceso propiamente dicho.

–          La carga se comparte (una cola por procesador).

–          Una cola para todos los procesadores.

–          Multiprocesamiento simétrico (SMP): cada procesador tiene sus propias decisiones de planificación y consulta la cola de listos.

–          Multiprocesamiento Asimétrico (ASMP): solo un procesador accede a las estructuras de datos del sistema, obviando la necesidad de compartir datos.

Afinidad: ejecutar un proceso en un procesador definido.

 

ASIGNACIÓN DE PROCESOS A PROCESADORES.

–          Trata cada procesador como un recurso colectivo y asigna procesos a procesadores por demanda.

–          Un proceso se vincula permanentemente a un procesador.

  • Estrategia conocida como planificación de grupo o pandilla (gang).
  • Dedica una cola a corto plazo por cada procesador.
  • Menos sobrecarga.
  • El procesador puede estar ocioso mientras otro procesador tiene trabajo acumulado.

–          Cola global.

  • Procesos planificados sobre cualquier procesador disponible.

–          Arquitectura maestro/esclavo.

  • Las funciones clave del núcleo ejecutan siempre en un proceso concreto.
  • El maestro es responsable de la planificación de trabajos.
  • El esclavo envía una solicitud al maestro.
  • Desventajas:
    • Un fallo en el maestro hace que falle el sistema completo.
    • El maestro puede llegar a ser un cuello de botella para el rendimiento del sistema.

–          Arquitectura camaradas.

  • El núcleo puede ejecutarse en cualquier procesador.
  • Cada procesador se auto planifica.
  • Complica el sistema operativo.
    • Asegura que dos procesos no escogen el mismo proceso.