Выгружены ли страницы .text?

Выгружаются ли страницы .text в памяти процесса или выгружаются только страницы, содержащие данные (кучу)?

Здесь под «выкачиванием» я имею в виду «перемещение в область подкачки», а не «простое вытеснение из основной памяти». Я сомневаюсь, что страницы .text просто удаляются, а затем считываются с жесткого диска, поскольку они никогда не должны изменяться (в отличие от страниц данных), или они перемещаются в область подкачки.

Кроме того, страница, принадлежащая стеку, заменена?

Кто-нибудь может дать больше ясности в отношении того, какие страницы в виртуальной памяти процесса рассматриваются для подкачки, а какие никогда?


person user31986    schedule 19.08.2013    source источник


Ответы (1)


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

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

person Jesus Ramos    schedule 19.08.2013
comment
Спасибо. Мне не ясно, какие страницы заменены на область подкачки, а какие просто выселены. Во-вторых, как простое удаление страницы гарантирует, что она будет загружена при необходимости? - person user31986; 19.08.2013
comment
@user31986 user31986 Потому что вы столкнетесь с ошибкой страницы при последующем доступе к этой странице, которая затем будет выполнять ввод-вывод для извлечения страницы. Выселенные (не отправленные в своп) страницы — это страницы, у которых уже есть резервное хранилище, в своп отправляются только анонимные сопоставленные страницы (потому что им больше некуда идти). - person Jesus Ramos; 19.08.2013
comment
Спасибо. в своп отправляются только анонимные сопоставленные страницы, все понятно! - person user31986; 27.08.2013