Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Как узнать размер памяти какого-то процесса?   Найти похожие ветки 

 
GrayFace ©   (2004-01-27 15:46) [0]

Идея такая: сохранять всю память процесса в файл, а потом загружать. Будет полезно для Diablo2, для выключения компа... Сабж и еще в Artmoney есть понятие "блок памяти". Что с ними делать?


 
Mystic ©   (2004-01-27 16:20) [1]

Технически сложно реализуемая задача... Без понимания работы с памятью и формата Win PE лучше за нее не браться.


 
AKul ©   (2004-01-27 17:13) [2]


> Mystic ©   (27.01.04 16:20) [1]

Понимае формата PE-файла здесь ничего не даст :)

> GrayFace ©   (27.01.04 15:46)  

Хорошо, Вы узнаете где находится образ exe-файла, образы всех загруженных DLL, сохраните это все на диск; Вы также найдете и сохраните все данные динамически выделенной памяти; Найдете все потоки и сохраните их стеки и их локальные данные (статические и динамические); Остановите все потоки (с этого должно все начинаться) и сохраните их контексты (состояние регистров); Сохраните описатели всех объектов ядра, USER, GDI и так далее...
Но как Вы потом это все будете загружать?
Допустим Вам удалось загрузить сохраненные образы екзешника и библиотек, Вы даже сказали системе, что используете эти библиотеки (без DLL_PROCESS_ATACH и DLL_THREAD_ATACH), Вы также создали все треды, восстановили их стеки, контексты и каким-то образом локальные данные. Вам даже удалось заново создать все объекты ядра, USER, GDI.
Но как Вы заставите систему присвоить всем описателям объектов (тредам, файлам, окнам...) те же значения, что и перед сохранением? Например, Вам удалось открыть файл с сохраненными правами доступа, установить сохраненную позицию, но как сказать системе, что бы при открытии (вызове CreateFile), она вернула описатель файла с номером, как в прошлый раз? - Никак. Описатель файла будет содержать совершенно другое значение (конечно, иногда оно может и совпасть), а вот сохраненный код будет обращаться к операциям с файлом со старым описателем (какой был сохранен в его данных), а при новом создании этот описатель может быть или другим объектом, или вообще не сущестовать.

Такая задача "разрешима" только на уровне ядра :)


 
Digitman ©   (2004-01-27 17:18) [3]


> GrayFace ©   (27.01.04 15:46)  


> Как узнать размер памяти какого-то процесса?


что его узнавать-то ? 4 гб всегда он


 
YuRock ©   (2004-01-27 17:25) [4]

> Digitman ©   (27.01.04 17:18) [3]

Да, да... так и есть... Особенно удобно это использовать, когда памяти всего 64мб и винт на 500 метров...


 
AKul ©   (2004-01-27 17:36) [5]

Маленькое утешение: можно сохранять только нижние 2 ГБ. А на 500 метровом винте создать сжатый диск с коэффициентом сжатия 1:64.


 
Игорь Шевченко ©   (2004-01-27 17:37) [6]


> Идея такая: сохранять всю память процесса в файл, а потом
> загружать


Hybernate уже изобрели. Причем для всех процессов. И Swap-файл тоже изобрели. Все изобретено до нас, Кулибин отдыхает.


 
Digitman ©   (2004-01-27 18:08) [7]


> Игорь Шевченко ©   (27.01.04 17:37) [6]


действительно) ... все гениальное на поверку простое как лапоть)


 
GrayFace ©   (2004-01-28 15:36) [8]

>И Swap-файл тоже изобрели
А как им пользоваться?


 
AKul ©   (2004-01-28 16:09) [9]


> GrayFace ©   (28.01.04 15:36) [8]

> А как им пользоваться?


А зачем им пользоваться?


 
VMcL ©   (2004-01-28 16:47) [10]

>>GrayFace ©  (28.01.04 15:36) [8]
В коллекцию Rouse_



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-1079093706
Murad
2004-03-12 15:15
2004.04.04
"include" в XML


7-1074623316
bux
2004-01-20 21:28
2004.04.04
два СОМ-порта


3-1078482618
kalliopiy
2004-03-05 13:30
2004.04.04
BLOB-поле


14-1078891957
тихий вовочка
2004-03-10 07:12
2004.04.04
Как работает поиск на этом сайте?


3-1078902392
HeoGtan
2004-03-10 10:06
2004.04.04
Как (для BDE) - определить в БД [PARADOX]: