Vous êtes sur la page 1sur 4

GESTION DE MEMORIA GESTION DE MEMORIA En un sistema monoprogramado, la memoria principal se divide en dos partes: una parte para el sistema

operativo (monitor residente, ncleo) 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 para hacer sitio a varios procesos. Esta tarea de subdivisin la lleva a cabo el sistema operativo y se conoce como gestin de memoria. OBJETIVOS DE LA ADMINISTRACIN DE MEMORIA Los principales requisitos que busca conseguir la administracin de memoria son: Reubicacin En un sistema multitarea, la memoria principal est compartida por muchos procesos. Generalmente, no es posible para el programador saber qu otros programas estn residentes en memoria principal en el tiempo de ejecucin de su programa. Adems, se busca poder trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilizacin del procesador, proveyndolo de varios procesos listos para ejecutar. Una vez que un programa fue sacado de la memoria principal al disco, sera difcil establecer cul es el prximo en volver a la memoria principal, y debera ser colocado en la misma regin de la memoria principal que antes. El sistema operativo debe conocer la ubicacin de la informacin del control del proceso y de la pila de ejecucin, adems de la primera ubicacin en donde comenzar el proceso. Como el sistema operativo es responsable de mover el proceso a la memoria principal, las direcciones son fciles de mover. Sin embargo, el procesador debe negociar con referencias de memoria del programa. Las instrucciones de ramificacin (branch instructions) apuntan a la prxima instruccin a ejecutar, las instrucciones de referencia de datos (reference to data) apuntan al dato referenciado por el programa. Sin embargo, el procesador y el S.O. deben ser capaces de trasladar las referencias de memoria encontradas en el programa en la actual ubicacin de la memoria fsica. Proteccin Todos los procesos deben ser protegidos de indeseables interferencias accidentales o intencionales de otros procesos. Este mecanismo, sin embargo, dificulta la tarea de reubicacin debido a que se deben chequear todas las posiciones de memoria al ubicar un proceso para mantener el sistema de proteccin. Todas las referencias de memoria generadas por un proceso deben ser chequeadas en tiempo de ejecucin para estar seguro de que apuntan solo a la porcin de memoria reservada para ese proceso.

Ante una violacin de la proteccin, el que debe ofrecer esta proteccin es el procesador y no el sistema operativo debido a la velocidad y a que el S.O. no puede anticipar las referencias de memoria que el proceso har. Uso compartido de cdigos y datos Todos los mecanismos de proteccin deben ser un poco flexibles, ya que deben permitir que los procesos de un mismo programa que comparten una tarea tengan memoria en comn. El mecanismo de proteccin debe permitir esto de una manera controlada. Organizacin lgica La memoria en una computadora es lineal, una sucesin de bytes. En cambio, los programas estn construidos en mdulos, en donde los datos pueden ser modificados. Si el S.O. y el HW son capaces de trabajar con estos mdulos, se pueden apreciar las siguientes ventajas:

Los mdulos pueden escribirse y compilarse independientemente, mientras que el sistema resuelve durante la ejecucin todas las referencias de un mdulo a otro Pueden otorgarse varios grados de proteccin a los distintos mdulos Se puede introducir mecanismos de memoria compartida, as al usuario se le hace mucho ms sencilla la construccin de aplicaciones Organizacin fsica La memoria est dividida en primaria y secundaria. El traspaso de informacin entre stas es la preocupacin ms grande del sistema; esta responsabilidad puede ser asignada al programador, pero sto sera una gran prdida de tiempo, por esto el sistema debe ocuparse de ello. CARGA DE PROGRAMAS EN MEMORIA La operacin principal de la administracin de la memoria es llevar la informacin a la memoria principal, para poder ser ejecutada por el procesador. En los sistemas modernos, esta administracin se llama Memoria Virtual, basada en dos tcnicas: Paginacin y Segmentacin. Las tcnicas que existen para la carga de programas en memoria son: Particin fija Consiste en dividir la memoria libre en varias partes de igual tamao o de diferentes tamaos. En el caso de la particin fija de partes iguales, se plantean dos dificultades:

Un programa puede ser demasiado grande para caber en la particin. En este caso, el programador debe disear el programa mediante superposiciones, para que slo una parte del programa est en memoria principal. Cuando se necesita un mdulo que no est presente, el programa de usuario debe cargar dicho mdulo en la particin del programa, superponindose a los programas y datos que se encuentren en ella. El uso de memoria principal es extremadamente ineficiente. Cualquier programa, sin importar lo pequeo que sea, ocupar una particin completa. Supongamos un programa que ocupa 120 Kb y se carga en una particin de 512 Kb, se malgasta el espacio interno de la particin y sto se denomina fragmentacin interna. En el caso de particiones de igual tamao, si todas las particiones estuvieran ocupadas con procesos que no estn listos para ejecutar y necesita cargarse un nuevo proceso, debe determinarse qu particin expulsarse de memoria. Esta decisin es una decisin de planificacin, que se ver en un captulo prximo. Pero en el caso de particiones de distintos tamaos, debe determinarse en que particin (por cuestiones de tamao) se cargar el nuevo proceso. La forma ms simple es asignar cada proceso a la particin ms pequea en que quepa (sin importar si la particin est cargada o no), lo que necesitar de una cola de expulsados para cada particin. Otra forma es asignar el proceso a la particin ms pequea entre aquellas que estn libres (usando una nica cola para todos los procesos); y si todas las particiones estn ocupadas, se debe tomar una decisin de intercambio. Estamos suponiendo con este mtodo que conocemos la cantidad mxima de memoria que necesitar un proceso, lo que no siempre es cierto. Particin dinmica Este mtodo consiste en particiones de memoria de tamaos variable, o sea, a cada proceso se le asigna la cantidad de memoria que necesita (la cantidad exacta y ni un poco ms). Tras el ingreso de nuevos procesos y la expulsin de otras, se generarn huecos de memoria inutilizados. Conforme pasa el tiempo, la memoria comienza a estar ms fragmentada y su rendimiento decae; este fenmeno se denomina fragmentacin externa. Una tcnica para superar la fragmentacin externa es la compactacin. De vez en cuando, el sistema operativo desplaza los procesos para que estn contiguos de forma que toda la memoria libre quede junta en un bloque. Las dificultades que presenta la compactacin son: Es un procedimiento que consume tiempo de trabajo del procesador Debe realizarse los movimientos de una regin a otra, sin invalidar las referencias a memoria del programa

A pesar de la compactacin, deben utilizarse algunos algoritmos para la ubicacin de procesos en las particiones. Estos algoritmos son: Mejor ajuste (Best-fit): se elige el bloque con el tamao ms 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 ubicacin y elige el siguiente bloque disponible que sea suficientemente grande. Peor ajuste (Worst-fit): elige el bloque ms grande posible.

En un sistema multiprogramado con particiones dinmicas, habr algn momento en el que todos los procesos de memoria principal estn en estado bloqueado y la memoria sea insuficiente, an aplicando la compactacin, 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 ms adelante.

Vous aimerez peut-être aussi