Распределение памяти системы друзей - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь внедрить систему друзей, но я не уверен, как именно работает система друзей. Давайте предположим, что у меня есть 1024MB Storage. Я выполнил шаги в следующем порядке:

1) Приходит P1, где P1 - 100 МБ

2) Приходит P2, где P2 - 200 МБ

3) P1 уходит

4) Приходит P3, где P3 составляет 100 МБ

Ссылаясь на Википедию (https://en.wikipedia.org/wiki/Buddy_memory_allocation):

Найдите слот памяти подходящего размера (минимальный блок 2 КБ)больше или равно запрошенной памяти)

Если он найден, он выделяется программе.

Если нет, он пытается создатьподходящий слот памяти. Система делает это, пытаясь сделать следующее: 1. Разбить свободный слот памяти, превышающий запрошенный объем памяти, пополам 2. Если достигнут нижний предел, затем выделить этот объем памяти 3. Вернитесь к шагу 1(ищите слот памяти подходящего размера) 4. Повторяйте этот процесс, пока не будет найден подходящий слот памяти

Итак, после шага 3, куда я должен положить новыйпроцесс (P3). Либо в начале, либо рядом с его собеседником? Если рядом с его собеседником, до илипосле Р2? А также, как в википедии написано, я собираюсь найти слот mem, подходящий для этого размера, самые первые 128 МБ сегмента памяти будут эффективными, так почему я должен рассматривать приятеля?

после 3-го шага соблюдайте: | -------- | PPP2 | ---- |// указывает, что это занимает 256 МБ

, но затем => | P3 | ------ | PPP2 | ---- |или

| ------ | P3 | PPP2 | ---- |или

| -------- | PPP2 | P2 | - |?

Надеюсь, вопрос достаточно ясен!

...