SEGMENTACION

11
Sistemas Operativos Introducción a los procesos. Generalidades, estados, comunicación y control de procesos. Escuela de Ingeniería de Sistemas MEMORIA MEMORIA SEGMENTADA PROCESO DE SEGMENTACIÓN. 2010 DOCENTE: Ing. Ángel Horna Loloy ALUMNoS: Contreras Ulloa, Shirley. González Torres, Cristian. Loyola Díaz, Jhon. Valencia Varas, Karen. Villegas Sánchez,

Transcript of SEGMENTACION

Page 1: SEGMENTACION

Sistemas Operativos

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

Computación Paralela. La Máquina y sus partes.

Introducción a los procesos.Generalidades, estados, comunicación y control

de procesos.

Escuela deIngeniería de Sistemas

MEMORIA

MEMORIA SEGMENTADA PROCESO DE

SEGMENTACIÓN.

2010

DOCENTE:Ing. Ángel Horna Loloy

ALUMNoS:Contreras Ulloa, Shirley. González Torres, Cristian.Loyola Díaz, Jhon. Valencia Varas, Karen.Villegas Sánchez, Emili.

CICLO Y SECCIÓN:VI – “A”

Page 2: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

MEMORIA SEGMENTADA

1.DEFINICIÓN DE SEGMENTACIÓN:

La segmentación es un sistema de gestión de la memoria que soporta esta visión que acabamos de dibujar por parte del usuario. En este esquema, el espacio de direcciones lógicas es un conjunto de segmentos. Con diferentes nombres y tamaños.

[segmento, elemento 4]

Y una dirección del segmento de la función coseno es:

[segmento cos, elemento 7]

Como se puede apreciar, este esquema es conceptualmente muy diferente al de la paginación, donde el usuario especifica solo una única dirección, que mediante circuitería lógica se divide en un numero de pagina y un desplazamiento y todo ello sin intervención directa por parte del programador.

Conviene resaltar que un segmento es un objeto lógico, conocido por el programador y que lo utiliza como tal. Un segmento puede tener una determinada estructura de datos (pila, array, variables escalares, etc.) o un procedimiento o modulo, pero normalmente no va a contener una mezcla de varios.

La segmentación ayuda a manejar estructuras de datos que cambian de tamaño durante la ejecución y simplifica el enlazado y la compartición. También facilita proporcionar protección específica a diferentes segmentos. A veces se combinan la segmentación y la paginación para crear un memoria virtual bidimensional. Los sistemas MULTICS y Pentium de Intel manejan segmentación y paginación.

Un espacio de direcciones lógicas es un conjunto de segmentos. Cada segmento tiene un nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como el desplazamiento dentro del mismo. Por lo tanto, el usuario especifica cada dirección mediante dos cantidades. Un nombre de segmento y desplazamiento.

El usuario o programador no tiene una visión lineal de la memoria, más bien prefiere verla como un conjunto de segmentos de diferentes tamaños, sin una ordenación especifica entre ellos. Así, cuando se diseña y escribe un programa, este se concibe como un

Page 3: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

programa principal con un conjunto de subrutinas, procedimientos, funciones o módulos, con diversas estructuras de datos: tablas, arrays, pilas, variables escalares, etc.; refiriéndose a cada uno de estos módulos y estructuras de datos como un nombre, sin considerar que dirección de la memoria pueden ocupar estos elementos.

2. SEGMENTACION SIMPLEOtro modo de subdividir el programa es la segmentación. En este caso, el programa y sus datos asociados se dividen en un conjunto de segmentos. No es necesario que todos los segmentos de todos los programas tengan la misma longitud, aunque existe una longitud máxima de segmento. Como en la paginación, una dirección lógica segmentada consta de dos partes, en este caso un número de segmento y un desplazamiento.Como consecuencia del empleo de segmentos de distinto tamaño, la segmentación resulta similar a la partición dinámica. En ausencia de un esquema de superposición o del uso de memoria virtual, sería necesario cargar en memoria todos los segmentos de un programa para su ejecución. La diferencia, en comparación con la partición dinámica, radica en que, con segmentación, un programa puede ocupar más de una partición y éstas no tienen por qué estar contiguas. La segmentación elimina la fragmentación interna, pero, como la partición dinámica, Sufre de fragmentación externa. Sin embargo, debido a que los procesos se dividen en un conjunto de partes más pequeñas, la fragmentación externa será menor.

3. PRINCIPIO DE OPERACIÓN

Normalmente, el programa de usuario se compila y el compilador construye automáticamente los segmentos de acuerdo a la estructura del programa. Por ejemplo, un compilador de Pascal, creara segmentos separados para las variables globales, la pila de llamadas a los procedimientos (para almacenar parámetros y direcciones de retorno), el código de cada uno de los procedimientos y funciones; un compilador de Fortran creara un

Page 4: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

segmento separado para cada uno de los bloques “common”, los arrays se asignaran a diferentes segmentos.

El cargador tomara todos estos segmentos y le asignara número de segmento. Por propósito de reubicación cada uno de los segmentos se compila comenzando por su propia dirección lógica 0. Las direcciones lógicas, por tanto, constaran de un numero de segmento y un desplazamiento dentro de el.

En este contexto, el espacio de direcciones es bidimensional pero la memoria física mantiene su organización lineal unidimensional, luego es necesario disponer de un mecanismo que convierta las direcciones lógicas bidimensionales en su dirección física equivalente unidimensional. Esta asignación se efectúa mediante una tabla de segmentos.

La Figura 1 ilustra el uso de la tabla de segmentos. En la tabla se mantienen registrados los descriptores de cada segmento: la base, correspondiente a la dirección física en que comienza el segmento (obtenida en la creación de la partición) y el tamaño del mismo.

El número de segmento, primer parámetro de la dirección lógica, se emplea como un índice dentro de la tabla de segmentos. La dirección se obtiene añadiendo el desplazamiento a la base del segmento. Este desplazamiento no debe sobrepasar el tamaño máximo del segmento, si superara el tamaño máximo registrado en la tabla se produciría un error de direccionamiento.

Fig 1: Conversión de direcciones en segmentación

Por ejemplo, para el proceso representado en la Figura 2, el espacio de direcciones lógicas está constituido por seis

Page 5: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

segmentos situados en memoria según se indica. La tabla de segmentos tiene una entrada para cada segmento, indicándose la dirección de comienzo del segmento en la dirección física (base) y la longitud del mismo (tamaño). El segmento 3 empieza en la dirección 1048576 y tiene un tamaño de 100 Kb; si se hace una referencia a la dirección 115000 del segmento 3 se producirá un error de direccionamiento, puesto que esta dirección supera el tamaño del segmento.

La realización de las tablas de segmentos es parecida a las tablas de páginas, teniendo en cuenta que los segmentos son de diferentes tamaños. Así, una tabla de segmentos que mantiene en registros especiales puede ser referenciada muy rápidamente; la suma a la base y la comparación con el tamaño se puede hacer simultáneamente. Este método puede llevarse a cabo mientras el numero de segmentos no sea grande, pero cuando este crece la tabla de segmentos se deja en memoria; en este caso, un registro base de la tabla de segmentos apunta a la tabla de segmentos; además, como el numero de segmentos usados por un programa puede variar, también se emplea un registro de longitud de la tabla segmentos.

Fig 2: Ejemplo de proceso segmentado

Page 6: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

Para una dirección lógica se procede de la forma siguiente:

1) Se comprueba que el numero de segmento es correcto(es decir, que es menor que el registro de longitud de la tabla de segmentos)

2) Se suma el número de segmento al valor del registro base de la tabla de segmentos para obtener la dirección de memoria para la entrada de la tabla de segmentos.

3) Esta entrada se lee de la memoria y se procede como antes, es decir, se comprueba que el desplazamiento no rebasa la longitud del segmento y se calcula la dirección física como la suma del registro base de la tabla de segmentos y del desplazamiento. Pero al igual que con la paginación, esto requiere dos referencias a memoria por dirección lógica, provocando así una disminución en la velocidad del computador.

La solución a este problema es disponer también de una memoria asociativa para retener las entradas de la tabla de segmentos usadas más recientemente (análogas a como se hacia para las páginas) y conseguir rendimientos tan solo un poco peor que si se tuviera acceso directo. La segmentación no produce fragmentación interna, pero si externa, la cual ocurre cuando todos los bloques de memoria libre son muy pequeños para acomodar a un segmento. En esta situación el proceso solo puede esperar a disponer de más memoria, huecos más grandes, o usar estrategias de compactación para crear huecos más grandes. Otra opción es permitir que el planificador de la CPU busque en la cola de procesos uno que pueda usar los huecos de memoria

4. VENTAJAS DE LA SEGMENTACIÓN

Una ventaja de la segmentación es la posibilidad de asociar la protección de los segmentos. Puesto que los segmentos son porciones diferentes del programa definidos semánticamente (unos segmentos contendrán solo instrucciones mientras que otros datos), todas las entradas al segmento se usan de la misma manera. De esta forma, los segmentos de código se pueden definir

Page 7: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

de solo lectura, mientras que un segmento de datos se puede definir de lectura/escritura.

La segmentación también facilita la compartición de código o datos entre varios procesos. Un ejemplo usual es el de las librerías graficas muy grandes que se compilan en casi todos los programas; en un sistema segmentado, la librería grafica se puede situar en un segmento y compartirse entre varios procesos, sin necesidad de tenerla en el espacio de direcciones de cada proceso.

Los segmentos son compartidos cuando la entrada a la tabla de segmentos de dos procesos apuntan a la misma posición física. De esta forma, cualquier información se puede compartir si se define en un segmento.

5. VENTAJAS DE LA SEGMENTACIÓN

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.

La compartición de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales de hardware y software.

Page 8: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

6. SISTEMAS COMBINADOS DE PAGINACION-SEGMENTACION

La paginación y la segmentación son esquemas diferentes de gestión de la memoria cuyas principales características se pueden resumir en los siguientes puntos:

a. El programador no necesita saber que se está utilizando la paginación; pero si se dispone de segmentación si necesita saberlo.

b. Mientras que la paginación sigue un esquema lineal, con un único espacio de direcciones, la segmentación proporciona un espacio bidimensional con muchos espacios de direcciones.

c. En la paginación no se distingue el código de los datos. En cambio, en la segmentación si se distinguen (tienen segmentos diferentes), pudiéndose proteger de forma independiente.

d. La segmentación facilita la compartición de código y datos, asi como el uso de estructuras de datos de tamaños fluctuantes.

e. Ambas tienen en común que el espacio total de direcciones puede exceder el tamaño de la memoria física.

De forma absoluta no se puede decir que una técnica sea superior a otra, por ello hay sistemas que combinan los dos métodos para recoger lo mejor de ambos.

El principio de la combinación de la segmentación se con la paginación se observa en la figura 3. Este es el esquema seguido en el sistema operativo Multics y sus descendientes.

Page 9: SEGMENTACION

FACULTAD DE INGENIERÍAESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

Fig 3: Sistema combinado de segmentación con paginación