Я пытаюсь внедрить систему друзей, но я не уверен, как именно работает система друзей. Давайте предположим, что у меня есть 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 | - |?
Надеюсь, вопрос достаточно ясен!