Вы находитесь на странице: 1из 12

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN SUPERIOR


INSTITUTO UNIVERSITARIO TECNOLÓGICO DEL OESTE
“MARISCAL SUCRE”
PNF INFORMÁTICA
SECCIÓN 7101

Administración de Memoria

Autores:
Hernández, Mayerlean
Ramírez, Arturo

Profesor(a):
Gómez, Mario

Caracas, abril de 2011


Administración de Memoria

La administración de memoria se refiere a los distintos métodos y operaciones


que se encargan de obtener la máxima utilidad de la memoria, organizando los
procesos y programas que se ejecutan de manera tal que se aproveche de la mejor
manera posible el espacio disponible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la
información que deberá ser ejecutada por el procesador, a la memoria principal.
Actualmente 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, esta memoria permite 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 por supuesto, que los programas que son utilizados no ocupen lugar
innecesario.
Entre las principales operaciones que desarrolla la administración de memoria
se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera
de la memoria principal para maximizar la utilización del procesador; la protección,
mecanismos que protegen los procesos que se ejecutan de interferencias de otros
procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección
permite que ciertos procesos de un mismo programa que comparten una tarea tengan
memoria en común.

Funciones de la Administración de Memoria

Reubicación: En un sistema multitarea, la memoria principal está compartida por


muchos procesos. Generalmente, no es posible para el programador saber qué otros
programas están residentes en memoria principal en el tiempo de ejecución de su
programa. Además, se busca poder trasladar procesos activos dentro y fuera de la
memoria principal para maximizar la utilización del procesador, proveyéndolo de
varios procesos listos para ejecutar. Una vez que un programa fue sacado de la
memoria principal al disco, sería difícil establecer cuál es el próximo en volver a la
memoria principal, y debería ser colocado en la misma región de la memoria
principal que antes.

Protección: Todos los procesos deben ser protegidos de indeseables interferencias


accidentales o intencionales de otros procesos. Este mecanismo, sin embargo,
dificulta la tarea de reubicación debido a que se deben chequear todas las posiciones
de memoria al ubicar un proceso para mantener el sistema de protección. Todas las
referencias de memoria generadas por un proceso deben ser chequeadas en tiempo de
ejecución para estar seguro de que apuntan solo a la porción de memoria reservada
para ese proceso. Ante una violación de la protección, el que debe ofrecer esta
protección es el procesador y no el sistema operativo debido a la velocidad y a que el
sistema operativo no puede anticipar las referencias de memoria que el proceso hará.

Uso compartido de códigos y datos: Todos los mecanismos de protección deben ser
un poco flexibles, ya que deben permitir que los procesos de un mismo programa que
comparten una tarea tengan memoria en común. El mecanismo de protección debe
permitir esto de una manera controlada.

Organización lógica: La memoria en una computadora es lineal, una sucesión de


bytes. En cambio, los programas están construidos en módulos, en donde los datos
pueden ser modificados.

Organización física: La memoria está dividida en primaria y secundaria. El traspaso


de información entre éstas es la preocupación más grande del sistema; esta
responsabilidad puede ser asignada al programador, pero esto sería una gran pérdida
de tiempo, por esto el sistema debe ocuparse de ello.

Memoria Principal

La memoria principal o primaria (MP), también llamada memoria central, es


una unidad dividida en celdas que se identifican mediante una dirección. Está
formada por bloques de circuitos integrados o chips capaces de almacenar, retener o
memorizar información digital, es decir, valores binarios; a dichos bloques tiene
acceso el microprocesador de la computadora.
La memoria principal se comunica con el microprocesador de la CPU
mediante el bus de direcciones. El ancho de este bus determina la capacidad que
posea el microprocesador para el direccionamiento de direcciones en memoria.
En algunas oportunidades suele llamarse memoria interna a la memoria
principal, porque a diferencia de los dispositivos de memoria secundaria, la memoria
principal no puede extraerse tan fácilmente por usuarios no técnicos.
La memoria principal es el núcleo del sub-sistema de memoria de un
computador, y posee una menor capacidad de almacenamiento que la memoria
secundaria, pero una velocidad millones de veces superior.

Partición de Memoria

Partición fija

Consiste en dividir la memoria libre en varias partes de igual tamaño o de


diferentes tamaños. En el caso de la partición fija de partes iguales, se plantean dos
dificultades:

1. Un programa puede ser demasiado grande para caber en la partición. En este


caso, el programador debe diseñar el programa mediante superposiciones,
para que sólo una parte del programa esté en memoria principal. Cuando se
necesita un módulo que no está presente, el programa de usuario debe cargar
dicho módulo en la partición del programa, superponiéndose a los programas
y datos que se encuentren en ella.
2. El uso de memoria principal es extremadamente ineficiente. Cualquier
programa, sin importar lo pequeño que sea, ocupará una partición completa.
Supongamos un programa que ocupa 120 Kb y se carga en una partición de
512 Kb, se malgasta el espacio interno de la partición y esto se denomina
fragmentación interna.
En el caso de particiones de igual tamaño, si todas las particiones estuvieran
ocupadas con procesos que no están listos para ejecutar y necesita cargarse un nuevo
proceso, debe determinarse qué partición expulsarse de memoria. Esta decisión es una
decisión de planificación, que se verá en un capítulo próximo.
Pero en el caso de particiones de distintos tamaños, debe determinarse en que
partición (por cuestiones de tamaño) se cargará el nuevo proceso. La forma más
simple es asignar cada proceso a la partición más pequeña en que quepa (sin importar
si la partición está cargada o no), lo que necesitará de una cola de expulsados para
cada partición. Otra forma es asignar el proceso a la partición más pequeña entre
aquellas que están libres (usando una única cola para todos los procesos); y si todas
las particiones están ocupadas, se debe tomar una decisión de intercambio.

Partición dinámica

Este método consiste en particiones de memoria de tamaños variable, o sea, a


cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta y ni
un poco más). Tras el ingreso de nuevos procesos y la expulsión de otras, se
generarán huecos de memoria inutilizados. Conforme pasa el tiempo, la memoria
comienza a estar más fragmentada y su rendimiento decae; este fenómeno se
denomina fragmentación externa.
Una técnica para superar la fragmentación externa es la compactación. De vez
en cuando, el sistema operativo desplaza los procesos para que estén contiguos de
forma que toda la memoria libre quede junta en un bloque. Las dificultades que
presenta la compactación son:
1. Es un procedimiento que consume tiempo de trabajo del procesador.
2. Deben realizarse los movimientos de una región a otra, sin invalidar las
referencias a memoria del programa.
A pesar de la compactación, deben utilizarse algunos algoritmos para la ubicación
de procesos en las particiones. Estos algoritmos son:
• Mejor ajuste (Best-fit): se elige el bloque con el tamaño más parecido al del
proceso entrante.
• Primer ajuste (First-fit): comienza recorriendo la memoria desde el comienzo
y escoge el primer bloque disponible en el que entre el proceso entrante.
• Siguiente ajuste (Next-fit): recorre la memoria desde el lugar de la última
ubicación y elige el siguiente bloque disponible que sea suficientemente
grande.
• Peor ajuste (Worst-fit): elige el bloque más grande posible.
En un sistema multiprogramado con particiones dinámicas, habrá algún
momento en el que todos los procesos de memoria principal estén en estado
bloqueado y la memoria sea insuficiente, aun aplicando la compactación, para un
proceso adicional. En este caso, el sistema operativo debe elegir qué proceso
reemplazar. Este tema se ve en los temas que tienen que ver con memoria virtual, por
lo que lo veremos más adelante.

Modos de Direccionamiento

Un modo de direccionamiento especifica la forma de calcular la dirección de


memoria efectiva de un operando mediante el uso de la información contenida en
registros y / o constantes, contenida dentro de una instrucción de la máquina o en otra
parte.

Tipos de direccionamiento

• DIRECTO. En el direccionamiento directo, la instrucción contiene la


dirección de la posición de memoria donde se encuentra el operando.
• INDIRECTO. En el direccionamiento indirecto, la dirección contiene no la
dirección donde se encuentra el operando, sino la dirección donde se
encuentra la dirección del operando.
• RELATIVO. En el direccionamiento relativo la parte dirección de la
instrucción contiene el número N. En memoria la dirección del operando se
encuentra sumando el numero N al número del contador del programa.
• INDEXADO. En el direccionamiento indexado como en el relativo, la parte
dirección de la instrucción contiene un número N que puede ser positivo o
negativo. Sin embargo para utilizar el direccionamiento indexado, el
computador debe estar equipado con un registro especial empleado para
permitir direccionamiento indexado, y denominado naturalmente registro
índice. La posición de memoria donde se localiza el operando se encuentra
mediante la suma I + N.
• REGISTRO INDIRECTO. Algunos computadores que incorporan la facultad
del direccionamiento de registro indirecto tienen un registro especial, a
menudo llamado registro (P). Este registro contiene la dirección de memoria
del operando. Una instrucción que invoque realmente direccionamiento de
registro indirecto no tiene bits significativos en su parte dirección. En lugar de
ello, la instrucción completa se incluye en los bits asignados a la parte de
operación de la instrucción. Una instrucción típica que use un registro de
direccionamiento indirecto debería especificar "cargar" el acumulador con el
operando localizado en la dirección de memoria dada en el registro (p).
• INMEDIATO. En el direccionamiento inmediato, la parte de dirección de la
instrucción contiene no la dirección del operando sino el mismo operando.
• INHERENTE. Ordinariamente una dirección que es parte de una instrucción
se refiere a una posición de memoria. Cuando una instrucción indica una
fuente o un destino de datos y no se direcciona específicamente, ya no se hace
referencia a la posición de memoria, se dice que la instrucción tiene una
dirección inherente.

Métodos de Asignación de Memoria

Uno de los métodos más simples para asignar la memoria consiste en dividirla
en varias particiones de tamaño fijo. Cada partición puede contener exactamente un
proceso, de modo que al grado de multiprogramación estará limitado por el número
de particiones disponibles. En este método de particiones múltiples, cuando una
partición está libre, se selecciona un proceso de la cola de entrada y se lo carga en
dicha partición. Cuando el proceso termina, la partición pasa a estar disponible para
otro proceso. Este método (MFT) fue usado originalmente por el sistema operativo
IBM OS/360, pero ya no se utiliza. El método (MVT) que se utiliza principalmente
en entornos de procesamiento por lotes.
En el esquema de particiones fijas, el sistema operativo mantiene una tabla
que indica que partes de la memoria están disponibles y cuales estas ocupadas.
Inicialmente, toda la memoria está disponible para los procesos de usuario y se
considera como un único bloque de gran tamaño de memoria disponible, al que se
denomina agujero. Cuando llega un proceso y necesita memoria se busca un agujero
lo suficientemente grande como para albergar este proceso. Si se encuentra, se asigna
la memoria justa necesaria, manteniendo el resto de la memoria disponible para
satisfacer futuras solicitudes.
A medida que los procesos entran en el sistema, se introducen en una cola de
entrada. El sistema operativo toma en consideración los requisitos de memoria en
cada proceso y la cantidad de memoria disponible a la hora de determinar a qué
procesos se le asigna la memoria. Cuando se asigna espacio a un proceso, se carga en
memoria y puede comenzar a competir por el uso de la CPU. Cuando un proceso
termina, librea su memoria, que el sistema operativo podrá rellenar con otro proceso
extraído de la cola de entrada.
En cualquier momento determinado, se tendrá una lista de tamaños de bloque
disponibles y una cola de entrada de procesos. El sistema Operativo puede ordenar la
cola de entrada de acuerdo con algún algoritmo de planificación, asignándole
memoria a los procesos hasta que finalmente, los requisitos de memoria del siguiente
proceso ya no puedan satisfacer, es decir, hasta que no haya ningún bloque de
memoria disponible que sea lo suficientemente grande como para albergar al
siguiente proceso. El sistema operativo puede entonces esperar hasta que haya un
bloque de memoria lo suficientemente grande o puede examinar el resto de la cola de
entrada para ver si pueden satisfacer los requisitos de memoria de algún otro proceso,
que necesite un bloque de memoria menor.

Segmentación

Este método consiste en la asignación de bloques de memoria de tamaño


variable, llamados segmentos. El tamaño de cada segmento será el requerido según la
petición, por ejemplo el tamaño del proceso a cargar.
El tamaño máximo para un segmento estará determinado por la capacidad de
direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone
para almacenar una dirección. El acceso a cada elemento individual (byte) en la
memoria se hace mediante una dirección de memoria que se integra por dos
elementos: una dirección de segmento y una de desplazamiento.
La combinación (suma) de la dirección de segmento y la de desplazamiento
generan la dirección de memoria absoluta a acceder.

Paginación

La paginación consiste en considerar el espacio de direcciones lógicas de cada


proceso como un conjunto de bloques de tamaño consistente llamados páginas. Cada
dirección lógica manejada para un proceso estará conformada por un par de valores:
página-desplazamiento. La memoria física se administra implementando bloques de
tamaño consistente denominados marcos. El tamaño de un 'marco' debe ser igual al
tamaño de una página. Por lo general el tamaño designado para los marcos y páginas
es pequeño.

Ventajas de la Segmentación y Paginación

Tanto la Segmentación como la paginación ofrecen significativas ventajas,


algunos sistemas combinan ambas técnicas en donde los segmentos tienen un tamaño
múltiplo de página.
Este método utiliza Segmentación y Paginación tal y como su nombre lo
indica, el proceso es el siguiente: se hace la solicitud de acceso por medio de una
dirección "V" la cual contiene los campos Segmento, Página y Desplazamiento. Con
el campo Segmento, lo que se trata es de acceder a una Tabla de segmentos, cada
campo de dicha tabla apunta directamente a la tabla de páginas asignada para ese
segmento conteniendo una dirección que será sumada a una dirección en la tabla
asociativa para por fin formar una dirección real con el desplazamiento de "V".
En un sistema con un número muy grande de procesos, segmentos o páginas,
ésta estructura puede consumir una parte muy importante de la memoria real. La
cuestión es que la traducción de direcciones puede realizarse con rapidez pero si se
tienen demasiadas tablas, el sistema puede soportar menos procesos y bajar su
rendimiento.

Memoria Virtual

Es una técnica de administración de la memoria real que permite al sistema


operativo brindarle al software de usuario y a sí mismo un espacio de direcciones
mayor que la memoria real o física.
La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la
CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física
(generalmente en forma de RAM, donde la CPU puede escribir y leer directa y
razonablemente rápido) y el disco duro que es mucho más lento, pero también más
grande y barato.
Muchas aplicaciones requieren el acceso a más información (código y datos)
que la que se puede mantener en memoria física. Esto es así sobre todo cuando el
sistema operativo permite múltiples procesos y aplicaciones ejecutándose
simultáneamente. Una solución al problema de necesitar mayor cantidad de memoria
de la que se posee consiste en que las aplicaciones mantengan parte de su
información en disco, moviéndola a la memoria principal cuando sea necesario. Hay
varias formas de hacer esto. Una opción es que la aplicación misma sea responsable
de decidir qué información será guardada en cada sitio (segmentación), y de traerla y
llevarla. La desventaja de esto, además de la dificultad en el diseño e implementación
del programa, es que es muy probable que los intereses sobre la memoria de dos o
varios programas generen conflictos entre sí: cada programador podría realizar su
diseño teniendo en cuenta que es el único programa ejecutándose en el sistema. La
alternativa es usar memoria virtual, donde la combinación entre hardware especial y
el sistema operativo hace uso de la memoria principal y la secundaria para hacer
parecer que el ordenador tiene mucha más memoria principal (RAM) que la que
realmente posee. Este método es invisible a los procesos. La cantidad de memoria
máxima que se puede hacer ver que hay tiene que ver con las características del
procesador. Por ejemplo, en un sistema de 32 bits, el máximo es 232, lo que da 4096
Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de aplicaciones
mucho más fácil, al poder ignorar completamente la necesidad de mover datos entre
los distintos espacios de memoria.
Aunque la memoria virtual podría estar implementada por el software del
sistema operativo, en la práctica casi siempre se usa una combinación de hardware y
software, dado el esfuerzo extra que implicaría para el procesador.

Memoria Cache

Con el objetivo de lograr un tiempo de acceso menor a los datos almacenados


en distintos tipos de memoria, existen sistemas de hardware o software llamado
caché, los cuales almacenan estos datos de forma duplicada. La memoria caché
contenida dentro de una CPU está más cercana que la memoria RAM o memoria
principal de la computadora, y es por esta razón que mejora la capacidad de
procesamiento del mismo.
Cada vez que se accede por vez primera a determinado dato, este es
almacenado en caché, posteriormente al intentar leer el mismo dato se recurrirá a la
información almacenada en caché, ahorrando tiempo de acceso. La memoria caché se
renueva, por lo tanto, a todo momento.
Los discos duros y otros dispositivos de almacenamiento también hacen
utilización de estos métodos, ya sea por hardware y/o por software mediante el
sistema operativo, el cual destina cierta parte de su memoria RAM al almacenamiento
de información proveniente de estos dispositivos. Las grabadoras de CD/DVD poseen
una memoria caché que va almacenando los datos previamente a ser grabados en
discos ópticos, e incluso algunos programas brindan un caché extra para evitar aún
más la inutilización de los discos.
La forma en que un bloque se coloca en memoria caché puede ser directa,
asociativa, o asociativa por conjuntos, su extracción es por demanda o con
prebúsqueda, su reemplazo puede ser aleatorio o FIFO (el primero que entra es el
primero que sale). La actualización de la memoria RAM puede ser inmediata o
aplazada.

Вам также может понравиться