2014-12-22 2 views
1

В Windows ядро ​​может заменить страницу физической памяти на страницу в файле подкачки.Каковы отношения между физическими страницами и страницами в файле подкачки?

Для простоты мы предполагаем наличие только одного файла подкачки.

Насколько я понимаю, файл подкачки состоит из страниц с одинаковым размером страницы физической памяти. т.е. 4K.

мне просто интересно:

Как ядро ​​узнать, какие страницы в файле подкачки бесплатно хранить?

(Free здесь означает страницу в файле подкачки ли ранее не хранить другую физическую страницу памяти.)

+1

Физическая память отображается в виртуальной памяти всякий раз, когда есть переключатель контекста, и всякий раз, когда страница процесса выходит из строя и имеет право на большее количество памяти. Таким образом, ядро ​​имеет представление о «последнем использованном» времени страницы физической памяти и, возможно, предпочло бы выселить те на диск, которые не были запрошены через некоторое время. –

+0

Этот вопрос не соответствует теме, поскольку речь идет о дизайне операционной системы и не является конкретной проблемой программирования. Если вы можете перефразировать это с точки зрения проблемы программирования (например, кода, который должен знать эту информацию для правильной работы), тогда это будет по теме. –

+0

http://stackoverflow.com/questions/18431261/how-does-x86-paging-work –

ответ

1

Рискуя упрощением. , , обычный подход при реализации виртуальной памяти заключается в том, что диск является основным хранилищем. Если в файле нет сопоставления, виртуальная страница не существует. Это отображение остается фиксированным для жизни процесса.

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

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

1

Я считаю, что вы спрашиваете о алгоритмах замены страниц в управлении памятью.

Когда операционная система должна сохранять новую страницу в памяти и отслеживать ее информацию в файле подкачки (также известную как таблица страниц), нет никакой гарантии, что будет свободное место - информация страниц могла бы все это рассмотреть. В этом случае ОС будет иметь значение evict существующей страницы. ОС не нуждается в свободном пространстве, так как, если таковой не существует, он это сделает.

Если вам интересно узнать больше (это довольно большая тема), вы можете найти lecture notes из класса «Операционные системы» NYU. This is the demand paging unit, и ниже вы можете прочитать несколько алгоритмов замены страниц («WS Clock» и «Aging», вероятно, являются наиболее важными).

Надеюсь, это полезно!