lunes, 31 de octubre de 2016

Taller


1.    Diferencia entre direcciones fisicas y logicas de memoria y de ejemplos


DIFERENCIA DIRECCIÓN DE MEMORIA
Dirección Física
Dirección Lógica
     Dirección que percibe la unidad de memoria, es utilizado para acceder a las celdas de la memoria RAM. se calcula en tiempo de ejecución mediante la MMU (Unidad de Gestión de Memoria)

     Una dirección física o dirección absoluta, es una posición real en la memoria principal

     Es la que llega al chip de memoria
     Es la dirección que genera el proceso. También se conoce como dirección virtual.

     Es una referencia a una posición de memoria independiente de la asignación actual de datos a la memoria

     Es generada por la CPU.

Las direcciones fisicas y logicas son iguales en los esquemas de vinculación en tiempo de compilación y de carga, pero difieren en el esquema de vinculación en  tiempo de ejecución




2.    Explique cuál es la diferencia entre fragmentación externa e interna

     Fragmentación interna: es la memoria asignada que no se utiliza, se le asigna más memoria a un proceso que no la necesita. Ésta se deriva del hecho de que mientras la memoria está denominada en bytes, la unidad más pequeña disponible generalmente es mayor que eso debido a las reglas de memoria de direccionamiento.

Por ejemplo: El sistema carga un programa que requiere de 50 MB y 19 bytes de memoria, puede que no sea capaz de iniciar el próximo programa a ese 20° byte, en lugar de iniciarlo al byte 24 o 28. Estas brechas resultan en pequeñas áreas de memoria inutilizable, simplemente porque el sistema no puede abordar todos y cada byte de memoria disponible para él.

Si bien pérdida de memoria por la fragmentación interna generalmente es mucho menor que la pérdida por la fragmentación externa, estas pequeñas cantidades todavía pueden sumarse con el tiempo.

     Fragmentación Externa: Esto ocurre cuando el primer bloque libre de memoria no es suficiente para que el siguiente programa lo use.

Por ejemplo: Un sistema carga tres programas en la memoria, cada uno ocupando 50 megabytes o MB. El segundo programa termina, dejando ese bloque de 50 MB libres. Si el siguiente programa a iniciar requiere de 100 MB, no sería capaz de utilizar ese bloque de 50 MB de espacio libre, y el sistema le asigna el siguiente intervalo de 100 MB libres. Esa brecha en la memoria utilizada se mantendría sin uso hasta que algún programa requiere menos de 50 MB de memoria.

Con el tiempo, estos pequeños espacios pueden sumarse, y un sistema se puede ejecutarse con memoria baja a pesar de las muchas pequeñas áreas de memoria libre.


3.    Cual es la función de la Unidad de Manejo de Memoria (UMM)

Algunas de las funciones de este dispositivo son:
     La traducción de las direcciones lógicas (o virtuales) a direcciones físicas (o reales)
     La protección de la memoria
     El control de caché
     Manejar los accesos a la memoria por parte de la Unidad de Procesamiento Central (CPU) o procesador.



4.    Explicar los algoritmos de asignación y dar un ejemplo

a.    Algoritmo del mejor ajuste (Best Fit):

Consiste en asignarle al proceso el hueco con menor desperdicio interno, el hueco el cual al serle asignado el proceso deja menos espacio sin utilizar.

     Elige el bloque que tiene el tamaño más cercano al
solicitado.
     Peor rendimiento de todos.
     Como se busca el bloque más pequeño por proceso, se
produce el menor volumen de fragmentación, pero hay
que compactar más a menudo

Desventajas:
     Su mayor inconveniente es su orden de complejidad (orden lineal, O(n)) debido a que hay que recorrer todo el mapa de bits o toda la lista de control
     Otro problema es la fragmentación externa, debido a que se asigna el menor hueco posible, el espacio sobrante será del menor tamaño posible lo que da lugar a huecos de tamaño normalmente insuficiente para contener programas.


Ejemplo

Estado de bloque de memoria

ANTES DE SOLICITUD
Dirección Inicial
Tamaño del bloque de memoria
4075
105
5225
5
6785
600
7560
20
7600
205
10250
4050
15125
230
24500
1000
 


b.    Algoritmo del primer ajuste (First Fit):

Consiste en recorrer la lista de particiones hasta encontrar un hueco suficientemente grande

     Es el más rápido.
     Puede haber muchos procesos cargados en la zona inicial de la memoria, que debe ser examinada cuando se busca un bloque libre.
Ventaja : Rápido y después de la liberación es fácil unir huecos

Desventaja: Fragmentación externa y huecos pequeños en al zona baja y grandes en la alta.

Ejemplo:











c.    Algoritmo peor ajuste

Se busca el hueco con mayor desperdicio interno.El hueco el cual al serle asignado el proceso deja más espacio sin utilizar, y se corta de él el trozo necesario (así la porción sobrante será del mayor tamaño posible y será más aprovechable).

Desventaja: Tiene el mismo inconveniente en cuanto a orden de complejidad que el mejor ajuste (debido a la longitud de las búsquedas) y la fragmentación no resulta demasiado eficiente.

d.    Algoritmo del siguiente ajuste (Next Fit):

Es una variante del anterior que comienza a buscar a partir de la posición anterior, de forma que los huecos grandes se reparten por igual en toda la memoria

     A menudo se asigna un bloque de memoria en la última parte de la memoria donde está el mayor bloque.
     El mayor bloque de memoria se parte en pequeños bloques.
     Se necesita compactar para obtener un bloque grande en la última zona final memoria.





Ejemplo: Suponiendo una memoria principal de 32 KB.



Solución:


5.    Diferencia entre paginación y segmentación y un ejemplo

a.    Paginación

Divide el programa en trozos pequeños del mismo tamaño pero sin mirar lo que coge, así un programa solo puede desperdiciar el fragmento final de su última página, lo que supone un ahorro de memoria y más facilidad de acceso a puntos intermedios.

La paginación también es útil para pasar un programa que está cargado en la RAM pero inactivo al disco duro, dejando espacio para otros programas, y luego se recupera cuando haga falta.

Por ejemplo: si tu estás leyendo un pdf, y en un momento dado lo minimizas y te pones a jugar a un juego, tu procesador probablemente pasará el pdf a una zona reservada de tu disco duro para dejar espacio en la RAM al juego, y cuando cierres el juego y vuelvas a abrir el pdf, la cpu volverá a cargar el PDF en la RAM.

Esto lo notaras porque el pdf tardará un poco en cargarse, pero una vez cargado verás que puedes minimizarlo y volver a abrirlo de forma instantánea porque ya vuelve a estar en la RAM, que es una memoria un millón de veces más veloz que el disco duro.


b.    Segmentación

            divide al programa en unidades lógicas, como subfunciones, arreglos, variables, etc. y es de tamaño variable según lo que sea cada segmento. Así se consigue tener un proceso dividido en trozos autocontenidos y fáciles de acceder, si hay que leer o cambiar una parte de ese programa no hace falta tocar más que los segmentos necesarios en vez de mirar todo el proceso entero.

Proporciona protección contra accesos no autorizados, además un segmento puede ser compartido por varios procesos que usen código común, evitando guardar dos veces lo mismo (librerías dinámicas) y accediendo a él de forma concurrente.