Прочитав этот вопрос о виртуальной памяти, я был вдохновлен, чтобы спросить: кажется, что ходить по кругу, когда программа запускается, она загружается в память с диска, но затем не хватает места в памяти, поэтому она загружается обратно на диск (как файл подкачки). Нужно ли компьютерам изначально загружать в память 100% программы? Я вспоминаю, что узнал о чем-то, что дает каждому процессу ощущение, что он работает один в адресном пространстве, поэтому он может начинаться с самого первого адреса, является ли это основной причиной виртуализации памяти или это не имеет к этому никакого отношения?
2 ответа
Причина в скорости. Также процесс может расти, пока он работает, как k-meleon. Или порождайте новые процессы, пока они работают как chrome.exe. Кэш-память быстрее, чем RAM, которая быстрее, чем диск.
Таким образом, вещи помещаются в кеш, где кеш доступен. Идеально, если процессор выполняет вещи в кеше. Во-вторых, если он выполняет вещи в оперативной памяти.
Процессор никогда не обрабатывает что-то на диске, он не обращается к вещам на диске, он только обращается к областям памяти или, без сомнения, кэш-памяти. Или места, которые читают / пишут на устройства.
Это не похоже на то, что все, что вы хотите запустить, выгружается на диск, а затем обратно в RAM. Только те вещи, которые в настоящее время не используются и вряд ли будут использоваться в ближайшее время, предпочтительны при замене, чтобы освободить ОЗУ для вещей, которые больше используются.
Веб-браузеры тоже имеют кеш, дисковый кеш! Они хранят вещи локально на диске, а не извлекают из Интернета. Существуют веб-прокси, которые вы можете запускать локально, которые хранят веб-сайт локально, и если он меняется онлайн, он будет загружен. Это позволяет вам просматривать браузер намного быстрее. (хотя я полагаю, что вы можете столкнуться с проблемой веб-сайта, который неправильно указывает, что было внесено изменение, и вы застряли при загрузке старой копии из локального дискового кэша), но идея в том, что это быстрее. В этой ситуации более быстрой областью является локальный жесткий диск, а более медленной - удаленная / онлайн-область.
Вы делаете такой обмен в жизни, с вещами, которые вам нужны, рядом с вами, и вещами, которые вам не нужны в хранилище. Вы не кладете все в хранилище / гараж, утверждая, что в хранилище / гараже есть много места. Это было бы слишком медленно.
- Организация на диске может (почти наверняка будет) отличаться, поэтому раздел файла подкачки / страницы подкачки оптимизирован для загрузки страниц виртуальной памяти, в то время как ваша повседневная файловая система будет оптимизирована под конкретные характеристики, например, «не тратьте диск» пространство".
- Кроме того, ваш исполняемый файл не вполне работоспособен, пока на диске, относительные указатели корректируются в соответствии с виртуальным адресным пространством при загрузке, поэтому, как только это будет сделано при загрузке, все будет готово для вставки и выгрузки.
- Ваша программа может быть крошечной на диске, и затем первое, что она делает, это выделяет огромный кусок памяти для чего-то, что может быть выгружено в swap для использования в дальнейшем при выполнении программ.
Подводя итог, как правило, быстрее сделать так, как это работает.