Мужчины!!! помогите ПОЖАЛУЙСТА!!!
В институте по предмету ОС задан курсовик
на тему: "Реализация модели распределения памяти перемещаемыми разделами с перемещением в сторону старших адресов со сжатием при отсутствии свободных разделов"!!!! 0_o
Блин!!! Я вообще даже понять немогу, что эта программа делать должна, темболее написать её!!!
Если кто может реализовать, пожалуйста, сделайте - с меня много пива!!! ))
Сделай из ж*** препода флагшток и повесь его на входе вуза за такую тему, от которой лично мой мозк просто виснет))))
Попробуем брать бадягу по кускам:
1) Реализация модели - создать модель чегото-там
2) Распределения памяти - какую инфу куда сунуть
3) Перемещаемыми разделами - разделы, если не ошибаюсь, жестакофф, а может и ошибаюсь (тупой)
4) С перемещаемыми в сторону - понятно))
5) Старших адресов - адрес, у которого название большое. Ну типа FFFFFF больше, чем FFFFF0 и AAAAAA. Наверно
6) Со сжатием - всю эту **** нужно еще и сжимать (аааа)
7) При отсутствии свободных разделов - но сжимать, если места нех**** нет!
Получаем:
Создать модель БОДЯГИ, которая управляет этими самыми перемещаемыми разделами, и, если места нихера нет, запихивает информацию в сторону старших адресов и сжимает ее.
У тебя есть некая память или ее модель. Ты определяешь две функции, byte *new(int size) и void delete(byte *addr). Приходит new. Смотришь, где есть несколько свободных сплошных разделов. Занимаешь эти адреса, возвращаешь. Если такого размера подряд нету, то начинаешь дефрагментацию памяти: смотришь, сколько нужно разделов переместить и перемещаешь их в направлении возрастания адресов (тут можно добавить алгоритм оптимизации, чтобы поменьше перемещать). Если вдруг окажется, что места все равно не хватает, тогда сжимаешь несколько разделов в один, освобождая, таким образом, еще память.