La administración de memoria está referida a los distintos
métodos y operaciones que se encargan de obtener la máxima
utilidad de la misma, organizando los procesos y programas que
se ejecutan de forma que se aproveche el espacio disponible de la
mejor manera posible. Para lograrlo, la acción fundamental que
realiza es la de trasladar la información que será ejecutada por el
procesador a la memoria principal. Cabe destacar que esta
administración se conoce como Memoria Virtual ya que no es la
memoria física del procesador sino una memoria virtual que la
representa.
Entre algunas ventajas se menciona que el sistema cuente con una memoria
más extensa teniendo la misma memoria real, con lo que esta se puede utilizar
de manera más eficiente. Y que los programas que son utilizados no ocupen
lugar innecesario. Las técnicas que existen para la carga de programas en la
memoria son: partición fija, que es la división de la memoria libre en varias
partes (de igual o distinto tamaño) y la partición dinámica, que son las
particiones de la memoria en tamaños que pueden ser variables, según la
cantidad de memoria que necesita cada proceso.
Política
El sistema operativo debe llevar
a cabo una política de espacio
de asignación de memoria.Esto
es necesario cuando se precisa
crear el mapa de memoria de
un proceso que ocupa un
determinado tamaño para
poder así determinar qué zonas
libres se deberían utilizar; esto
con el fin de lograr conjugar los
siguientes aspectos;
Buen
aprovechamiento
de
la
memoria
Algoritmo
de
decisión
eficiente
Tipos de
política:
FIFO: Los procesos se despachan de acuerdo a su
tiempo de llega a la cola de procesos listos, si un
proceso llega al procesador sale hasta que termine. La
política FIFO actualmente no se usa como el esquema
principal de un sistema, pero si por ejemplo cuando se
usa una política de prioridades y hay procesos con la
misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo
hace el FIFO, pero se les asigna una cantidad limitada de
tiempo (CUANTUM) en el procesador, si no termina en ese
lapso se manda al final de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo
mas corto): Se ejecuta primero el proceso en
espera que tiene el menor tiempo estimado.
SJF favorece a los procesos cortos, ya que los
largos podrían llegar a rezagarse mucho
tiempo e incluso nunca ejecutarse.
SRT (Sortest remaining time scheduling –
Tiempo restante más corto): En SJF una
vez que un proceso comienza su
ejecución continua hasta terminar. En
SRT, un proceso en ejecución puede ser
desposeído por uno nuevo de menor
tiempo de ejecución.
HRN: (highest response ratio next – Prioridad de
la tasa de respuesta más alta): Política no
apropiativa que corrige el retraso excesivo de
procesos grandes que produce el SJF, para así no
caer en un favoritismo excesivo por los procesos
cortos, lo logra usando una formula basada en el
tiempo de espera y el tiempo de servicio, con lo
cual la prioridad de cada trabajo no solo esta en
función del tiempo de servicio sino también del
tiempo que ha esperado para ser atendido.
Mecanismos de
asignación
Para ejecutar un proceso este debe cargarse en memoria. Generalmente el proceso
reside en disco como archivo binario o ejecutable. El procedimiento normal consiste en
seleccionar uno de los procesos de la cola de entrada y cargarlos en memoria. Esto
ocasiona la relocalización de dirección o enlaces a referencias externas, según sea el
caso. Mientras se ejecuta un programa, se accede a las instrucciones o datos en la
memoria. Un proceso de usuario puede residir en cualquier parte de la memoria física.
Por esto, aunque el espacio de direcciones de la computadora comience con 00000, no
necesariamente debe de ser ocupado por el proceso del usuario En la mayoría de los
casos, un programa de usuario pasará por varias etapas antes de ejecutarse. En estas
etapas las direcciones pueden representarse de maneras distintas.
· Compilación. Si se sabe la posición donde inicia el código, entonces el compilador comenzaría en esa
posición y se extendería a partir de ahí. Si se cambia la posición de inicio, será necesario volver a
compilar el código. Los programas con formato. COM se enlazan de manera absoluta durante la
compilación. · Carga. Si en la compilación no se conoce donde residirá el programa en memoria,
entonces el compilador deberá cargar el código relocalizable. · Ejecución. Si durante la ejecución el
proceso puede moverse de un segmento de memoria a otro, entonces el enlace final se debe postergar
hasta el momento de la ejecución. Esto depende de hardware especial. Vemos en este diagrama como
se inicia a partir del código fuente de algún lenguaje de alto nivel, pasando a través de un compilador a
ensamblador para crear así el código objeto, si es posible este es enlazado por el editor de enlaces. Si
las direcciones no son absolutas, es necesario que el módulo de carga realice las operaciones ne