Как страница становится недействительной при глобальной замене страницы?

Допустим, есть два процесса A и B. B нужно вставить новый фрейм в свою таблицу страниц. поскольку свободных кадров нет, мы должны заменить один кадр и загрузить кадр B с диска. Предположим, операционная система следует глобальной схеме замены страниц и выбирает кадр, в котором у нас есть данные А. Теперь, чтобы заменить этот кадр, нам нужно изменить в таблице страниц A, что соответствующий кадр недействителен. Чтобы сделать это в общем случае, нам нужно знать, данные какого процесса находятся в конкретном кадре в памяти, чтобы мы могли перейти к его таблице страниц и изменить бит на недопустимый. Как это достигается? Сохраняет ли каждый кадр в памяти также идентификатор процесса соответствующего процесса, данные которого он имеет?


person AV94    schedule 11.04.2016    source источник
comment
кадр физической памяти не связан напрямую с идентификатором процесса. Поскольку ›1 процесс может совместно использовать один и тот же фрейм физической памяти в своем виртуальном адресном пространстве.   -  person JavaMan    schedule 21.05.2016


Ответы (1)


Таблица страниц — это всего лишь средство, требуемое аппаратным обеспечением процессора. Кроме того, ОС поддерживает в памяти свои собственные базы данных, отслеживая каждый фрейм физической страницы. Например, в Windows существует база данных фреймов страниц (PFN), в которой перечислены состояния каждой физической страницы, например «Действительна», «Резервная», «Изменено», «Свободна» и т. д. А для описания подмножества виртуальных страниц, находящихся в физической памяти, существует Список рабочих наборов.

Для Windows, если вам нужно узнать больше о деталях управления памятью, я рекомендую эту книгу https://rads.stackoverflow.com/amzn/click/com/0735665877

person JavaMan    schedule 21.05.2016