Сейчас на форуме: tyns777 (+5 невидимых) |
eXeL@B —› Программирование —› Вопрос по маппингу EXE-файлов |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 09 января 2008 00:42 · Поправил: alex78rus · Личное сообщение · #1 Здравствуйте! Есть пара вопросов по работе с памятью и о памяти. Они, кончено, к крэкингу имеют весьма посредственное отношение, но надеюсь, вы все же поможете разобраться Дж. Рихтер "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" цитата:
Интересует следующее: ...создает виртуальное адресное пространство для нового процесса и проецирует на него исполняемый модуль.
Я как понимаю... Предположим у нас машина с ОЗУ 512 Мб. 512 Мб свободно. Запускаем somefile.exe размером 10 Мб. Создается процесс. У него виртуальная память 4 Гб. Вся свободная. В ней выделяется 10 Мб адресного пространства под код и данные того же размера. Вопрос: сколько ОЗУ памяти будет свободно после запуска? 502 Мб и файл somefile.exe будет переписан непосредственно в ОЗУ? Или 512, а 10 Мб с винчестера(содержащие exe-файл) будут использоваться как будто они в ОЗУ памяти? |
|
Создано: 10 января 2008 16:29 · Личное сообщение · #2 |
|
Создано: 10 января 2008 16:41 · Личное сообщение · #3 Если возможно загрузить образ полностью в ОЗУ, он будет (так почти всегда) расположен в ОЗУ. Модифицируемый секции будут в первю очередь расположены в ОЗу и скопированы в страничный файл. Поэтому мелкомягкие просят использовать READ для кода для исключения дублирования в страничном файле. Сколько будет точно свободно ОЗУ (именно физической) - зависит от текущего настроения Билла Гейтса, ибо в недрах его детища гуляет слишком много различных праздношатающихся процессов. У них свои разборки, кто-то похмеляется, кто-то засыпает. Динамика и диалектика Гейтса. Вдуг проснёться какой-нибудь дефрагментатор или касперский - и пойдёт базарить физическую память. |
|
Создано: 10 января 2008 18:19 · Личное сообщение · #4 |
|
Создано: 11 января 2008 10:19 · Личное сообщение · #5 S_T_A_S_ пишет: Ну это максимальный. А размер свопа какой? ;) Он нужен что бы выгрузить (чужие) модифицированные страницы при нехватке физических страниц для текущего процесса. что значит ЧУЖИЕ , он и свои может выгрузить , не забывайте что ОЗУ сделана для быстрого обмена данными (для проца). Для примера вспомните игруху СТАЛКЕР , для которой СВОП желателен в 1,5 - 1,8ГБ . Наверняка Игуха загружана большей частью в СВОП , просто нужные куски копируются в ОЗУ(частями). ОЗУ одна на всех , и если для загрузки не хватает ОЗУ , то "хвост" залазиет в СВОП , + возможно размер свопа ВИНДА держит для выгрузки "спящих" данных, вдруг Данные полезут бошьших размеров. |
|
Создано: 11 января 2008 16:14 · Личное сообщение · #6 |
|
Создано: 11 января 2008 23:55 · Личное сообщение · #7 |
|
Создано: 13 января 2008 07:23 · Личное сообщение · #8 |
|
Создано: 15 января 2008 12:45 · Личное сообщение · #9 |
|
Создано: 24 января 2008 03:07 · Личное сообщение · #10 Hexxx пишет: Хз. Как винда решит. У нее же есть возможность свопить RAM. Т.е. часть exe может попасть в RAM, а другая часть в swap-файл. Поправка - если файл спроецирован и не был изменен, то в paging файл ничего писаться не будет. Страница попадет в список простаивающих страниц, а потом будет окончательно удалена, а при последующем доступе снова инициируется операция чтения того же файла. Только модифицированные страницы выгружаются в своп |
<< . 1 . 2 . |
eXeL@B —› Программирование —› Вопрос по маппингу EXE-файлов |