Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 01:25   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
что карта принадлежности каких-то блоков памяти процессов выглядит так же как не фрагментированный диск?
да.
Цитата:
Глупо как-то, нога тут, рука там а голова вообще на краю света. Хотя.. опять же указатели в силе..
С их точки зрения выгодно выделитьместо где-то в др. месте, и кинуть указатель на это место, не прибегая к переопределению границ регионов всех других процессов.
нет не глупо, этот механизм(двухэтапной адресации) поддерживается процессором аппаратно.
вы представляете как бы иначе работали задача(термин проца), которым нужно больше памяти чем есть на самом деле?
или же как бы тупила ОС если бы она перераспределяла память всего процесса(на этот раз ОС) при переключении задач?(много раз в секунду это происходит)

программа выполняется, и допустим доходит до страницы которой нет в памяти, и что тогда?
а тогда происходит следующее, процессор тормозит эту задачу, и генерирует исключение PAGE_FAULT, его обрабатывает ОС, проверяя что за страницу хочет задача, и грузит её в память(в свободную страницу(или по иному алгоритму выбирая)+изменяет запись в каталоге страниц о том что страница есть теперь в памяти и где она), и восстанавливает управление задачи.
итого, задача продолжает выполнение даже не зная того что страница которая её нужна было на жестком диске.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.04.2012, 01:36   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Теперь смысл ясен.

Ну раз уж топик про ОЗУ, то хотелось бы узнать о..
Цитата:
Я тут подумал, можно ли определить, какие "блоки" памяти потерял процесс? Ну к примеру, выделели мы бкфер ввиде 24 мегабайт, и забыли его освободить, потеряв ещё и указатель на этот буфер. Можно ли найти этот буфер, определить, что его "потеряли", и вернуть зазря занятое место, назад, в кучу?
Системы отладки, типа EurekaLog пихают свой менеджер памяти, который контролирует подобные закидоны в никуда из ниоткуда.
Может можно что-то на глобальном уровне? У ОС есть ведь свой менеджер памяти...

Последний раз редактировалось Человек_Борща; 10.04.2012 в 01:43.
Человек_Борща вне форума Ответить с цитированием
Старый 10.04.2012, 01:52   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Можно ли найти этот буфер, определить, что его "потеряли", и вернуть зазря занятое место, назад, в кучу?
ОС вернет этот буфер при смерти процесса.
как и прочие иные ресурсы(правда помоему не все все все, ибо есть не родные ресурсы)
или я неверно вопрос понял?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.04.2012, 02:04   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
или я неверно вопрос понял?
Видимо не верно.
EurekaLog толкает свой менеждер памяти и следит за выделением/распределением/уничтожением выделеной ранее памяти, процессом.

Вот пример:
Код:
var
  Buff:array of Byte;
begin
Buff:=AllocMem(100);
end;
И коню ясно, сча выделили 100 байт памяти и не вернули их системе, при помощи FreeMem(Buff).

При завершении ПО, Эврика начнет орать об утечке памяти в 100 байт.

Винда же просто высвободит этот ресурс, вернув его в кучу, в момент смерти процесса, НЕ сообщив о том что такой-то блок памяти в столько-то байт, был освобожден не процессом, за которым блок закреплен, а системой.
Собственно почему система не следит за подобной вещью? И можно ли сторонними средсвами находить и осбождать потерявшиеся блоки?
Человек_Борща вне форума Ответить с цитированием
Старый 10.04.2012, 16:24   #15
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Собственно почему система не следит за подобной вещью?
Вот ей больше заняться нечем, кроме как сборщиком мусора работать.
пыщь
JTG вне форума Ответить с цитированием
Старый 10.04.2012, 19:03   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ОС пофиг на ваши утечки памяти, тем более напрямую она заведует страницами, а не кучей(хотя есть системный менагер, но он не отладочный)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.04.2012, 21:31   #17
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
хотите сказть, что карта принадлежности каких-то блоков памяти процессов выглядит так же как не фрагментированный диск?
бред какой-то.
Бред не бред, но все именно так и есть.
И, если хорошенько подумать, можно прийти к выводу, то иначе многозадачная ОС вообще не могла бы работать, если бы каждой программе необходим был непрерывный участок памяти. Если бы было нельзя запустить программу в фрагментированной памяти, то ее вообще невозможно было бы запустить.

Почитайте что-нибудь про защищенный режим процессора - сразу многое станет яснее.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОЗУ: информация Євгеній Бєлік Win Api 2 12.01.2012 11:36
ОЗУ esa2esa Компьютерное железо 2 29.12.2010 20:45
Вопрос по ОЗУ arturkhusnull Компьютерное железо 8 27.09.2010 11:12
Проблема с ОЗУ Aries Компьютерное железо 8 23.02.2010 14:46
Загрузка ОЗУ HelloZAPOR Общие вопросы Delphi 2 20.07.2007 18:40