Чтобы ответить на этот вопрос, я приду к предварительному пониманию. Разбиение на страницы по требованию невозможно без поддержки оборудования. Все современные компьютерные архитектуры поддерживают разбиение на страницы, однако многие имеют разные детали реализации.
x86 процессоры используют то , что называется таблицей страниц для отслеживания виртуальных адресных пространств и отображений страниц, а также бит о privilages доступа и, более релевантного, или нет этой страница еще присутствует в физической памяти. Нарушения приводят к сбоям страниц, которые фиксируются ОС.
Для получения дополнительной информации об этом см. Эту статью .
Чтобы ответить на вопрос об обмене страницами, мы должны сначала перейти к вопросу о том, как операционная система отслеживает, какие страницы используются каким процессом и как они распределяются. Существует много различных структур данных, которые могут быть использованы для таких целей. Плоский битовый массив, обозначающий, выделен кадр или нет, является одним из способов. Связанные списки или стеки это другое. При использовании подкачки по требованию выделенные страницы фактически не помечаются как присутствующие при выделении. Это приводит к тому, что никакой физический оперативный диск не откладывается для процесса, пока он фактически не записывает в него. Как только это происходит, аппаратное обеспечение выдает ошибку, которую ОС перехватывает, а затем ОС использует алгоритм обмена, если нет доступных физических страниц для назначения уже выделенной виртуальной странице.
Для получения дополнительной информации о размещении фрейма страницы см. Здесь . Там вы увидите общий обзор некоторых подходящих структур данных.
Как только подходящий алгоритм для размещения страниц реализован, должен быть выбран другой для распределения дискового пространства для подкачки. Например, Windows исторически использовала плоский файл в файловой системе для подкачки страниц. Я бы предположил, что для каждого узла в структуре данных, отслеживающей выделенные страницы, есть связанный указатель на смещение в файле, указывающее положение страницы на диске. Unix-подобные операционные системы традиционно использовали отдельные разделы для подкачки страниц, что, возможно, быстрее, поскольку нет уровня файловой системы.
Также возможно отделить структуры данных алгоритма подкачки от структур алгоритма распределения, однако эти два взаимосвязаны, так что, вероятно, это не часто делается.
Я надеюсь, что это отвечает на ваш вопрос, несмотря на относительную краткость, с которой я его рассмотрел. Я обнаружил, что лучший способ узнать об операционных системах - это погрузиться в иногда неприятные детали архитектуры, которые можно найти на сайтах, таких как wiki.osdev.org и www.osdever.net, которые специально посвящены созданию хобби ОС и предоставляют отличные учебные пособия. на такие детали.