Vous êtes sur la page 1sur 5

Sistemas Operativos y Administracin, Universidad Nacional del Altiplano, Puno -Per Presentado: 15/11/2017

ALGORITMO DE COLEGAS (BUDDY)

Yaguno Mamani, Cristian Rony cristianyaguno92@gmail.com

Resumen

El algoritmo utilizado para asignar la pgina es conocido como el sistema colega (buddy), donde
el gestor de memoria tiene una lista de grupos de marcos de pginas contiguos. Permite mantener
los bloques libres de la memoria fsica. En este mtodo solo se reservan tamaos que son potencias
de dos y, por tanto, solamente se dispone de dos operaciones que es dividir bloque en dos y unir
dos bloques consecutivos en uno. Los asignadores buddy de bloques no son nicamente para los
Sistemas Operativos de Tiempo-Real (RTOS); ellos tambin son usados en sistemas operativos
de propsito general (tales como Microsoft Windows y Linux).

En el presente artculo se ver la explicacin ms a fondo de cmo funciona el Sistema de Colegas


y tambin se mostrar algoritmos.

Abstract

The algorithm used to assign the page is known as the buddy system, where the memory manager
has a list of groups of contiguous page frames. It allows to keep the blocks free from physical
memory. In this method, only sizes that are powers of two are reserved and, therefore, only two
operations are available, which is to divide the block into two and join two consecutive blocks
into one. Buddy block allocators are not only for Real-Time Operating Systems (RTOS); they are
also used in general-purpose operating systems (such as Microsoft Windows and Linux).

In the present article you will see the more in-depth explanation of how the System of Colleagues
works and algorithms will also be displayed.
1. Introduccin disponible son de tamao 2 , para
El sistema buddy es un algoritmo para la valores de k tal que L k U, donde:
gestin de memoria, tiene como objetivo 2 = bloque de tamao ms pequeo
principal evitar la fragmentacin asignable.
externa. Linux utiliza el algoritmo 2 = tamao de bloque ms grande
buddy para asignar y liberar asignable; generalmente 2 , es el
eficientemente bloques de pginas. tamao de la memoria entera disponible
Linux proporciona varios mecanismos para asignacin.
para asignar la memoria. El mecanismo Si se hace uan solicitud de tamao s que
principal para asignar nuevos marcos de 21 <S<2 , entonces el bloque entero
pginas de memoria fsica es el se asigna:
asignador de pginas, el cual opera En otro caso, el bloque se divide
mediante el uso del conocido algoritmo en dos colegas de igual tamao.
de colegas (Tanenbaun, 2009). Este proceso contina hasta que
el bloque ms pequeo sea
2. Buddy System (sistema de colegas) mayor o igual que S
El Buddy System es un esquema para generndose.
gestin de la particin de memoria que
La Figura muestra un ejemplo que
trata de encontrar un equilibrio entre los
utiliza un bloque inicial de 1 Mbyte. La
esquemas de particiones estticos
primera peticin, A, es de 100 Kbytes,
(limitan el nmero de procesos activos y
de tal forma que se necesita un bloque
pueden utilizarse el espacio ineficiente
de 128K. El bloque inicial se divide en
si hay poca concordancia entre los
dos de 512K. El primero de estos se
tamaos de las particiones disponibles y
divide en dos bloques de 256K, y el
los tamaos de los procesos) y
primero de estos se divide en dos de
dinmicos (ms complejos de mantener
128K, uno de los cuales se asigna a A.
y incluye la sobrecarga de compartir).
La siguiente peticin, B, solicita un
bloque de 256K. Dicho bloque est
El sistema de descomposicin binaria
disponible y es asignado. El proceso
(Buddy System) asigna la memoria a
continuo, provocando divisiones y
partir de un segmento de tamao fijo
fusiones de bloques cuando se requiere.
compuesto de pginas fsicamente
Obsrvese que cuando se libera E, se
continuas (Silberschatz, Galvin, &
unen dos bloques de 128K en un bloque
Gagne, 2006).
de 256K, que es inmediatamente unido
Segn (Stalling, 2005) en un sistema
con su bloque compa ero (buddy).
buddy, los bloques de memoria
significa diferentes posiciones
absolutas de la memoria durante
su ejecucin (a partir de la
carga).
La compactacin tambin har
que un programa ocupe unas
particiones distintas, lo que

Figura 1. Example of buddy System significa que las ubicaciones


absolutas de la memoria
cambien.
La Figura 2. Muestra una representacin
en forma de rbol binario de la
asignacin de bloques inmediatamente 2.2. Direcciones
despus de la peticin Liberar B. Los Direccin lgica: Es una
nodos hoja representan el referencia a una posicin de
particionamiento de la memoria actual. memoria independiente de
Si dos bloques son nodos hoja, entonces asignacin actual de datos a la
al menos uno de ellos debe estar memoria.
asignado; en otro caso, se unen en un Direccin relativa: La
bloque mayor. direccin se expresa como una
posicin relativa a algn punto
conocido.
Direccin fsica: la direccin
absoluta o la posicin resal en la
memoria principal.
2.3. Segmentacin(simple)
Es otra forma de dividir a un programa:
tanto el programa como los datos
Figura 1. Tree Representation of Buddy
asociados se dividen en segmentos. No
System
es necesario que tengan toda la misma
2.1. Reubicacin
longitud, aunque tiene una long mxima.
Cuando el proceso se carga en la
memoria, se determina la
Direcciones: las direcc lgicas
ubicacin real (absoluta) de la
tienen dos partes, un nmero de
memoria.
segmento y un desplazamiento.
Un proceso puede ocupar
Por tener segmentos de tamaos
diferentes particiones, lo que
desiguales, no hay
correspondencia simple entre Trata de mantener una reserva de
las direcc lgicas y fsicas. bloques libres localmente y solamente
invoca uniones si el nmero de bloques
El mecanismo es similar a una particin libres localmente excede un umbral.
dinmica. La diferencia es que puede
ocupar ms de una particin y no es
necesario que todas estn en memoria ni 4. Cdigo
contiguas. //Dada una solicitud para una asignacin
El SO mantiene: de tamao k, tal que 21 <k2 , para
Una lista de bloques libres en la encontrar un hueco de tamao 2 se
memoria utiliza el siguiente algoritmo recursivo:
Una tabla de segmentos para void obtener_hueco (int i){
cada proceso if (i==(U+1))
fallo;
if (<lista_i vac a>){
La memoria se divide en particiones de tamao
obtener_hueco(i+1);
fijo (frames, marcos).Los procesos se dividen en
porciones (pginas).Se asigna cada pgina a un
dividirHueco_colegas(buddies);
frame libre. Un programa puede ocupar ms de
Poner colegas(buddies) en listas
una pgina, y pueden no estar contiguas. El
i;
mecanismo es similar a la particin esttica
}
(Vera , 2003).
tomar primer hueco de la lista i;
}

//retraso varialble segn la siguiente


3. Buddy System retardado
ecuacin: = - = -2 - .A
La cantidad de demandas para bloques
=0;//despus de una operacin el
de un tamao determinando varan
valor de se actualiza como sigue:
lentamente en el tiempo. De este se
if (existe algn bloque libre){
libera un bloque de tamao 2 e
seleccin uno para asignarlo;
inmediatamente se une con su colega
if (bloque seleccionado esta localmente
(buddy) en un bloque de tamao 21 , el
libre)
kernel puede. El Buddy System difiere
= + 2;
la unin hasta que parezca que sea
else
necesaria, y entonces se une tantos
= + 1;
bloques como sea posible.
}
else{ }
conseguir dos bloques dividiendo en dos
uno ms grande (operacin recursiva);
asignar uno y marcar el otro libre
localmente;
// no cambia, aunque puede cambiar 5. Conclusin
a otros tamaos de bloque por la El sistema buddy es un compromiso
llamada recursiva razonable para eliminar las desventajas
} de los esquemas de particionamiento
} tanto fijo, como variable, pero en los
if(siguiente operacin es una solicitud sistemas operativos contemporneos, la
de bloque libre){ memoria virtual basada en paginacin y
if( 2){ segmentacin es superior.
marcar libre localmente y liberarlo Otra solucin es tener un asignador
localmente; buddy de bloques binarios. En este
= 2; sistema, la memoria se asigna desde un
} gran bloque de memoria que es tamao
else{ potencia de dos.
if( = 1){
marcarlo libre globalmente, liberarlo
globalmente y unirlo si es posible;
= 0; Bibliografa
Silberschatz, Galvin, & Gagne. (2006).
}
Descomposicion Binaria. Espaa:
if( = 0){ McGrawHill.
marcarlo libre globalmente y unirlo si es
Stalling, W. (2005). Sistema Buddy.
posible; Madrid: Pearson.
seleccionar un bloque de tamao 2i y
Tanenbaun, A. S. (2009). Mecanismos
liberarlo globalmente y unirlo si es de asignacion de memoria. mexico:
posible; Pearson.

} Vera , C. (09 de 12 de 2003). Buddy


} System. Comentrio de sistema
opertivos, pg. 19.
}

Vous aimerez peut-être aussi