04 Dic

Estructuras de hardware y de control

  • Todas las referencias a la memoria dentro de un proceso son direcciones lógicas que se traducirán a direcciones físicas durante la ejecución.
  • Un proceso puede dividirse en varias partes (páginas o segmentos) y no es necesario que se encuentren contiguas durante su ejecución.
    • Esto es posible por la combinación de la traducción dinámica de la direcciones y el uso de la tabla de página ó segmentos.

Ejecución de un programa

  • El sistema operativo carga a memoria principal solo unos pocos fragmentos del programa, incluyendo el fragmento que contiene el comienzo del programa.
  • El conjunto residente del proceso es la parte del proceso que está realmente en memoria principal.
  • Si el procesador encuentra una dirección que no está en memoria principal genera una interrupción.
  • El sistema operativo pone el proceso interrumpido en estado de bloqueado.
  • El fragmento del proceso que provocó el fallo es traído a memoria principal, para ello el sistema operativo:
    • Emite una solicitud de lectura E/S al disco.
    • Expide otro proceso para que se ejecute mientras se completa la operación E/S.
    • Una vez que se ha completado la operación E/S, una interrupción es emitida, el sistema operativo modifica el estado del proceso afectado a estado de Listo.

Ventajas del enfoque anterior

  • Se pueden mantener más procesos en la memoria principal.
    • Se cargarán a memoria principal solo algunos fragmentos del proceso.
    • Utilización más eficiente del procesador.

Por lo menos un proceso, de los múltiples que estén en memoria principal, estará en estado de listo.

  • Es posible que un proceso sea más grande que toda la memoria principal.
    • Con memoria virtual basada en paginación o segmentación el programador no debe preocuparse si su programa es demasiado grande.

Tipos de memoria (ejecución)


  • Memoria real
    • Memoria principal
  • Memoria virtual
    • Permite la multiprogramación efectiva.
    • Elimina al usuario las restricciones de memoria principal.

Hiperpaginación

  • Si se expulsa un fragmento justo antes de ser usado, tendrá que traerlo de nuevo casi de manera inmediata.
  • Demasiados intercambios conducen a hiperpaginación.
  • El procesador consume más tiempo intercambiando fragmentos que ejecutando instrucciones del usuario.

Principio de cercanía

  • Las referencias a los datos y al programa dentro de un proceso tienden a agruparse.
  • Durante cortos periodos de tiempo, se necesitarán solo unos pocos fragmentos del proceso.
  • Predicciones inteligentes sobre que fragmentos de un proceso se necesitarán en un futuro cercano.

Soporte necesario para memoria virtual

  • El hardware debe soportar la paginación y segmentación.
  • El sistema operativo debe de incluir un software para gestionar el movimiento de páginas o segmentos entre memoria principal y secundaria.

Paginación

  • Cada proceso tiene su propia tabla de páginas.
  • Cada entrada de la tabla de páginas contiene el número de marco de la página correspondiente en la memoria principal.
  • Un bit es necesario para indicar si la página esta en memoria principal o no.
  • Otro bit es usado para indicar si el contenido de la página ha sido modificado desde que la página se cargo a memoria principal. Si no ha habido cambios no es necesario actualizar la página cuando está sea sustituida.

Tablas de páginas

  • Hay una tabla de páginas por proceso.
  • Algunas tablas pueden ocupar enormes cantidades de memoria principal
  • Las tablas de las páginas son almacenadas en memoria virtual.
  • Cuando un proceso está en ejecución, al menos una parte de su tabla de páginas debe estar en memoria principal.

Buffer de traducción adelantada

  • Cada referencia a la memoria puede generar dos accesos a la memoria.
    • Para obtener la entrada de la tabla de páginas.
    • Para obtener el dato deseado.
    • Para solucionar este problema la mayoría de los esquema de memoria virtual utilizan una cache especial para las entradas de la tabla de páginas llamada buffer de traducción adelantada, (TLB, Translation Lookaside Buffer).
  • Contiene aquellas entradas de la tabla de páginas usadas hace menos tiempo.
  • Dada una memoria virtual el procesador examina TLB.
  • Si la entrada de la tabla de páginas esta presente se obtiene el número de marco y se puede obtener la dirección real.
  • Si no se encuentra, el procesador emplea el número de página como índice para buscar en la tabla de páginas del proceso.
  • Si encuentra activo el bit de presencia, indica que la página esta en memoria principal y el procesador puede obtener el número de marco y por lo tanto la dirección física.
  • El procesador actualiza la TLB.
  • Por otro lado, si el bit de presencia no esta activo, significa que la página no esta en la memoria principal por lo que se produce un fallo en la memoria llamado fallo de página.

Tamaño de la página

  • Mientras menor sea el tamaño de la página, menor será la fragmentación interna.
  • Cuanto menor sea la página, mayor será el número de páginas que se necesitan por proceso.
  • Mayor número de páginas significa tablas de páginas mayores.
  • En tablas de páginas grandes la gran parte de las tablas estarán en memoria virtual.
  • Las características físicas de la mayoría de los dispositivos de memoria secundaria son propicios para tamaños de páginas mayores.
  • Tamaño de página pequeño, gran número de páginas disponibles en memoria principal.
  • Después de un tiempo, todas las páginas de la memoria contendrán parte de las referencias recientes del proceso. Por lo tanto los fallos en la memoria serán menores.
  • Cuando se incrementa el tamaño de la página, contendrá posiciones distantes de cualquier referencia reciente, por lo que habrá más riesgo en el fallo de página.
  • Diferentes tamaños de páginas proporciona mayor flexibilidad en el uso de TLB.
  • Las páginas de mayor tamaño pueden ser asignadas a instrucciones de un programa.
  • Las páginas de tamaño pequeño pueden ser asignados para las pilas de un hilo.

Segmentación

  • La segmentación permite al programador contemplar a la memoria como si constará de varios espacios de direcciones.
  • Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica.
  • Direcciones de memoria constan de número de segmento, desplazamiento.
  • Simplifica la gestión de estructuras de datos crecientes.
  • Permite modificar y recompilar los programas independientemente.
  • Permite la compartición de datos entre procesos.
  • Permite la protección.

Tabla de segmentos

  • Cada tabla contiene la dirección de comienzo del segmento que se encuentra en memoria principal así como su longitud.
  • Contiene un bit que indica que el segmento ya está en memoria principal.
  • Contiene un bit que indica si el segmento ha sido modificado desde que fue cargado a memoria principal.
  • Contiene otros bits de control: protección ó compartición.

Combinación de paginación y segmentación

  • Aprovechando las ventajas de la páginación y la segmentación.
    • Cada segmento se puede dividir en páginas de tamaño fijo.
    • Asociada a cada proceso existe una tabla de segmentos y varias tablas de páginas.

Protección y compartimiento

  • Utilización de un esquema de anillos para la protección.
  • Anillos interiores tienen mayores privilegios.
  • Un programa puede acceder sólo a datos del mismo anillos o de anillos de menores privilegios.
  • Un programa puede hacer llamadas a servicios que residan en el mismo anillo o en anillos de mayor privilegios.

Políticas del sistema operativo sobre la memoria virtual

  • El diseño de la administración de memoria en un sistema operativo depende de tres áreas:
    • Si se emplea o no técnicas de memoria virtual
    • Uso de paginación segmentación o ambas.
    • Los algoritmos para la administración de memoria.

Los dos primeros puntos dependen de la plataforma de hardware disponible. El tercer punto es del dominio del software del sistema operativo.

Algoritmos para gestión de memoria

  • Rendimiento: se busca minimizar el fallo en la memoria.
    • Cuando hay un fallo de memoria hay sobrecarga de software.

El Sistema operativo debe :

Reemplazar páginas.

Planificación de otro proceso para ejecución.

  • La probabilidad de que se haga referencia a una página ausente sea mínima.

Políticas de lectura

  • Relacionada con la decisión de cuando se debe cargar una página en la memoria principal.
    • Paginación por demanda

Se trae la página a la memoria solo cuando se hace referencia a una posición de dicha página.

Cuando un proceso es ejecutado por primera vez se producirán muchos fallos.

  • Paginación previa

Se cargan otras páginas distintas a las demandadas debido a un fallo de memoria.

Si las páginas se cargan secuencialmente en memoria secundaria es más eficiente traer un bloque de páginas contiguas.

  • La paginación previa no debe confundirse con el intercambio. Cuando un proceso se descarga de memoria y pasa al estado de suspendido, todas las páginas residentes también se llevan fuera.

Políticas de ubicación

  • Determinar dónde va a residir una parte del proceso en la memoria principal.
  • Para segmentación pura: mejor, el primer y el siguiente ajuste.
  • Combinación de segmentación con paginación la ubicación carece de importancia.

Políticas de reemplazo

  • Selección de la página a reemplazar cuando se debe cargar una nueva página.
  • Objetivo: la página a reemplazar sea la que tenga una menor posibilidad de ser referenciada en un futuro cercano.
  • Se intenta predecir el futuro en función del pasado.

Bloqueo de marcos

  • Restricción de la política de reemplazo.
    • Cuando un marco esta bloqueado, la página cargada en ese marco no puede ser reemplazada.
  • El núcleo del sistema operativo así como las estructuras clave de control se encuentran en marcos bloqueados.
  • Un bit de bloqueo es asociado a cada marco.

Algoritmos básicos de reemplazo

  • Política óptima

    • Selecciona para reemplazar la página que tiene que esperar una mayor cantidad de tiempo hasta que sea referenciada.
    • El sistema operativo requiere de un conocimiento exacto de sucesos futuros.
    • Sirve como estándar para comparar otros algoritmos.
  • La política de la usada menos recientemente (Least Recently Used,LRU).
    • Reemplaza la página que no ha sido referenciada desde hace tiempo.
    • Por el principio de cercanía, está sería la página que tendrá menor probabilidad de ser referenciada en un futuro cercano.
    • Para la implementación se tendría que etiquetar cada página en el momento de su última referencia, implica una sobrecarga.
  • La política de la primera en entrar primera en salir  (FIFO)


    • Trata los marcos asignados a un proceso como un buffer circular.
    • Las páginas se suprimen de la memoria según la técnica de turno rotatorio.
    • Simple de implementar.
    • Objetivo: reemplazar la página que más ha estado en memoria.
    • Para datos muy usados se cargarán y expulsarán repetidamente.
  • Política del reloj

    • Requiere asociar un bit adicional a cada marco denominado bit de uso.
    • Cuando se carga una página por primera vez en un marco de memoria, el bit de uso se pone a cero.
    • Cuando se hace referencia a la página el bit se pone a 1.
    • Cuando es tiempo de reemplazar una página, el primer marco encontrado con el bit de uso en cero es reemplazado.
    • Durante la búsqueda cada bit de uso que tiene 1 es cambiado a 0.
  • Almacenamiento intermedio de páginas


    • Utiliza la política FIFO.
    • La página reemplazada se asigna a una de las dos listas:

Páginas libres. Si no ha sido modificada.

Páginas modificadas.

  • La página no se mueve físicamente de la memoria principal, sólo se suprime su entrada en la tabla de páginas.

Gestión del conjunto residente

  • Tamaño del conjunto residente


    • El sistema operativo debe decidir cuánta memoria principal asignar a determinado proceso.

Cuanto menor es la cantidad asignada a un proceso, mayor es el número de procesos en memoria principal.

Si hay un número pequeño de páginas, el porcentaje de fallos de página será mayor.

La asignación de memoria adicional a un proceso en particular no tendrá efectos notables en el porcentaje de fallos de página.

  • Asignación fija


    • Otorga al proceso un número fijo de marcos.
    • Si ocurre un fallo de página, se debe reemplazar una de las páginas del proceso por la página que se necesite.
  • Asignación variable


    • Permite que el número de marcos asignados cambie.
    • En caso que se tenga muchos fallos de página, se le asignará más marcos.

Alcance del reemplazo

  • El alcance de una estrategia de reemplazo puede clasificarse en global o local.
    • Global . Considera a todas las páginas de la memoria como candidatas para reemplazar.
    • Local. Considera únicamente entre las páginas del proceso que originó el fallo.

Control de carga

  • Determinar el número de procesos que pueden estar en memoria principal.
  • Puede haber pocos procesos en memoria, en ocasiones podrán estar todos bloqueados y se gastará mucho tiempo en el intercambio.
  • Por otro lado, puede haber muchos procesos en memoria, mayor probabilidad de fallos de página. El resultado es la hiperpaginación.

Suspensión de procesos

  • Si se quiere reducir el grado de multiprogramación se deben suspender uno o más procesos residentes en memoria principal.
    • Procesos con la prioridad más baja.
    • Procesos con fallos de páginas.
    • Último proceso activado.
    • Proceso con el conjunto residente más pequeño.
    • El proceso mayor.
    • Proceso con el mayor tiempo de ejecución restante.
  • Beneficios del uso de memoria virtual

    • Mayor aprovechamiento del procesador.
    • Elimina la limitante de tamaño en el desarrollo de programas.
    • Traducción de direcciones lógicas en reales durante la ejecución.

Esto permite a los procesos situarse en cualquier posición de la memoria principal y cambiar de ubicación a lo largo del tiempo.

  • División de un proceso en fragmentos.

No es necesario que los fragmentos este ubicados de forma contigua.

No es necesario que todos los fragmentos estén en memoria principal.

  • Los enfoques básicos de memoria virtual son la paginación y la segmentación.
  • Un esquema de gestión de memoria requiere soporte de hardware y software.
    • Hardware. Lo proporciona el procesador.

Traducción de direcciones virtuales

Generación de una interrupción cuando hay fallo de memoria.

  • Software. Algoritmos para la gestión de memoria.
  • Cuestiones de diseño relativas a los sistemas operativos dan soporte a la gestión de memoria.
    • Políticas de lectura
    • Políticas de ubicación
    • Políticas de reemplazo.
    • Gestión del conjunto residente.
    • Políticas de vaciado.
    • Control de carga.

Deja un comentario