jueves, 19 de mayo de 2016

REQUISITOS DE GESTIÓN DE MEMORIA

Reasignación

La gestión de memoria en el sistema operativo debe ser capaz de trasladar los programas en memoria y manejar referencias a la memoria y las direcciones en el código del programa para que siempre apuntan a la ubicación correcta. La unidad de gestión de memoria virtual también debe hacer frente a la concurrencia.

Protección

Los procesos no deberían poder referenciar la memoria de otros procesos sin permiso, para evitarlo existe la protección de memoria, que evita que código malicioso o erróneo de un programa interfiera con la operación de otros programas en ejecución.

Memoria compartida

Aunque la memoria utilizada por diferentes procesos suele estar protegida, algunos procesos puede que sí tengan que compartir información y, para ello, han de acceder la misma sección de memoria. La memoria compartida es una de las técnicas más rápidas para posibilitar la comunicación entre procesos.

Organización lógica

La gestión de memoria es responsable de manejar esta organización lógica, que se contrapone al espacio de direcciones físicas lineales. Una forma de lograrlo es mediante la segmentación de memoria.

Organización física

La memoria suele dividirse en un almacenamiento primario de alta velocidad y uno secundario de menor velocidad. La gestión de memoria del sistema operativo se ocupa de trasladar la información entre estos dos niveles de memoria.

miércoles, 18 de mayo de 2016

Paginación (Técnica actual)


Para solucionar el problema de fragmentación externa dada con particiones variables. Usar particiones fijas en memoria virtual y física

Memoria Virtual



Paginación


Permiten la ubicación no contigua de programas para combatir la fragmentación y la degradación de la memoria. Al poder ubicarse de forma no contigua, un programa ya no necesita un hueco de su tamaño, sino que la cantidad total de memoria libre sea mayor o igual. 
Traduciendo direcciones virtuales

Una dirección virtual tiene dos partes:
Número de página virtual y offset
Número de página virtual es un índice en tabla de páginas
Entrada en tabla de página contiene número de marco de página
Dirección física se traduce a:

 Número Marco de página:offset



Ventajas de la Paginación


Fácil para asignar memoria física
Memoria física se administra usando una lista de marcos de páginas libres
Para asignar un marco de página, se saca de la lista
Fragmentación externa no es un problema
Fácil quitarle páginas a programas
Páginas son del mismo tamaño
Uso de bit válido para saber que páginas ha perdido el proceso
Tamaño de páginas definido como múltiplos de tamaños de bloques de disco

Desventajas de Paginación


Expone Fragmentación interna
Proceso no puede usar memoria de marco de página que le sobra a otro proceso
Referencia a memoria en 2 pasos
Tabla de página y luego Memoria
Solución, usar hardware como cache para acelerar referencias : Memoria requerida para mantener tablas de páginas puede ser grande
Necesita una entrada en tabla de página por número de página virtual

Segmentación


Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa.Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. 

OBJETIVOS: 

Modularidad de programas: Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. 
Estructuras de datos de largo variable: Donde cada estructura tiene su propio tamaño y este puede variar. 
Protección: Se pueden proteger los módulos del segmento contra accesos no autorizados. 
Compartición: Dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos. 
Enlace dinámico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán sólo cuando sea necesario.


Ventajas y Desventajas


El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular. 
Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. 
Debido a que es posible separar los módulos, se hace más fácil la modificación de los mismos. Cambios dentro de un módulo no afecta al resto de los módulos. 
Es fácil el compartir segmentos. 
Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. 
Existe la posibilidad de definir segmentos que aún no existan. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cuál se referencia el arreglo u otra estructura de datos por primera vez.

GESTIÓN DE MEMORIA

La gestión de memoria representa un vínculo delicado entre el rendimiento (tiempo de acceso) y la cantidad (espacio disponible).
Siempre se busca obtener el mayor espacio disponible en la memoria, pero pocas veces existe la predisposición para comprometer el rendimiento.

La gestión de memoria también debe realizar las siguientes funciones:
Permitir que la memoria se comparta (en sistemas de multiprocesos).
Asignar bloques de espacio de memoria a distintas tareas;
Proteger los espacios de memoria utilizados (evitar que un usuario modifique una tarea realizada por otro usuario).
Optimizar la cantidad de memoria disponible, específicamente a través de sistemas de expansión de memoria.

Los mecanismos de distribución de memoria
Segmentación: los programas se dividen en paquetes de longitudes variadas conocidos como "segmentos".
Paginación: consiste en dividir la memoria en bloques y los programas en páginas de longitud fija.


Particiones Fijas


Memoria física se divide en particiones fijas

Todas las particiones son de tamaño fijo y nunca cambian, pero pueden haber particiones de diferentes tamaños

Hardware requerido: registro base y registro límite
Dirección física = dirección virtual + registro base

Registro base es cargado por el SO después de cambio de contexto, y entonces un proceso se va a ejecutar

Ventajas
Sencillo, cambio de contexto rápido
Desventajas
Fragmentación interna
Partición mas grande de lo necesario (sobra memoria que no puede utilizar otro proceso)
Fragmentación externa
Caso en que dos particiones disponibles pero ambas muy pequeñas para contener un proceso mas grande

martes, 17 de mayo de 2016

Objetivos y Criterios de Planificación

Los objetivos del planificador se resumen en:

a) Reparto equitativo del tiempo de procesador
b) Eficiencia en el uso del procesador
c) Menor tiempo de respuesta en uso interactivo
d) Cumplir plazos de ejecución de los sistemas de tiempo real

  • Ser equitativa: debe intentar hacer una planificación justa, esto es, se debe tratar a todos los procesos de la misma forma y no aplazar indefinidamente ningún proceso. 
  • Ser eficiente: debe maximizar el uso de los recursos tales como intentar que la ocupación de la CPU sea máxima. Al mismo tiempo se debe intentar reducir el gasto extra por considerar que es trabajo no productivo. 
  • Lograr un tiempo bueno de respuesta, es decir, que los usuarios interactivos reciban respuesta en tiempos aceptables.
  • Lograr un tiempo de proceso global predecible. Esto quiere decir que un proceso debe ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo con independencia de la carga del sistema.
  • Elevar al máximo la productividad o el rendimiento, esto es, maximizar el número de trabajos procesados por unidad de tiempo.

Planificación Apropiativa y No apropiativa 

MODOS DE DECISIÓN:

PREFERENTE        ----------------------> NO APROPIATIVO

NO PREFERENTE ----------------------> APROPIATIVO


No Apropiativo(Una vez que se le ha otorgado la cpu a un proceso, no le puede ser retirada)

Características
  • Significa que los trabajos “largos” hacen esperar a los trabajos “cortos”.
  • Logra más equidad en el tratamiento de los procesos.
  • Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera.

Apropiativo(Una vez que se le ha otorgado la cpu a un proceso, le puede ser retirada) El proceso que se está ejecutando actualmente puede ser interrumpido y pasado al estado de listos por el sistema operativo.

Características
  • Es útil cuando los procesos de alta prioridad requieren atención rápida.
  • Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido.
  • Tiene su costo en recursos, ya que el intercambio de contexto implica sobrecarga y además requiere mantener muchos procesos en el almacenamiento principal, en espera de la cpu, lo que también implica sobrecarga.
Niveles de Planificación


Conjunto de políticas y mecanismos construidos dentro del sistema operativo
que planifican la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse.


El scheduling está muy relacionado con la gestión de los recursos.

Existen tres niveles de scheduling, estos niveles son:
  • Planificador de la CPU o a corto plazo.
  • Planificador a medio plazo.
  • Planificador a largo plazo
En la planificación de procesos se suelen incluir varios niveles,
en función del periodo temporal que cubren

PLANIFICACIÓN A LARGO PLAZO
La planificación a largo plazo determina cuáles son los programas admitidos en
el sistema. De este modo, se controla el grado de multiprogramación.
Una vez admitido, un proceso es añadido a la cola del planificador a corto plazo.
PLANIFICACIÓN A MEDIANO PLAZO
La planificación a medio plazo forma parte de la función de intercambio.
La decisión de cargar un proceso en memoria principal.Pasar a listo
PLANIFICACIÓN A CORTO PLAZO
Pasar un proceso a Nuveo pasando por la transición admitir. El planificador a
medio plazo se ejecuta con algo más de frecuencia, para tomar la decisión del
intercambio. El planificador a corto plazo, también conocido como distribuidor
(dispatcher), es el de ejecución más frecuente y toma decisiones con un mayor
detalle sobre el proceso que se ejecutará a continuación.
El planificador a corto plazo se ejecuta cuando ocurre un suceso que puede
conducir a la interrupción del proceso actual o que ofrece la oportunidad de
expulsar de la ejecución al proceso actual en favor de otro.



·Interrupciones del reloj
·Interrupciones de E/S
·Llamadas al sistema operativo

·Señales