Principios básicos de los sistemas de segmentación en métodos básicos de gestión de almacenamiento de segmentación
En el método de gestión de almacenamiento segmentado, el espacio de direcciones del trabajo se divide en varios segmentos y cada segmento define un conjunto de información lógica. Por ejemplo, hay la sección principal del programa MAIN, la sección X del subprograma, la sección D de datos y la sección S de la pila, como se muestra en la Figura 4-17. Cada sección del programa tiene su propio nombre. Para simplificar la implementación, generalmente se pueden usar números de segmento en lugar de nombres de segmento. Cada segmento se aborda a partir de 0 y utiliza un espacio de direcciones continuo. La longitud de un segmento está determinada por la longitud del grupo de información lógica correspondiente, por lo que la longitud de cada segmento varía. El espacio de direcciones de toda la tarea se divide en varios segmentos y, por lo tanto, es bidimensional, es decir, su dirección lógica consta del número de segmento (nombre del segmento) y la dirección dentro del segmento.
La dirección en la dirección segmentada tiene la siguiente estructura:
En esta estructura de dirección, se permite que una tarea tenga hasta 64 K segmentos y la longitud máxima de cada segmento es 64 KB. Muchos compiladores admiten métodos de segmentación, que generan automáticamente múltiples segmentos a partir de un programa fuente. Por ejemplo, el compilador Pascal puede crear segmentos para variables globales, pilas de llamadas a procedimientos almacenados que almacenan los parámetros y direcciones de retorno correspondientes, porciones de código para cada función o procedimiento almacenado, variables locales para cada función o procedimiento almacenado, etc. Asimismo, el compilador de Fortran puede crear secciones separadas para bloques comunes y puede asignar secciones separadas para matrices. El cargador cargará todos estos segmentos y asignará un número de segmento a cada segmento. Para realizar la función de conversión de la dirección lógica del proceso a la dirección física, se configura un registro de tabla de segmentos en el sistema para almacenar la dirección inicial de la tabla de segmentos y la longitud de la tabla de segmentos TL. Si S>TL, significa que el número de segmento es demasiado grande y es un acceso fuera de límites, por lo que se genera una señal de interrupción fuera de límites, si no hay fuera de límites, la posición de; la entrada de la tabla de segmentos correspondiente al segmento se calcula en función de la dirección inicial de la tabla de segmentos y el número de segmento del segmento. Lea la dirección inicial del segmento en la memoria y luego verifique si la dirección del segmento d es mayor. que la longitud SL del segmento. Si es mayor que, es decir, d>SL, también emitirá una señal de interrupción fuera de los límites; si no está fuera de los límites, el segmento se colocará en el registro de segmento para almacenar la dirección lógica y la longitud; TL. Si no está fuera de los límites, agregue la dirección base d del segmento a la dirección dentro del segmento para obtener la dirección física de la memoria a la que se accederá.
La siguiente figura muestra el proceso de traducción de direcciones del sistema segmentado.
De manera similar al sistema de paginación, cuando la tabla de segmentos se coloca en la memoria, cada acceso a datos debe acceder a la memoria dos veces, lo que ralentiza en gran medida la velocidad de funcionamiento de la computadora. La solución también es similar al sistema de paginación, que consiste en agregar una memoria asociativa para almacenar las entradas de la tabla de segmentos utilizadas más recientemente. Dado que los segmentos son generalmente más grandes que las páginas, la cantidad de entradas de la tabla de segmentos es mayor que la cantidad de entradas de la tabla de páginas y la memoria asociada requerida es relativamente pequeña. Esto puede reducir en gran medida el tiempo para acceder a los datos, en comparación con la memoria tradicional sin traducción de direcciones. En comparación con la velocidad de acceso, es sólo entre un 10% y un 15% más lenta.