Читаю про виртуальную память и прямо уши вянут.
Чего так? Не всем нужно знать как организована память в современных операционных системах. Разработчикам и сисадминам достаточно.
Данные и код программы обычно обладают свойствами временной и пространственной локальности, что позволяет кешировать только небольшую часть без больших потерь производительности. Кеши как правило прозрачны для операционной системы, но на уровне виртуальной памяти она может подгружать только нужные страницы адресного пространства программы. Сама подгрузка стриницы это затратная операция, поскольку и сам диск устройство медленное и необходимо настроить адресные константы (т.к. проц работает с физической памятью). ССД заметно быстрее жестких дисков, так что как минимум на этом можно экономить. Хотя с другой стороны, в жестких дисках там тоже кеши стоят.
Таким образом операционная система без больших для себя потерь может раздавать памяти больше, чем у нее есть физически. И велика вероятность, что та память, которая выделена в файле подкачки, так никогда и не будет загружена в оперативную память.
Проблемы начнутся когда слишком много запущенных процессов попросят разом свои любимые страницы, а памяти на всех не хватит. Операционная система такого очень не любит. Если она начнет по максимуму удовлетворять потребности процессов, то только и будет что страницы подгружать. А потому в такой ситуации она решает какой процесс будет у нее лагать и временно освободит занимаемую им физическую память, а какому дать наконец сделать свое дело. И если в такой ужасной ситуации вы говорите операционной системе, что файла подкачки у нее нет, то она довольная крашит вам процесс и говорит что кончилась память.
Так вот скайп и браузер это такие хитрые штуки, которые любят просить память и что-то там вычислять, которое пользователю в данный момент не нужно. Убейте их (а заодно антивирусы и кучу ненужных программ в фоне) и никто игре мешать не будет.
В том случае если игра попросит памяти больше, чем есть, ей выделят из файла подкачки. И чем больше ей там выделят, тем больше вероятность, что игра однажды попросит страницу оттуда. Операционная система ее послушно оттуда вытащит, но игре придется подождать пока контроллер жесткого диска разберется с ужасно медленным (по меркам процессора) устройством и операционная система завершит всю бюрократию с подготовкой страницы к использованию.
И может кому-то будет интересно знать следующее. Первые 500 МБ оперативной памяти, а может и больше (зависит от видеокарты и проч внешних устройств), используются не для данных программ или исполняемого кода, а для общения с внешними устроствами. Не знаю как в современных системах, но в виндовс ХР вроде так.
А еще вы сами можете посмотреть в виндовсе сколько страниц реально находится в памяти. Даже если у вас больше половины свободно и ничем не занято, то вы увидите что все равно не все подгружены.
апд
С настройкой адресных констант я могу ошибаться, потому что процессоры уже давно аппаратно поддерживают виртуальную организацию памяти.
апд2
Вы будете смеяться, но файл подкачки тоже будет закеширован. Т.е. брошенная на жесткий диск страница будет себе видеть в этих самых первых 500 МБ оперативной памяти и ждать пока контроллер жесткого диска ее заберет. И вполне возможна ситуация, что страницу, которая еще не сброшена, запросят обратно. Что в этом случае будет происходить уже зависит от реализации.