Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ADMINISTRACIÓN DE MEMORIA
Originalmente, cada usuario escribía todo el código necesario para realizar una
aplicación específica, incluyendo las detalladas instrucciones de entrada/salida
a nivel de la máquina. Muy pronto el código de entrada/salida requerido para
realizar las funciones básicas se consolidó en un sistema de control de
entrada/salida (input/output control system, IOCS). Los usuarios que querían
hacer entrada/salida ya no tenían que codificar directamente las instrucciones,
sino que llamaban a las rutinas de IOCS para realizar el trabajo. Ello
simplificaba y aceleraba mucho el proceso de codificación. La implantación de
los sistemas de control de entrada/salida bien pudo haber constituido el
comienzo del concepto actual de sistemas operativos. La figura 3.2 ilustra la
organización del almacenamiento en un sistema representativo de asignación
de almacenamiento contiguo con un único usuario.
En tamaño de los programas está limitado por la cantidad de memoria principal,
pero es posible ejecutar programas más grandes que el almacenamiento
principal utilizando superposiciones(overlay). La figura 3.3 ilustra el concepto.
Si una sección de un programa no se necesita durante el resto de la ejecución
del programa, entonces se puede traer del almacenamiento secundario otra
sección del programa para ocupar el espacio utilizado por la que ya no se
necesita.
Sin duda es obvio que el sistema operativo se debe proteger del usuario. La
protección se realiza con un registro de límites único integrado en la CPU,
como se muestra en la figura 3.4. Cada vez que un programa de usuario hace
referencia a una dirección de memoria, se revisa el registro de limites para
verificar que el usuario no está a punto de destruir el sistema operativo. El
registro de límites contiene la dirección más alta utilizada por el sistema
operativo. Si el usuario intenta entrar en el sistema operativo, se intercepta la
instrucción y el trabajo termina con un mensaje de error apropiado.
A medida que se han vuelto más complejos los sistemas operativos ha sido
necesario llevar a la práctica mecanismos más avanzados para proteger al
sistema operativo de los usuarios y proteger a éstos entre sí.
este diagrama.
Estrategia del peor ajuste: A primera vista ésta parecería una elección
extravagante, pero después de un examen más cuidadoso, el peor ajuste
también posee un fuerte atractivo intuitivo. El peor ajuste consiste en colocar un
programa en el almacenamiento primario en el hueco donde peor se ajusta, es
decir, en el hueco más grande posible. El atractivo intuitivo es sencillo:
Después de colocar el
programa en ese gran hueco, el hueco restante a menudo será también grande
y por consiguiente podrá contener un nuevo programa relativamente grande.
Una variante de la estrategia del primer ajuste, denominada estrategia del
siguiente ajuste, comienza cada búsqueda de un hueco disponible en el lugar
donde terminó la búsqueda anterior.
Se han desarrollado varios métodos para asociar las direcciones virtuales con
las reales. Los mecanismos de traducción dinámica de direcciones (dynamic
address translation, DAT) convierten las direcciones virtuales en direcciones
reales mientras se ejecuta un proceso. Todos estos sistemas tienen la
propiedad de que las direcciones contiguas en el espacio de direcciones
virtuales de un proceso no son necesariamente contiguas en el
almacenamiento real. Esto se conoce como contigüidad artificial(figura 3.18).
De esta forma se libera al usuario de la preocupación por la posición de
procedimientos y datos en el almacenamiento real. El usuario puede escribir los
programas con la mayor naturalidad, atendiendo a detalle de eficiencia del
algoritmo y estructura del programa y haciendo caso omiso de los detalles de la
estructura de hardware subyacente. La computadora se considera (o puede
ser) un vehículo de realización de algoritmos en un sentido lógico, en lugar de,
en un sentido físico, un dispositivo de características únicas, algunas de las
cuales pueden obstaculizar el proceso de diseño de programas.
Ahora consideremos el proceso con mayor detalle. Debido sobre todo a que
normalmente no todos las páginas del proceso se encuentran en el
almacenamiento primario al mismo tiempo, la tabla de correspondencia de
páginas debe indicar si la página a la que se hace referencia se encuentra o no
en el almacenamiento primario; si sí está, donde se encuentra y si no, dónde
puede encontrarse en el almacenamiento secundario. La figura 3.22 muestra
una tabla de correspondencia de páginas representativas. Un bit de residencia
de página, r, tiene valor 0 si la pagina no se encuentra en el almacenamiento
primario, entonces s es su dirección en el almacenamiento secundario. Si la
página se encuentra en el almacenamiento primario, entonces p’ es su número
de marco de página. Obsérvese que p’ no es una dirección real en el
almacenamiento primario; la dirección de almacenamiento primario en la cual
comienza el marco de página, p’’ es el producto de p’ y el tamaño fijo de la
página (suponiendo que los marcos de páginas estén numerados
consecutivamente a partir de cero).
Estrategias
de reemplazo. Sirven para decidir cuál página o segmento se
debe desplazar para dejar espacio a una página o segmento entrante cuando
está completamente ocupado el almacenamiento primario.
En los sistemas con paginación es común que estén en uso todos los marcos
de páginas. En este caso, las rutinas de administración del almacenamiento del
sistema operativo deben decidir que página del almacenamiento primario se
debe desplazar para dejar espacio a una página entrante. Se verán las
siguientes estrategias de reemplazo de páginas:
Una ventaja del PFF con respecto al reemplazo de páginas con conjunto de
trabajo es que ajusta el conjunto de páginas residentes sólo después de cada
falla de pagina, mientras que un mecanismo de conjunto de trabajo debe
operar después de cada referencia a la memoria.
La paginación por demanda garantiza que las únicas páginas que se
transfieren al almacenamiento principal son aquellas que requieren los
procesos.
PAGINACIÓN ANTICIPADA
Sise pueden tomar las decisiones correctas en casi todos los casos, se
reducirá
bastante el tiempo de ejecución de un proceso. Así pues, es importante tratar
desarrollar mecanismo de paginación anticipada, aunque no puedan ser cien
por
ciento precisos.
LIBERACIÓN DE PÁGINAS
En una administración del almacenamiento mediante conjuntos de trabajos, los
procesos indican por referencia explícita cuáles páginas desean utilizar. Los
procesos que ya no requieran páginas específicas deberán desechar tales
páginas de sus conjuntos de trabajo. Por lo regular, hay un tiempo durante el
cual permanecen en el almacenamiento principal las páginas que ya no se
requieren.
Cuando es evidente que ya no será necesario una página, un usuario podría
dar una orden de liberación voluntaria de página para liberar el marco de
página. Esto eliminaría el retraso que implica dejar que el proceso deseche
poco a poco la página de su conjunto de trabajo.
La liberación voluntaria de páginas podría eliminar el desperdicio y acelerar la
ejecución de un programa, pero la mayoría de los usuarios de los sistemas de
cómputo actuales ni siquiera saben qué es una página y no se les puede pedir
que tomen decisiones al nivel del sistema. La incorporación de mandatos de
liberación de páginas en los programas de usuario podría ser mucho más lento
el desarrollo de las aplicaciones.
La esperanza real en esta área es que los compiladores y sistemas operativos
detecten automáticamente las situaciones en las que debe liberar una página, y
mucho antes de lo que es posible con las estrategias que emplean conjuntos
de trabajo.
TAMAÑO DE PAGINAS