Thrashing определяется как "когда жесткий диск перегружен перемещением информации между системной памятью и виртуальной памятью"
Для простоты, виртуальная память поддерживается диском, то есть файлом подкачки в Windows или разделом подкачки в Linux.
Таким образом, это означает, что происходит передача данных с жесткого диска обратно на жесткий диск, но в раздел, предназначенный для виртуальной памяти?
Виртуальная память, или файл подкачки, содержит ОЗУ процессов, которые были «выгружены». Современные системы пытаются выгружать на диск процессы, которые не использовались некоторое время, например свернутые программы, к которым вы давно не обращались, или службы, которые долгое время неактивны.
Это позволяет больше реальной оперативной памяти для программ, которые вы фактически используете. Кроме того, он позволяет вам запускать больше программ, чем поддерживает ваша оперативная память. Тем не менее, во время "перебора" у вас есть несколько процессов, которые не помещаются в ОЗУ, но пытаются быть активными и выполнять работу.
Это может произойти, если одновременно запущены два или более процессов, которые используют много памяти в системе, где выделена вся память. Таким образом, система постоянно перемещает данные с диска, в ОЗУ и обратно на диск - то есть процесс А нуждается в чем-то, что было в ОЗУ, но было перенесено в файл подкачки, поэтому система извлекает его, но если памяти действительно мало, это может должны поменять память другого процесса на диск. Затем, когда процесс B включит процессор, системе, возможно, придется снова вернуться на диск и заменить что-то для процесса B.
Если это так, то почему бы не хранить все содержимое жесткого диска всегда в виртуальной памяти?
Не имеет смысла Вы в основном говорите, почему бы не поместить весь диск в файл подкачки или в раздел подкачки. Файл подкачки или раздел подкачки - это просто область диска, предназначенная для использования системой виртуальной памяти ЦП / ОС, но она не волшебным образом быстрее остальной части диска по любой причине.
РЕДАКТИРОВАТЬ: я вижу, что все говорят, что цель виртуальной памяти состоит в том, чтобы RAM казалось больше, но разве не имеет смысла также иметь дело с адресным пространством внутри процессов, например, каждый процесс, кажется, имеет свое собственное адресное пространство?
Каждый пользовательский процесс имеет свое собственное адресное пространство. Он начинается с адреса 0 и достигает максимума, который был выделен ОС. MMU ЦП отображает адреса памяти пользовательского пространства на фактические адреса памяти прозрачно для процесса пользовательского пространства.
Вы, кажется, думаете, что "виртуальная память" в этом контексте отличается от вашей физической памяти, и это не так. Это просто другое представление физической памяти, созданной для процесса пользовательского пространства. Таким образом, если у вас есть жесткий диск объемом 3 ТБ, вы даже не сможете этого сделать, если у вас нет 3 ТБ реальной оперативной памяти плюс то, что вам нужно для запуска ваших программ. Кроме того, каждый раз, когда вы обновляете ОЗУ, вам придется обновлять жесткий диск, поэтому если вам действительно не нужно очень быстро читать 3 ТБ данных, это бессмысленно.