Vous êtes sur la page 1sur 35

Gestin de Memoria

Capitulo 7

Gestin de Memoria
La memoria principal se divide en dos partes:
una parte para el sistema operativo y otra para
el programa que se ejecuta en ese instante
En un sistema multiprogramado, la memoria
debe subdividirse para hacer sitio a varios
procesos
La tarea de subdivisin la lleva a cabo
dinmicamente el SO y se conoce como
gestin de memoria
Se necesita repartir eficientemente la memoria
para introducir tantos procesos como sea
posible
2

Requisitos de la Gestin de
Memoria
Reubicacin
El programador no conoce que otros programas
residirn en la memoria en el momento de la
ejecucin de su programa
Para maximizar el uso del procesador se busca
poder cargar y descargar procesos activos,
manteniendo una gran reserva de procesos listos
para ejecutarse
Una vez que se ha descargado un programa en el
disco, seria bastante limitado que, cuando vuelva a
ser cargado, deba situarse en la misma regin de
memoria principal que antes. En lugar de ello, se
puede necesitar reubicar el proceso en un rea
distinta de la memoria
3

Requisitos de la Gestin de
Memoria
Proteccin
El proceso debe protegerse contra interferencias no
deseadas de otros procesos, tanto accidentales
como intencionadas
La mayora de los lenguajes de programacin
permiten el calculo dinmico de direcciones en
tiempo de ejecucin
El procesador (hardware), y no el sistema operativo
(software), es el que debe satisfacer las exigencias
de proteccin de la memoria. Esto debido a que el
sistema operativo no puede anticiparse a todas las
referencias a memoria que har un programa
5

Requisitos de la Gestin de
Memoria
Compartimiento
Cualquier mecanismo de proteccin que se
implemente debe tener flexibilidad de
permitir el acceso de varios procesos a la
misma zona de memoria principal
Si una serie de procesos estn ejecutando el
mismo programa, sera permitir que cada
proceso acceda a la misma copia del
programa, el lugar que de tener una copia
aparte
6

Requisitos de la Gestin de
Memoria
Organizacin Lgica
Los mdulos pueden escribirse y compilarse
independientemente, mientras que el sistema
resuelve durante la ejecucin todas las referencias
de un modulo a otro
Pueden otorgarse distintos grados de proteccin a
los distintos mdulos (solo lectura, solo ejecucin)
Introducir mecanismos por medio de los cuales los
procesos puedan compartir mdulos

Requisitos de la Gestin de
Memoria
Organizacin Fsica
La memoria principal disponible para un programa
y sus datos puede ser insuficiente
Superposicin: Un programa y los datos se organizan de
tal forma que puede haber varios mdulos asignados a la
misma regin de memoria, con un programa principal
responsable del intercambio de los mdulos segn se
necesite

El programador no conoce durante la codificacin


cuanto espacio habr disponible o donde estar este
espacio

Particin de la Memoria
Particiones Estticas
Cualquier proceso cuyo tamao sea menor o igual que el
tamao de la particin puede cargarse en cualquier particin
libre
Si todas las particiones estn ocupadas y no hay procesos
residentes en estado listo o ejecutando, el sistema operativo
puede sacar un proceso de alguna de las particiones y cargar
otro proceso de forma que siempre haya algn trabajo para el
procesador
Un programa puede ser demasiado grande para caber en la
particin. En este caso, el programador debe disear el
programa mediante superposiciones, para que solo una parte
del programa est en la memoria principal en cada instante

Particin de la Memoria
El uso de la memoria es ineficiente.
Cualquier programa, sin importar lo
pequeo que sea, ocupara una particin
completa. Este fenmeno, en el que se
malgasta el espacio interno de una
particin cuando el bloque de datos
cargado es ms pequeo que la particin,
se denomina fragmentacin interna
10

11

Algoritmo de Ubicacin
Particiones del mismo tamao
Con particiones del mismo tamao, la ubicacin de un
proceso en la memoria es trivial. Mientras haya una particin
libre, puede cargarse un proceso en esa particin. Puesto que
todas las particiones son de igual tamao, no importa la
particin que se use
Particiones de distintos tamaos
Una forma es asignar a cada proceso la particin ms
pequea en la que quepa. En este caso, hay una cola de
planificacin para cada particin para que albergue procesos
cuyo destino es dicha particin
Otra forma es utilizar una sola cola para todos los procesos.
Cuando se va a cargar un proceso en la memoria principal, se
selecciona la particin ms pequea disponible que pueda
albergar al proceso. Si todas las particiones estn ocupadas,
se debe tomar una decisin de intercambio
12

13

Particiones Dinmicas
Las particiones dinmicas son variables en numero y
longitud
El proceso es almacenado con el tamao exacto de
memoria que necesita
Conforme pasa el tiempo, la memoria comienza a estar
ms fragmentada y su rendimiento decae. Este
fenmeno se denomina fragmentacin externa
Una tcnica para vencer la fragmentacin externa es la
compactacin: de vez en cuando, el sistema
operativo desplaza los procesos para que estn
contiguos de modo que toda la memoria libre quede en
un bloque
14

15

Particiones Dinmicas
Algoritmo de Ubicacin
Puesto que la compactacin de memoria
consume tiempo, el sistema operativo tiene
que decidir adecuadamente como asignar los
procesos a memoria (como llenar los huecos)
Best-fit algorithm
Elige el bloque de memoria mas prximo libre que
sea mayor o igual al proceso a cargar
El proceso de compactacin se realiza ms seguido

16

Particiones Dinmicas
Algoritmo de Ubicacin
First-fit algorithm
Recorre la memoria desde el principio y
elige el bloque de memoria que sea mayor o
igual al proceso a cargar
Es mas rpido
Puede tener ms procesos cargados en el
inicio de la memoria

17

Particiones Dinmicas
Algoritmo de Ubicacin
Next-fit algorithm
Recorre la memoria desde la localidad de la
ultima asignacin
Lleva frecuentemente la asignacin de
bloques libres al final de la memoria
Requiere compactacin para obtener un
gran bloque al final de la memoria

18

19

Sistema de Colegas
El tamao de bloque mas grande esta
dado por 2U
Si se hace la solicitud de tamao s tal
que 2U-1 < s <= 2U, entonces el bloque
entero se asigna
En otro caso el bloque se divide en dos
colegas de igual tamao 2U-1
El proceso continua hasta que el bloque mas
pequeo sea mayor o igual que s
generndose y asignndose a la solicitud
20

21

22

Reubicacin
En ocasiones, un mismo programa necesita
ejecutarse en diferentes posiciones de
memoria. Para esto la traduccin debe estar
realizada en forma adecuada, es decir, no
utilizando referencias absolutas a direcciones
de memoria, sino referencias relativas a una
direccin especial llamada direccin de
reubicacin.
Cuando el proceso se carga por primera vez,
todas la referencias relativas a la memoria en
el cdigo de reemplazan por direcciones
absolutas de la memoria principal
23

Direcciones
Una direccin lgica es una referencia a una
posicin de memoria independiente de la
asignacin actual de datos a la memoria
Una direccin relativa es una caso particular
de direccin lgica en el cual la direccin se
expresa como una posicin relativa a algn
punto conocido.
Una direccin fsica o absoluta, es una
posicin real en la memoria principal
24

Registros Usados durante una


Ejecucin
Registro Base
Direccin de comienzo de un proceso

Registro Limite
Direccin del final de un proceso

Estos valores son asignados cuando los


procesos son cargados y descargados de
la memoria principal

25

26

Registros Usados durante una


Ejecucin
El valor del registro base es sumado con
la direccin relativa para producir la
direccin absoluta
El resultado es comparado con el
registro limite
Si la direccin esta dentro de limite se
puede proceder con la ejecucin de la
instruccin. Si esta fuera del limite se
produce una interrupcin
27

Paginacin
Cuando la memoria principal se encuentra dividida en
trozos iguales de tamao fijo relativamente pequeos y
cada proceso esta dividido tambin en pequeos trozos
de tamao fijo y del mismo tamao que la memoria
Los trozos del proceso son llamados pginas, los
trozos de memoria se llaman marcos o marcos de
pgina
El sistema operativo mantiene una tabla de paginas
para cada proceso
La tabla de paginas muestra la posicin del marco de cada
pagina del proceso
La direccin de memoria en esta caso consiste de un numero
de pagina y un desplazamiento dentro de la pagina
28

Asignacin de Paginas de
Procesos a Marcos Libres

29

Asignacin de Paginas de
Procesos a Marcos Libres

30

Estructura de datos para el ejemplo de la


Figura 7.9 en el instante de tiempo (f)

31

Segmentacin
En este caso, el programa y sus datos asociados se
dividen en un conjunto de segmentos
No es necesario que todos los segmentos de todos los
programas tengan la misma longitud, aunque existe
una longitud mxima de segmento
Como en la paginacin, una direccin lgica
segmentada consta de dos partes, en este caso un
numero de segmento y un desplazamiento
El programa puede ocupar mas de una particin y
stas no tienen por que estar contiguas
El sistema operativo mantiene una tabla de
segmentos para cada proceso y una lista de bloques
libres en la memoria principal
32

33

34

35

Vous aimerez peut-être aussi