Долго наблюдал битвы на тему «нужен или не нужен swap, если у тебя до фига оперативки», и один из аргументов сторонников наличия swap-раздела в любой ситуации звучит примерно как «нужен, работает лучше, диспетчер памяти на него рассчитан». И сегодня у меня ни с того, ни с сего зародился вопрос следующего характера:
1. Имеем 32-хразрядную архитектуру;
2. Имеем 4 Гб ОЗУ физически;
3. Имеем предел доступного адресного пространства для 32-хразрядной архитектуры, равный 4 Гб (PAE отключено);
4. А нужен ли swap именно в такой ситуации? Сможет ли диспетчер памяти его «адресовать» (отвлекаясь от способности диспетчера памяти использовать его при наличии свободной физической)?
То есть, по сути, если мы полностью забиваем 4 Гб физической памяти, не залезая в swap - не значит ли это, что мы уже ничего не сможем скинуть на диск, так как адресное пространство закончилось, и в этой ситуации swap абсолютно бессмысленен?
Или диспетчер памяти адресное пространство для каждого приложения выделяет, не оглядываясь на ограничения архитектуры, с использованием некоторого отображения виртуального адресного пространства приложения в реально адресуемые области памяти, которые могут перекрываться?
(Ссылки на литературу приветствуются - но, желательно, не на фундаментальные труды по проектированию ОС, от этого я далёк.)