Сейчас на форуме: tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› Вопрос по маппингу EXE-файлов
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 января 2008 00:42 · Поправил: alex78rus
· Личное сообщение · #1

Здравствуйте!
Есть пара вопросов по работе с памятью и о памяти. Они, кончено, к крэкингу имеют весьма посредственное отношение, но надеюсь, вы все же поможете разобраться

Дж. Рихтер "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" цитата:
При запуске загрузчик операционной системы выполняет следующие операции:
1.Загрузчик операционной системы создает виртуальное адресное пространство для нового процесса и проецирует на него исполняемый модуль.
2. <...>


Интересует следующее:
...создает виртуальное адресное пространство для нового процесса и проецирует на него исполняемый модуль.

Я как понимаю...
Предположим у нас машина с ОЗУ 512 Мб. 512 Мб свободно.
Запускаем somefile.exe размером 10 Мб.
Создается процесс. У него виртуальная память 4 Гб. Вся свободная.
В ней выделяется 10 Мб адресного пространства под код и данные того же размера.

Вопрос: сколько ОЗУ памяти будет свободно после запуска? 502 Мб и файл somefile.exe будет переписан непосредственно в ОЗУ?
Или 512, а 10 Мб с винчестера(содержащие exe-файл) будут использоваться как будто они в ОЗУ памяти?



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 10 января 2008 16:29
· Личное сообщение · #2

vitokop пишет:
Что делает система с виртуальной памятью В ДЕЙСТВИТЕЛЬНОСТИ при раскрутке нового
процесса, я не нашёл нигде.
- именно про ВИРТУАЛЬНУЮ память все у Рихтера есть в 13 главе, не путай термины: Виртуальная память=физическая память+страничный файл.

-----
продавец резиновых утёнков




Ранг: 17.6 (новичок)
Активность: 0.01=0.01
Статус: Участник

Создано: 10 января 2008 16:41
· Личное сообщение · #3

Если возможно загрузить образ полностью в ОЗУ, он будет (так почти всегда)
расположен в ОЗУ. Модифицируемый секции будут в первю очередь расположены в ОЗу и скопированы в страничный файл. Поэтому мелкомягкие просят использовать READ для кода для исключения дублирования
в страничном файле.
Сколько будет точно свободно ОЗУ (именно физической) - зависит от текущего настроения Билла Гейтса, ибо в недрах его детища гуляет слишком много различных праздношатающихся процессов.
У них свои разборки, кто-то похмеляется, кто-то засыпает.
Динамика и диалектика Гейтса.
Вдуг проснёться какой-нибудь дефрагментатор или касперский - и пойдёт базарить физическую память.



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 10 января 2008 18:19
· Личное сообщение · #4

vitokop пишет:
Если возможно загрузить образ полностью в ОЗУ, он будет (так почти всегда)
расположен в ОЗУ.

Это верно для дров, у которых кстати есть и невыгружаемые страницы. Про остальное www.citforum.ru/book/cook/exepack.shtml



Ранг: 29.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 11 января 2008 10:19
· Личное сообщение · #5

S_T_A_S_ пишет:
Ну это максимальный. А размер свопа какой? ;) Он нужен что бы выгрузить (чужие) модифицированные страницы при нехватке физических страниц для текущего процесса.

что значит ЧУЖИЕ , он и свои может выгрузить , не забывайте что ОЗУ сделана для быстрого обмена данными (для проца). Для примера вспомните игруху СТАЛКЕР , для которой СВОП желателен в 1,5 - 1,8ГБ . Наверняка Игуха загружана большей частью в СВОП , просто нужные куски копируются в ОЗУ(частями). ОЗУ одна на всех , и если для загрузки не хватает ОЗУ , то "хвост" залазиет в СВОП , + возможно размер свопа ВИНДА держит для выгрузки "спящих" данных, вдруг Данные полезут бошьших размеров.



Ранг: 48.8 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 11 января 2008 16:14
· Личное сообщение · #6

S_T_A_S_ пишет:
Ну это максимальный.


максимальный размер под User Mode - 3 Гб в x86 системах.



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 11 января 2008 23:55
· Личное сообщение · #7

Ну 3 гига тока в серверных версиях дают (может и в обычныйх появились)
В юзер мод оперативку вообще можно расматривать как кеш 3 уровня, а данные всегда находится на винте.



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 13 января 2008 07:23
· Личное сообщение · #8

Grom_ пишет:
что значит ЧУЖИЕ , он и свои может выгрузить

То и значит, не просто ж так в скобочках написано.

darkeagle пишет:
максимальный размер под User Mode - 3 Гб в x86 системах

4GT RAM Tuning не даёт непрервыных 3Гб.



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 15 января 2008 12:45
· Личное сообщение · #9

Вопрос:
А 64х битное расширение можно считать х86?



Ранг: 14.0 (новичок)
Активность: 0=0
Статус: Участник

Создано: 24 января 2008 03:07
· Личное сообщение · #10

Hexxx пишет:
Хз. Как винда решит. У нее же есть возможность свопить RAM. Т.е. часть exe может попасть в RAM, а другая часть в swap-файл.

Поправка - если файл спроецирован и не был изменен, то в paging файл ничего писаться не будет. Страница попадет в список простаивающих страниц, а потом будет окончательно удалена, а при последующем доступе снова инициируется операция чтения того же файла. Только модифицированные страницы выгружаются в своп


<< . 1 . 2 .
 eXeL@B —› Программирование —› Вопрос по маппингу EXE-файлов
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати