Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Мэппинг EXE в память

6.8K
08 января 2008 года
Аццкий программер
91 / / 27.11.2006
Здравствуйте!
Есть пара вопросов по работе с памятью и о памяти. Надеюсь, поможете разобраться :)

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



Интересует следующее:

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



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

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

261
09 января 2008 года
ahilles
1.5K / / 03.11.2005
после запуска будет свободно 502 мегабайта физической памяти. Если какой либо программе потребуется больше памяти, то память процесса будет сброшена в файл подкачки, при надобности она будет снова загружена в память, а другая выгружена.
6.8K
09 января 2008 года
Аццкий программер
91 / / 27.11.2006
а возможно, что будет загруженна определенная "порция" кода (скажем 5 Мб), а другие 5 Мб виртуальной памяти не будут связаны с физической? И при обращении к одной из функциий, отсутствующей в физической памяти, возбудится исключение, которое заставит загрузчик отобразить оставшиеся 5 мб на физ. память и "перезапустить" обращение к функции?
261
10 января 2008 года
ahilles
1.5K / / 03.11.2005
И такой вариант возможен.
6.8K
10 января 2008 года
Аццкий программер
91 / / 27.11.2006
тогда какая часть программы подгружается всегда? т.е. каково минимальное кол-во кода и данных для запуска?
261
10 января 2008 года
ahilles
1.5K / / 03.11.2005
страница секции кода в которой находится точка входа в любом случае будет загружена одна из первых
6.8K
10 января 2008 года
Аццкий программер
91 / / 27.11.2006
спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог