El documento describe diferentes técnicas para administrar la memoria principal en sistemas operativos multiprogramados, incluyendo partición, paginación y segmentación. Explica que la paginación divide la memoria y los procesos en páginas de tamaño fijo para asignarlos eficientemente, mientras que la segmentación los divide en segmentos de tamaños variables. Finalmente, indica que los sistemas modernos suelen usar memoria virtual combinando paginación y segmentación para aprovechar las ventajas de ambas técnicas.
Continuacion ejemplo de base de datos y reports con jasper report
Administracion de la memoria principal
1. ADMINISTRACION DE LA MEMORIA PRINCIPAL
En un sistema monoprogramado, la memoria principal se
divide en dos partes: una parte para el sistema operativo (monitor
residente, núcleo) y otra parte para el programa que se ejecuta
en ese instante. En un sistema multiprogramado, la parte de
"usuario" de la memoria debe subdividirse aún más para hacer
sitio a varios procesos. La tarea de subdivisión la lleva a cabo
dinámicamente el sistema operativo y se conoce como gestión de
memoria.
En un sistema multiprogramado resulta vital una gestión
efectiva de la memoria. Si sólo hay unos pocos procesos en
memoria, entonces la mayor parte del tiempo estarán esperando
a la E/S y el procesador estará desocupado. Por ello, hace falta
repartir eficientemente la memoria para meter tantos procesos
como sea posible.
Carga de programas en memoria principal
La tarea central de cualquier sistema de gestión de memoria es
traer los programas a memoria principal para su ejecución en el
procesador. En casi todos los sistemas multiprogramados
modernos, esta tarea supone un esquema sofisticado conocido
como memoria virtual. La memoria virtual está, a su vez, basada
en el uso de una de dos técnicas básicas; segmentación y/o
paginación. Antes de ver estás técnicas de memoria virtual, se
debe preparar el terreno considerando técnicas más simples que
no requieren el uso de memoria virtual. Una de estas técnicas, la
partición, se ha venido usando con distintas variantes en algunos
sistemas operativos ahora obsoletos. Las otras dos técnicas, la
paginación simple y la segmentación simple, no se usan en
solitario. No obstante, el estudio de la memoria virtual resultará
más sencillo si se consideran en primer lugar estas dos técnicas,
sin tener en cuenta la memoria virtual.
Paginación
2. 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. Supóngase, no obstante, que la memoria
principal se encuentra particionada en trozos iguales de tamaño
fijo relativamente pequeños y que cada proceso está 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,
conocidos como páginas, pueden asignarse a los trozos libres de
memoria, conocidos como marcos o marcos de página. En este
apartado se verá que el espacio malgastado en memoria para
cada proceso por fragmentación interna consta sólo de una
fracción de la última página del proceso. Además, no hay
fragmentación externa.
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 cuatro marcos. El
proceso B, que consta de tres páginas y el proceso C, que consta
de cuatro, se cargan a continuación. Más tarde, el proceso B se
suspende y es expulsado de memoria principal. Después, todos
los procesos de memoria principal están bloqueados y el sistema
operativo tiene que traer un nuevo proceso, el proceso D, que
consta de cinco páginas.
Supóngase ahora, como en este ejemplo, que no hay suficientes
marcos sin usar contiguos para albergar al proceso. ¿Impedirá
esto al sistema operativo cargar D? 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 constará de un número de página y de un desplazamiento
3. dentro de la página. Recuérdese que, en el caso de la partición
simple, una dirección lógica era la posición de una palabra
relativa al comienzo del programa; el procesador realizaba la
traducción a dirección física. Con paginación, el hardware del
procesador también realiza la traducción de direcciones lógicas a
físicas. Ahora, el procesador debe saber cómo acceder a la tabla
de páginas del proceso actual. Dada una dirección lógica
(número de página, desplazamiento), el procesador emplea la
tabla de páginas para obtener una dirección física (número de
marco, desplazamiento).
Segmentación
Otro modo de subdividir el programa es la segmentación. En este
caso, el programa y sus datos asociados se dividen en un
conjunto de segmentos. No es necesario que todos los seg-
mentos de todos los programas tengan la misma longitud,
aunque existe una longitud máxima de segmento. Como en la
paginación, una dirección lógica segmentada consta de dos
partes, en este caso un número de segmento y un
desplazamiento.
Como consecuencia del empleo de segmentos de distinto
tamaño, la segmentación resulta similar a la partición dinámica.
En ausencia de un esquema de superposición o del uso de
memoria virtual, sería necesario cargar en memoria todos los
segmentos de un programa para su ejecución. La diferencia, en
comparación con la partición dinámica, radica en que, con
segmentación, un programa puede ocupar más de una partición y
éstas no tienen por qué estar contiguas. La segmentación elimina
la fragmentación interna, pero, como la partición dinámica, sufre
de fragmentación externa. Sin embargo, debido a que los
procesos se dividen en un conjunto de partes más pequeñas, la
fragmentación externa será menor.
Mientras que la paginación es transparente al programador, la
segmentación es generalmente visible y se proporciona como
una comodidad para la organización de los programas y datos.
Normalmente, el programador o el compilador asignan los
4. programas y los datos a diferentes segmentos. En aras de la
programación modular, el programa o los datos pueden ser
divididos de nuevo en diferentes segmentos. El principal
inconveniente de este servicio es que el programador debe ser
consciente de la limitación de tamaño máximo de los segmentos.
Memoria virtual.
La memoria virtual permite una multiprogramación muy efectiva y
releva al usuario de las rígidas e innecesarias restricciones de la
memoria principal.
Las ventajas de la memoria virtual son importantes. La cuestión
es: ¿Funcionará este esquema? En un primer momento, se
produjo un gran debate sobre este punto, pero la experiencia con
numerosos sistemas operativos demuestra más allá de cualquier
duda que la memoria virtual funciona. Por consiguiente, ha
llegado a ser un componente esencial de la mayoría de los
sistemas operativos actuales.
Para comprender cuál él es elemento clave y por qué la memoria
virtual generó tanto debate, se va a considerar de nuevo la labor
del sistema operativo con respecto a la memoria virtual.
Considérese un proceso grande formado por un programa largo y
un conjunto de series de datos. Durante un corto periodo, la
ejecución puede estar reducida a una pequeña sección del
programa (por ejemplo, una subrutina) y acceder sólo a una o
dos series de datos. Si esto es así, sería un claro desperdicio
cargar docenas de fragmentos para el proceso cuando se van a
usar sólo unos pocos antes de que pase a estar suspendido o se
descargue. Se puede aprovechar mejor la memoria cargando tan
sólo unos pocos fragmentos. Además, si el programa se bifurca a
una instrucción o hace referencia a datos de un fragmento que no
está en memoria, se producirá un fallo de página. Este fallo le
dice al sistema operativo que traiga el fragmento deseado.
Paginación
El término memoria virtual se asocia normalmente con sistemas
que emplean paginación, aunque también se puede usar
memoria virtual basada en la segmentación, que se tratará
5. después. El uso de la paginación en la memoria virtual fue
presentado por primera vez en el computador Atlas [KILB62] y
pronto alcanzó un uso comercial muy extendido.
En el estudio de la paginación simple se indicó que cada proceso
tiene su propia tabla de páginas y que, cuando carga todas sus
páginas en memoria principal, se crea y carga en memoria
principal una tabla de páginas. Cada entrada de la tabla de
páginas contiene el número de marco de la página
correspondiente en memoria principal. Cuando se considera un
esquema de memoria virtual basado en la paginación se necesita
la misma estructura, una tabla de páginas. Nuevamente, es
normal asociar una única tabla de páginas con cada proceso.
Segmentación
La segmentación permite al programador contemplar la memoria
como si constara de varios espacios de direcciones o segmentos.
Con memoria virtual, el programador no necesita pre-ocuparse de
las limitaciones de memoria impuestas por la memoria principal.
Los segmentos pueden ser de distintos tamaños, incluso de
forma dinámica. Las referencias a memoria constan de una
dirección de la forma (número de segmento, desplazamiento).
Paginación y Segmentación Combinadas
Tanto la paginación como la segmentación tienen sus ventajas.
La paginación, que es transparente al programador, elimina la
fragmentación externa y, de este modo, aprovecha la memoria
principal de forma eficiente. Además, puesto que los fragmentos
que se cargan y descargan de memoria principal son de tamaño
constante e igual para todos, es posible construir algoritmos de
gestión de memoria sofisticados que aprovechen mejor el
comportamiento de los programas, tal y como se verá. La
segmentación, que es visible para el programador, tiene las
ventajas antes citadas, incluida la capacidad de manejar
estructuras de datos que puedan crecer, la modularidad y el
soporte de la compartición y la protección. Para combinar las
ventajas de ambas, algunos sistemas están equipados con
hardware del procesador y software del sistema operativo que las
6. permiten.
En un sistema con paginación y segmentación combinadas, el
espacio de direcciones de un usuario se divide en varios
segmentos según el criterio del programador. Cada segmento se
vuelve a dividir en varias páginas de tamaño fijo, que tienen la
misma longitud que un marco de memoria principal. Si el
segmento tiene menor longitud que la página, el segmento
ocupará sólo una página. Desde el punto de vista del
programador, una dirección lógica también está formada por un
número de segmento y un desplazamiento en el segmento.
Desde el punto de vista del sistema, el desplazamiento del
segmento se ve como un número de página dentro del segmento
y un desplazamiento dentro de la página.