Академический Документы
Профессиональный Документы
Культура Документы
AÑO: 2003
1
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
INDICE
Tema Página
INTRODUCCIÓN 03
REQUISITOS DE LA GESTION DE MEMORIA 03
Reubicación 03
Protección 04
Compartimiento 04
Organización Lógica 05
Organización Física 05
PARTICIÓN DE LA MEMORIA 05
Particiones Estáticas 06
Particiones Dinámicas 07
Sistema de Colegas 08
Reubicación 08
FRAGMENTACION 09
PAGINACIÓN 10
Ventajas de la paginación 11
Desventajas de la paginación 11
SEGMENTACIÓN PAGINADA 11
Ventajas de la segmentación paginada 12
Desventajas de la segmentación paginada 12
SEGMENTACION 13
CARGA Y MONTAJE 14
CONCLUSIÓN 18
BIBLIOGRAFÍA 19
2
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
INTRODUCCIÓN
Reubicación
La memoria principal se ubica generalmente compartida por varios procesos. En
general, el programador no puede conocer por adelantado que otros programas residirán
en la memoria en el momento de la ejecución de su programa.
Se busca poder cargar y descargar los procesos activos en la memoria principal para
maximizar el uso del procesador, manteniendo una gran reserva de procesos listos para
ejecutarse. Así, una vez que se descargó un programa en el disco, cuando vuelva a ser
3
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
cargado, deba situarse en la misma región de la memoria principal que antes. En lugar
de ello, se puede reubicar el proceso en un área distinta de memoria.
Por ello, no se sabe antes de tiempo donde debe situarse un programa, lo cual, plantea
algunos asuntos técnicos relativos al direccionamiento. Por simplicidad, se supondrá
que la imagen del proceso ocupa alguna región contigua de la memoria principal. Así 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 programa para dicho proceso, ya que el sistema operativo gestiona la
memoria y es responsable de traer el proceso a la memoria principal.
El procesador debe ocuparse de las referencias a la memoria dentro del programa. Las
instrucciones de bifurcación deben contener la dirección que haga referencia a la
instrucción que se vaya a ejecutar a continuación y deben contener la dirección del byte
o de la palabra de datos referenciada.
Protección
Cada proceso debe protegerse contra inferencias no deseadas de otros procesos, sean
accidentales o intencionadas. El código de un proceso no puede hacer referencia a
posiciones de memoria de otros procesos, con fines de lectura o escritura, sin permiso.
Puesto que se desconoce la ubicación de un programa en la memoria principal, es
imposible comprobar las direcciones absolutas durante la compilación para asegurar la
protección.
Así, todas las referencias a la 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 los mecanismos que respaldan la reubicación también
forman parte básica del cumplimiento de las necesidades de protección.
Un proceso de usuario no puede acceder a ninguna parte del sistema operativo, ni
programas ni datos, y el programa no puede bifurcarse hacia una instrucción de otro
proceso. El procesador debe ser capaz de abortar estas instrucciones en el momento de
la ejecución.
Es el procesador (hardware) y no el sistema operativo (software) el que debe satisfacer
las exigencias de protección de la memoria. Debido a que el sistema operativo no puede
anticiparse a todas las referencias a la memoria que hará un programa, pues sería
prohibitivo en términos de tiempo consumido el proteger cada programa por adelantado
de posibles violaciones de referencias a la memoria. Así pues, solo es posible evaluar la
tolerancia de una referencia a la memoria durante la ejecución de la instrucción que
realiza la referencia.
Compartimiento
Cualquier mecanismo de protección que se implemente debe tener la flexibilidad de
permitir el acceso de varios procesos a la misma zona de la memoria principal. Por
ejemplo, si una serie de procesos están ejecutando el mismo programa, resultaría
beneficioso permitir a cada proceso que acceda a la misma copia del programa, en lugar
de tener cada uno su propia copia aparte. Los procesos que cooperan en una tarea
pueden necesitar acceso compartido a la misma estructura de datos. El sistema de
gestión de memoria debe, por lo tanto, permitir accesos controlados a las áreas
compartidas de la memoria, sin comprometer la protección básica.
4
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Organización Lógica
La memoria principal de un sistema informático se organiza como un espacio de
direcciones lineal o unidimensional que consta de una secuencia de bytes o palabras. La
memoria secundaria, físicamente se organiza en forma similar.
Si bien esta organización refleja el hardware de la máquina, no se corresponde con la
forma en la que los programas están construidos, ya que, la mayoría de los programas se
organizan en módulos y otros contienen datos que se pueden modificar. El sistema
operativo y el hardware del computador pueden tratar de forma efectiva los programas
del usuario y los datos en forma de módulos de algún tipo, se conseguirá una serie de
ventajas, tales como:
1. Los módulos pueden escribirse y compilarse independientemente,
mientras que el sistema resuelve durante la ejecución todas las referencias de un
modulo a otro.
2. Con un escaso coste adicional, pueden otorgarse distintos grados de
protección a los distintos módulos.
3. Se puede introducir mecanismos por medio de los cuales los procesos
puedan compartir módulos. La ventaja de compartir es que se corresponde con la
visión del problema que tiene el usuario y, por lo tanto, es fácil para el usuario
especificar el compartimiento que desea.
La herramienta que más fácilmente satisface estas necesidades es la segmentación.
Organización Física
Sabemos que la memoria del computador se organiza en al menos dos niveles: la
memoria principal y la memoria secundaria.
La memoria principal ofrece un acceso rápido con un coste relativamente alto y es
volátil, es decir, no proporciona almacenamiento permanente.
En cambio, la memoria secundaria es más lenta y más barata que la memoria principal,
y normalmente, no es volátil. Así una memoria secundaria de gran capacidad puede
permitir un almacenamiento largo plazo de programas y datos, al tiempo que una
memoria principal pequeña mantiene los programas y datos de uso actual.
La organización del flujo de información entre la memoria principal y la secundaria es
de gran interés para el sistema. La responsabilidad del flujo puede asignarse al
programador pero:
1. La memoria principal disponible para un programa y sus datos puede ser
insuficiente. Así, el programador utiliza una práctica llamada superposición que
consiste en, un programa y los datos se organizan de forma que pueda haber
varios módulos asignados a la misma región de la memoria, con un programa
principal responsable del intercambio de los módulos según se necesite.
2. en un entorno multiprogramado, el programador no conoce durante la
codificación cuanto espacio habrá disponible o donde estará este espacio.
Es por ello entonces, que la tarea de mover información entre dos niveles de memoria
debe ser responsabilidad del sistema, la cual, es la esencia de la Gestión de memoria.
PARTICIÓN DE LA MEMORIA
5
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Particiones Estáticas
En la mayoría de los esquemas de gestión de memoria, el sistema operativo ocupa una
parte fija de la memoria principal y que el resto de la memoria esta disponible para ser
usado por varios procesos. El esquema más sencillo de gestión de la memoria
disponible es dividir en regiones con límites fijos.
Tamaños de Partición
6
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Particiones Dinámicas
Con la partición dinámica, las particiones son variables en número y longitud. Cuando
se carga un proceso en la memoria principal, se le asigna exactamente tanta memoria
como necesita y no más.
Este método comienza bien, pero desembarca en una situación en la que hay un gran
número de huecos pequeños en la memoria. La memoria comienza a estar más
fragmentada y su rendimiento decae. Este fenómeno se denomina fragmentación
externa y se refiere al hecho que la memoria externa a todas las particiones se fragmenta
cada vez más.
Una técnica para vencer la fragmentación externa Es la compactación, el sistema
operativo desplaza los procesos para que estén contiguos, de forma que toda la memoria
libre quede junta en un bloque. La dificultad de la compactación esta en que Es un
7
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Sistema de Colegas
Los esquemas de partición estáticas limitan él numero de procesos activos y pueden
utilizar el espacio ineficientemente si hay poca concordancia entre los tamaños de la
partición disponible y los tamaños de los procesos un esquema de partición dinámica en
mucho más complejo de mantener e incluye la sobrecarga de compartir. Un equilibrio
interesante es el Sistemas de Colegas.
El espacio estero disponible para la asignación se trata como un solo bloque de tamaño (
2 elevado a la u). Si se hace una sola solicitud de tamaño S entonces el bloque entero se
asigna. En otro caso, el bloque se divide en dos colegas de igual tamaño, entonces la
solicitud se asigna a uno de los dos colegas. Si no, uno de los colegas se divide en la
mitad nuevamente. Este proceso continua hasta que el bloque más pequeño sea mayor o
igual que S generándose y asignándose a la solicitud.
El sistema de Colegas mantiene una lista de huecos. Un hueco puede eliminarse de la
lista y dividiéndolo en dos mitades para crear dos colegas.
8
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Reubicación
Cuando se emplea el esquema de particiones estáticas se puede esperar que un proceso
sea asignado a la misma partición. La partición que se selecciona cuando se carga un
nuevo proceso será la misma que se emplee siempre para devolver ese proceso a la
misma memoria.
En el caso de particiones de igual tamaño y en el caso de una cola única de proceso para
particiones de distinto tamaño, un proceso puede ocupar diferentes particiones a lo largo
de su vida. De esta manera, las ubicaciones referenciadas por un proceso no son fijas,
sino que cambian cada vez que se intercambian o desplaza un proceso. Para resolver
este problema, se realiza una distinción entre varios tipos de direcciones. Una dirección
lógica es una referencia a una posición de memoria independiente a la asignación actual
de datos a la memoria, se debe hacer una traducción a una dirección física antes de
poder realizar un acceso a la memoria.
Una dirección relativa en un caso particular, en el cual la dirección se expresa como una
posición relativa a algún punto conocido, normalmente el principio de programa.
Una dirección física o absoluta, es una posición real en la memoria principal.
Se necesita un mecanismo de hardware para traducir las direcciones relativas a
direcciones físicas en la memoria principal en el momento dela ejecución de la
instrucción que contiene la referencia.
La traducción de traducciones se realiza de la siguiente manera:
Cuando un proceso pasa a estado de Ejecutando, se carga con la dirección en la
memoria principal del proceso un registro especial del procesador, denominado registro
base. Existe tambien un registro “limite” que indica la posición final de programa, estos
valores deben asignarse cuando se carga el programa en la memoria. A lo largo de la
ejecución del proceso se encuentran direcciones relativas, estas se incluyen los
contenidos del registro de instrucción, las direcciones que aparecen en la bifurcación y
llamada y las direcciones de datos que aparecen en la carga y almacenamiento. Cada
una de estas direcciones relativas pasa por dos etapas de manipulación en el procesador.
En el primer lugar, se añade el valor del registro base a la dirección relativa para obtener
una dirección absoluta. En segundo lugar, la dirección obtenida se compara con el valor
del registro límite. Si la dirección esta dentro de los límites, se puede proceder a la
ejecución de la instrucción. En otro caso se genera una interrupción del Sistema
Operativo.
FRAGMENTACION
9
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
PAGINACIÓN
Tanto las particiones de tamaño fijo como de 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. Así, si la memoria principal se encuentra
dividida en trozos iguales de tamaño fijo relativamente pequeños y que cada proceso
esta dividido también en pequeños trozos de tamaño fijo y del mismo tamaño que los de
memoria. En tal caso, los trozos del proceso, llamados páginas, pueden signarse a los
trozos libres de memoria, llamados marcos o marcos de páginas.
El termino marco o encuadre (frame) se utiliza porque un marco puede mantener o
encuadrar una pagina de datos. Podemos decir, que el espacio desaprovechado en la
memoria para cada proceso por fragmentación interna, consta solo de una fracción de la
ultima página del proceso. Además, no hay fragmentación externa.
El grafico siguiente muestra un ejemplo del uso de páginas y marco. En un instante
dado, algunos de los marcos de memoria están en uso y otros están libres. El sistema
operativo mantiene una lista de los marcos libres. El proceso A, almacenado en disco,
consta de cuatro páginas. Cuando llega el momento de cargar este proceso, el sistema
operativo busca cuatro marcos libres y carga las cuatro páginas del proceso A en los
cuatros marcos. El proceso B, que consta de tres páginas y el proceso C, que consta de
cuatro, se cargan a continuación. Mas tarde, el proceso B se suspende y es expulsado de
la memoria principal. Después, todos los procesos de la memoria principal están
bloqueados y el sistema operativo tiene que traer un nuevo proceso, el proceso D, que
consta de cinco paginas.
Memoria Principal Memoria Principal Memoria Principal
Número
de marco 0 0 A.0 0 A.0
1 1 A.1 1 A.1
2 2 A.2 2 A.2
3 3 A.3 3 A.3
4 4 4 B.0
5 5 5 B.1
6 6 6 B.2
7 7 7
(a) Ocho marcos libres (b) Carga del Proceso A (c) Carga del Proceso B
Supongamos que no hay suficientes marcos sin usar contiguos para albergar a un
proceso. ¿Se impedirá esto al sistema cargar dicho proceso? La respuesta es negativa,
puesto que se puede emplear de nuevo el concepto de dirección lógica. Ya no será
suficiente con un simple registro base. En su lugar, el sistema operativo mantiene una
tabla de páginas para cada proceso. La tabla de páginas muestra la posición del marco
de cada página del proceso. Dentro del programa, cada dirección lógica constara de un
número de páginas y de un desplazamiento dentro de las páginas. Con paginación, el
hardware del procesador también realiza la traducción de direcciones lógicas y físicas.
Ahora, el procesador debe saber como acceder a las tablas de páginas del proceso
actual. Dada una dirección lógica (numero de pagina, desplazamiento), el procesador
10
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
emplea la tabla de paginas para obtener una dirección física (numero de marco,
desplazamiento).
Cada tabla de paginas contiene una estrada por cada pagina del proceso, por lo que la
tabla se indexa fácilmente por numero de pagina (comenzando en la pagina 0). En cada
entrada de la tabla de paginas se encuentra el numero de marco de la memoria principal
(si lo hay) que alberga la pagina correspondiente. Además, el sistema operativo
mantiene una lista de marcos libres con otros los marcos de la memoria principal que
actualmente están vacíos y disponibles para las páginas.
Así pues, se puede comprobar que la paginación simple, tal y como se describe, es
similar a la partición estática. Las diferencias están en que, con paginación, las
particiones son algo más pequeñas; un programa puede ocupar más de una partición y
estas no tienen porque estar contiguas.
Ventajas de la paginación
Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo
en memoria, y el resto se cargara bajo la solicitud.
No es necesario que las paginas estén contiguas en memoria, por lo que no se
necesitan procesos de compactación cuando existen marcos de paginas libres
dispersos en la memoria.
Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
El mecanismo de traducción de direcciones (DAT) permite separar los
conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo
es transparente al usuario.
Se libera al programador de la restricción de programar para un tamaño físico de
memoria, con lo que s e aumenta su productividad. Se puede programar en
función de una memoria mucho más grande a la existente.
Al no necesitarse cargar un programa completo en memoria para su ejecución,
se puede aumentar el numero de programas multiprogramándose.
Se elimina el problema de fragmentación externa.
Desventajas de la paginación
El costo de hardware y software se incrementa, por la nueva información que
debe manejarse y el mecanismo de traducción de direcciones necesario. Se
consume mucho mas recursos de memoria, tiempo en el CPU para su
implantación.
Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fija
el tamaño de estas, se crea un problema semejante al de los programas (como
asignar un tamaño óptimo sin desperdicio de memoria, u "ovearhead" del
procesador).
Aparece el problema de fragmentación interna. Así, si se requieren 5K para un
programa, pero las paginas son de 4K, deberán asignárseles 2 paginas (8k), con
lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta
forma puede ser mayor que el de varias paginas, pero no podrá ser utilizados.
Debe asignarse un tamaño promedio a las páginas, evitando que si son muy
pequeñas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy
grandes, se incremente el grado de fragmentación interna.
11
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
SEGMENTACIÓN PAGINADA
Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar
las ventajas enunciadas anteriormente.
Para la segmentación se necesita que estén cargadas en memoria, áreas de tamaños
variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue
removido a memoria secundaria; se necesita encontrar una región de la memoria lo
suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio
"recargar" una pagina implica solo encontrar un merco de pagina disponible.
A nivel de paginación, si quiere referenciar en forma cíclicas n paginas, estas deberán
ser cargadas una a una generándose varias interrupciones por fallas de paginas; bajo
segmentación, esta pagina podría conformar un solo segmento, ocurriendo una sola
interrupción, por falla de segmento. No obstante, si bajo segmentación, se desea acceder
un área muy pequeña dentro de un segmento muy grande, este deberá cargarse
completamente en memoria, desperdiciándose memoria; bajo paginación solo se cargara
la página que contiene los ítems referenciados.
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas
de ambas. En lugar de tratar un segmento como una unidad contigua, este puede
dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas.
Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que
todas las páginas se encuentren en memoria principal a la vez; además las páginas de un
mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan
estarlo en memoria real.
Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el número del
segmento, la segunda el número de la página dentro del segmento y la tercera el
desplazamiento dentro de la página. Se deberán usar varias tablas:
SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de
la SMT se almacena la información descrita bajo segmentación pura, pero en el
campo de dirección se indicara la dirección de la PMT (tabla de mapas de
páginas) que describe a las diferentes páginas de cada segmento.
PMT (tabla de mapas de páginas): una por segmento; cada entrada de la PMT
describe una página de un segmento; en la forma que se presento la pagina pura.
TBM (tabla de bloques de memoria): para controlar asignación de páginas por
parte del sistema operativo.
JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las
SMT de los procesos que se ejecutan en memoria.
En el caso, de que un segmento sea de tamaño inferior o igual al de una pagina, no se
necesita tener la correspondiente PMT, actuándose en igual forma que bajo
segmentación pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que
indicara si el segmento esta paginado o no.
12
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
SEGMENTACION
CARGA Y MONTAJE
13
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Biblioteca
Modulo Nº1
Modulo de Cargador
Modulo Nº2 Montador
carga
Modulo Nºn
Carga
El cargador sitúa él módulo de carga en la memoria principal, comenzando en la
posición X. En la carga del programa, se deben satisfacer las necesidades de dirección.
En general, se pueden aplicar tres métodos.
Carga absoluta.
Carga reubicable.
Carga dinámica en tiempo de ejecución.
Carga Absoluta
La carga absoluta necesita al módulo de carga ocupe siempre la misma posición en la
memoria principal.
Así, todas las referencias del módulo de carga para el cargador deben ser direcciones
específicas o absolutas de la memoria principal.
La asignación de direcciones a la memoria de un programa la puede realizar tanto el
programador como en compilador o el ensamblador.
14
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
15
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
Editor de Montaje
El montaje de direcciones dependerá: Del tipo de módulo de carga
De cuando se produzca el montaje.
Si se desea un módulo de carga reubicable, el montaje se realiza de la siguiente manera:
Cada módulo objeto compilado se crea con referencias relativas al comienzo del
módulo.
Los módulos se unen en u único módulo de carga reubicable, junto con las
referencias relativas al origen del módulo de carga.
Este módulo reubicable puede usarse como una para una carga reubicable o para una
dinámica durante la ejecución.
Los montadores que crean módulos de carga reubicable se conocen como editores de
montajes.
Montador Dinámico
Como en la carga es posible aplazar algunas funciones de montajes. Se emplea para
resaltar el montaje de algunos módulos externos hasta que él módulo de carga se haya
creado.
Así, él módulo de carga contiene referencias no resueltas que pueden resolverse tanto a
la carga como en la ejecución:
EJEMPLO:
En los compiladores personales (PC) el software comercial se entrega en forma de
módulo de carga y no las versiones fuentes y objetos.
Tener el código de destino en un archivo de montaje dinámico prepara el terreno para
compartir automáticamente código.
El Sistema Operativo puede darse cuenta de que más de una aplicación esta empleando
el mismo código de destino.
Permite usarse para cargar una única copia del código en ves de tener que cargar una
copia para cada aplicación.
Resulta fácil ampliar la funcionalidad de un S. O. muy empleado.
Un productor puede proponer una nueva función útil para varias aplicaciones y
empaquetarla como un módulo de montaje dinámico.
16
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
La estructura del módulo es estática y permanece sin cambios durante la ejecución del
proceso y de una ejecución a la siguiente.
Por el contrario en algunos casos no es posible determinar antes que módulos objetos
harán falta. La naturaleza de la transacción dictamina que módulos de programas se
necesitan y estos se cargan de la forma apropiada y se montan con el programa
principal.
La ventaja de emplear un montador dinámico es que no hace falta reservar memoria
para las unidades de programa a menos que se hagan referencias a los mismos. Esta
capacidad se emplea como soporte para los sistemas de segmentación.
17
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
CONCLUSIÓN
18
SISTEMAS OPERATIVOS 2003 GESTION DE MEMORIA
BIBLIOGRAFÍA
http://www.mongrafias.com
http://www.lafacu.com
http://exa.unne.edu.ar/depar/inform/sistoper/monog/gestionmem
http://www.google.com.ar
19