viernes, 6 de mayo de 2016

Segmentación Y Paginacion Por demanda

 SEGMENTACIÓN POR DEMANDA 

El sistema operativo asigna la memoria por segmentos y los controla por medio de descriptores de segmento que incluyen información sobre el tamaño, protecciones y ubicación del segmento. Un proceso no requiere de todos sus segmentos se encuentren en memoria para poder ejecutarse. En vez de esto el descriptor  de segmento contiene un bit de validez para cada segmento, el cual indica si se encuentra actualmente en memoria.



Hay varios mecanismos que permiten implementar la segmentación por demanda pero todos ellos son poco óptimos, algunas veces conviene no implementa ningún mecanismo de memoria virtual antes que utilizar segmentación por demanda.


  • Cuando un proceso  direcciona un segmento que contiene datos o código, el  hard examina este bit de validez. 


  • Si el segmento esta en memoria principal, el acceso continua sin problemas en caso contrario se genera una trampa al SO (falla de segmento), igual que sucede en las implantaciones de la paginacion por demanda.

Las rutinas de administración de memoria primero determinan si hay espacio suficiente para el segmento, Si no se efectúa una compactacion, Si luego de la compactacion el espacio disponible es escaso se escoge un segmento  para escribir en almacenamiento secundario e incorpora todo el segmento requerido 


La segmentación por demanda requiere de un considerable tiempo de procesamiento adicional,Por lo que esta no es un medio optimo para aprovechar al máximo Lo recursos de un sistema de computación.

PAGINACION POR DEMANDA
   La paginación por demanda es un sistema de paginacion con el cual, además de las ventajas de la paginación convencional, se busca disminuir los tiempos de respuesta y aumentar la cantidad de programas en memoria. Para lograr estos objetivos se hace uso de un intercambiador perezoso (llamado paginador) el cual carga a memoria solo las páginas que serán utilizadas por el programa en ejecución, de esta manera se logra un menor tiempo de carga y un ahorro en cuanto a espacio utilizado por dicho programa, ya que, por un lado, no necesitamos que todo el programa este en memoria para comenzar su ejecución mientras que, por otra parte, al no estar el programa completo en memoria, disminuimos considerablemente el espacio que éste ocupa.
Ya que el paginador solo busca las páginas que se necesitan para ejecutar algún programa, debemos agregar un bit que nos diga si las referencias de memoria son válidas o no, de lo contrario, al no encontrar una página no podríamos diferenciar si el paginador aún no la carga o si esta es realmente una referencia inválida.


El proceso que se sigue es el siguiente:
  1. Se intenta leer la página requerida
  2. Si la página requerida ya esta en memoria, simplemente se lee.
  3. Si no está en memoria, revisa si la referencia es válida.
  4. Si la referencia es inválida, se aborta.
  5. Si la referencia es válida, se intenta cargar la página.
      6. Cuando la página sea cargada, se reintenta la instrucción.

Al buscar una página, si esta no está en memoria, necesitará ser cargada. A este proceso se le llama fallo de página.

Al iniciar la ejecución de un programa, la tabla de páginas cuenta con todas sus entradas inválidas por lo cual el paginador fallará hasta tener lo necesario para iniciar el programa. Luego de esta carga inicial se comprobará si la siguiente página a utilizar ya está en memoria, en caso de que la página se encuentre, ésta es leída, pero cuando la página no es encontrada (y es una referencia válida) tenemos dos posibilidades:

  • Si existe un frame libre, se carga y se lee.
  • Si no tenemos frames libres, se intercambia la página de algún frame por la información a utilizar

El criterio utilizado para seleccionar qué página será intercambiada varía dependiendo de la implementación del sistema. Muchos de los problemas que presenta el sistema de paginación por demanda son debido a los fallos de página y principalmente a saber cuál es la página más conveniente para intercambiar. Esto se debe a que no podemos saber cuales páginas serán utilizadas prontamente y cuales no se volverán a utilizar, existen variados algoritmos que buscan aminorar este problema, los cuales, serán analizados más adelante.

Ventajas

A continuación se verán algunas de las ventajas de utilizar paginación por demanda:
  • Al no cargar las páginas que no son utilizadas ahorra memoria para otras aplicaciones.
  • Al mejorar el uso de la memoria, mejora el grado de multiprogramación.
  • Carga inicial más rápida ya que solo lee del disco lo que se utilizará.
  • Capacidad de hacer funcionar programas que ocupan más memoria que la poseída.
  • COW (Copia en escritura): Permite utilizar las mismas páginas para dos procesos (padre-hijo) hasta que uno de estos las modifique.
 

Fallos de páginas

Como hemos visto anteriormente, cuando un proceso requiere una página que no está en memoria se genera un fallo de página. La gran mayoría de las dificultades de la paginación por demanda se deben a cómo los fallos de página son tratados.
Gestión de un fallo de página
En primer lugar, para que los fallos de página puedan ser tratados correctamente necesitamos un sistema que sea capaz de reiniciar una instrucción, de esta manera pasará lo siguiente:
  • Una instrucción necesita una página que no está en memoria.
  • Se genera fallo de página (No se puede satisfacer la instrucción).
  • Se carga a memoria la página requerida.
  • Se reinicia la instrucción

Como vemos en este proceso existe una carga a memoria, éste es uno de los factores determinantes para saber si la paginación por demanda es conveniente o no, puesto que, en el peor de los casos, puede existir una carga en memoria por instrucción lo que nos daría tiempos de ejecución mucho peores que con una paginación regular.


lunes, 28 de marzo de 2016

sistemas operativos

Asignación de memoria


La asignación de memoria consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempo de compilación o de ejecución. Si es en tiempo de compilación esestática, si es en tiempo de ejecución es dinámica y si son variables locales a un grupo de sentencias se denomina automática



Introducción


La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.
La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.
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 y los que no.
El propósito principal de una computadora es el de ejecutar programas, estos programas, junto con la información que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecución.
Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración de la memoria.

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.
SIN INTERCAMBIO
1.1.1.- Monoprogramación sin intercambio o paginación
Cuando solo se tiene un proceso que ocupe la memoria a la vez, el esquema de la administración de la memoria es el más sencillo que hay. Sin embargo, éste método ya no tiene aplicación en la actualidad, ya que era visto en las computadoras con sistemas operativos de un solo usuario y una sola tarea. El usuario introducía su disco a la computadora (por lo general, la máquina no contaba con disco duro) y ejecutaba su aplicación, la cual acaparaba toda la máquina.
Monografias.com

Fig.1. Ejemplos de distribución de la memoria principal con un sistema operativo y un solo proceso de usuario
La figura 1 muestra la organización de la memoria usando este sistema. La memoria se divide entre el sistema operativo y el proceso de un solo usuario. La más conocida es la que muestra el inciso c, que es la usada por las PC" de IBM. Los controladores de dispositivo los almacena en memoria ROM, en un bloque de 8K de la parte superior del espacio de direcciones de 1M.
El ejemplo más claro de este esquema es el que podemos ver en el sistema operativo MS-DOS, en que el usuario escribe un comando al sistema y al ejecutarse el sistema operativo lo carga a memoria desde el disco y realiza sus funciones. Cuando el proceso termina la memoria es liberada y le muestra al usuario el indicador de comandos (prompt) en la pantalla.


1.1.2.- Multiprogramación y uso de memoria
Esta organización facilita la programación de una aplicación al dividirla en dos o más procesos. Además ofrece la capacidad de tener más de un proceso a la vez en memoria así puede ofrecer servicios a varios usuarios a la vez.
El esquema de multiprogramación incrementa el aprovechamiento del CPU, dado que a diferencia de la monoprogramación en donde solo un proceso reside en memoria a la vez limitando el uso del procesador a las llamadas que requiera dicho proceso, desperdiciando un promedio del 80% del tiempo del procesador. En cambio la multiprogramación, al tener varios procesos en la memoria principal y dividiéndose el tiempo de uso del procesador, logra reducir drásticamente el desperdicio del procesador.
1.1.3.- Multiprogramación con particiones fijas
Para poder implementar la multiprogramación, se puede hacer uso de particiones fijas o variables en la memoria. En el caso de las particiones fijas, la memoria se puede organizar dividiéndose en diversas partes, las cuales pueden variar en tamaño. Esta partición la puede hacer el usuario en forma manual, al iniciar una sesión con la máquina.