1

Прочитав этот вопрос о виртуальной памяти, я был вдохновлен, чтобы спросить: кажется, что ходить по кругу, когда программа запускается, она загружается в память с диска, но затем не хватает места в памяти, поэтому она загружается обратно на диск (как файл подкачки). Нужно ли компьютерам изначально загружать в память 100% программы? Я вспоминаю, что узнал о чем-то, что дает каждому процессу ощущение, что он работает один в адресном пространстве, поэтому он может начинаться с самого первого адреса, является ли это основной причиной виртуализации памяти или это не имеет к этому никакого отношения?

2 ответа2

1

Причина в скорости. Также процесс может расти, пока он работает, как k-meleon. Или порождайте новые процессы, пока они работают как chrome.exe. Кэш-память быстрее, чем RAM, которая быстрее, чем диск.

Таким образом, вещи помещаются в кеш, где кеш доступен. Идеально, если процессор выполняет вещи в кеше. Во-вторых, если он выполняет вещи в оперативной памяти.

Процессор никогда не обрабатывает что-то на диске, он не обращается к вещам на диске, он только обращается к областям памяти или, без сомнения, кэш-памяти. Или места, которые читают / пишут на устройства.

Это не похоже на то, что все, что вы хотите запустить, выгружается на диск, а затем обратно в RAM. Только те вещи, которые в настоящее время не используются и вряд ли будут использоваться в ближайшее время, предпочтительны при замене, чтобы освободить ОЗУ для вещей, которые больше используются.

Веб-браузеры тоже имеют кеш, дисковый кеш! Они хранят вещи локально на диске, а не извлекают из Интернета. Существуют веб-прокси, которые вы можете запускать локально, которые хранят веб-сайт локально, и если он меняется онлайн, он будет загружен. Это позволяет вам просматривать браузер намного быстрее. (хотя я полагаю, что вы можете столкнуться с проблемой веб-сайта, который неправильно указывает, что было внесено изменение, и вы застряли при загрузке старой копии из локального дискового кэша), но идея в том, что это быстрее. В этой ситуации более быстрой областью является локальный жесткий диск, а более медленной - удаленная / онлайн-область.

Вы делаете такой обмен в жизни, с вещами, которые вам нужны, рядом с вами, и вещами, которые вам не нужны в хранилище. Вы не кладете все в хранилище / гараж, утверждая, что в хранилище / гараже есть много места. Это было бы слишком медленно.

0
  1. Организация на диске может (почти наверняка будет) отличаться, поэтому раздел файла подкачки / страницы подкачки оптимизирован для загрузки страниц виртуальной памяти, в то время как ваша повседневная файловая система будет оптимизирована под конкретные характеристики, например, «не тратьте диск» пространство".
  2. Кроме того, ваш исполняемый файл не вполне работоспособен, пока на диске, относительные указатели корректируются в соответствии с виртуальным адресным пространством при загрузке, поэтому, как только это будет сделано при загрузке, все будет готово для вставки и выгрузки.
  3. Ваша программа может быть крошечной на диске, и затем первое, что она делает, это выделяет огромный кусок памяти для чего-то, что может быть выгружено в swap для использования в дальнейшем при выполнении программ.

Подводя итог, как правило, быстрее сделать так, как это работает.

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