1 GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL.

Anuncio
TEORÍA DE LOS SISTEMAS OPERATIVOS
1
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL.
INTRODUCCIÓN.
La memoria real se puede nombrar de distintas maneras: memoria principal, memoria
primaria, memoria interna, memoria física, etc., sin embargo todos estos nombres tienen un
significado equivalente.
En un sistema monoprogramado, la memoria principal esta dividida en dos partes: una para
el sistema operativo y otra para el programa que se está ejecutando en ese momento.
En un sistema multiprogramado, la parte de memoria utilizada por el usuario, debe
subdividirse aun más, para hacer sitio a varios procesos. La tarea de subdivisión la realiza el sistema
operativo dinámicamente y toma el nombre de gestión de memoria.
La organización y administración de la memoria principal, tiene una importancia vital para
mantener la actividad del procesador, por lo tanto, debe ser uno de los factores más importante a
considerar en el diseño de los sistemas operativos.
En este tema se plantea un enfoque de la tecnología, que se puede aplicar a la organización y
administración de memoria, considerando los distintos esquemas de gestión que se pueden utilizar,
partiendo de la necesidad de que un programa, para que se pueda ejecutar, tiene que estar cargado en
la memoria principal.
La gestión de memoria consiste principalmente, en la asignación de una parte de la memoria
física, que tiene una capacidad finita, a los procesos que la soliciten, ya que ningún proceso puede
ser activado, antes de que una cierta cantidad de memoria real le haya sido asignada.
Una segunda función de la gestión de memoria consiste en que los procesos que están
temporalmente inactivos, pueden ser retirados de la memoria, con objeto de dejar espacio libre a
otros procesos.
En conjunto, la utilización de los recursos así como otros criterios de ejecución de un
sistema informático, son afectados por la actuación del modulo de gestión de memoria.
La coexistencia de múltiples espacios de direcciones, pertenecientes a los procesos
residentes en la memoria principal, requiere algunos procedimientos de protección, para evitar que
los accesos a ellos realizados, equivocadamente o intencionadamente, puedan destruir contenidos de
sus espacios de direcciones. Al mismo tiempo, procesos que cooperan entre sí, deben de estar
provistos de algún medio de compartir datos comunes.
Una buena gestión de memoria, en un entorno de multiprogramación, debe soportar ambas
protecciones simultáneamente, es decir, aislamiento para separar los espacios de direcciones y uso
compartido, permitiendo que los procesos que cooperan entre sí, puedan acceder a áreas comunes de
memoria.
Se analizarán los distintos esquemas para la gestión de memoria, basados en la asignación de
espacio contiguo, es decir, la asignación de memoria es llevada a cabo de tal manera, que cada
objeto lógico colocado en memoria, ocupa un conjunto de posiciones consecutivas.
A continuación se analizarán los esquemas para la gestión de memoria no contigua, en los
cuales la memoria se asigna de tal modo, que las partes de un solo objeto lógico, pueden ser
colocadas en áreas no contiguas de la memoria física.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
2
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Una manera muy común de abordar la asignación de espacio contiguo, consiste en dividir la
memoria física disponible en particiones y posteriormente satisfacer las peticiones de memoria,
asignando las particiones libres si existen. Cuando un proceso residente en la memoria termina, su
partición es liberada y queda disponible para ser asignada a otro peticionario.
Las particiones de memoria pueden ser definidas estáticamente durante la generación del
sistema o dinámicamente en respuesta a las demandas del usuario.
Cuando el particionamiento es estático, se produce un desaprovechamiento de la memoria,
cuando se carga un objeto de menor tamaño que la partición y al espacio que se desaprovecha, se le
denomina fragmentación interna.
El particionamiento dinámico, elimina este problema, haciendo cada partición tan grande
como sea necesario para ajustarse al objeto dado, por lo tanto, cuando se lleva un objeto fuera de la
memoria, la partición ocupada por él, se devuelve a la reserva de espacio libre.
Después de algún tiempo de funcionamiento, el particionamiento dinámico produce una
dispersión de espacio libre en áreas discontinuas, que son de un tamaño insuficiente para albergar
otro objeto. A este tipo de desaprovechamiento de la memoria, se le denomina fragmentación
externa.
Respecto a la manera de abordar la asignación de memoria no contigua, se pueden utilizar
las dos técnicas siguientes:


La Paginación.
La Segmentación.
En la Paginación, la memoria principal se divide en un conjunto de marcos de página de
igual tamaño y cada proceso se divide en una serie de páginas del mismo tamaño, que los marcos de
página en que se ha dividido la memoria principal. El proceso se cargará situando todas sus páginas
en los marcos libres, que no necesariamente serán contiguos.
La utilización de la Paginación, elimina la fragmentación externa, pero puede producirse una
pequeña fragmentación externa en la última página de un proceso.
En la Segmentación los programas se dividen en módulos y cada módulo se convierte en un
segmento durante la compilación del programa. Un proceso se cargará, situando todos sus
segmentos, en particiones dinámicas, que no necesariamente tienen que ser contiguas.
La utilización de la Segmentación, elimina totalmente la fragmentación interna, pero puede
producirse fragmentación externa, que se elimina con la compactación.
Independientemente del tipo de asignación de la memoria que se utilice, la posible eficacia
de un gestor de memoria, es mayor en sistemas donde los programas son reubicables, es decir, que
puedan ser cargados en las distintas áreas de memoria, disponibles en un momento dado.
Con objeto de proporcionar unas bases comunes, para la evaluación de cada esquema
analizado, se establecen los siguientes criterios de medida:



Memoria desaprovechada.
Complejidad en el tiempo.
Procesos suplementarios de acceso a memoria.
La memoria desaprovechada se considera que es la fracción de memoria física sin usar, que
un esquema de gestión de memoria dado, es incapaz de asignar, cuando procesa una secuencia de
peticiones de memoria.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
3
La complejidad en el tiempo, se refiere a la dificultad del cálculo que es preciso realizar,
para la asignación o desasignación de la memoria, utilizado por un esquema determinado de gestión
de la memoria.
Los procesos suplementarios de los accesos a memoria, se refieren a la duración de las
operaciones adicionales, llevadas a cabo por un esquema de gestión de memoria dado, cuando
accede a la memoria.
Una definición más amplia de la memoria desaprovechada, consiste en la posibilidad de
mantener residentes en memoria, múltiples copias de un único objeto común, debido a un deficiente
o restringido uso compartido.
Un gestor de memoria ideal debe:
Minimizar:



La memoria desaprovechada.
La complejidad en el tiempo.
Los procesos suplementarios de acceso a memoria.
Proporcionar:


Una buena protección de memoria.
Un uso compartido flexible.
Estos requerimientos no son realizables simultáneamente, por los esquemas de gestión de
memoria que se van a describir, por lo tanto, un diseñador de un sistema operativo, tendrá que
identificar y establecer la prioridad de un diseño particular, para crear un esquema de gestión de
memoria apropiado a los requerimientos del sistema dado.
REQUISITOS PARA LA GESTIÓN DE MEMORIA.
Al realizar un estudio de los diversos mecanismos y políticas relacionadas con la gestión de
memoria, conviene tener presente los requisitos que se deben satisfacer, en el diseño de un módulo
de gestión de memoria:





Reubicación.
Protección.
Compartición.
Organización lógica.
Organización física.
Respecto a la reubicación, se podría decir que en un sistema multiprogramado, la memoria
disponible se encuentra compartida por varios procesos y además en ciertos momentos, será preciso
poder cargar y descargar los procesos activos, que se encuentran en la memoria principal, para
maximizar el uso del procesador, manteniendo una gran reserva de procesos listos para ejecutarse.
Cuando un proceso haya sido descargado al almacenamiento secundario, será preciso
conocer, si cuando ese proceso vuelva a ser cargado, debe situarse en la misma región de memoria
principal, en la que estaba situado anteriormente o bien, puede situarse en posiciones diferentes a las
que tenía en el instante en que fue descargado.
Esta situación plantea algunos asuntos técnicos relativos al direccionamiento, tal y como se
expresa, en la figura que representa la imagen de un proceso. Sin duda alguna, el sistema operativo
tiene que conocer, la ubicación de la información de control del proceso y de la pila de ejecución,
así como el punto de partida para comenzar la ejecución del proceso.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
4
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Puesto que el sistema operativo, gestiona la memoria y es el responsable de traer el proceso a
la memoria principal, todas las direcciones necesarias para la ejecución del proceso deben ser fáciles
de conseguir, por lo tanto, el hardware del procesador y el software del sistema operativo, deben ser
capaces de traducir las referencias a la memoria lógica encontradas en el código del programa, a las
direcciones físicas reales, que reflejen la posición actual del programa en memoria principal.
PUNTO DE ENTRADA
AL PROGRAMA
CÓDIGO
DATOS
CIMA ACTUAL DE LA PILA
PILA
BLOQUE DE CONTROL DE PROCESO
B.C.P
Durante ejecuciones diferentes de un mismo programa, pueden ser asignadas direcciones de
carga diferentes, por tanto, es preciso distinguir, una dirección lógica o virtual, que es la que percibe
el usuario, de una dirección física o real, que es el lugar de la memoria, donde el programa y sus
datos son almacenados, durante una determinada ejecución.
Más específicamente, podríamos decir, que las direcciones lógicas o virtuales son
identificaciones usadas para referenciar la información, dentro del espacio de direcciones de un
proceso, mientras que las direcciones físicas, designan la posición actual de la memoria real, donde
los elementos de información son almacenados en tiempo de ejecución.
Dependiendo de cuando y como tiene lugar, la proyección desde el espacio de direcciones
lógicas o virtuales, hacia el espacio de direcciones físicas o reales, en un esquema de gestión de
memoria dado, la reubicación del programa, puede ser considerada como estática o dinámica.
La reubicación estática implica, que la reubicación es llevada a cabo, durante la carga del
programa en memoria, por un programa que se denomina cargador reubicable.
El programa traductor normalmente prepara él modulo objeto, suponiendo que la dirección
física cero, es la dirección de comienzo del programa.
Cuando el programa es cargado en la memoria por el módulo del sistema operativo
denominado cargador, todas las posiciones del programa, que necesitan reubicación, son
modificadas de acuerdo con la dirección física de la memoria, que le ha sido asignada al proceso.
Una vez que el proceso está en memoria los valores que necesitan reubicación, no se
distinguen de aquellos que no la necesitan, por lo tanto, los valores de reubicación se pierden
después de la carga y un programa reubicable estáticamente, ejecutado en parte en un área de
memoria, no puede ser trasladado a otra y esperar que continúe ejecutándose correctamente.
En consecuencia, en sistemas con reubicación estática, un proceso que fue descargado
dinámicamente, debe ser cargado, en la misma partición de memoria, donde estaba situado, antes de
que se realizara la descarga dinámica.
La reubicación dinámica, implica que la proyección del espacio de direcciones lógicas o
virtuales, en el espacio de direcciones físicas o reales, es llevado a cabo en tiempo de ejecución,
normalmente con alguna asistencia del hardware de la maquina.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
5
Los procesos imagen en sistemas con reubicación dinámica, se preparan también,
suponiendo que la dirección de comienzo es la dirección lógica o virtual cero y se cargan en la
memoria sin ninguna modificación debida a la reubicación.
Cuando dichos procesos son ejecutados, todas sus referencias a memoria son reubicadas
durante la ejecución de las instrucciones, antes de que se acceda a la memoria física o real. Este
proceso es implementado, por medio de un registro base, que contiene la dirección física de la
memoria, donde está cargado el proceso y este valor se obtiene del correspondiente Bloque de
Control de Proceso (BCP).
Cada referencia a memoria generada por la ejecución del proceso, se convierte en la
correspondiente dirección física, con solo sumarle el contenido del registro base.
1.000
100
CPU
1.100
+
DIRECCIÓN
LÓGICA
1.000
DIRECCIÓN
FÍSICA
P IMAGEN
MEMORIA
Un proceso imagen preparado suponiendo que la dirección de comienzo es la dirección
lógica o virtual cero, se mantendrá inalterada, antes y después de ser cargado en la memoria.
La reubicación dinámica, hace posible mover un proceso parcialmente ejecutado en un área
de memoria a otra, sin que se produzcan inconvenientes de direccionamiento, en los accesos a las
instrucciones y datos en el nuevo espacio.
Esta característica es muy provechosa para mantener la descarga dinámica, sin tener que
ligar los procesos a las particiones y por tanto, podrá ser utilizado en el particionamiento dinámico,
que estudiaremos posteriormente.
Respecto a la protección, no hay duda de que cada proceso debe protegerse contra las
interferencias no deseada de otros procesos, tanto las que se produzcan de forma accidental como
las intencionadas. De esta manera, el código de un proceso no puede hacer referencia a posiciones
de memoria de otros procesos sin la debida autorización.
Hasta cierto punto, satisfacer las exigencias de reubicación aumenta la dificultad de
satisfacer las exigencias de protección, puesto que se desconoce la ubicación de un proceso en la
memoria principal y es imposible comprobar las direcciones absolutas durante la compilación, para
asegurar la protección.
Todas las referencias a memoria generadas por un proceso, deben comprobarse durante la
ejecución, para asegurar que solo hacen referencia al espacio de memoria destinado a dicho proceso
y como se verá posteriormente, los mecanismos que respaldan la reubicación, también forman parte
básica del cumplimiento de las necesidades de protección.
Las exigencias de protección de memoria pueden ser satisfechas por el procesador
(hardware) en lugar de por el sistema operativo (software) para ello es preciso extender el sistema
de protección establecido anteriormente para el sistema operativo, es decir, colocar un bit de
protección en cada posición de memoria, a un sistema multiprogramado, en el cual sería necesario
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
6
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
colocar más de un bit. Este problema se podría resolver estableciendo la protección por áreas de
memoria de 1 K, 2 K, 4K, etc.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
7
0
MONITOR
200.000
TRABAJO 1
300.000
REG. BASE = 300.000
TRABAJO 2
500.000
REG, LIMITE = 200.000
TRABAJO 3
800.000
REG. BASE
PROCESADOR
REG. BASE + TAMAÑO.
SI
SI

<
NO
NO
ERROR DE
DIRECCIÓN
M
E
M
O
R
I
A
ERROR DE
DIRECCIÓN
Respecto a la compartición, es preciso considerar, que cualquier mecanismo de protección
que se implemente, debe tener la flexibilidad necesaria, para permitir el acceso de varios procesos a
la misma zona de memoria principal, ya que si varios procesos están ejecutando el mismo programa,
lo normal es, que todos ellos puedan acceder a la misma copia del programa, del mismo modo, si
varios procesos tienen que cooperar en la misma tarea, deberán poder acceder a unas estructuras de
datos comunes.
Por ejemplo en un sistema de uso compartido, utilizado fundamentalmente para el desarrollo
de programas. Si consideramos que una media de 20 usuarios, están editando sus programas y el
editor ocupa 50 Kb de memoria, sin la utilización del uso compartido, estos usuarios estarán
ocupando 1 Mb de memoria para situar las 20 copias del editor, sin embargo, utilizando el uso
compartido, con una única copia del editor sería suficiente.
El sistema de gestión de memoria debe permitir accesos controlados a las áreas compartidas
de la memoria, sin comprometer la protección básica y de nuevo será preciso repetir, que los
mecanismos empleados para respaldar la reubicación, forman parte de las capacidades de
compartición.
Respecto a la organización lógica se puede decir, que actualmente la mayoría de los
programas se organizan en módulos, alguno de los cuales no son modificables, es decir, que son de
solo lectura, solo ejecución, etc. Otros en cambio, contienen datos que se pueden modificar.
MÓDULO PRINCIPAL
MÓDULO 1
ESTRUCTURAS
DE DATOS
MÓDULO 2
MÓDULO 3
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
8
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Si el sistema operativo y el hardware del computador, pueden tratar de forma efectiva los
programas de usuario y los datos que necesitan en forma de módulos de algún tipo, se conseguirán
las siguientes ventajas:



Los módulos se pueden escribir y compilar independientemente, mientras que el sistema
operativo resuelve durante la ejecución, todas las referencias de un módulo a otro.
Con un escaso coste adicional, pueden otorgarse varios grados de protección a los
distintos módulos, es decir, solo lectura, solo ejecución, etc.
Es posible introducir mecanismos, mediante los cuales, los procesos puedan compartir
módulos y la ventaja de ofrecer compartición a nivel módulo es que esto se corresponde
con la visión del problema que tiene el usuario y por lo tanto, es fácil para el usuario
especificar la compartición que desea.
El método que más fácilmente satisface estas necesidades es la segmentación, que es una de
las técnicas de gestión de memoria, que se analizarán a continuación.
Respecto a la organización física, es preciso recordar que la memoria del computador se
organiza en al menos dos niveles:


La memoria principal.
La memoria secundaria.
La memoria principal es pequeña, ofrece un acceso rápido con un coste relativamente bajo y
es volátil, es decir, no proporciona almacenamiento permanente, por lo tanto, solo será capaz de
mantener los programas y los datos de uso actual.
La memoria secundaria es más lenta y más económica que la memoria principal, pero
proporciona un almacenamiento de gran capacidad, que permite mantener los programas y los datos
durante un largo tiempo
En este esquema de dos niveles, la organización del flujo de la información entre la memoria
principal y la secundaria, debe ser resuelto, por el sistema operativo. La asignación de la
responsabilidad de este flujo al programador seria impracticable debido a dos razones.
La memoria principal disponible para un programa y sus datos, puede ser insuficiente, por lo
tanto, el programador tendría que aplicar una técnica, que se conoce con el nombre de superposición
(overlay), en la cual el programa y los datos se organizan de tal forma, que puede haber varios
módulos que se asignen a la misma región de la memoria, con un programa principal responsable
del intercambio de los módulos según se necesite.
En un entorno multiprogramado, el programador no conoce durante la codificación cuanto
espacio habrá disponible o donde estará este espacio.
Estas dos razones nos indican con toda claridad, que la tarea de mover la información entre
estos dos niveles de memoria, debe ser responsabilidad del sistema operativo y corresponderá
lógicamente al módulo de gestión de memoria.
CARGA DE PROGRAMAS EN LA MEMORIA PRINCIPAL.
La tarea central de cualquier sistema de gestión de memoria, será la de incorporar los
programas a la memoria principal para su ejecución en el procesador, utilizando para ello los
métodos de asignación de memoria ya citados anteriormente:


Asignación contigua.
Asignación no contigua.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
9
Para la asignación de espacio contiguo, las técnicas que se han venido utilizando, en los
sistemas operativos tradicionales, consisten en dividir el espacio de memoria disponible en
particiones:


Particiones fijas o estáticas.
Particiones variables o dinámicas.
Para la asignación espacio no contiguo, las técnicas que se utilizan normalmente, son la
Segmentación simple y la Paginación simple, que generalmente no se usan en solitario, sino más
bien en combinación con la utilización de la memoria virtual.
No obstante el estudio de la memoria virtual resultará más sencillo si se consideran estas dos
técnicas sin tener en cuenta la memoria virtual.
A continuación se trata de analizar con detalle todas estas técnicas, que se han ido utilizando
en los distintos sistemas operativos tradicionales, para la gestión de la memoria contigua y no
contigua y posteriormente nos introduciremos en el estudio de los sistemas de gestión de memoria
virtual, que son los que se utilizan en la actualidad.
MONITOR DE PROCESO ÚNICO. MONITOR RESIDENTE.
Los primeros sistemas informáticos, solo permitían la utilización de la maquina a un usuario,
por lo tanto, todos los recursos incluida la memoria, estaban a su disposición y no existían, los
sistemas operativos actuales. A este concepto de utilización se le denomina maquina desnuda.
Para facilitar el trabajo de los distintos usuarios, se estableció un código común para todos
los usuarios, en el que se implementó el sistema de control de E/S (IOCS), que fue el comienzo del
concepto actual de los sistemas operativos.
0
MONITOR
RESIDENTE
BORDE DE LA MEMORIA
ÁREA DE
PROCESOS
TRANSITORIOS
MAX
TECHO DE LA MEMORIA
El monitor de proceso único, fue el origen de los sistemas monoprogramados y es la manera
más simple de realizar la gestión de memoria y en ella la memoria se divide en dos áreas contiguas:


Una de ellas esta permanentemente asignada al sistema operativo, que debe estar
residente en memoria (Monitor).
La otra es asignada a los procesos transitorios, los cuales son cargados de uno en uno, en
respuesta a las órdenes del usuario.
Tanto los procesos de usuario, como las partes del sistema operativo, que no están residentes
en memoria, deben ejecutarse en el área de los procesos transitorios.
Esta forma de gestión de memoria, fue utilizada por los primeros sistemas operativos,
fundamentalmente, en los microcomputadores u ordenadores personales de proceso único que en la
actualidad han desaparecido, ya que el rendimiento obtenido es muy bajo.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
10
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Básicamente el sistema operativo necesitaba guardar siempre, la primera y última posiciones
transitorias:


La primera es la inmediatamente siguiente al monitor residente y se denominaba borde de
la memoria.
La última estaba determinada por la capacidad de la memoria instalada en una
configuración determinada y se denominaba techo de la memoria.
Para poder suministrar un área contigua de memoria libre a los procesos transitorios, el
sistema operativo estaba situado en uno de los extremos de la memoria. La elección de un extremo
de la memoria, es decir, la parte alta o la baja, estaba normalmente influenciada, por la posición del
área del vector de interrupciones para el hardware subyacente.
Para proteger estos datos vitales del sistema, el vector de interrupciones se considera como
parte del sistema operativo, por lo tanto, este estará situado en el mismo extremo de la memoria,
donde reside el vector de interrupciones.
Otras partes del sistema operativo, tales como el cargador o bien el interprete de órdenes del
usuario, pueden estar situados en el extremo opuesto de la memoria, dejando así una única área
contigua de memoria libre en el centro.
Cuando el proceso que se está ejecutando en el área de procesos transitorios finaliza, el
sistema operativo carga otro proceso de los que están en la cola de espera.
En un monitor de proceso único, no existe protección entre procesos, ya que solo puede
haber un proceso residente en memoria, sin embargo, será preciso proteger el sistema operativo de
posibles destrucciones, por parte del proceso transitorio en ejecución.
Los mecanismos de protección utilizados son los ya expuestos anteriormente, que consistían
en la utilización de registros base y registros limite, así como la utilización de los bits de protección,
que permiten distinguir, entre la ejecución de un proceso del sistema operativo (Modo Supervisor) o
un proceso de usuario (Modo Usuario).
Otro método de protección de la memoria, consiste en asociar a cada posición de memoria
un bit de protección, quedando dividida la memoria en dos zonas de tamaño arbitrario, en una de las
zonas los bits de protección están a cero y en la otra a uno.
El uso compartido de programas y datos en memoria, no tiene mucho sentido en un entorno
de proceso único.
Con una asignación de memoria sencilla y con la ausencia de las complejidades de la
multiprogramación, un monitor de proceso único es relativamente sencillo de diseñar, no obstante,
de la falta de un soporte de multiprogramación, se obtiene generalmente como resultado un bajo
rendimiento, tanto en el procesador como en la memoria:


El procesador es desaprovechado al no existir más que un proceso, por lo tanto, el
procesador quedará inactivo, cuando se produzca una interrupción del sistema.
La memoria es utilizada por debajo de sus posibilidades debido a que, una porción de
ella, la comprendida entre el espacio final del espacio de direcciones del proceso y el
final del área de procesos transitorios, es desaprovechada.
SUPERPOSICIONES. (OVERLAYS).
Puesto que todo el espacio lógico de direcciones de un proceso, debe encontrarse en la
memoria física antes de ejecutar el proceso, la dimensión del proceso esta limitada por el tamaño de
la memoria física.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
11
Teniendo en cuenta, que las capacidades de la memoria, comenzaron siendo muy pequeñas y
han ido creciendo con el avance de la electrónica, para que un proceso pueda ser mayor, que la
cantidad de memoria física que se le asigna, se utiliza la técnica denominada superposiciones
(Overlays).
Esta técnica consiste en conservar en memoria, solamente aquellas instrucciones y datos, que
se necesitan de una manera permanente, el resto de las instrucciones, que solo son necesarias en
determinados momentos de la ejecución, se pueden cargar en un área común cuando el proceso las
requiera.
Para que esta técnica se pueda utilizar, será preciso dividir la zona de memoria asignada en
tres partes:



Una zona para las instrucciones que se necesitan de una manera permanente.
Una zona pequeña donde residirán las instrucciones necesarias para gestionar las
superposiciones.
Una zona común donde se cargaran las instrucciones que no son necesarias de forma
permanente.
Por ejemplo, supongamos que tenemos un programa, que tiene un módulo principal que
controla la total ejecución de un programa, que realiza dos funciones consecutivas, necesitando la
ejecución de dos módulos independientes, el programa se ejecutará en dos pasos sucesivos.
SISTEMA
OPERATIVO
PARA CARGAR LA TOTALIDAD DEL PROGRAMA
SERÍAN NECESARIAS 200 K
50K
MÓDULO
PRINCIPAL
10K
GESTIÓN DE
SUPERPOSICIONES
90K
70 K
MÓDULO 1
80 K
MÓDULO 2
ZONA COMÚN
ASIGNACIÓN POR INTERCAMBIO. (SWAPPING).
Realmente se podría decir que un intercambio (Swapping), es una compartición asíncrona de
la memoria, ya que se sabe que para que un proceso pueda ejecutarse necesita estar en la memoria
principal, sin embargo, un proceso puede intercambiarse temporalmente, saliendo de la memoria
principal, para situarse en el almacenamiento secundario y regresar posteriormente a la memoria
principal para continuar su ejecución.
S.O.
SWAP-0UT (SALIDA)
P1
P1
P2
SWAP-IN (ENTRADA)
P3
P5
P4
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
12
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Si suponemos un entorno de multiprogramación en una memoria restringida, con un
algoritmo circular para la asignación del procesador, es decir, un sistema de tiempo compartido.
Cuando un cuanto expira, el gestor de memoria comenzará a intercambiar el proceso que acaba de
terminar, para incorporar otro proceso al espacio de memoria que acaba de liberarse, mientras tanto,
el planificador del procesador asignará un nuevo cuanto a otro proceso en memoria y cada vez que
un proceso finalice su cuanto, se intercambia con otro.
Es preciso que el gestor de memoria pueda intercambiar los procesos con la velocidad
suficiente, para que siempre haya procesos en memoria listos para ejecutarse, cada vez que el
planificador del procesador desee introducir un nuevo proceso. El tiempo establecido para un
cuanto, debe ser suficiente, para que se efectúen las operaciones necesarias, para la realización de un
intercambio.
Para algoritmos basados en prioridades, se emplea también esta política de intercambio. Si
llega un proceso de mayor prioridad y desea ejecutarse, el gestor de memoria puede intercambiarlo
con un proceso de menor prioridad, para así cargar y ejecutar el de mayor prioridad.
Cuando este proceso de mayor prioridad termina, puede devolver el proceso de menor
prioridad y continuar su ejecución. Esta variante de intercambios se denomina salida y entrada por
intercambios, es decir, Swap-out y Swap-in.
Normalmente un proceso que sale de un intercambio, regresará al mismo espacio de
memoria que antes ocupaba, aunque como veremos posteriormente, esta restricción la determina el
tipo de reubicación:


Si la reubicación es estática, el direccionamiento se lleva a cabo durante la carga, el
proceso, por lo tanto, no podrá moverse a otras localidades de memoria.
Si la reubicación es dinámica, el direccionamiento se lleva a cabo durante la ejecución,
entonces si será posible intercambiar un proceso a un espacio de memoria distinto.
Los intercambios requieren un espacio en el almacenamiento secundario, situado
generalmente en un disco de la mayor velocidad de acceso posible o en un tambor magnético y debe
tener la capacidad suficiente, para contener copias de la imagen de todos los procesos de usuario
ofreciendo acceso a esta imagen.
El sistema mantiene una cola de procesos listos para ejecutarse, que consiste en el
almacenamiento de la información de control, de los procesos cuya imagen de memoria se
encuentra en el almacenamiento secundario o en la memoria principal.
Cuando el planificador del procesador, decide ejecutar un proceso, comprueba si el siguiente
proceso de la cola esta en memoria, si no está y no se dispone de una región de memoria libre, el
planificador intercambia un proceso en memoria con el proceso deseado, obviamente el tiempo de
cambio de contexto en un sistema de este tipo es bastante alto.
Para obtener una utilización eficiente del procesador, el tiempo de ejecución para cada
proceso debe ser mayor que el tiempo de intercambio.
Ejemplo: Se supone que un proceso de usuario, tiene un tamaño de 512 Kb y el
almacenamiento secundario es un disco con una velocidad de transferencia de 1 Mb/seg. La
transferencia del proceso de 512 Kb, de la memoria o bien hacia ella durará:
512 Kb / 1024 Kb = 1 / 2 seg. = 500 msg.
Suponiendo un tiempo de posicionamiento de 8 msg. y un tiempo de latencia de 2 msg. El
tiempo de intercambio es de 510 msg. Ahora bien, como el intercambio debe ser de salida y entrada,
el tiempo total de intercambio es de 1020 msg.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
13
La mayor parte del tiempo de intercambio se invierte en la transferencia y el tiempo de
transferencia total es directamente proporcional a la cantidad de memoria que se intercambia.
Por lo tanto, si tenemos unos datos de tipo medio:




Longitud media de los programas = 256K.
Tiempo de posicionamiento = 8 msg.
Tiempo de latencia media = 2 msg.
Ratio de transferencia = 1024K / sg.
S.O
MEMORIA
DISCO
10 msg. + 256 K / 1.024 k = 260 msg.
10 msg. + 256 k / 1.024 K= 260 msg.
T. INTERCAMBIO = 260 + 260 = 520 MSG.
Una forma de disminuir el tiempo necesario para la realización de un intercambio, consiste
en solapar la ejecución y el intercambio mediante la creación de tres zonas de memoria o buffers:



Una dedicada a contener el programa que esta ejecutando actualmente.
Otra para el programa que se acaba de ejecutar y que se debe transferir al soporte externo.
La última para almacenar el programa que debe ser ejecutado a continuación.
El programa que tiene el control de la CPU, estará situado en la memoria, para de esta
manera, continuar con el proceso descrito. La cola activa esta compuesta por todos los programas
incluidos en la memoria y en condiciones de ser ejecutados y requiere de un planificador a medio
plazo que tendrá la misión de seleccionar el próximo programa a ejecutar, entregando el control al
distribuidor para localizarlo, bien en la memoria o bien en el soporte y a continuación efectuar el
cambio, de la manera que se expresa en la figura.
Esta técnica se denomina Swapping a través de buffers y se representa a continuación:
PRIMERA FASE
PROGRAMA
DEL USUARIO
EN EJECUCIÓN
MEMORIA
BUFFER 2
PROGRAMA A EFECTUAR
A CONTINUACIÓN
BUFFER 1
PROGRAMA QUE ACABA
DE EJECUTARSE
DISCO
SISTEMA OPERATIVO
SEGUNDA FASE
BUFFER 2
BUFFER 1
SE AJUSTAN LOS CONTENIDOS
DE LAS DIFERENTES ZONAS DE
MEMORIA PARA LA SIGUIENTE
ETAPA DEL SWAP
SISTEMA OPERATIVO
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
14
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Existen otras restricciones para los intercambios, ya que si se quiere intercambiar un
proceso, debe asegurarse que este completamente inactivo, pues cualquier solicitud de E/S que este
pendiente tiene una importancia especial.
Supongamos que la operación de E/S esta en una cola porque el dispositivo estaba ocupado.
Si se intercambia por ejemplo el proceso P1 que esta en la memoria con el proceso P2 que está en el
almacenamiento secundario, la operación de E/S que tenia pendiente el proceso P1, podría intentar
usar la memoria que ahora pertenece al proceso P2.
Las dos soluciones para resolver este problema son:


Nunca intercambiar un proceso con operaciones de E/S pendientes.
Ejecutar las operaciones de E/S, solo en los buffers del sistema operativo.
ASIGNACIÓN ESTATICA DE LA MEMORIA PARTICIONADA.
En la mayoría de los esquemas de gestión de memoria, se puede suponer que el sistema
operativo ocupa una parte fija de la memoria principal y el resto de la memoria está disponible para
ser usado por varios procesos.
El esquema más sencillo de gestión de la memoria disponible es dividirla en particiones con
límites fijos. Las particiones pueden ser del mismo o de distinto tamaño, pero generalmente serán de
distinto tamaño.
PARTICIONES DEL
MISMO TAMAÑO
S.O
PARTICIONES DE
DISTINTO TAMAÑO
S.O
128 K
512 K
256 K
512 K
512 K
512 K
1.024 K
512 K
Si las particiones son del mismo tamaño, la ubicación de un proceso en la memoria es trivial,
ya que mientras haya una partición libre, puede cargarse un proceso en esa partición. Cuando todas
las particiones están ocupadas por procesos que no están listos para ejecutarse, uno de esos procesos
debe sacarse y hacer sitio para un nuevo proceso.
Si las particiones son de distinto tamaño, hay dos maneras posibles de asignar los procesos a
las particiones:

La forma más simple es asignar cada proceso a la partición más pequeña en la que quepa,
es decir, solo en la que mejor se adapte, para lo cual es preciso conocer la cantidad
máxima de memoria, que necesitaría cada uno de los procesos y realmente esta
información no siempre se conocerá. En este caso, será necesaria una cola de
planificación para cada partición, que albergue los procesos listos para ejecutarse, cuyo
destino es esa partición. La ventaja de este enfoque es que los procesos están siempre
asignados de forma que se minimiza la memoria desaprovechada dentro de cada
partición.
Este enfoque que parece óptimo desde el punto de vista de una partición individual, no lo
es, desde el punto de vista del sistema global, ya que si tenemos particiones grandes y los
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
15

procesos que van llegando son todos pequeños, las colas de las particiones grandes
permanecerán sin usar, incluso aunque algún proceso más pequeño pudiera haber sido
asignado a las mismas.
Una solución mejor sería emplear una sola cola para todos los procesos y cuando se va a
cargar un proceso en memoria principal, se selecciona la partición más pequeña
disponible que pueda albergar al proceso. Si todas las particiones están ocupadas, se debe
tomar una decisión de intercambio y puede darse preferencia al intercambio de la
partición más pequeña, que pueda contener el proceso entrante. También es posible
considerar otros factores, tales como, prioridades y preferencia para descargar procesos
bloqueados antes que procesos listos.
El uso de particiones de distinto tamaño proporciona cierto grado de flexibilidad a las
particiones fijas, además, ambos tipos de esquema de partición fija son relativamente simples y
exigen un software del sistema operativo sencillo y una sobrecarga de procesamiento mínima.
UNA COLA DE PROCESOS
POR CADA PARTICIÓN
UNA COLA DE PROCESOS
ÚNICA
S.O.
S.O.
128 K
128 K
256 K
256 K
512 K
512 K
1.024 K
1.O24 K
El particionamiento fijo consiste en la asignación estática de la memoria particionada, que es
una forma de hacer posible la multiprogramación, dividiendo la memoria física disponible en varias
particiones, cada una de las cuales puede ser asignada a diferentes procesos.
Dependiendo de como y cuando son creadas y modificadas esas particiones, el
particionamiento de la memoria, puede ser estático o dinámico.
A continuación vamos a estudiar el particionamiento estático y posteriormente analizaremos
el particionamiento dinámico.
PARTICIONAMIENTO ESTÁTICO.
El particionamiento estático se realiza durante el proceso de generación del sistema,
estableciendo él numero de particiones fijas y el tamaño de cada una de ellas, teniendo en cuenta la
capacidad de la memoria física disponible, además el grado de multiprogramación deseado y el
tamaño típico de los procesos más frecuentemente utilizados en la instalación. Esto tendrá que
realizarse en función de las estadísticas recogidas durante el funcionamiento real del sistema.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
16
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Un ejemplo de memoria particionada esta representado en la siguiente figura:
0K
SISTEMA OPERATIVO
100 K
LIBRE
400 K
P1
500 K
P2
750 K
P3
900 K
1.000 K
LIBRE
De las seis particiones en que esta dividida la memoria, una de ellas, se supone que esta
ocupada por el sistema operativo, otras tres por procesos de usuario y las dos particiones restantes,
están libres y disponibles para la asignación.
Una vez que las particiones están definidas, el sistema operativo necesita guardar
información de su estado, tal como, si la partición esta libre, o bien está asignada, para
posteriormente utilizar esta información en el momento de la asignación.
El estado actual y los atributos de las particiones, están recopilados en una estructura de
datos, denominada Tabla de Descripción de Particiones (PDT), Partition-Description Table. Tal y
como se indica en dicha tabla, cada partición esta descrita por su dirección de comienzo (Base), su
tamaño y su estado.
Cuando una partición estática es usada, en la PDT solo variara el campo correspondiente al
estado, ya que los restantes campos son estáticos y contienen los valores establecidos en el momento
de la definición de las particiones.
TABLA DE DESCRIPCIÓN DE LAS PARTICIONES
Nº DE PARTICIÓN
BASE
TAMAÑO
ESTADO
0
0K
100 K
ASIGNADA
1
100 K
300 K
LIBRE
2
400 K
100 K
ASIGNADA
3
500 K
250 K
ASIGNADA
4
750 K
150 K
ASIGNADA
5
900 K
100 K
LIBRE
Cuando un proceso va a ser creado o activado, el sistema operativo intenta asignarle una
partición de memoria libre de tamaño suficiente, consultando las entradas en la PDT, si la encuentra,
el campo correspondiente a la entrada seleccionada, es marcado como asignada y el proceso imagen
es cargado en la partición correspondiente.
El formato descrito para la PDT, no nos proporciona ninguna indicación de cual es el proceso
que esta ocupando una partición dada, por lo tanto la identidad de la partición asignada debe ser
establecida en el bloque de control del proceso (PCB).
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
17
Cuando el proceso termina o bien es descargado dinámicamente, la información del bloque
de control de proceso, será utilizada para localizar la partición correspondiente y actualizar la PDT,
cambiando su estado de asignada a libre.
Con objeto de implementar estas ideas básicas, necesitamos solucionar dos problemas:


Estrategia a utilizar para la asignación de una partición.
Que ocurre cuando no hay ninguna partición adecuada disponible para ser asignada.
Las estrategias a utilizar para la asignación de una partición, se fundamentan en los
siguientes criterios:


Primera en adaptarse, First-Fit (FF).
La que mejor se adapte, Best-Fit (BF).
El primer criterio consiste, en asignar la primera partición libre suficientemente grande, para
contener el proceso que esta siendo creado.
El segundo criterio consiste, en asignar la partición libre más pequeña, capaz de satisfacer
los requerimientos del proceso.
Cuando se va a decidir entre estos dos métodos, se debe hacer una elección entre velocidad
de ejecución y utilización de la memoria.
Ambos métodos deben explorar la PDT, para identificar una partición libre de tamaño
adecuado, sin embargo, el primero termina en el momento que encuentra la primera partición, que
cumple los requerimientos y el segundo debe analizar todas las entradas de la PDT, para identificar
la que mejor se ajuste.
El resultado que se obtiene es el siguiente:


El primer método obtiene mayor rapidez.
El segundo método consigue una mejor utilización de la memoria.
Como ejemplo de como trabajar las dos estrategias de asignación de particiones,
considerando la PDT anterior, queremos crear un proceso de 70 Kb y la situación de la PDT es la
expresada anteriormente:


El primer método le asignaría la partición 1 y se produciría una fragmentación interna de
230 Kb, que no podrán ser utilizadas hasta que el proceso termine o bien sea descargado
dinámicamente.
El segundo método, tendrá que analizar algunas entradas más de la PDT y asignaría la
partición 5, resultando una fragmentación interna de 30 Kb, que no podrán ser utilizadas.
Si él número de particiones fijas es pequeño, las diferencias en tiempo de ejecución entre los
dos métodos, no será significativo.
En general la demanda de particiones debe proceder de dos fuentes principales:


La creación de nuevos procesos.
La reactivación de procesos que anteriormente fueron descargados dinámicamente.
El módulo de gestión de memoria intenta satisfacer estas peticiones, con la reserva de
particiones libres, sin embargo, hay ciertas situaciones en las que el gestor no puede hacerlo así:


Ninguna partición es suficientemente grande para contener el proceso entrante.
Todas las particiones están asignadas.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
18
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL

Algunas particiones están libres, pero ninguna de ellas, es suficientemente grande para
contener el proceso entrante.
Si el proceso que va a ser creado es demasiado grande, para encajar en cualquiera de las
particiones del sistema, se emitirá un mensaje de error. Esta situación es básicamente un error de
diseño, que puede ser remediado volviendo a definir las particiones de una manera más adecuada.
Otra opción es reducir los requerimientos de memoria por parte del programa, codificándolo de
nuevo o también utilizando la técnica de superposición.
El caso de que todas las particiones estén asignadas, se puede resolver aplazando la carga del
proceso, hasta que una partición adecuada, le pueda ser asignada. Una alternativa podría ser, forzar
a un proceso residente en memoria a abandonarla, para dejar disponible una partición
suficientemente grande, para almacenar el proceso.
Ambos, aplazamiento y descarga dinámica, son también aplicables para resolver el tercer
caso, donde hay particiones libres pero son inadecuadas.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
19
Si optamos por el aplazamiento, el rendimiento en cuanto a la utilización de la memoria será
alto, si el sistema operativo continua asignando particiones a otros procesos, que están en la cola de
espera y cuyos requerimientos de memoria son menores, sin embargo, haciendo esto se puede violar
el orden de activación de procesos, propuesto por el algoritmo de planificación y posteriormente
puede afectar al funcionamiento del sistema.
Las situaciones descritas ilustran la estrecha relación e interacción entre la gestión de
memoria y la planificación de los procesos, por parte del sistema operativo.
En estos sistemas con particionamiento estático de la memoria, él número de particiones
establece, él limite mayor de procesos residentes en memoria y por lo tanto, el grado de
multiprogramación.
Dentro del límite, la utilización de la CPU puede ser mejorada incrementando la proporción
entre procesos disponibles y residentes, esto puede ser llevado a cabo, retirando de la memoria los
procesos bloqueados temporalmente, cuando existan procesos listos para ser cargados en las
particiones ocupadas por aquellos.
Un proceso retirado es normalmente guardado en el almacenamiento secundario, hasta que
todos los recursos que necesita para su ejecución, excepto la memoria y la CPU, puedan serle
asignados.
DESCARGA DINÁMICA.
Consiste en retirar de la memoria los procesos que están bloqueados y su subsiguiente
regreso, cuando los recursos que necesita para su ejecución, a excepción de la memoria y la CPU, le
son concedidos.
La descarga dinámica, se utiliza para implementar la multiprogramación, en sistemas con
una memoria restrictiva, también puede ser provechosa para mejorar la utilización de la CPU, en
entornos de memoria particionada, incrementando la proporción entre procesos preparados y
residentes.
Cuando el planificador decide admitir un nuevo proceso, para el cual no se ha podido
encontrar una partición adecuada, se produce la descarga dinámica de uno de los procesos
bloqueados, que ocupe una partición suficientemente grande, para satisfacer las necesidades del
proceso entrante.
Para realizar la elección del proceso, que abandonará la memoria y pasará al almacenamiento
secundario, se tendrá en cuenta, además de la capacidad de la partición, la prioridad del proceso, que
recursos que está esperando, ya que si el recurso que le mantiene en espera, es un recurso lento,
existe una cierta probabilidad de que este proceso este suspendido, durante un periodo de tiempo
más largo.
Otra consideración que se deberá tener en cuenta, en la elección del proceso que abandonará
la memoria, será el tiempo que lleva ese proceso en la memoria, con objeto de evitar la retirada de la
memoria de un proceso inmediatamente después de su admisión.
Un proceso está típicamente preparado para la ejecución y sometido al sistema operativo en
forma de archivo, que contiene un programa en formato ejecutable y los datos relacionados con él,
además de la pila necesaria para guardar las direcciones de las llamadas y regresos a los distintos
procedimientos que componen el programa.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
20
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Este proceso puede también contener, atributos del proceso tales como: prioridad,
requerimientos de memoria, etc. que figuran en el bloque de control del espacio denominado
proceso imagen.
El archivo de descarga del sistema se crea en el momento de la creación del proceso y esta
situado en un soporte del almacenamiento secundario, que utiliza el sistema operativo y que
normalmente suele ser el más rápido, para reducir así el tiempo de intercambio.
Independientemente del tipo de archivos de descarga utilizados, la necesidad de acceder a la
memoria secundaria, hace que la descarga dinámica sea una operación lenta, si es comparado, con el
tiempo de ejecución de una instrucción por parte de la CPU.
Así por ejemplo, la descarga de un proceso de 256 KB, utilizando un disco con un tiempo de
posicionamiento medio de 8 msg, un tiempo de latencia medio de 2 msg. La velocidad de
transferencia es de 5Mb/seg, consume por termino medio 10 msg en posicionar las cabezas de
lectura/escritura para comenzar la transferencia que tardará al menos 50 msg en completarla.
5 * 2 20 --------- 1000 msg
256 * 2 10 ------
x=
2 8 * 2 10 * 1000 1000

 50msg
20
5 * 2 20
x
La carga de otro proceso de 256 Kb en la partición vacía, puede llevar otros 60 msg. El tiempo
total será de 120 msg. Durante este tiempo, al menos, 256 Kb de memoria principal están inactivos,
por tanto, será preciso tenerlo en cuenta, cuando se decide realizar una descarga dinámica.
Un asunto importante en los sistemas que soportan la descarga dinámica, es si la relación
entre el proceso y la partición es estática o dinámica, es decir, si un proceso que fue descargado,
puede ahora ser cargado, solo en la partición especifica desde la que fue retirado o por el contrario,
en cualquier partición del tamaño adecuado.
En general, esta relación es estática en los sistemas con particionamiento estático de la
memoria, independientemente de que la descarga dinámica sea soportada o no. En los procesos que
no están permanentemente ligados a una partición especifica, son mucho más flexibles y tienen
mayor capacidad para hacer un uso eficiente de la memoria.
REUBICACIÓN DE MEMORIA.
El concepto de reubicación de memoria, se refiere a la capacidad de cargar y ejecutar un
programa dado, en un lugar arbitrario de la memoria.
Durante ejecuciones diferentes de un mismo programa, pueden ser asignadas direcciones de
carga diferentes, por tanto, es preciso distinguir, una dirección lógica o virtual, que es la que percibe
el usuario, de una dirección física o real, que es el lugar de la memoria, donde el programa y sus
datos son almacenados, durante una determinada ejecución.
Más específicamente, podríamos decir, que las direcciones lógicas o virtuales son
identificaciones usadas para referenciar la información, dentro del espacio de direcciones de un
proceso, mientras que las direcciones físicas, designan la posición actual de la memoria real, donde
los elementos de información son almacenados en tiempo de ejecución.
Dependiendo de cuando y como tiene lugar, la proyección desde el espacio de direcciones
lógicas o virtuales, hacia el espacio de direcciones físicas o reales, en un esquema de reubicación
dado, la reubicación del programa, puede ser considerada como estática o dinámica.
La reubicación estática implica, que la reubicación es llevada a cabo, durante la carga del
programa en memoria, por un programa que se denomina cargador reubicable.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
21
El programa traductor normalmente prepara él modulo objeto, suponiendo que la dirección
física cero, es la dirección de comienzo del programa.
Cuando el programa es cargado en la memoria por el módulo del sistema operativo
denominado cargador, todas las posiciones del programa, que necesitan reubicación, son
modificadas de acuerdo con la dirección física de la memoria, que le ha sido asignada al proceso.
Una vez que el proceso está en memoria los valores que necesitan reubicación, no se
distinguen de aquellos que no la necesitan, por lo tanto, los valores de reubicación se pierden
después de la carga y un programa reubicable estáticamente, ejecutado en parte en un área de
memoria, no puede ser trasladado a otra y esperar que continúe ejecutándose correctamente.
En consecuencia, en sistemas con reubicación estática, un proceso que fue descargado
dinámicamente, debe ser cargado, en la misma partición de memoria, donde estaba situado, antes de
que se realizara la descarga dinámica.
La reubicación dinámica, implica que la proyección del espacio de direcciones lógicas o
virtuales, en el espacio de direcciones físicas o reales, es llevado a cabo en tiempo de ejecución,
normalmente con alguna asistencia del hardware de la maquina.
Los procesos imagen en sistemas con reubicación dinámica, se preparan también,
suponiendo que la dirección de comienzo es la dirección lógica o virtual cero y se cargan en la
memoria sin ninguna modificación debida a la reubicación.
Cuando dichos procesos son ejecutados, todas sus referencias a memoria son reubicadas
durante la ejecución de las instrucciones, antes de que se acceda a la memoria física o real. Este
proceso es implementado, por medio de un registro base, que contiene la dirección física de la
memoria, donde está cargado el proceso y este valor se obtiene de la correspondiente tabla de
descripción de particiones (PDT).
Cada referencia a memoria generada por la ejecución del proceso, se convierte en la
correspondiente dirección física, con solo sumarle el contenido del registro base.
1.000
100
CPU
1.100
+
DIRECCIÓN
LÓGICA
1.000
DIRECCIÓN
FÍSICA
P IMAGEN
MEMORIA
Un proceso imagen preparado suponiendo que la dirección de comienzo es la dirección
lógica o virtual cero, se mantendrá inalterada, antes y después de ser cargado en la memoria.
La reubicación dinámica, hace posible mover un proceso parcialmente ejecutado en un área
de memoria a otra, sin que se produzcan inconvenientes de direccionamiento, en los accesos a las
instrucciones y datos en el nuevo espacio.
Esta característica es muy provechosa para mantener la descarga dinámica, sin tener que
ligar los procesos a las particiones y por tanto, podrá ser utilizado en el particionamiento dinámico,
que estudiaremos posteriormente.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
22
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
PROTECCIÓN Y USO COMPARTIDO.
La integridad o la protección de un sistema de multiprogramado, depende entre otras cosas,
del aislamiento de los distintos espacios de direcciones, es decir no solamente, el sistema operativo
debe ser protegido de intromisiones no autorizadas por parte de los procesos de usuario, sino que
cada proceso, debe estar prevenido contra los accesos que accidentalmente o intencionadamente se
puedan realizar en áreas de memoria asignadas a otros procesos.
El acceso incontrolado al espacio de memoria de un proceso, además de causar frecuentes
problemas en el funcionamiento del sistema, se pueden producir interacciones no deseadas entre
procesos que están intermitentes y que son difíciles de detectar, ya que las consecuencias pueden
manifestarse mucho tiempo después, de que el proceso deteriorado haya abandonado el sistema,
produciendo de esta manera, errores en otros procesos.
Estas consideraciones nos indican que las operaciones multiusuario, no deberían ser
proporcionadas en sistemas que no dispongan de un adecuado sistema de protección de memoria.
Normalmente, para un sistema de particionamiento estático, la protección de memoria puede
estar implementada por los mecanismos generales de protección por software, basados en la
utilización de registros base y registros límite, que proporcionan el debido aislamiento de los
espacios de direcciones existentes, tanto al sistema operativo como a los restantes procesos.
Otro método de protección es por hardware, que consiste en grabar los derechos de acceso en
el propio espacio de la propia memoria. El método de un bit por cada dirección de memoria, ya
descrito anteriormente, no es apropiado para los sistemas de multiprogramados, porque se pueden
separar solamente dos espacios de direcciones distintos.
Este problema puede ser resuelto, añadiendo más bits para designar la identidad de cada
dirección de memoria, pero esto sería muy costoso. Una versión más económica, consiste en asociar
varios bits a la protección de grandes bloques de memoria, así por ejemplo, algunos sistemas
utilizan cuatro bits, denominados clave de protección, por cada bloque de memoria de 1 Kb, 2 kb, 4
kb, etc. De esta manera, cuando el proceso es cargado en memoria, su identidad es grabada en los
bits de protección de los bloques que ocupa.
La validación de las referencias de memoria es establecida en tiempo de ejecución,
comparando la identidad del proceso que se está ejecutando, con el contenido de los bits de
protección del bloque de memoria, que está siendo accedido, por lo tanto si no coinciden, el acceso
se considerará ilegal.
Al sistema operativo se le asigna una clave maestra única, es decir cero, que le da acceso sin
ninguna restricción a todos los bloques de memoria.
La manera más fácil de implementar el uso compartido, es confiar los objetos compartidos al
sistema operativo, ya que la utilización del sistema operativo para controlar el acceso a los recursos
compartidos y el mecanismo para invocar los servicios del sistema operativo, no necesitan
incorporar ningún suministro adicional, para soportar el uso compartido.
Esta forma tan simple de abordar esta cuestión, no es muy conveniente por las razones que
exponen a continuación:



Estimula el crecimiento del sistema operativo.
El código adicional que se incorpora al sistema operativo, consigue el mismo nivel de
fiabilidad y privilegio que tiene el núcleo, cuyo comportamiento es sumamente fiable.
El fragmento de código que se obtiene, veda todas las reglas del desarrollo, prueba y
mantenimiento de la programación.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
23
Normalmente la mayoría de los sistemas, permiten la incorporación de rutinas escritas por el
usuario dentro del sistema operativo, pero solamente durante el proceso de generación del sistema,
por lo tanto, no siendo de esta manera, el uso compartido en los sistemas de particionamiento fijo de
la memoria es bastante difícil, por la utilización de los mecanismos de protección expuestos
anteriormente, basados fundamentalmente en el aislamiento de los distintos espacios de direcciones.
Una solución sencilla del problema pero altamente costosa, es tener una copia física de los
objetos compartidos, en cada espacio de direcciones de los procesos que los utilizan, de esta
manera, no hay accesos comunes, es decir, cada proceso se ejecuta usando su proyección local de
los objetos compartidos, por lo tanto, cuando se hace una modificación en el objeto compartido, esta
debe ser propagada por todas las copias, para guardar la consistencia entre ellas.
El sistema operativo se encarga de copiar los datos compartidos, desde el espacio de
direcciones del proceso en ejecución a todas las particiones que participan.
Realmente esta solución no tiene mucho sentido, ya que no proporciona ningún ahorro de
memoria.
ASIGNACIÓN DINÁMICA DE LA MEMORIA PARTICIONADA.
La fragmentación interna y otros problemas atribuibles al particionamiento estático de la
memoria, como pueden ser la introducción de procesos de gran tamaño, pueden ser solucionados
definiendo las particiones dinámicamente, de acuerdo con los requerimientos de cada proceso.
Partiendo del estado inicial del sistema, las particiones deben ser creadas dinámicamente,
para adaptarse a las necesidades de cada proceso solicitante, por lo tanto, cuando un proceso termina
o es descargado dinámicamente, el gestor de memoria devuelve el espacio desocupado al área de
memoria libre, desde la cual se realizan las asignaciones de memoria a los procesos que la van
solicitando.
En principio, ni el tamaño ni el número de particiones de memoria asignadas
dinámicamente, necesita ser limitado en tiempo de generación del sistema o en cualquier otro
momento y prácticamente, el gestor de memoria, puede seguir creando y asignando particiones a los
procesos que lo solicitan, hasta que toda la memoria física este ocupada o bien hasta que se haya
alcanzado el grado máximo de multiprogramación.
Este último limite, debe ser establecido en algunos sistemas, por las restricciones en el
diseño de la longitud de las colas en el bloque de control de trabajo (PCB) y otras estructuras de
datos utilizadas por el sistema operativo.
PARTICIONAMIENTO DINÁMICO.
Con objeto de determinar la especificación de las estructuras de datos necesarias, para
soportar la definición y asignación dinámica de las particiones, se estudiará brevemente la
naturaleza de las operaciones, que un gestor de memoria de este tipo tiene que realizar.
Cuando el gestor de memoria recibe la orden de cargar un proceso imagen, el módulo de
gestión de memoria del sistema operativo, intenta crear una partición de memoria adecuada, para
asignársela al proceso en cuestión.
El primer paso en esta actividad, es localizar un área contigua de memoria libre, si la
hubiera, de tamaño igual o mayor al del proceso que la solicita. Si esta área libre es encontrada, el
módulo de gestión de memoria obtiene de esta zona, una partición del tamaño exacto dictado por las
necesidades del proceso y se introduce su base, tamaño y estado en la tabla de descripción de
particiones (PDT).
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
24
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
El sistema operativo controla el espacio disponible en memoria, mediante una estructura de
datos, denominada lista de fragmentos disponibles, que consiste en una tabla en la que en cada
entrada se almacenan la dirección física de comienzo y él número de posiciones libres.
Cuando un proceso residente en la memoria termina o es descargado dinámicamente, el
sistema operativo libera la partición asociada a él y devuelve el espacio ocupado por la partición a la
lista de fragmentos disponibles.
Teniendo en cuenta la relación que existe entre la PCB (Bloque de control de procesos) y la
(Tabla de Descripción de Particiones), para determinar la situación de un proceso, cuando el
proceso es descargado dinámicamente, el sistema operativo anula el campo de la PCB, donde
normalmente es guardada la identidad de la partición asignada.
PDT
Supongamos que tenemos un espacio de 2.500 Kb de memoria disponible y un sistema
operativo residente de 400 Kb. Esta situación reflejada en la figura (a), deja 2.100 Kb para los procesos
de usuario, que están situados en una cola de entrada como la que se expresa a continuación:
Procesos
P1
P2
P3
P4
P5
Memoria
Tiempo de CPU
600 Kb
1.000 Kb
300 Kb
700 Kb
500 Kb
10
5
20
8
15
A partir de la cola de entrada expresada anteriormente y con una planificación de trabajos
FCFS, podemos asignar memoria de inmediato a los procesos P1, P2 y P3 y nos quedará un espacio de
200 Kb, que no es suficiente para contener ninguno de los procesos restantes de la cola de entrada.
Esta situación queda reflejada en la figura (b).
0K
0K
S. O.
400 K
0K
S. O.
400 K
0K
S. O.
0K
S. O.
0K
S. O.
400 K
400 K
400 K
400 K
P1
1000 K
P1
1000 K
Libre
1000 K
900 K
S.O.
P5
P1
1000 K
P2
2000 K
Libre
2000 K
P3
2300 K
2500 K
2500 K
(a)
Libre
(b)
P4
1700 K
2000 K
P3
2300 K
2500 K
(c)
Libre
2300 K
2500 K
(d)
Libre
P3
Libre
1700 K
2000 K
2300 K
2500 K
(e)
1000 K Libre
P4
Libre
P4
1700 K Libre
2000 K
P3
P3
2300 K
Libre
2500 K
Libre
(f)
Utilizando un algoritmo de planificación circular de la CPU, con un cuanto de una unidad de
tiempo, el proceso P2 terminará en el instante 14, por haber consumido 5 unidades de tiempo,
liberando su asignación de memoria. Esta situación está representada en la figura (c), volviendo a la
cola de trabajos iniciamos el proceso P4, obteniendo la situación de la figura (d).
El proceso P1 terminará en el instante 28, cuando cumpla las 10 unidades de tiempo y
producirá la situación (e), en cuyo momento, se iniciará el proceso P5, que da como resultado la
situación (f).
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
25
Este ejemplo ilustra varios puntos, ya que en cualquier momento hay un conjunto de
espacios de distintos tamaños y dispersos por toda la memoria. La tabla de segmentos disponibles
tiene que reflejar los espacios disponibles correspondientes a cada una de las situaciones
anteriormente citadas:
SITUACIÓN
DIRECCIÓN FÍSICA
DE COMIENZO
POSICIONES
LIBRES
(a)
400
2100
(b)
2300
200
(c)
1000
2300
1000
200
(d)
1700
2300
300
200
(e)
400
1700
2300
600
300
200
(f)
900
1700
2300
100
300
200
Cuando llega un proceso y necesita memoria, buscamos en ese conjunto, un espacio con el
tamaño suficiente para el proceso. Si el espacio es demasiado grande, se divide en dos y una parte se
le asigna al proceso que llega y la otra queda libre, en la tabla de fragmentos disponibles.
Cuando termina un proceso, libera su espacio de memoria, el cual pasa a la tabla de
fragmentos disponibles. Si el espacio que queda libre, es adyacente a otros espacios libres, se
fusionan formando un espacio mayor y a esta operación se la denomina combinación.
Cuando se realiza una combinación, es preciso comprobar si hay procesos esperando
memoria, que puedan ser introducidos en ese espacio.
Para la asignación dinámica de almacenamiento, el sistema operativo selecciona el más
adecuado en función de las siguientes estrategias:



Primer ajuste
Mejor ajuste
Peor ajuste
First-Fit.
Best-Fit.
Worst-Fit.
El primer ajuste, consiste en asignar el primer espacio disponible al proceso que lo solicita.
El mejor ajuste, consiste en asignar el espacio más pequeño, que tenga el tamaño suficiente
para albergar el proceso. Para ello es preciso recorrer toda la tabla de fragmentos disponibles, a
menos que dicha tabla esté ordenada por tamaño.
El peor ajuste, consiste en asignar el espacio más grande. En este caso también será
necesario recorrer la tabla completa.
Las simulaciones han demostrado, que tanto el primer ajuste como el mejor ajuste, son
mejores que el peor ajuste, en cuanto a la reducción del tiempo y de la utilización del
almacenamiento.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
26
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Ni el primer ajuste ni el mejor ajuste son definitivamente superiores, uno respecto al otro, en
relación con la utilización del almacenamiento, pero por lo general, el primer ajuste es el más
rápido.
Estos algoritmos producen fragmentación externa conforme los procesos se cargan y se
extraen de la memoria, el espacio de memoria se divide en pequeñas partes. Dependiendo de la
cantidad total de memoria y del tamaño promedio de los procesos, la fragmentación externa puede
ser un problema mayor o menor. Así por ejemplo el análisis estadístico del primer ajuste revela que,
incluso con cierto perfeccionamiento, dados N bloques asignados, se perderán 0,5 bloques debido a
la fragmentación, es decir, un tercio de la memoria puede estar utilizada. A este estudio estadístico
se le conoce con el nombre de regla del 50 por ciento.
TABLA DE DESCRIPCIÓN DE PARTICIONES
SITUACIÓN
Nº DE PARTICIÓN
BASE
TAMAÑO
ESTADO
(b)
0
1
2
3
4
0
400
1000
2000
2300
400
600
1000
300
200
ASIGNADA
ASIGNADA
ASIGNADA
ASIGNADA
LIBRE
(c)
0
1
2
3
4
0
400
1000
2000
2300
400
600
1000
300
200
ASIGNADA
ASIGNADA
LIBRE
ASIGNADA
LIBRE
(d)
0
1
2
3
4
5
0
400
1000
1700
2000
2300
400
600
700
300
300
200
ASIGNADA
ASIGNADA
ASIGNADA
LIBRE
ASIGNADA
LIBRE
(e)
0
1
2
3
4
5
0
400
1000
1700
2000
2300
400
600
700
300
300
200
ASIGNADA
LIBRE
ASIGNADA
LIBRE
ASIGNADA
LIBRE
(f)
0
1
2
3
4
5
6
0
400
900
1000
1700
2000
2300
400
500
100
700
300
300
200
ASIGNADA
ASIGNADA
LIBRE
ASIGNADA
LIBRE
ASIGNADA
LIBRE
La fragmentación interna se produce normalmente en la asignación estática de la memoria,
pero en ciertas ocasiones, también se puede producir en la asignación dinámica de la memoria.
Supongamos que en un momento determinado la situación de la memoria es la siguiente:
S. O.
P1
ESPACIO DE 20.375 BYTES
P2
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
27
Si consideramos que la siguiente solicitud es de 20.370 Bytes, tendremos que al asignar dicha
solicitud, en el espacio existente, quedaría un espacio de 5 Bytes libres.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
28
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
El sistema operativo interpreta que el procesamiento adicional necesario para asignar ese
espacio ocuparía un espacio mayor que el propio espacio que está libre, además de la dificultad de
encontrar una solicitud de un espacio tan pequeña.
La estrategia general que utiliza el sistema operativo, consiste en asignar ese espacio tan
pequeño a la solicitud anterior, por lo tanto, en ciertas situaciones puede ocurrir que la memoria
asignada sea algo mayor que la memoria solicitada y producir así una pequeña fragmentación
interna que no se usará.
Resumiendo podríamos decir, que según van entrando los procesos en el sistema, se van
colocando en una cola de entrada, en espera de que el planificador a largo plazo, teniendo en cuenta
los requisitos de memoria de cada proceso y la cantidad de memoria disponible, determine a que
procesos se les asigna.
Cuando a un programa se le asigna espacio, se carga en memoria, se relocaliza si es
necesario y de esta manera puede competir por la asignación del procesador. Lógicamente, el
Planificador a largo plazo puede ordenar la cola de entrada de acuerdo con algún algoritmo de
planificación.
Con este esquema de gestión de memoria, se elimina en la mayor parte de los casos la
fragmentación interna, ya que las particiones se crean con el tamaño solicitado por el proceso, sin
embargo, si podemos tener fragmentación externa.
Examinando el conjunto de asignaciones anteriormente expuesto, podemos ver dos
situaciones de este tipo:


En la situación (b) se presenta una fragmentación externa de 260 K, un espacio demasiado
pequeño para satisfacer los requisitos de alguno de los procesos restantes P4 y P5.
En la situación (d), sin embargo, tenemos una fragmentación externa total de 560 K, es
decir, (300 K + 260 K), este espacio sería suficiente para ejecutar el proceso P5, que
requiere 500 K, pero esta memoria libre no es contigua, ya que está fragmentada en dos
partes, ninguna de la cuales tiene el tamaño suficiente para satisfacer la solicitud del
proceso P5.
Este problema de fragmentación puede ser grave, ya que se puede tener un bloque de
memoria libre entre cada dos procesos. La selección de la estrategia de primer ajuste y mejor ajuste,
puede afectar a la cantidad de fragmentación.
COMPACTACIÓN.
Una solución para el problema de la fragmentación externa es la compactación, que tiene por
objeto desplazar el contenido de la memoria hacia uno de los extremos para que toda la memoria
libre se sitúe en un solo espacio de gran tamaño.
Por ejemplo, en el conjunto de asignaciones expresado anteriormente, en la situación (f),
puede compactarse la memoria de la forma que se expresa a continuación:
0K
0K
S. O.
S. O.
400 K
400 K
P5
P5
900 K
900 K
100 K
P4
1000 K
P4
1600 K
COMPACTACIÓN
1700 K
P3
300 K
1900 K
2000 K
P3
2300 K
APUNTES DE SISTEMAS OPERATIVOS
600 K
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
29
200 K
2500 K
2500 K
Los espacios de 100 K, 300 K y 200 K pueden compactarse en un espacio de 600 K.
La compactación no siempre es posible, ya que para mover los procesos P3 y P4 y que
posteriormente, estos puedan ejecutarse en las nuevas posiciones, hay que reubicar todas las
direcciones internas.
Si la reubicación es estática, es decir, se realiza en el momento de la carga, la compactación
no puede realizarse, solamente será posible si la reubicación es dinámica y se efectúa por lo tanto,
en el momento de la ejecución.
Si las direcciones se reubican dinámicamente, solo será necesario trasladar el programa y los
datos y después cambiar el registro base para situar la nueva dirección de carga. Cuando la
compactación es posible, el algoritmo más sencillo consiste en mover todos los procesos hacia un
extremo de la memoria y todos los espacios libres se mueven en sentido contrario, produciendo un
gran espacio de memoria.
Este esquema de compactación puede ser bastante costoso, por tanto vamos a estudiar una
forma de realizar la compactación de menor coste con un ejemplo:
0K
0K
S. O.
300 K
0K
S.O.
300 K
P1
500 K
0K
S.O.
S.O.
300 K
P1
500 K
300 K
P1
P1
500 K
500 K
P2
600 K
P2
600 K
400 K
P2
600 K
P3
P2
600 K
P4
800 K
1000 K
1000 K
P3
1200 K
P4
1200 K
900 K
P3
1200 K
300 K
1500 K
1500 K
P4
900 K
900 K
P4
1900 K
1900 K
200 K
2100 K
P3
2100 K
ASIGNACIÓN
ORIGINAL
2100 K
SE MUEVEN
600 K
2100 K
SE MUEVEN
400 K
SE MUEVEN
200 K
También se puede combinar el intercambio con la compactación, ya que un proceso puede
descargarse de la memoria principal al almacenamiento secundario y reincorporarse más tarde.
Cuando el proceso se descarga, se libera su memoria y quizá el espacio se pueda utilizar para otro
proceso.
Cuando el proceso tiene que reincorporarse por intercambio, pueden aparecer varios
problemas:
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
30
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL


Si se utiliza la reubicación estática, el proceso debe reincorporarse exactamente a las
mismas posiciones de memoria que ocupaba anteriormente, esta restricción puede
requerir, que todos los demás procesos se descarguen para liberar esa memoria.
Si se emplea reubicación dinámica, entonces el proceso se puede reincorporar a una
localidad cualquiera de la memoria.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
31
Una estrategia que se puede utilizar para la compactación, consiste en descargar los procesos
que hay que mover y reincorporarlos a localidades de memoria diferentes. Si los intercambios o la
técnica de descargar y reincorporar los procesos, ya forma parte del sistema, el código adicional para
la compactación puede ser mínimo.
PROTECCIÓN Y USO COMPARTIDO.
El problema principal que se produce, con el esquema de particiones de tamaño variable es
la fragmentación externa. Una forma de reducir la fragmentación externa, consiste en dividir en
varias partes la memoria que necesita un proceso, de esta manera cada parte, es menor que la
memoria ocupada por el proceso completo, por lo tanto, siempre será más fácil de acomodar en la
memoria.
Para utilizar esta estrategia hay que proporcionar varios pares de registros base y registros
límite, con un mecanismo apropiado, para traducir las direcciones lógicas a direcciones físicas. Una
forma de lograr esto, consiste en dividir la memoria en dos partes disjuntas y el sistema establecerá
dos pares de registros base y limite, para ello, la memoria se divide por la mitad utilizando el bit de
dirección de orden superior.
La memoria baja, se puede relocalizar y limitar, usando el par cero de registros base y límite,
la memoria alta se podría relocalizar y limitar, utilizando el par uno de registros base y limite. Por
convención o diseño, los compiladores y ensambladores colocan valores de solo lectura, es decir,
constantes e instrucciones, en la memoria alta y las variables en la memoria baja.
Así se puede asociar una protección diferente a cada par de registros asegurando, que la
memoria alta sea solo de lectura. Esta disposición permite compartir programas almacenados como
de solo lectura en la memoria alta entre varios procesos de usuario, cada uno con su propio
segmento en la memoria baja.
Una manera de lograr esto consiste en separar un programa en dos partes: código y datos. La
unidad de control del procesador al realizar la función de descodificación, sabe si quiere realizar la
búsqueda de una instrucción o bien la búsqueda o almacenamiento de datos, por lo tanto, se
proporcionan dos pares de registro base y limite, uno para las instrucciones que será solo de lectura
y otro para los datos, de esta manera se podrán compartir los programas entre los distintos usuarios.
Con estos esquemas, al separar programas y datos, realizando la relocalización por separado,
podemos compartir programas entre varios usuarios, utilizando así mejor la memoria y reduciendo
tanto la fragmentación como las copias múltiples del mismo código, en especial, el código de uso
común como el de compiladores, editores, etc.
Para finalizar la descripción realizada del particionamiento de la memoria, se puede
observar, que tanto las particiones de tamaño fijo, como las de tamaño variable, hacen un uso
ineficiente de la memoria, las primeras generan fragmentación interna, mientras que las segundas
originan fragmentación externa.
A continuación vamos a estudiar los esquemas de gestión de memoria basados en la
asignación de memoria no contigua, que tienen por objeto, asignar las distintas partes de un objeto
lógico a áreas no contiguas de la memoria física. La traducción de direcciones, efectuada durante la
ejecución de las instrucciones, establece la correspondencia necesaria, entre un espacio lógico
contiguo y las direcciones físicas de la memoria no contiguas, que determinan las posiciones reales,
en donde residen los objetos en la memoria física, durante el tiempo de ejecución.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
32
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
El objetivo principal de estos esquemas de gestión de memoria, será conseguir una mejor
utilización de la memoria, reduciendo, tanto la fragmentación interna como la fragmentación
externa.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
33
LA SEGMENTACIÓN.
La generalización del concepto de dividir la memoria en varias partes, definido
anteriormente, introduce un aspecto importante en la administración de la memoria, que consiste en
la separación de la perspectiva que el usuario tiene de la memoria lógica o virtual y la memoria
física o real.
La perspectiva que el usuario tiene de la memoria, se fundamenta en la organización lógica
de un programa en la actualidad, que no se corresponde con el concepto de la memoria física real,
pero si existe, una correspondencia entre la perspectiva del usuario y la estructura de la memoria
física, que permite establecer la diferencia entre la memoria lógica y la memoria física.
La memoria física está formada por un vector lineal de palabras, algunas con instrucciones y
otras con datos, sin embargo, el usuario no considera la memoria como un vector lineal de palabras,
si no más bien, como un conjunto de partes claramente definidas por la función que cumplen en el
desarrollo del programa.
Cada una de esas partes esta agrupada de tal forma, que puedan ocupar posiciones contiguas
de la memoria, pero las partes entre sí, pueden estar separadas y en cualquier orden. Al espacio que
ocupan cada una de esas partes es a lo que se denomina segmento.
Un programa desde el punto de vista del usuario, está formado por un módulo principal y
varios secundarios, los cuales utilizan unos módulos de código y unas estructuras de datos
determinadas. Cada uno de los módulos o partes del programa tiene un nombre, que define el
usuario sin preocuparse por las direcciones que estas partes van a ocupar en la memoria.
Cada una de esas partes ocupa un segmento, que tiene una longitud variable y que está
definida intrínsecamente por el propósito de ese segmento en el programa. Los elementos de
información que contiene un segmento, se identifican por su desplazamiento, a partir del inicio del
segmento correspondiente.
Teniendo en cuenta estas consideraciones, la dirección de un elemento de información
determinado, deberá indicarse dando el nombre del segmento y el desplazamiento dentro de él. El
nombre del segmento el sistema operativo lo convertirá en un numero y de esta forma la dirección
vendrá expresada por los siguientes componentes: (s,d)
s
d
Nombre del segmento.
Desplazamiento dentro de él.
La segmentación es un esquema de administración de memoria, que se apoya en la
perspectiva que el usuario tiene de la memoria.
MODULO
PRINCIPAL
1.000 K
SEGMENTO 0
MODULO 1
400 K
SEGMENTO 1
MEMORIA LÓGICA
ESTRUCTURAS
DE DATOS 1
1.100 K
DE UN PROCESO
SEGMENTO 3
MODULO 2
500 K
ESTRUCTURAS
DE DATOS 2
1.000 K
SEGMENTO 2
SEGMENTO 4
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
34
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Un espacio de direcciones de un programa, se compone de un conjunto de segmentos, cada
uno de los cuales tiene un nombre y una longitud. Cuando un programa de usuario se traduce, el
compilador construye automáticamente los segmentos que constituyen el programa de entrada.
Los antiguos procesadores 8086 utilizaban la segmentación como único esquema de
administración de la memoria.
COMO ACTÚA LA SEGMENTACIÓN.
Aunque el usuario se puede referir a los objetos de un programa utilizando direcciones
lógicas bidimensionales, la memoria física real sigue siendo una secuencia unidimensional de bytes
o palabras.
Por todo ello, debemos definir una forma de implantar la correspondencia entre direcciones
lógicas bidimensionales, definidas por el usuario y direcciones físicas unidimensionales. Esta
correspondencia se logra por una estructura de datos que se denomina tabla segmentos.
0
DIRECCIÓN DE UN SEGMENTO
(s,d)
1.200
SEGMENTO 0
N. SEGMENTO
LONGITUD
BASE
2.200
(STBR)
0
1.000
1.200
1
400
6.300
2
500
4.300
3.200
SEGMENTO 3
4.300
3
1.100
3.200
SEGMENTO 2
4.800
(STLR)
4
1.000
4.700
SEGMENTO 4
TABLA DE SEGMENTOS
5.8 00
6.300
SEGMENTO 1
6.700
STBR
STLR
SEGMENT TABLE BASE REGISTER
SEGMENT TABLE LENGTH REGISTER
MEMORIA FÍSICA
A continuación se trata de exponer como se utilizan las tablas de segmentos teniendo en
cuenta que una dirección lógica tiene dos componentes:


Un numero de segmento (s).
Un desplazamiento (d).
S < STLR
SI
S
TABLA DE SEGMENTOS
STBR
NO
UCP
SEGMENT TABLE BASE REGISTER
S
(s,d)
LONG.
BASE
ERROR
STLR
d < LONG
SEGMENT TABLE LENGTH REGISTER
BASE
MEMORIA
SI
d
NO
ERROR
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
35
El número de segmento, se utiliza como índice en la tabla de segmentos, cada entrada en esta
tabla, tiene una base (s) que determina el comienzo del segmento y una longitud del segmento, el
desplazamiento (d) de la dirección lógica, debe estar entre 0 y la longitud del segmento, ya que si no
es así, se producirá un error de direccionamiento. Si el desplazamiento es valido, se suma a la base
del segmento para producir, la dirección de memoria física de la palabra deseada.
IMPLANTACIÓN DE LAS TABLAS DE SEGMENTOS.
La segmentación está estrechamente relacionada con los modelos de administración de
memoria por particiones, que hemos estudiado anteriormente, con la única diferencia de que un
programa puede estar formado por varios segmentos.
Como consecuencia del empleo de segmentos de distinto tamaño, el concepto de
segmentación, resulta similar a las particiones dinámicas y 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 las particiones dinámicas, radica en que con
segmentación, un programa puede ocupar más de una partición y estas no tienen necesidad de ser
contiguas. La segmentación elimina la fragmentación interna, pero como en las particiones
dinámicas, produce 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.
Las estrategias que se utilizan para la situación de los segmentos en la memoria, son las
mismas que se utilizan en las particiones dinámicas.
La segmentación es un concepto más complejo que las particiones, de esta manera, una tabla
de segmentos debe ubicarse en registros rápidos o en memoria, para poder hacer referencias a una
velocidad mayor y ahorrar tiempo en las operaciones que se necesitan para localizar un elemento
determinado.
Cuando un programa está formado por un gran numero de segmentos, será muy necesario
conservar la tabla de segmentos en memoria y establecer un registro base de la tabla de segmentos
(STBR), Segment Table Base Register, que apunta a la tabla de segmentos.
Así mismo, teniendo en cuenta, que el número de segmentos que utiliza el programa, puede
variar considerablemente, se usa un registro de longitud de la tabla de segmentos (STLR), Segment
Table Length Register.
Para una dirección lógica (s,d), primero comprobamos si el numero de segmento (s) es legal,
para lo cual S < STLR.
Posteriormente sumamos el número de segmento al STBR, que nos proporciona la dirección
(STBR + S) en memoria, de la entrada de la tabla de segmentos. Esta entrada se lee de la memoria y
continuamos como antes, comparamos el desplazamiento con la longitud del segmento y calculamos
la dirección física de la palabra deseada, como la suma de la base del segmento más el
desplazamiento.
PROTECCIÓN Y USO COMPARTIDO.
Una ventaja particular de la segmentación, es la asociación de la protección a los segmentos,
ya que cada uno de los segmentos representa una parte del programa, es probable que todos los
elementos de información del segmento, se utilicen de la misma manera, así, algunos segmentos
contendrán instrucciones y otros contendrán datos.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
36
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
En una arquitectura moderna las instrucciones no se modifican a sí mismas, es decir, el
código es reentrante, por lo tanto, los segmentos de instrucciones pueden definirse de solo lectura o
solo ejecución. El hardware de transformación de memoria, consultará los bits de protección
asociados a cada entrada de la tabla de segmentos, para evitar accesos ilegales a la memoria, como
un intento de escribir en un segmento de solo lectura o utilizar como datos un segmento de solo
ejecución.
Si colocamos esos bits en su propio segmento, el hardware de administración de memoria,
verificará automáticamente, que los índices de la tabla de segmento sean legales y no salgan de los
limites establecidos. De esta manera, el hardware detectará muchos errores comunes en los
programas, antes de que puedan causar serios daños.
Otra ventaja de la segmentación es la posible compartición de código o datos, de esta
manera, cada proceso tiene una tabla de segmentos asociada a su bloque de control de proceso
(PCB), utilizada por el despachador, para definir la tabla de segmentos del hardware, cuando se
asigna la UCP a este proceso.
Los segmentos se comparten, cuando las entradas de las tablas de segmentos de dos procesos
distintos, apuntan a las mismas localidades físicas
Por ejemplo vamos a considerar el uso de un editor de textos en un sistema de uso
compartido. Un editor completo puede ser bastante grande por lo tanto vamos a compartir la
situación del editor en la memoria entre los procesos de usuario P1 y P2.
40.000
EDITOR
segmento 0
EDITOR
segmento 0
LIMITE
BASE
20.000
40.000
60.000
DATOS 1
DATOS 1
segmento 1
4.000
60.000
64.000
segmento 1
90.000
DATOS 2
98.000
EDITOR
LIMITE
BASE
Segmento 0
segmento 0
20.000
40.000
segmento 1
8.000
90.000
MEMORIA FÍSICA
DATOS 2
segmento 1
LA PAGINACIÓN.
La paginación es un esquema de gestión de memoria muy utilizado actualmente, que
consiste en dividir la memoria principal, en bloques iguales de tamaño fijo y relativamente
pequeños, que se denominan marcos de pagina. De igual modo, los procesos se dividen también en
bloques de tamaño fijo y de igual tamaño que los de la memoria principal, que se denominan
páginas. De esta manera, las paginas en que se ha dividido un proceso, pueden asignarse a los
marcos libres de la memoria principal.
PROCESO
MEMORIA REAL
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
37
El modelo de paginación de la memoria es el que se representa a continuación:
Nº DE MARCO
0
1
PAGINA 0
PÁGINA 0
2
0
1
1
4
2
3
PAGINA 1
3
PÁGINA 2
3
4
PÁGINA 1
7
5
PAGINA 2
PAGINA 3
MEMORIA LÓGICA
TABLA DE PÁGINAS
6
7
PÁGINA 3
MEMORIA FÍSICA
En la figura que se expresa a continuación se presenta el apoyo del hardware necesario para
la utilización de la paginación:
DIRECCIÓN LÓGICA
DIRECCIÓN FÍSICA
MEMORIA
UCP
p
d
m
d
FÍSICA
NO
SI
P<PTLR
PTBR
ERROR
PTLR
PAGE TABLE BASE REGISTER
PAGE TABLE LENGTH REGISTER
PTBR
PTLR
TABLA DE PAGINAS
Cada dirección lógica generada por el procesador de divide en dos partes: un número de
pagina (p) y un desplazamiento en la página (d). El número de página se utiliza como índice en una
tabla de páginas, que contiene el número del marco de la memoria física, que contiene esa página.
La dirección física se consigue, multiplicando el número del marco por su tamaño y se le suma el
desplazamiento en la página, obteniendo de esta manera una dirección de memoria física o real.
Tanto el tamaño de la página como el tamaño del marco, esta definido por el hardware y
además es preciso añadir, que el tamaño de la página generalmente es una potencia de 2,
dependiendo todo ello de la arquitectura del ordenador. La selección de una potencia de 2 como
tamaño de página, facilita la traducción de una dirección lógica a un número de marco y un
desplazamiento dentro del marco.
Si el tamaño de la página es 2 n unidades de direccionamiento, que pueden ser bytes o
palabras, entonces, los n bits de orden inferior de la dirección lógica representan el desplazamiento
en la página y los bits restantes de orden superior indican el número de página.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
38
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Un ejemplo sencillo seria el siguiente:
0
1
2
3
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
0
16
4
0
5
1
6
2
1
3
8
2
TABLA DE PÁGINAS
12
20
I
J
K
L
M
N
P
Q
24
A
B
C
D
E
F
G
H
28
32
MEMORIA LÓGICA
MEMORIA FÍSICA
32 PALABRAS = 8 PAGINAS
TAMAÑO DE PÁGINA = 4 PALABRAS
Utilizando un tamaño de página de 4 palabras y una memoria física de 32 palabras, es decir,
ocho páginas, se muestra un ejemplo de como puede efectuarse la correspondencia entre la memoria
lógica desde el punto de vista del usuario y la memoria física.
P = 0
DIRECCIÓN LÓGICA 0 = 0000 =
MARCO = 5
DIRECCIÓN FÍSICA = (5 * 4) + 0 = 20
MARCO = 6
DIRECCIÓN FÍSICA = (6 * 4) + 0 = 24
MARCO = 1
DIRECCIÓN FÍSICA = (1 * 4) + 2 = 6
MARCO = 2
DIRECCIÓN FÍSICA = ( 2 * 4) + 1 = 9
D =0
P =1
DIRECCIÓN LÓGICA 4 = 0100 =
D 0
P = 2
DIRECCIÓN LÓGICA 10 = 1010 =
D =2
P = 3
DIRECCIÓN LÓGICA 13 = 1101 =
D = 1
Se puede observar que la paginación es una forma de relocalización dinámica, es decir, cada
dirección lógica esta enlazada a la dirección física, mediante el hardware de paginación, siendo la
paginación semejante al uso de una tabla de registros base, uno para cada marco de memoria.
La utilización de este esquema de gestión de memoria permite asegurar, que no se va a
producir fragmentación externa, ya que cualquier marco libre, se puede asignar al proceso que lo
necesite y que solo se producirá una pequeña fragmentación interna, en la última pagina del proceso,
ya que los marcos se asignan como unidades, por lo tanto, si los requisitos de memoria de un
proceso, no coinciden con los limites de las paginas, el último marco asignado puede estar
parcialmente vacío.
Así por ejemplo, si las páginas son de 2.048 bytes, un proceso de 10.760 bytes, necesitaría 5
páginas más 520 bytes, lógicamente al proceso se le asignarían 6 marcos completos y se produciría
una fragmentación interna de 1.528 bytes.
10.760 / 2.048 = 5 + 520 / 2.048
Fragmentación Interna = 2.048 – 520 = 1.528.
En el peor de los casos, un proceso necesitaría n páginas, más una palabra, en este caso, se le
asignarían n + 1 marcos, produciendo una fragmentación interna de casi un marco completo. Se
puede decir, que si el tamaño del proceso es independiente del tamaño de página, se puede esperar
una fragmentación interna de media pagina por proceso.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
39
Esta consideración nos indica, que son deseables tamaños de pagina pequeños, para
disminuir la fragmentación interna, pero lógicamente aumentaría el número de entradas en la tabla
de páginas, que disminuiría si las páginas son más grandes.
Supongamos que en un instante dado, una serie de marcos de la memoria están en uso y
otros están libres, lógicamente, el módulo de gestión de memoria del sistema operativo, debe
mantener una lista de marcos libres.
Cuando un proceso llega para ejecutarse el planificador a largo plazo examina su tamaño, el
cual estará expresado en páginas, a continuación el planificador comprueba la memoria disponible
en la lista de marcos libres.
Cada página del proceso necesita un marco, por lo tanto, si el proceso esta formado por n
páginas debe haber n marcos disponibles en la memoria, si existen, el planificador a largo plazo se
los asignará al proceso, creando una tabla de páginas que establecerá la correspondencia entre las
páginas del proceso y los marcos de la memoria donde están situadas esas páginas.
De esta manera, la primera página del proceso se carga en uno de los marcos asignados y el
número del marco se registra en la tabla de páginas creada para ese proceso, la siguiente página se
carga en otro marco y su número de marco se coloca en la tabla de paginas y así sucesivamente.
LISTA DE MARCOS LIBRES
LISTA DE MARCOS LIBRES
13
14
13
18
20
15
15
13
PAGINA 1
14
14
PAGINA 0
NUEVO PROCESO
PAGINA
PAGINA
PAGINA
PAGINA
0
1
2
3
15
15
16
16
17
0
14
1
13
2
18
3
20
17
18
19
20
18
PAGINA 2
19
TABLA DE PAGINAS
DEL NUEVO PROCESO
20
PAGINA 3
21
21
Cada sistema operativo tiene sus propios métodos para almacenar las tablas de páginas y la
mayoría asigna una tabla de páginas para cada proceso. En el bloque de control de proceso se
almacena un apuntador a la tabla de páginas y cuando al despachador se le indica que inicie un
proceso debe volver a cargar la tabla de páginas correspondiente.
IMPLANTACIÓN DE LA TABLA DE PÁGINAS.
La implantación mediante hardware de la tabla de páginas, se puede realizar mediante un
conjunto de registros dedicados de muy alta velocidad, para que la traducción de direcciones sea
muy eficiente, ya que cada acceso a memoria debe pasar por la tabla de páginas, por lo tanto, la
eficiencia es un elemento principal.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
40
APUNTES DE SISTEMAS OPERATIVOS
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
41
La utilización de los registros de la tabla de páginas es satisfactoria si esta es razonablemente
pequeña, sin embargo, la mayoría de los ordenadores actuales permiten que la tabla de páginas sea
muy grande y en estas maquinas no es factible el uso de registros de alta velocidad para implantar la
tabla de páginas.
En este caso, la tabla de páginas se conserva en la memoria principal y se utiliza un registro
base de la tabla de páginas, PTBR (Page Table Base Register) que apunta a la tabla de páginas. Para
cambiar entre tablas de páginas, solo sería necesario modificar este registro, lo que reduce en gran
medida el tiempo de traducción.
El problema con este planteamiento, es el tiempo que se requiere, para acceder a una
localidad de memoria del usuario, ya que si se quiere llegar a la localidad i, primero debemos
utilizar el registro PTBR como base de la tabla de páginas y el número de página como
desplazamiento dentro de la tabla de páginas, para llegar al marco de memoria donde esta situada la
localidad i, que combinado con el desplazamiento dentro de la página, proporcionaría la dirección
buscada.
En este esquema se necesitan dos accesos a memoria para tener acceso a una palabra, uno
para la entrada de la tabla de páginas y otro para la palabra que se desea localizar, de esta manera, el
acceso a memoria se vuelve más lento por un factor de dos, demora que puede ser intolerable en la
mayoría de las circunstancias.
La solución común para este problema, consiste en utilizar una memoria especial de tamaño
pequeño, consistente en una serie de registros asociativos o buffers de traducción con búsqueda
anticipada TLB (Translation look-aside buffers).
Un conjunto de registros asociativos se construye con memoria de muy alta velocidad; cada
registro consta de dos partes: una clave y un valor. Cuando se presenta un elemento a los registros
asociativos, se compara simultáneamente con todas las claves y si el elemento se encuentra se
devuelve el valor correspondiente. La búsqueda es muy rápida pero el hardware es muy costoso.
Los registros asociativos se utilizan con las tablas de paginas de la forma que se expresa a
continuación:
DIR. ORIGEN DE
TABLA PÁGINAS
Nº PÁGINA
DESPLAZAMIENTO
DIR VIRTUAL
a
p
p
d
V = (p,d)
TLB
a+p
p
p’
d
p’
TABLA PÁGINAS
a
N MARCO
p’
p
DESPLAZAMIENTO
d
DIR. REAL
R = p’*Tp + d
p’
Los registros asociativos, es decir la TLB, contienen solo algunas de las entradas de la tabla
de páginas. Cuando el procesador genera una dirección lógica, su número de página se presenta al
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
42
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
conjunto de registros asociativos, que contienen como clave, el número de página y como valor, el
número de marco correspondiente.
Si el número de página se encuentra en los registros asociativos, su número de marco está
inmediatamente disponible y se utiliza para acceder a la memoria. Esta tarea puede consumir menos
del 10% del tiempo que se utilizaría en una referencia directa a memoria.
Si el número de página no se encuentra en los registros asociativos, entonces hay que
efectuar una referencia a la tabla de páginas, para obtener el número de marco que permita el acceso
a la memoria deseada. Además se añadirá, los números de página y marco a los registros
asociativos, para que puedan localizarse con rapidez en la siguiente referencia.
El porcentaje de ocasiones que se encuentra un número de página en los registros asociativos
se denomina tasa de aciertos. Una tasa de aciertos del 80% significa, que en los registros asociativos
se ha encontrado él número de página deseado, en un 80% de las ocasiones.
Si para buscar en los registros asociativos, se emplean 20 nanosegundos y 100 nanosegundos
para el acceso a memoria, entonces un acceso a memoria con correspondencia, requiere 120
nanosegundos cuando él número de página se encuentra en los registros asociativos.
Si él número de página no se encuentra en los registros asociativos, se consumirán 20
nanosegundos en dicho acceso, posteriormente acudir a la memoria para obtener la tabla de paginas
y el número de marco, que serian 100 nanosegundos más y por último acceder a la palabra deseada
de la memoria, que serian otros 100 nanosegundos, sumando un total de 220 nanosegundos.
Para determinar el tiempo de acceso efectivo a memoria, debemos de ponderar cada caso por
su probabilidad:
Tiempo de acceso efectivo = 0,80 *120 + 0,20 * 220 = 140 nanosegundos.
En este ejemplo, el tiempo de acceso a memoria es el 29% más lento, ya que pasa de 100 a 140
nanosegundos.
Para una tasa de aciertos del 90% tenemos:
Tiempo de acceso efectivo = 0,90 * 120 + 0,10 * 220 = 130 nanosegundos.
Esta tasa de aciertos mayor produce solo un aumento del 23% en el tiempo de acceso a
memoria. La tasa de aciertos esta evidentemente relacionada con él número de registros asociativos.
Así, con 16 a 512 registros asociativos puede obtenerse una tasa de aciertos del 80% al 98%, todo
depende del procesador que se esté utilizando.
PROTECCIÓN Y USO COMPARTIDO.
La protección de memoria en un entorno paginado, se puede lograr asociando una serie de
bits de protección a cada marco de página. Normalmente, estos bits se conservan en la tabla de
páginas y permiten definir si una página es de solo lectura, ejecución, actualización, etc.
Cada referencia a memoria pasa por la tabla de páginas para encontrar el número de marco
correcto, por lo tanto, al mismo tiempo que se calcula la dirección física, se puede consultar los bits
de protección, para verificar que no se efectúen actualizaciones en una página de solo lectura, si eso
ocurre, se produce una interrupción de hardware para el sistema operativo, consistente en una
violación de la protección de memoria.
Esta estrategia de protección puede ampliarse fácilmente, para ofrecer un nivel de protección
más fino, creando hardware para brindar protección de solo lectura, lectura/escritura, o de solo
ejecución, o bien, proporcionando bits de protección separados para cada tipo de acceso,
permitiendo cualquier combinación de estos accesos y produciendo una interrupción al sistema
operativo si se presenta algún intento de violación.
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
TEORÍA DE LOS SISTEMAS OPERATIVOS
43
APUNTES DE SISTEMAS OPERATIVOS
ANGEL GLEZ. DEL ALBA
44
GESTIÓN Y ADMINISTRACIÓN DE LA MEMORIA REAL
Es poco común que un proceso utilice todo su intervalo de direcciones, en realidad muchos
procesos, solo utilizan una pequeña fracción del espacio de direcciones del que disponen. En estos
casos, seria un derroche crear una tabla de paginas, con entradas para cada pagina del intervalo de
direcciones, ya que la mayor parte de esta tabla no se utilizaría, pero ocuparía un valioso espacio de
memoria.
Algunos sistemas ofrecen hardware que indica el tamaño de la tabla de paginas, a través de
un registro de longitud de la tabla de paginas, PTLR (Page Table Length Register). Este valor se
compara con cada dirección lógica, para asegurar que la dirección se encuentra en el intervalo
valido para el proceso, si no supera esta prueba se genera una interrupción para el sistema operativo.
Una de las ventajas de la Paginación es la probabilidad de compartir un código común, que
tiene especial importancia en un entorno de tiempo compartido. Para ello vamos a considerar un
sistema de tiempo compartido, que brinde servicio a 40 usuarios, cada uno de los cuales ejecuta un
editor de textos.
Si el editor de textos, consta de 150 K de código y 50 K de espacio de datos, necesitamos 8.000
K para apoyar a los 40 usuarios.
Si el código es reentrante, es decir, que no se puede modificar a sí mismo, en este caso el
código puede compartirse entre varios usuarios, pero cada proceso deberá tener su propio espacio
para contener los datos durante la ejecución, ya que esos datos variarán para cada proceso.
Solo es necesario conservar una copia del editor en la memoria física, por lo tanto, cada tabla
de páginas de los procesos de usuario, hará corresponder las páginas de cada proceso de usuario a la
misma copia física del editor, pero las páginas de datos, corresponderán a marcos de página
diferentes.
De esta manera para apoyar a los 40 usuarios, únicamente se requiere una copia del editor
(150 K), más 40 copias del espacio de datos de 50 K de cada uno de los usuarios. Esto significa, que
ahora solamente serían necesarios: 150 K + 2.000 K = 2.150 K, en lugar de, 8.000 K necesarias sin la
compartición. El ahorro que se produce con la compartición será mayor a medida que crezca el
número de usuarios en el sistema.
ED. 1
T:PAG.
3
ED 2
4
0
1
DAT 1
2
ED 3
DAT 1
PROC. P1
ED 1
ED 2
6
1
P1
T. PAG.
ED 1
T. PAG
3
3
ED 2
4
4
5
ED 3
6
6
DAT 3
7
7
3
4
DAT 3
ED 3
6
8
9
DAT 2
2
10
P2
APUNTES DE SISTEMAS OPERATIVOS
ED 2
ED 3
PROC. P3
PROC. P2
DAT 2
ED 1
P3
MEMORIA REAL
ANGEL GLEZ. DEL ALBA
Documentos relacionados
Descargar