Uno de los principales recursos de la computadora es la memoria. Hoy en día, los equipos de computo cuentan con una alta capacidad de memoria pero también las aplicaciones que corren en ellas ocupan gran parte de esta. Por lo tanto, nunca se tendrá suficiente y para ello es necesario administrar esta memoria de manera eficiente.
La parte del sistema operativo que administra la memoria se llama administrador de memoria el cual lleva un registro de las partes que se están utilizando y de las que no, con el fin de asignar espacio de memoria a aquellos procesos que los necesiten y liberando memoria cuando estos procesos hayan terminado. También administra el intercambio entre la memoria principal y el disco en los casos en que la memoria principal no tenga capacidad para los procesos que la necesiten.
Los administradores de memoria se dividen en dos tipos: los que desplazan los procesos de la memoria principal al disco o viceversa durante la ejecución y los que no.
La memoria se divide también en memoria real y memoria virtual. La memoria real o principal es donde se ejecutan los programas y procesos y es el espacio real que existe en memoria para que se ejecuten los procesos.
La programación sin intercambio de memoria es aquella en que uno o más procesos ocupan parte o toda la memoria a la vez. O cuando una aplicación es divida en dos o más procesos para ofrecer servicios a varios usuarios al mismo tiempo, así se incrementa el aprovechamiento del CPU.
También se puede programar con particiones fijas en la memoria en las que su tamaño puede variar.
La administración básica de la memoria consistiría en la que los procesos hicieran cola esperando espacios disponibles en la memoria para ser utilizados o bien esperando a que estos se desocupen. Todo esto depende del tamaño de los procesos y de los huecos que se asignen en la memoria. Existen criterios o algoritmos para esto, todo depende de la forma es que se configure el equipo.
La programación con intercambio es aquella en la que la memoria se divide en particiones variables. Inicialmente toda la memoria está disponible para los procesos y es considerado como un gran bloque o hueco único de memoria pero cuando un proceso llega se le asigna un espacio y es cargado a la memoria principal, normalmente no hay un hueco en el disco asignado a él. Cuando deba intercambiarse, se deberá asignar un hueco en el área de intercambio del disco. Los algoritmos para la administración del hueco de intercambio son los mismos que se utilizan para la administración de la memoria principal.
La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso en la lista de espera. Esta fragmentación se denomina externa.
La fragmentación interna es aquella en la que se reserva más memoria al proceso de la que realmente va a utilizar y a diferencia de la externa, estos huecos no se pueden compactar para ser utilizados. Se debe esperar la finalización del proceso para que libere el bloque completo de memoria.
La paginación ocurre en la memoria virtual. El esquema de paginación es una solución para la fragmentación externa, el cual es un problema que ocurre con los diferentes métodos de administración de la memoria principal ya que desperdicia la memoria.
La paginación permite que el espacio de direcciones lógicas lleve a cabo un proceso en direcciones no continuas, permitiendo así al proceso ubicarse en cualquier espacio de memoria física que esté disponible aunque esté divida; evitando de esa forma el ajustar los pedazos de memoria de tamaños variables que han sufrido los esquemas de manejo de memoria anteriores.
Al utilizar la memoria virtual, las direcciones no pasan de forma directa al bus de memoria sino que van a una Unidad Administradora de Memoria. Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas páginas. Las unidades correspondientes a la memoria física se llaman marcos para página o frames. Las páginas y los frames tienen el mismo tamaño.
En resumen, la paginación, es la asociación de direcciones virtuales con las físicas. Se reemplaza el campo de la página virtual de una dirección virtual por un campo de marco, lo que produce una dirección en la memoria física.
Con el uso del método de paginación se puede llegar a saturar la memoria si se incrementa demasiado el nivel de multiprogramación. Esto provoca sobre asignación y mientras un proceso de usuario se está ejecutando, ocurre un fallo de página. Al pasar esto, el sistema operativo debe elegir una página para retirarla de la memoria y usar el espacio para la página que se necesita para desbloquear el sistema y que el hardware pueda seguir trabajando. Para esto, existen una serie de algoritmos que pueden reemplazar las páginas de acuerdo a las necesidades del usuario.
La segmentación es otra opción para el manejo de memoria ya que libera al programador de la tarea del control de tablas en expansión y contracción, de la misma forma que la memoria virtual elimina la preocupación por organizar el programa en una serie de proyectos.
Esto se puede lograr dotando a la máquina de varios espacios independientes de direcciones llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde o hasta cierto máximo. La longitud de cada segmento puede variar de o hasta un máximo permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general, longitudes distintas.
La segmentación también facilita el uso de procedimientos o datos compartidos entre varios procesos. Existe también varias formas de segmentar la memoria: la segmentación pura donde los segmentos se reemplazan de acuerdo a su tamaño lo que hace que la memoria quede divida en varios bloques y la segmentación con paginación que evita el problema de fragmentación externa, reduce el tiempo de búsqueda y el desperdicio de memoria al utilizar cualquier frame desocupado para una página deseada.
No hay comentarios:
Publicar un comentario