6
6.5.3 Segmentación [SILB94] [DEIT93] Un aspecto importante de la gestión de la memoria que la paginación convierte en inevitable es la separación de la visión que el usuario tiene de la memoria y la memoria física real. La visión del usuario no coincide con la memoria física real. La visión del usuario se transforma en la memoria física. La traducción de direcciones permite esta diferencia entre la memoria lógica y la física. 6.5.3.1 Visión del usuario de la memoria ¿Cuál es la visión de la memoria que tiene el usuario ? Concibe el usuario la memoria como una tabla lineal de palabras, algunas de las cuales contienen instrucciones mientras que otras contienen datos, o bien se prefiere alguna otra visión de la memoria ? Hay un acuerdo general en que el usuario o programador de un sistema no piensa en la memoria como una tabla lineal de palabras. Más bien prefieren concebirla como una colección de segmentos de longitud variable, no necesariamente ordenados (fig. 6.14). Consideremos cómo ve usted un programa cuando lo está escribiendo. Piensa en él como un programa principal, con un conjunto de subrutinas, procedimientos, funciones o módulos . También puede haber diversas estructuras de datos: tablas, matrices, pilas, variables, etc. Cada uno de estos módulos o elementos de datos se referencian por un nombre. Usted habla de la "tabla de símbolos", A "la función Sqrt ", "el programa principal", sin tener en cuenta qué direcciones de memoria ocupan estos elementos. Usted no se preocupa de si la tabla de símbolos se almacena antes o después de la función Sqrt . Cada uno de estos elementos es de longitud variable; la longitud está definida intrínsecamente por el propósito del segmento en el programa. Los elementos dentro de un segmento están identificados por su desplazamiento desde el principio del segmento: la primera instrucción del programa, la decimoséptima entrada de la tabla de símbolos la quinta función Sqrt , etc. La segmentación es un esquema de administración de la memoria que soporta la visión que el

segmentacion en sistemas operativos

Embed Size (px)

DESCRIPTION

Explicación de la segmentación en sistemas operativos

Citation preview

  • 6.5.3 Segmentacin [SILB94] [DEIT93]

    Un aspecto importante de la gestin de la memoria que la paginacin convierte en inevitable es la

    separacin de la visin que el usuario tiene de la memoria y la memoria fsica real. La visin delusuario no coincide con la memoria fsica real. La visin del usuario se transforma en la memoria

    fsica. La traduccin de direcciones permite esta diferencia entre la memoria lgica y la fsica.

    6.5.3.1 Visin del usuario de la memoria

    Cul es la visin de la memoria que tiene el usuario ? Concibe el usuario la memoria como unatabla lineal de palabras, algunas de las cuales contienen instrucciones mientras que otras contienen

    datos, o bien se prefiere alguna otra visin de la memoria ? Hay un acuerdo general en que el

    usuario o programador de un sistema no piensa en la memoria como una tabla lineal de palabras.

    Ms bien prefieren concebirla como una coleccin de segmentos de longitud variable, no

    necesariamente ordenados (fig. 6.14).

    Consideremos cmo ve usted un programa cuando lo est escribiendo. Piensa en l como un

    programa principal, con un conjunto de subrutinas, procedimientos, funciones o mdulos.

    Tambin puede haber diversas estructuras de datos: tablas, matrices, pilas, variables, etc. Cada

    uno de estos mdulos o elementos de datos se referencian por un nombre. Usted habla de la "tabla

    de smbolos", A "la funcin Sqrt", "el programa principal", sin tener en cuenta qu direcciones de

    memoria ocupan estos elementos. Usted no se preocupa de si la tabla de smbolos se almacena

    antes o despus de la funcin Sqrt. Cada uno de estos elementos es de longitud variable; la

    longitud est definida intrnsecamente por el propsito del segmento en el programa. Los elementos

    dentro de un segmento estn identificados por su desplazamiento desde el principio del segmento:

    la primera instruccin del programa, la decimosptima entrada de la tabla de smbolos la quintafuncin Sqrt, etc.

    La segmentacin es un esquema de administracin de la memoria que soporta la visin que el

  • usuario tiene de la misma. Un espacio de direcciones lgicas es una coleccin de segmentos. Cada

    segmento tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento

    como el desplazamiento dentro del segmento. Por lo tanto, el usuario especifica cada direccin

    mediante dos cantidades: un nombre de segmento y un desplazamiento. (Comprese este esquema

    con la paginacin, donde el usuario especificaba solamente una nica direccin, que el hardware

    particionaba en nmero de pgina y desplazamiento, siendo todo ello invisible al programador).

    Por simplicidad de implementacin, los segmentos estn numerados y se referencian por un nmerode segmento en lugar de por un nombre. Normalmente el programa de usuario se ensambla (o

    compila), y el ensamblador (o el compilador) construye automticamente segmentos que reflejan

    el programa de entrada. Un compilador de Pascal podra crear segmentos separados para (1) las

    variables globales, (2) la pila de llamada de procedimientos, para almacenar parmetros y devolver

    direcciones, (3) el cdigo de cada procedimiento o funcin, y (4) las variables locales de cada

    procedimiento y funcin. El cargador tomara todos esos segmentos y les asignara nmeros de

    segmento.

    6.5.3.2 Hardware

    Aunque el usuario ahora puede referenciar los objetos del programa por medio de una direccin dedos dimensiones, la memoria fsica real es todava, por supuesto, una secuencia unidimensional de

    palabras. La transformacin se efecta por medio de una tabla de segmentos.

    El empleo de una tabla de segmentos se muestra en la figura 6.15. Una direccin lgica consta dedos partes: un nmero de segmento s y un desplazamiento dentro de ese segmento, d. El nmero

    de segmento se utiliza como un ndice en la tabla de segmentos. Cada entrada de la tabla desegmentos tiene una base de segmento y un lmite. El desplazamiento d de la direccin lgica tiene

    que estar comprendido entre 0 y el lmite de segmento. En caso contrario se produce unaexcepcin al sistema operativo (tentativa de direccionamiento lgico ms all del fin de

    segmento). Si este desplazamiento es legal, se aade a la base para producir la direccin de la tabladeseada en la memoria fsica. La tabla de segmentos es as esencialmente una matriz de pares

    registros base/lmite.

  • ENLACE A LA SIMULACIN DE MEMORIA SEGMENTADA

    6.5.3.3 Implementacin de tablas de segmentos

    Al igual que la tabla de pginas, la tabla de segmentos puede situarse bien en registros rpidos o

    bien en memoria. Una tabla de segmentos mantenida en registros puede ser referenciada muyrpidamente: la adicin a la base y la comparacin con el lmite pueden realizarse simultneamente

    para ahorrar tiempo. El PDP-11/45 utiliza este mtodo; tiene 8 registros de segmento. Unadireccin de 16 bits se forma a partir de un nmero de segmento de 3 bits y de un desplazamiento

    de 13 bits. Esta disposicin permite hasta 8 segmentos; cada segmento puede ser de hasta 8 K-bytes. Cada entrada en la tabla de segmentos tiene una direccin base, una longitud y un conjunto

    de bits de control de acceso que especifican acceso denegado, acceso de slo lectura, o accesode lectura/escritura al segmento.

    El Burroughs B5500 permita 32 segmentos de hasta 1024 palabras cada uno. Estas

    especificaciones definan un nmero de segmento de 5 bits y un desplazamiento de 10 bits. Sin

    embargo, la experiencia con este sistema mostr que los segmentos eran pocos y que el lmite deltamao del segmento era demasiado pequeo (las tablas mayores de 1K tenan que fragmentarse

    entre varios segmentos). Por ello, el GE 645 utilizado por Multics permite hasta 256 K-segmentos

    de hasta 64 K-palabras.

    Con tantos segmentos no es factible mantener la tabla de segmentos en registros, de modo que

    tiene que mantenerse en memoria. Un registro de base de tabla de segmentos (STBR) apunta a

    la tabla de segmentos. Puesto que el nmero de segmentos utilizado por un programa puede variar

  • ampliamente, tambin se utiliza un registro de longitud de tabla de segmentos (STLR). En el

    caso de una direccin lgica (s, d) verificamos primero que el nmero de segmento s es legal (s