JEFE DE CATEDRA: Lic. Juan Pablo Moreno

SISTEMAS OPERATIVOS

JTP: Mgtr. Manuel Baquinzay

METODO DE BUDDY SYSTEM

"Buddy System" es un algoritmo de administración de memoria utilizado en sistemas operativos para asignar y liberar bloques de memoria de tamaño fijo. Este algoritmo funciona dividiendo la memoria disponible en bloques de tamaño potencia de dos, y luego asignando estos bloques de memoria a los procesos que los soliciten. Si un proceso solicita un bloque de memoria, el algoritmo buscará el bloque disponible más cercano al tamaño solicitado. Si el bloque disponible es más grande que el tamaño solicitado, se dividirá en dos bloques del tamaño más cercano a una potencia de dos.

Cuando un proceso ya no necesita un bloque de memoria, el algoritmo verifica si el bloque adyacente es también un bloque libre del mismo tamaño, y si es así, los fusiona o compacta en un solo bloque más grande. Este proceso se conoce como "coalescencia de bloques" ó "compactacion de bloques".

MAR=1

KAVAL

BLOQUE OCUPADO

2

K

PA

PS

MAR=0

KAVAL

BLOQUE LIBRE

METODO DE BUDDY SYSTEM

Inicialmente se cuenta con una memoria de 512 k, se debe atender los siguientes requerimientos

OPERACION PROCESOS INFORMACION
1 P1 Requiere 65 k
2 P2 Requiere 30 k
3 P3 Requiere 250 k
4 P1 Se Libera
5 P5 Requiere 7 k
6 P6 Se Libera
7 P7 Se Libera

METODO DE BUDDY SYSTEM

2

9

0

512

LIBRE

MEMORIA

1000
1000
1002
1002
1004
1004
1006
1006
1008
1008
1010
1010
1012
1012
1014
1014
1016
1016
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1018
1018
0
9
0
PA
PS
MAR
KVAL

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
1 P1 Requiere 65 k

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
1002
1002
1004
1004
1006
1006
1008
1008
1010
1010
1012
1012
1014
1014
1016
1016
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1018
1018
0
9
0
PA
PS
MAR
KVAL

METODO DE BUDDY SYSTEM

2

9

512

MEMORIA

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
1002
1002
1004
1004
1006
1006
1008
1008
1010
1010
1012
1012
128
128
256
256
1018
1018
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1016
1016
0
8
256
PA
PS
MAR
KVAL
1014
1014
0
7
128
PA
PS
MAR
KVAL

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
2 P2 Requiere 30 k

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
1002
1002
1004
1004
1006
1006
1008
1008
1010
1010
1012
1012
128
128
256
256
1018
1018
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1016
1016
0
8
256
PA
PS
MAR
KVAL
1014
1014
0
7
128
PA
PS
MAR
KVAL

METODO DE BUDDY SYSTEM

2

9

512

MEMORIA

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
1002
160
160
192
192
1014
1014
256
256
1018
1018
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1016
1016
0
8
256
PA
PS
MAR
KVAL
1012
1012
0
6
192
PA
PS
MAR
KVAL
1010
1010
0
5
160
PA
PS
MAR
KVAL
1002
1004
1004
1006
1006
1008
1008

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
3 P3 Requiere 250k

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
160
160
192
192
256
256
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1016
1016
0
8
256
PA
PS
MAR
KVAL
1012
1012
0
6
192
PA
PS
MAR
KVAL
1010
1010
0
5
160
PA
PS
MAR
KVAL
1002
1002
1004
1004
1006
1006
1008
1008
1014
1014
1018
1018

METODO DE BUDDY SYSTEM

2

9

512

MEMORIA

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P1 = 2

7

P2 = 2

5

160

160

P3 = 2

8

METODO DE BUDDY SYSTEM

LIBRE

1000
1000
160
160
192
192
1016
1016
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1012
1012
0
6
192
PA
PS
MAR
KVAL
1010
1010
0
5
160
PA
PS
MAR
KVAL
1002
1002
1004
1004
1006
1006
1008
1008
1014
1014
1018
1018

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
4 P1 Se Libera

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

MEMORIA

0

512

2

6

256

256

128

128

5

192

192

P1 = 2

7

P2 = 2

5

160

160

P3 = 2

8

situación actual de la memoria

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la direccion base del compañero del bloque donde se encuentra el P1 que se LIBERA

L = P + 2

k

L = 0 + 2

7

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

128

OR exclusivo

128

2

64

0

2

32

0

2

1

0

2

16

0

2

8

0

2

4

0

2

2

0

L = 0 + 2

7

2  = 2x2x2x2x2x2x2 = 128

2

9

512

MEMORIA

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P1 = 2

7

P2 = 2

5

160

160

P3 = 2

8

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

compañero ocupado

METODO DE BUDDY SYSTEM

2

9

512

MEMORIA

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

METODO DE BUDDY SYSTEM

LIBRE

1000
160
160
192
192
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1012
1012
0
6
192
PA
PS
MAR
KVAL
1010
1010
0
5
160
PA
PS
MAR
KVAL
1014
1014
0
7
0
PA
PS
MAR
KVAL
1000
1002
1002
1004
1004
1006
1006
1008
1008
1016
1016
1018
1018

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
5 P4 Requiere 7 k

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

METODO DE BUDDY SYSTEM

LIBRE

1000
160
160
192
192
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1012
1012
0
6
192
PA
PS
MAR
KVAL
1010
1010
0
5
160
PA
PS
MAR
KVAL
1014
1014
0
7
0
PA
PS
MAR
KVAL
1000
1002
1002
1004
1004
1006
1006
1008
1008
1016
1016
1018
1018

2

9

512

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

4

176

176

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

METODO DE BUDDY SYSTEM

LIBRE

1000
168
168
176
176
1010
1010
192
192
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1012
1012
0
6
192
PA
PS
MAR
KVAL
1008
1008
0
4
176
PA
PS
MAR
KVAL
1014
1014
0
7
0
PA
PS
MAR
KVAL
1006
1006
0
3
168
PA
PS
MAR
KVAL
1000
1002
1002
1004
1004
1016
1016
1018
1018

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
6 P2 Se Libera

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

Text

situación actual de la memoria

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la direccion base del compañero del bloque donde se encuentra el P2 que se LIBERA

L = P + 2

k

L = 128 + 2

5

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

1

1

0

1

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

160

OR exclusivo

2

9

512

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

4

176

176

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero ocupado

2

9

512

0

P1 = 2

7

0

0

512

512

2

8

2

8

2

7

2

8

256

256

256

256

128

128

0

512

2

6

2

8

256

256

128

128

2

6

192

192

0

512

2

6

2

8

256

256

128

128

2

5

192

192

P1 = 2

7

P1 = 2

7

P2 = 2

5

160

160

0

512

2

6

256

256

128

128

2

5

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

4

176

176

0

512

2

6

256

256

128

128

2

4

192

192

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

2

5

METODO DE BUDDY SYSTEM

LIBRE

1000
168
168
176
176
128
128
192
192
0
0
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1012
1012
0
6
192
PA
PS
MAR
KVAL
1008
1008
0
4
176
PA
PS
MAR
KVAL
1014
1014
0
7
0
PA
PS
MAR
KVAL
1006
1006
0
3
168
PA
PS
MAR
KVAL
1010
1010
0
5
128
PA
PS
MAR
KVAL
1000
1002
1002
1004
1004
1016
1016
1018
1018

METODO DE BUDDY SYSTEM

OPERACION PROCESOS INFORMACION
7 P4 Se Libera

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

0

512

2

6

256

256

128

128

2

4

192

192

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

2

5

situación actual de la memoria

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del bloque donde se encuentra el P4 que se LIBERA

L = P + 2

k

L = 160 + 2

3

0

0

0

0

1

0

0

0

0

1

0

0

0

0

0

1

1

0

1

0

1

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

168

OR exclusivo

0

512

2

6

256

256

128

128

2

4

192

192

160

160

P3 = 2

8

2

7

2

3

176

176

168

168

P4 = 2

3

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero libre

0

512

2

6

256

256

128

128

2

4

192

192

160

160

P3 = 2

8

2

7

2

4

176

176

chequear condición del compañero del nuevo bloque o particion formada

2

5

2

5

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del nuevo bloque 

L = P + 2

k

L = 160 + 2

4

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

1

1

0

1

1

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

176

OR exclusivo

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero libre

0

512

2

6

256

256

128

128

2

4

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

4

176

176

chequear condición del compañero del nuevo bloque o particion formada

0

512

2

6

256

256

128

128

192

192

P2 = 2

5

160

160

P3 = 2

8

2

7

2

5

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del nuevo bloque 

L = P + 2

k

L = 160 + 2

5

0

0

1

0

0

0

0

0

0

1

0

0

0

0

0

1

1

0

0

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

128

OR exclusivo

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero libre

chequear condición del compañero del nuevo bloque o particion formada

0

512

2

6

256

256

128

128

192

192

160

160

P3 = 2

8

2

7

2

5

2

5

0

512

2

6

256

256

128

128

192

192

P3 = 2

8

2

7

2

6

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del nuevo bloque 

L = P + 2

k

L = 128 + 2

6

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

0

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

192

OR exclusivo

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero libre

chequear condición del compañero del nuevo bloque o particion formada

0

512

2

6

256

256

128

128

192

192

P3 = 2

8

2

7

2

6

0

512

256

256

128

128

P3 = 2

8

2

7

2

7

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del nuevo bloque 

L = P + 2

k

L = 128 + 2

7

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

0

OR exclusivo

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero libre

0

512

256

256

128

128

P3 = 2

8

2

7

2

7

0

512

256

256

P3 = 2

8

2

8

METODO DE BUDDY SYSTEM

2

1

2

2

2

3

2

4

2

5

2

6

2

7

2

8

2

9

1

2

4

8

16

32

64

128

256

512

2

0

2

10

2

11

2

12

1024

2048

4096

Cuando se libera un proceso se deben seguir los siguientes pasos

calcular la dirección base del compañero del nuevo bloque 

L = P + 2

k

L = 0 + 2

8

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0+0 0
0+1 1
1+0 1
1+1 0

Direccion base del compañero

256

OR exclusivo

0

0

1

Se debe analizar la memoria y chequear la situacion del bloque cuya direccion base se obtuvo  en el paso 1°

Compañero OCUPADO

0

512

256

256

P3 = 2

8

2

8

METODO DE BUDDY SYSTEM

LIBRE

1000
0
0
1018
1018
1000
1002
1004
1006
1008
1010
1012
1014
1016
1018
0
1
2
3
4
5
6
7
8
9
1016
1016
0
8
0
PA
PS
MAR
KVAL
1000
1002
1002
1004
1004
1006
1006
1008
1008
1010
1010
1012
1012
1000
1000

Buddy System

By mbaquinzay

Buddy System

  • 375