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 гб, то она сама решит что из них свободно а что нет... и системе должно быть все равно как программа управляет своей памятью...
Главное чтоб при обращении к адресу (а конкретно при записи) за которым не закреплена страница она выделялась в свопе или в физической памяти... тогда менеджер памяти полностью пользовательский... функции можно хранить в отдельной библиотеке, хочешь используй, а хочешь пиши свои...
|
Наверх
|
|
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
|
нет...
|
Наверх
|
|
Модераторы: Roman I Khimov. |
|
|