Я где-то читал, что в память загружаются только те страницы, которые необходимо запустить процессу, а затем при запуске программы в память может загружаться больше страниц, в зависимости от кода или данных, которые вы пытаетесь использовать.

Это всегда происходит или зависит от того, сколько у вас памяти и что уже загружено? Например, если вы только запустили один процесс и у вас много памяти, загружены ли все страницы, которые могут уместиться в памяти, или они загружаются в зависимости от того, что вы делаете?

1 ответ1

1

Да, это всегда происходит. Это совсем не зависит от того, сколько у вас оперативной памяти.

Что происходит, так это то, что с большим объемом оперативной памяти в системе (и при прочих равных условиях) процессам будет позволено сохранять больше этих страниц, а не терпеть «замену рабочего набора». Замена рабочего набора происходит, когда процесс хочет вызвать ошибку на странице, но система из-за ограниченного объема свободной оперативной памяти устанавливает ограничения рабочего набора процесса. В такие моменты процессу придется освобождать страницу из своего рабочего набора для каждой страницы, которую он вводит.

Поэтому, когда вы посмотрите на процессы в большой системе памяти, вы обнаружите, что все они, как правило, находятся в большем объеме ОЗУ (большие рабочие наборы), чем в системе со значительно меньшим объемом памяти. Но это не из-за какой-либо предварительной загрузки. Это из-за отсутствия потери страниц позже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .