: . Главная . : . Форум . : . Загрузка . : . Пользователи . : . ЧаВо . : . Документация . :


Операционная система 3OS -> Форумы -> Ядро 3OS
<< Предыдущая тема | Нет следующей темы   

Менеджер памяти

Перейти к странице Предыдущая -1-2
Автор Отправлено
Pushkoff
Tuesday 22.11.2005 23:08 Цитата
Зарегистрирован: Friday 14.10.2005 18:37
Местоположение: Донецк
Сообщений - 13
Нужно так...
Я специально задал вопрос на форуме WASM.RU посвященный распределению памяти виндовс
тема называетя Local vs Global alloc... чесно говоря некоторые из полученных ответов я даже не ожидал... Теперь в каждой лабе я делаю свой менеджер памяти...
Наверх
AlexanderK
Wednesday 23.11.2005 02:53 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
Я не спорю, но просто для информации... функции работы с кучей (которые ты там обсуждал) являются пользовательскими (располагаются в обычной dll-ке в пользовательском пространстве), а системный вызов VirtualAlloc используют лишь для получения большого начального куска памяти. Если сделать менеджер автоматический (вообще без VirtualAlloc), то программе придётся всё-равно как-то узнавать какой блок памяти занят, а какой свободен... получается неудобно.
Наверх
Pushkoff
Wednesday 23.11.2005 10:45 Цитата
Зарегистрирован: Friday 14.10.2005 18:37
Местоположение: Донецк
Сообщений - 13
Ты прав...
Но если прогорамме принадлежат полностью младшие 2 гб, то она сама решит что из них свободно а что нет... и системе должно быть все равно как программа управляет своей памятью...
Главное чтоб при обращении к адресу (а конкретно при записи) за которым не закреплена страница она выделялась в свопе или в физической памяти... тогда менеджер памяти полностью пользовательский... функции можно хранить в отдельной библиотеке, хочешь используй, а хочешь пиши свои...
Наверх
AlexanderK
Wednesday 23.11.2005 15:59 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
Pushkoff писал(а): ...
тогда менеджер памяти полностью пользовательский...

Это как говорится, не проблема Но думаю это не отменяет необходимости менеджера памяти у ядра - врядли можно всё статически рассчитать и расположить.



[ Редактирование Thursday 24.11.2005 15:05 ]
Наверх
Pushkoff
Thursday 24.11.2005 11:49 Цитата
Зарегистрирован: Friday 14.10.2005 18:37
Местоположение: Донецк
Сообщений - 13
А для ядра можно сделать так:
Взять какой либо минимальный участок памяти, который будет описывать любой системный обьект, будь то файл или окно, событие или критическую секцию и тд. Назовем его атом (в Windows есть такое понятие но я не думаю что оно обозначает то-же самое). Размер атома должен быть выровнен по степени 2. Если какой нибудь системный обьект занимает меньше половины атома то в одном атоме их можно выделять 2 или больше. Тогда функцией распределения памяти ядра будет AllocateAtom. Хотя можно выделять и несколько атомов для более крупных обьектов.
Наверх
AlexanderK
Thursday 24.11.2005 18:55 Цитата
Зарегистрирован: Tuesday 05.10.2004 13:47
Местоположение: 2:5020/829.5
Сообщений - 49
Ну а суть это разве изменяет?
Наверх
Pushkoff
Friday 25.11.2005 13:48 Цитата
Зарегистрирован: Friday 14.10.2005 18:37
Местоположение: Донецк
Сообщений - 13
нет...
Наверх
Перейти к странице Предыдущая -1-2

Модераторы: Roman I Khimov.

Переход:     Наверх