Проводная память против активной памяти в OS X

13

У меня проблемы с пониманием разницы между проводной памятью и активной памятью в OS X.

Не говорите о четырех типах памяти (не говорите о свободной или неактивной памяти, потому что я уже знаю, что это такое). Просто сравните и сопоставьте проводную память с активной памятью, чтобы я мог лучше понять эти две.

tony_sid
источник

Ответы:

29

Нежное напоминание: чтобы дать лучший ответ остальной части сообщества, пожалуйста, не говорите что-то вроде «Не говорите о четырех типах памяти». Даже если вы хорошо это знаете, сюда могут прибыть тысяча и один гражданин Интернета в надежде получить побочный ответ. :)

«Пейджинг» - точный термин для следующего действия. «Обмен» используется в разговорной речи для «подкачки», хотя в наши дни вполне взаимозаменяемо. «Подкачка» первоначально означала перемещение пространства памяти программы полностью на «вторичное хранилище» (в отличие от «основного хранилища», которое в некотором смысле является архаичным термином для… RAM). Граница между подкачкой и подкачкой значительно размыта в системах Windows и Unix, называющих перестановки пространства подкачки.

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

Обратите внимание, что хотя подкачка означает огромное снижение производительности для повторного доступа к этой конкретной информации, подкачка может происходить в двух разных случаях: (Цитируя себя: недостатки отсутствия раздела подкачки )

  1. Если не достаточно памяти для всех приложений - в случае, когда это происходит с системой без пространства подкачки, это приведет к ошибке выделения памяти для новых приложений, запрашивающих новые страницы памяти - и это обычно приводит к завершению программы.
  2. Когда некоторые страницы памяти (память делится на «страницы») используются некоторое время назад, но больше не используются, они будут перенесены в файл подкачки, а оставшаяся память может быть использована для чего-то другого, что может быть более полезным. (например, даже кэширование!) - когда это происходит в системе без пространства подкачки, это приводит к тому, что свободные страницы остаются в памяти. Хотя в этом нет ничего особенного, так как в наши дни у нас довольно много памяти.

Четыре типа памяти классифицируются следующим образом:

  • Проводной: Используется приложением, которое утверждает, что часть выделенной памяти должна физически оставаться в ОЗУ и не должна быть перенесена на диск, независимо от того, используется ли она недавно или нет, то есть другое приложение НЕ МОЖЕТ запрашивать этот конкретный фрагмент памяти. Примеры являются частью памяти, используемой системой, и используемой виртуальными машинами.

  • Активные и неактивные: это память, используемая обычно приложениями пользовательского режима, в которых они могут быть перенесены на диски. «Активный» означает, что он недавно использовался, а «Неактивный» означает, что он не использовался недавно. Таким образом, операционная система будет вначале заменять неактивные страницы, а затем, если необходимо, активные страницы.

  • Свободная память: память, которая не используется. Это используется для других целей, таких как кэширование жесткого диска.

Если ваш вопрос: «В ужасной ситуации, когда памяти недостаточно, в каком порядке система будет пытаться выделить память для нового приложения?», То последовательность будет распределяться

свободная память → неактивная память → активная память

В некотором смысле, даже недавно использованная память может быть выгружена. «Проводная» часть - это то, что не будет выгружено любой ценой.

Однако в современных системах маловероятно, что активная память будет выгружена, поскольку у нас достаточно оперативной памяти.

бубу
источник
Теперь вы сделали этот вопрос более сложным, чем нужно, поговорив о других типах памяти. Так что теперь я должен спросить об активной или неактивной памяти. Я слышал, что неактивная память на самом деле свободная память. О чем это? Активная память также свободна? Сравните и сопоставьте активную память с неактивной памятью.
tony_sid
1
Я слышал, что неактивная память - это просто кэш на случай, если программа, которая была закрыта, запускается снова. Если это правда, то почему его нужно поместить на диск?
tony_sid
1
Вы слышали что-то не так. Закрытое приложение будет освобождено из памяти, если что-то не так с архитектурой памяти.
бубу
2
фантастический ответ! +1
после
1
@tony_sid старая дискуссия, но то, что вы слышали, правильно. Как упоминалось в поддержке Apple: «Однако если вы откроете Mail до того, как его неактивная память будет использоваться другим приложением, Mail откроется быстрее, потому что ее неактивная память преобразуется в активную память, а не загружается из более медленного диска».
Гаурав