С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 190
1

Распределение оперативной памяти.

04.12.2011, 00:38. Показов 2386. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На языке си нужно написать программу демонстрирующая распределение памяти.
Программа должна в начале работы запросить блок памяти у операционной системы, а затем применять процедуры распределения памяти (выделение блока памяти заданного размера и освобождение ранее выделенного блока памяти).
Для управления распределением памяти используется двусвязный список с этикетками.
По подробней об этом способе:
двусвязный список свобоных блоков, каждый блок в начале и в конце снабжается специальными <<этикетками>>, которые содержат информацию о том занят блок или свободен. При освобождении блок может быть записан в любое место списка. Проверка на сопряженные <<дыры>> выполняется по расположенным в соседних ячейках памяти <<этикетками>>.

Сам двусвязный список свобоных блоков (Правильно ли я его написал):

C++
1
2
3
4
5
6
7
struct mm_node
{
 unsigned len;    /*Блина блока.
 unsigned next;  /*Номер следующего блока(=MM_END, если это последний блок в списке)
 struct mm_node *next; /*Этикетка в начале блока.
 struct mm_node *prior; /*Этикетка в конце блока.
}
Мне нужно в Двусвязный список записать блоки. И эти блоки в начале и в конце снабдить этикетками.
Правильно ли у меня это сделано?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2011, 00:38
Ответы с готовыми решениями:

[Обсуждение] Распределение памяти
Приветствую! Получил задание, и не знаю как к нему подойти, не пойму как реализовать суть...

Шифрование данных модуля диска в оперативной памяти
Доброго времени суток, уважаемые форумчане. Решил я попробовать запустить модуль RAM диска на ОС...

Понять динамическое распределение памяти (malloc)
Пытаюсь понять динамическое распределение памяти, но пока безрезультатно. Написал код: ...

Распределение оперативной памяти для виртуальных машин
В общем дело такое. Есть сервер, оперативы на нём 128 гигов. Планирую поставить Windows 2008 R2,...

4
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.12.2011, 01:34 2
каждый нод двусвязного списка должен еще и указатель на выделенный блок хранить.

Добавлено через 1 минуту
Цитата Сообщение от Nikoli4 Посмотреть сообщение
/*Номер следующего блока(=MM_END, если это последний блок в списке)
не очень понимаю, зачем хранить номер...

Добавлено через 1 минуту
Цитата Сообщение от Nikoli4 Посмотреть сообщение
(=MM_END, если это последний блок в списке)
это вообще лишнее. если этот нод последний в списке, то его член next == NULL
1
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 190
04.12.2011, 03:29  [ТС] 3
Т.е структура будет выглядеть так.
C
1
2
3
4
5
6
7
struct mm_node
{
unsigned len; /*Длина блока. */
struct mm_node *nast; /*Указатель на Номер выбранного  блока(=MM_END, если это последний блок в списке) */
struct mm_node *next; /*Этикетка в начале блока. */
struct mm_node *prior; /*Этикетка в конце блока. */
}
unsigned next; /*Номер следующего блока(=MM_END, если это последний блок в списке)-это было что бы потом освободившийся блок вернуть в то место от куда он был взят. По условию задачи он не нужен. Так как блок может быть записан в любое место.
0
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 190
04.12.2011, 03:32  [ТС] 4
или нужно так

C
1
2
3
Struct *mm_node
{
}
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.12.2011, 07:04 5
так:
C
1
2
3
4
5
6
struct mm_node {
   unsigned len; /*Длина блока. */
   void* ptr; /* это всего лишь указатель на выделенный тобою участок памяти. */
   struct mm_node *next; /*Этикетка в начале блока. */
   struct mm_node *prior; /*Этикетка в конце блока. */
}
0
04.12.2011, 07:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2011, 07:04
Помогаю со студенческими работами здесь

Распределение оперативной памяти выделенной под программу
Здравствуйте. Помогите с объяснением некоторых тем, нигде не могу найти. №1 Целый тип данных....

Распределение памяти для выделения и освобождения блоков памяти внутри запрошенного пула
В программе малые&quot;дыры&quot; избегают,что нужно сделать что бы малые &quot;дыры&quot; не избегались.... #...

Использование оперативной памяти (вылетают игры из-за нехватки памяти)
Перезагружаю комп, играю часа 3-4 и вся память пропадает куда-то в результате чего игры...

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru