Your SlideShare is downloading. ×
  • Like
Segmentacion de memoria
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Segmentacion de memoria

  • 611 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
611
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
29
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Sabemos que el ordenador cuenta con la memoria central oprincipal, pero esta es limitada y, en grandes sistemas, insuficiente.Al principio, para ubicar los procesos en memoria y solucionar esteproblema, se adoptaron técnicas tales como dividir el programa enpartes denominadas capas. Cada una de las capas se ibaejecutando (cargando en memoria) según fuera necesario; esdecir, primero se pasaría parte del programa del disco duro (osoporte de almacenamiento) a la memoria, y cuando fueranecesario utilizar otra parte del programa que no estuviese enmemoria central o principal (RAM), se accedería de nuevo al discopara cargar la siguiente capa en memoria central.Esta labor de dividir el programa en capas la puede realizar elmismo programador mediante la división del programa en módulosque se irán ejecutando según sea necesario, si bien esto supone unelevado esfuerzo para él.Fotheringam diseñó un método conocido como de memoria virtual.Este diseñador pensó en la posibilidad de que al ubicar unprograma en memoria, este fuera demasiado grande para eltamaño físico de aquella y creó una técnica para hacer que enmemoria permaneciera solo la parte del programa que se estuvieraejecutando y que el resto quedara en el disco.
  • 2. La Segmentación de memoria es unesquema de manejo de memoriamediante el cual la estructura delprograma refleja su división lógicallevándose a cabo una agrupaciónlógica de la información en bloquesde tamaño variable denominadossegmentos.Cada uno de ellos tienen informaciónlógica del programa: subrutina, arreglo,etc.Luego, cada espacio de direcciones de programa consiste deuna colección de segmentos, que generalmente reflejan ladivisión lógica del programa.Obviamente este sistema de gestión de memoria es utilizado enSistemas operativos avanzados, pero ya existían muestras de suactividad desde los S.O.’s Unix y D.O.S.
  • 3. La paginación difiere de la segmentación en que las páginas sonde tamaño fijo y los segmentos no.El uso de la técnica de paginación o segmentación dependerádel sistema operativo utilizado y de la máquina en la que lousemos, además de las necesidades del software.Cada segmento tiene un nombre o número y una longitud. Elusuario por esto especifica cada dirección por dos cantidades: unnombre de segmento y un desplazamiento.Dado que ahora una dirección dentro de un programa delusuario (dirección lógica), debe especificarse como una direcciónde 2 dimensiones, y dado que la memoria física es aún un arreglode una sola dimensión, es necesario implementar un dispositivoque mapee o convierta una dirección de dos dimensiones en otrade una sola dimensión. Esto se hace por medio de la tabla desegmentos.
  • 4. Supongamos que realizamos un programa y, para que seejecute, necesita utilizar tablas (estructuras de datos) enmemoria. Si tenemos en cuenta que una tabla puedeasignarse de forma estática o dinámica según las necesidadesdel programa, habrá veces en que esta tabla necesitará unespacio determinado en memoria, mientras que otras, esteespacio será mayor o menor según la necesidad. Gracias a lasegmentación podemos ubicar en memoria estas estructurasde datos, independientemente del tamaño que tengan.El ordenador, a través del sistema operativo, puede organizarla memoria en bloques concretos y tener partes de elladestinadas a almacenar las estructuras de datos,que puedencrecer o menguar según las necesidades del usuario o delprograma. Para ello se utilizarán las pilas de memoria o stacks,en las que se gestionan las estructuras de datos necesarias.
  • 5. Cada rutina del programa puede ser un bloque sujeto a cambios yrecopilaciones, sin afectar por ello al resto del programa.Donde cada estructura tiene su propio tamaño y este puedevariar.(Stack)Se puede proteger los módulos del segmento contra accesos noautorizados.Dos o más procesos pueden ser un mismo segmento, bajo reglas deprotección; aunque no sean propietarios de los mismos.Puede evitarse realizar todo el proceso de enlace antes de comenzar aejecutar un programa. Los enlaces se establecerán solo cuando seanecesario.
  • 6. • 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 modulo 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 aun no existan. Así, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los Arrayscuya dimensión no se conoce hasta tanto no se comienza aejecutar el programa. En algunos casos, incluso podría retardar laasignación de memoria hasta el momento en el cual se referenciael Array u otra estructura de dato por primera vez
  • 7. • Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.• Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.• Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.• Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos.• No se puede garantizar, que al salir un segmento de la memoria, este pueda ser traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.