Diapositiva No 16 Gestión de la Memoria

1 Ventajas y Desventajas de la Paginacion

VENTAJAS DE LA PAGINACIÓN
1. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. 
2. No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de paginas libres dispersos en la memoria. 
3. Es fácil controlar todas las páginas, ya que tienen el mismo tamaño. 
4. El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. 
5. Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s e aumenta su productividad. 
6. Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el número de programas multiprogramándose. 
7. Se elimina el problema de fragmentación externa.

DESVENTAJAS DE LA PAGINACIÓN
1. El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consume mucho más recursos de memoria, tiempo en el CPU para su implantación. 
2. Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija el tamaño de estas, se crea un problema semejante al de los programas 
3. Aparece el problema de fragmentación interna. Así, si se requieren 5K para un programa, pero las paginas son de 4K, deberán asignárseles 2 páginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias páginas, pero no podrá ser utilizados. Debe asignarse un tamaño promedio a las páginas, evitando que si son muy pequeñas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentación interna.

2.Ubicacion del byte 564 en una pagina de 256 bytes


564/256=2,203


3. Paginacion en Linux y Windows


TABLA DE PÁGINAS EN LINUX

Paginacion por demanda

Linux supone que hay tres niveles de tablas de páginas:

    El directorio de tablas de páginas (punteros a tablas intermedias).
    La tabla de páginas intermedia (punteros a tablas de páginas).
    Las tablas de páginas (punteros a páginas).

Cada plataforma sobre la que funciona Linux tiene que proporcionar las macros que permitan al núcleo atravesar las tablas de página de cada proceso. De esta forma, el núcleo no necesita conocer el formato de las entradas de la tabla de páginas ni cómo éstas se organizan.

Esto es tan útil que Linux utiliza el mismo código de gestión de tablas de páginas en un procesador Alpha, que tiene tres niveles de tablas de páginas, que en un Intel x86, que sólo tiene dos niveles de tablas (para ello, supone que el tamaño de la tabla intermedia es 1, y por tanto, coincide con la entrada del directorio).

ASIGNACIÓN DE PÁGINAS

Linux utiliza el algoritmo Buddy para asignar y liberar eficientemente bloques de páginas. El código de asignación intenta asignar un bloque de una o más páginas físicas. Las páginas se asignan en bloques de tamaño potencia de 2. Esto quiere decir que pueden asignar bloques de 1, 2, 4, etc páginas.

El algoritmo de asignación busca primero entre los bloques de páginas de igual tamaño que el pedido. Luego sigue la lista de páginas libres que está encolada. Si no encuentra ningún bloque de páginas del tamaño pedido libre, entonces busca en los siguientes (los cuales son del doble del tamaño pedido).

Puesto que el número de páginas de cada bloque es potencia de 2, simplemente dividiendo el bloque por la mitad se obtienen dos bloques con un tamaño de bloque inmediatamente inferior.

LIBERACIÓN DE PÁGINAS

Asignar bloques de páginas tiende a fragmentar la memoria al dividir los bloques grandes para conseguir bloques más pequeños. El código de liberación de páginas recombina páginas en bloques de mayor tamaño siempre que es posible. De hecho, el tamaño de bloque de página es importante pues facilita la recombinación en bloques grandes.

Siempre que se libera un bloque de páginas, se comprueba si está libre el bloque adyacente de igual tamaño. Si es así, se combina con el bloque de páginas recién liberado para formar un bloque nuevo de tamaño doble. Cada vez que dos bloques de páginas se recombinan en uno mayor, el algoritmo de liberación intenta volver a recombinarlo en otro aún mayor. De esta forma, los bloques de páginas libres son tan grandes como la utilización de la memoria permita.

LA CACHE DE PÁGINAS LINUX

El cometido de la cache de páginas en Linux es el de acelerar el acceso a los ficheros de disco. Las lecturas sobre los ficheros proyectados en memoria se realizan página a página y estas páginas se guardan en la cache de páginas.

Siempre que se lee en una página de un fichero proyectado en memoria, por ejemplo cuando se necesita traer a memoria una página desde un fichero de intercambio, la página se lee a través de la cache de páginas. Linux asigna una página física y lee la página desde el fichero del disco.

Si es posible, Linux comenzará una lectura de la siguiente página del fichero. Con esta página de adelanto se consigue que si el proceso está accediendo las páginas de forma secuencial, la siguiente página esté lista y esperando en memoria la petición del proceso.

Con el tiempo, la cache de páginas va creciendo conforme las imágenes se leen y ejecutan. Las páginas han de ser eliminadas de la cache cuando dejan de utilizarse. Conforme Linux utiliza memoria puede comenzar a escasear las páginas de memoria física. En esta situación Linux reducirá el tamaño de la cache de páginas.

INTERCAMBIANDO Y LIBERANDO PÁGINAS EN LINUX

Cuando queda poca memoria física, el subsistema de gestión de memoria de Linux tiene que intentar liberar páginas físicas. Este trabajo es realizado por el demonio de intercambio del núcleo (kswapd). El demonio de intercambio del núcleo es un tipo especial de proceso, un hilo de ejecución del núcleo (kernel thread). Los hilos del núcleo son procesos que no tienen memoria virtual, en lugar  de ello, se ejecutan en modo núcleo en el espacio de memoria física. Su misión es la de garantizar que haya suficientes páginas libres en el sistema para mantener al sistema de gestión de memoria funcionando eficientemente.

Linux no quiere enviar a disco de intercambio demasiadas páginas a la vez, por lo lleva la cuenta de cuantas páginas están en ese momento siendo copiadas al fichero de intercambio.

Si hay suficientes páginas libres, el demonio de intercambio se duerme hasta que el temporizador expire, en caso contrario, el demonio intenta de tres formas distintas reducir el número de páginas físicas ocupadas:

    Reduciendo el tamaño de la cache de páginas y el buffer cache,
    Enviando a disco páginas compartidas,
    Enviando a disco o descartando páginas.

Si el número de páginas libres ha caído demasiado, el demonio de intercambio intentará liberar 6 páginas antes de su próxima ejecución. En caso contrario, intentará liberar 3 páginas. Los métodos anteriores se intentan uno tras otro de hasta que se consiguen liberar suficientes páginas. Luego el demonio de intercambio se suspende hasta que el temporizador vuelva a expirar. El demonio recuerda cuál fue el último método que empleó para liberar páginas, y la próxima vez que se ejecuta lo vuelve a intentar con el mismo método que tuvo éxito.

Archivo de paginación en Windows

En cualquier sistema informático, a medida que la carga aumenta (el número de usuarios, el volumen de trabajo), rendimiento disminuye, pero de una manera no lineal. Cualquier aumento en la carga o la demanda, más allá de un cierto punto, causa una disminución significativa del rendimiento. Esto significa que ciertos recursos se proveen de manera críticamente baja y esto lo convierte en un cuello de botella

 En algún momento, no se puede aumentar los recursos que son escasos. Esto significa que se ha alcanzado un límite de arquitectura. Algunos límites de arquitectura frecuentes en Windows son las siguientes: 

•          2 GB de espacio de direcciones virtual compartido para el sistema (kernel)

•          2 GB de espacio de dirección virtual privada por proceso (modo usuario)

•          660 MB del sistema de almacenamiento de información PTE (Windows Server 2003 y versiones anterior)

•          470 MB de almacenamiento de paginado (Windows Server 2003 y versiones anterior)

•          256 MB de almacenamiento de información de grupo no paginado (Windows Server 2003 y versiones anterior)

Esto se aplica específicamente a Windows Server 2003, pero esto también se aplica a Windows XP y Windows 2000. Sin embargo, Windows Vista, Windows Server 2008 y Windows 7 no todos comparten estos límites de arquitectura. Los límites de la memoria del núcleo (números 1 y 2 a continuación) y el usuario son los mismos, pero los recursos del núcleo como PTE y varios grupos de memoria son dinámicos. Esta nueva funcionalidad permite memoria paginada y no paginada. Esto también permite PTE y grupo de crecer más allá de los límites descritos anteriormente, hasta el punto donde se ha agotado el núcleo de todo la sesión.

Entre comillas y con frecuencia encontradas instrucciones como las siguientes:

Con un servidor de Terminal Server, los 2 GB de espacio de direcciones compartido completamente utilizará antes de 4 GB de RAM."

Esto puede ser cierto en algunos casos. Sin embargo, debe supervisar el sistema para saber si se aplican a su sistema o no. En algunos casos, estas declaraciones son las conclusiones de los entornos específicos de Windows NT 4.0 o Windows 2000 y no necesariamente se aplican a Windows Server 2003. Los cambios significativos realizados a Windows Server 2003 para reducir la probabilidad de que estos límites de arquitectura de hecho se alcanzará en la práctica. Por ejemplo, algunos procesos que estaban en el núcleo se movieron a procesos de núcleo no reducir la memoria utilizada en el espacio de direcciones virtual compartida.

4.  Magnitud en bytes

    1.Caracter     → 1Byte
    1.palabra  →     10Bytes
    1.palabradoble  →10bytes
    1.parrafo   → 1000bytes



5. Ventajas de la Paginacion por Demanda


*Paginación por demanda, en comparación con cargar todas las páginas inmediatamente:
No carga las páginas que nunca están alcanzadas, ahorra tan la memoria para otrosprogramas y aumenta el grado de multiprogramación.
*Menos estado latente del cargamento en el arranque del programa.
*Menos de gastos indirectos de disco iniciales debido a poca página lee.
*No necesita la ayuda adicional del hardware que qué paginación necesita, puesto que la averíale la protección se puede utilizar para conseguir la avería de página.
Sistemas no-virtuales de la memoria del excedente de las ventajas:
*Las páginas serán compartidas por programas múltiples hasta que son modificadas por uno de ellos, así que una técnica llamada la copia encendido escribe será utilizado ahorrar más recursos.
*Capacidad de funcionar programas grandes sobre la máquina, aun cuando

no tiene suficiente memoria para funcionar el programa. Este método es más fácil para un programador que un viejo manual recubrimientos


No hay comentarios:

Publicar un comentario