SlideShare una empresa de Scribd logo
3
Lo más leído
4
Lo más leído
7
Lo más leído
Segmentacion de memoria
Sabemos que el ordenador cuenta con la memoria central o
principal, pero esta es limitada y, en grandes sistemas, insuficiente.
Al principio, para ubicar los procesos en memoria y solucionar este
problema, se adoptaron técnicas tales como dividir el programa en
partes denominadas capas. Cada una de las capas se iba
ejecutando (cargando en memoria) según fuera necesario; es
decir, primero se pasaría parte del programa del disco duro (o
soporte de almacenamiento) a la memoria, y cuando fuera
necesario utilizar otra parte del programa que no estuviese en
memoria central o principal (RAM), se accedería de nuevo al disco
para cargar la siguiente capa en memoria central.
Esta labor de dividir el programa en capas la puede realizar el
mismo programador mediante la división del programa en módulos
que se irán ejecutando según sea necesario, si bien esto supone un
elevado esfuerzo para él.
Fotheringam diseñó un método conocido como de memoria virtual.
Este diseñador pensó en la posibilidad de que al ubicar un
programa en memoria, este fuera demasiado grande para el
tamaño físico de aquella y creó una técnica para hacer que en
memoria permaneciera solo la parte del programa que se estuviera
ejecutando y que el resto quedara en el disco.
La Segmentación de memoria es un
esquema de manejo de memoria
mediante el cual la estructura del
programa refleja su división lógica
llevándose a cabo una agrupación
lógica de la información en bloques
de tamaño variable denominados
segmentos.
Cada uno de ellos tienen información
lógica del programa: subrutina, arreglo,
etc.
Luego, cada espacio de direcciones de programa consiste de
una colección de segmentos, que generalmente reflejan la
división lógica del programa.
Obviamente este sistema de gestión de memoria es utilizado en
Sistemas operativos avanzados, pero ya existían muestras de su
actividad desde los S.O.’s Unix y D.O.S.
La paginación difiere de la segmentación en que las páginas son
de 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 lo
usemos, además de las necesidades del software.
Cada segmento tiene un nombre o número y una longitud. El
usuario por esto especifica cada dirección por dos cantidades: un
nombre de segmento y un desplazamiento.
Dado que ahora una dirección dentro de un programa del
usuario (dirección lógica), debe especificarse como una dirección
de 2 dimensiones, y dado que la memoria física es aún un arreglo
de una sola dimensión, es necesario implementar un dispositivo
que mapee o convierta una dirección de dos dimensiones en otra
de una sola dimensión. Esto se hace por medio de la tabla de
segmentos.
Supongamos que realizamos un programa y, para que se
ejecute, necesita utilizar tablas (estructuras de datos) en
memoria. Si tenemos en cuenta que una tabla puede
asignarse de forma estática o dinámica según las necesidades
del programa, habrá veces en que esta tabla necesitará un
espacio determinado en memoria, mientras que otras, este
espacio será mayor o menor según la necesidad. Gracias a la
segmentación podemos ubicar en memoria estas estructuras
de datos, independientemente del tamaño que tengan.
El ordenador, a través del sistema operativo, puede organizar
la memoria en bloques concretos y tener partes de            ella
destinadas a almacenar las estructuras de datos,que pueden
crecer o menguar según las necesidades del usuario o del
programa. Para ello se utilizarán las pilas de memoria o stacks,
en las que se gestionan las estructuras de datos necesarias.
Segmentacion de memoria
Cada rutina del programa puede ser un bloque sujeto a cambios y
recopilaciones, sin afectar por ello al resto del programa.

Donde cada estructura tiene su propio tamaño y este puede
variar.(Stack)

Se puede proteger los módulos del segmento contra accesos no
autorizados.

Dos o más procesos pueden ser un mismo segmento, bajo reglas de
protección; aunque no sean propietarios de los mismos.

Puede evitarse realizar todo el proceso de enlace antes de comenzar a
ejecutar un programa. Los enlaces se establecerán solo cuando sea
necesario.
• 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 Arrays
cuya dimensión no se conoce hasta tanto no se comienza a
ejecutar el programa. En algunos casos, incluso podría retardar la
asignación de memoria hasta el momento en el cual se referencia
el Array u otra estructura de dato por primera vez
• 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.

Más contenido relacionado

DOCX
control de concurrencia
PPTX
Normalización de Base de Datos
PDF
Alfabetos-Lenguajes y Automatas 1
PDF
Transacciones
PPTX
PAGINACION Y SEGMENTACION DE MEMORIA
PPTX
Procesos Ligeros: Hilos o Hebras
 
PPTX
Noción de archivo real y virtual
PPTX
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
control de concurrencia
Normalización de Base de Datos
Alfabetos-Lenguajes y Automatas 1
Transacciones
PAGINACION Y SEGMENTACION DE MEMORIA
Procesos Ligeros: Hilos o Hebras
 
Noción de archivo real y virtual
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios

La actualidad más candente (20)

PPTX
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
PDF
Modelo relacional
DOCX
Mapa conceptual sobre
PPTX
Administración de memoria
PPTX
Ejercicios Entidad - Relación
PPTX
Gestion de memoria
PPTX
Base de datos con conclusion
DOCX
Etapas del Proceso de la Ingeniería del Software
PDF
Sistema de-maquina-virtual
PPTX
Lenguajes de simulación
PDF
Interrupciones
PDF
Procedimientos especiales
PPTX
MODELO COCOMO (INGENIERA DE SOFTWARE)
PPTX
Componentes y Librerías - Tópicos avanzados de programación.
PPTX
Unidad 3 estructura lineales
PPTX
Memoria Estatica
 
PDF
Integridad Y Seguridad En Las Bases De Datos
PPTX
Modelos de arquitecturas de computadoras
PPT
Unidad 1.3 Analisis De Requerimientos
ODP
Gestion de memoria en Linux
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Modelo relacional
Mapa conceptual sobre
Administración de memoria
Ejercicios Entidad - Relación
Gestion de memoria
Base de datos con conclusion
Etapas del Proceso de la Ingeniería del Software
Sistema de-maquina-virtual
Lenguajes de simulación
Interrupciones
Procedimientos especiales
MODELO COCOMO (INGENIERA DE SOFTWARE)
Componentes y Librerías - Tópicos avanzados de programación.
Unidad 3 estructura lineales
Memoria Estatica
 
Integridad Y Seguridad En Las Bases De Datos
Modelos de arquitecturas de computadoras
Unidad 1.3 Analisis De Requerimientos
Gestion de memoria en Linux
Publicidad

Similar a Segmentacion de memoria (20)

PPTX
Memoria virtual 1
PPTX
Memoria virtual
PPTX
Memoria virtual...
PPTX
MEMORIA VIRTUAL
PPTX
Andres infante
PPTX
Andres infante
PPTX
Memoria virtual
PPTX
Memoria virtual
PPTX
Memoria virtual
PPTX
Memoriavirtual
PPTX
Memoriavirtual
PPTX
Memoriavirtual
PPTX
Memoria
PDF
Sistemas Operativos - Memoria
PPTX
Memoria
PPTX
Memoria virtual
DOCX
DOCX
Administración de memoria
PPTX
Memoria_Virtual
PPTX
Estructuras de hardware y de control.
Memoria virtual 1
Memoria virtual
Memoria virtual...
MEMORIA VIRTUAL
Andres infante
Andres infante
Memoria virtual
Memoria virtual
Memoria virtual
Memoriavirtual
Memoriavirtual
Memoriavirtual
Memoria
Sistemas Operativos - Memoria
Memoria
Memoria virtual
Administración de memoria
Memoria_Virtual
Estructuras de hardware y de control.
Publicidad

Segmentacion de memoria

  • 2. Sabemos que el ordenador cuenta con la memoria central o principal, pero esta es limitada y, en grandes sistemas, insuficiente. Al principio, para ubicar los procesos en memoria y solucionar este problema, se adoptaron técnicas tales como dividir el programa en partes denominadas capas. Cada una de las capas se iba ejecutando (cargando en memoria) según fuera necesario; es decir, primero se pasaría parte del programa del disco duro (o soporte de almacenamiento) a la memoria, y cuando fuera necesario utilizar otra parte del programa que no estuviese en memoria central o principal (RAM), se accedería de nuevo al disco para cargar la siguiente capa en memoria central. Esta labor de dividir el programa en capas la puede realizar el mismo programador mediante la división del programa en módulos que se irán ejecutando según sea necesario, si bien esto supone un elevado esfuerzo para él. Fotheringam diseñó un método conocido como de memoria virtual. Este diseñador pensó en la posibilidad de que al ubicar un programa en memoria, este fuera demasiado grande para el tamaño físico de aquella y creó una técnica para hacer que en memoria permaneciera solo la parte del programa que se estuviera ejecutando y que el resto quedara en el disco.
  • 3. La Segmentación de memoria es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. Obviamente este sistema de gestión de memoria es utilizado en Sistemas operativos avanzados, pero ya existían muestras de su actividad desde los S.O.’s Unix y D.O.S.
  • 4. La paginación difiere de la segmentación en que las páginas son de 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 lo usemos, además de las necesidades del software. Cada segmento tiene un nombre o número y una longitud. El usuario por esto especifica cada dirección por dos cantidades: un nombre de segmento y un desplazamiento. Dado que ahora una dirección dentro de un programa del usuario (dirección lógica), debe especificarse como una dirección de 2 dimensiones, y dado que la memoria física es aún un arreglo de una sola dimensión, es necesario implementar un dispositivo que mapee o convierta una dirección de dos dimensiones en otra de una sola dimensión. Esto se hace por medio de la tabla de segmentos.
  • 5. Supongamos que realizamos un programa y, para que se ejecute, necesita utilizar tablas (estructuras de datos) en memoria. Si tenemos en cuenta que una tabla puede asignarse de forma estática o dinámica según las necesidades del programa, habrá veces en que esta tabla necesitará un espacio determinado en memoria, mientras que otras, este espacio será mayor o menor según la necesidad. Gracias a la segmentación podemos ubicar en memoria estas estructuras de datos, independientemente del tamaño que tengan. El ordenador, a través del sistema operativo, puede organizar la memoria en bloques concretos y tener partes de ella destinadas a almacenar las estructuras de datos,que pueden crecer o menguar según las necesidades del usuario o del programa. Para ello se utilizarán las pilas de memoria o stacks, en las que se gestionan las estructuras de datos necesarias.
  • 7. Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. Donde cada estructura tiene su propio tamaño y este puede variar.(Stack) Se puede proteger los módulos del segmento contra accesos no autorizados. Dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos. Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán solo cuando sea necesario.
  • 8. • 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 Arrays cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cual se referencia el Array u otra estructura de dato por primera vez
  • 9. • 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.