Управление пространством подкачки во время подкачки по требованию

12

Следующее сомнение, что я наткнулся при выполнении домашнего задания OS - однако, это кажется более концепция на основе, чем вопрос кодирования простого, поэтому ИМХО я не думаю, что домашние задания теги подходят для этого.

В чистых схемах требуют поискового вызова для нескольких процессов, работающих в то же время, учитывая фиксированный объем оперативной памяти и памяти подкачки, что происходит в следующих случаях 2 WRT подкачки, когда

  1. Процесс сталкивается с ошибкой страницы, и в ОЗУ нет доступных свободных кадров, поэтому требуется перезаписать одну из страниц из фрагмента процесса в кадрах ядра для замены (для простоты я не рассматриваю копию -при записи). Явно, где в пространстве Swap будет записан этот кадр, и какие структуры данных для этого нужно обновить?

  2. Когда процессу необходимо выполнить постраничную загрузку на конкретной странице, где он выглядит в памяти подкачки и как он узнает, присутствует ли эта конкретная страница в подкачке вообще?

Как вы можете себе представить, мне трудно понять, каким образом управлять пространством подкачки во время чистой схемы управления спросом и какие структуры данных будут важны. Было бы здорово, если бы вы могли ссылаться на любые ссылки в своем ответе (я искал в «Концепциях операционной системы - 8-е издание Silberschatz, я не смог найти четкий ответ на свой вопрос).

TCSGrad
источник
3
Хороший вопрос CS!
Дейв Кларк

Ответы:

8

Чтобы ответить на этот вопрос, я приду к предварительному пониманию. Разбиение на страницы по требованию невозможно без поддержки оборудования. Все современные компьютерные архитектуры поддерживают разбиение на страницы, однако многие имеют разные детали реализации.

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

Для получения дополнительной информации об этом см. Эту статью .

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

Для получения дополнительной информации о размещении фрейма страницы см. Здесь . Там вы увидите общий обзор некоторых подходящих структур данных.

Как только подходящий алгоритм для размещения страниц реализован, должен быть выбран другой для распределения дискового пространства для подкачки. Например, Windows исторически использовала плоский файл в файловой системе для подкачки страниц. Я бы предположил, что для каждого узла в структуре данных, отслеживающей выделенные страницы, есть связанный указатель на смещение в файле, указывающее положение страницы на диске. Unix-подобные операционные системы традиционно использовали отдельные разделы для подкачки страниц, что, возможно, быстрее, поскольку нет уровня файловой системы.

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

Я надеюсь, что это отвечает на ваш вопрос, несмотря на относительную краткость, с которой я его рассмотрел. Я обнаружил, что лучший способ узнать об операционных системах - это погрузиться в иногда неприятные детали архитектуры, которые можно найти на сайтах, таких как wiki.osdev.org и www.osdever.net, которые специально посвящены созданию хобби ОС и предоставляют отличные учебные пособия. на такие детали.

Dougvj
источник
Да, теперь я понимаю, как детали структур данных и т. Д. Могут сильно различаться между операционными системами - +1 для ссылок на osdev.org!
TCSGrad