6

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

Любая помощь приветствуется!

Best, Simon

ответ

2

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

  1. Операционная система сообщает MMU использовать страницу таблицу, расположенную на физический адрес 0xFOO

  2. программы операционной системы таймера программируемых прерываний (PIT), чтобы вызвать аппаратное прерывание после миллисекунд BAR.

  3. Операционная система восстанавливает состояние процесса (регистры процессора, счетчик программ и т. Д.) И переходит к правильному адресу.

  4. Процесс запускается до тех пор, пока PIT не вызывает прерывание.

  5. Процедура операционной системы для обработки прерывания PIT затем сохраняет состояние программы (регистры и т. Д.), Использует алгоритм планирования для определения следующего процесса для запуска (в простом случае, круговой связанный список), затем начинается на этапе 1.

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

+0

Благодарим за быстрый ответ. Итак, вы говорите, что ОС выполняет сброс и восстановление таблицы страниц при каждом переключении контекста? – saimn

+0

@ пользователь1435023 по существу. Операционная система сообщает MMU, где таблица находится в физической памяти как указатель, затем MMU обрабатывает очистку TTL и других аппаратных задач. В зависимости от MMU операционная система может иметь более мелкозернистый контроль деталей низкого уровня, но это не является строго необходимым. На простейшем уровне вся ОС заботится о том, чтобы MMU использовал таблицу страниц. – Dougvj

+0

@ user1435023 Исправление: Предназначено TLB выше, * не * TTL. Натан Бинкерт ответил больше на аспект TLB вещей – Dougvj

13

Процессоры имеют привилегированный регистр, называемый базовым регистром таблицы страниц (PTBR), на x86 - CR3. При переключении контекста ОС изменяет значение PTBR, чтобы теперь процессор знал, какую таблицу страниц использовать. В дополнение к PTBR, многие современные процессоры имеют понятие номера адресного пространства (ASN). Процессам присваивается номер адресного пространства (из ограниченного пула), и этот ASN также устанавливается в регистре в контекстном коммутаторе. Этот ASN используется как часть соответствия TLB и позволяет использовать записи TLB из нескольких адресных пространств. Только при повторном использовании ASN необходимо очистить TLB, а затем только для записей, соответствующих ASN. Большинство реализаций x86 более грубые, чем это, и существует понятие глобальных страниц (для разделяемых библиотек и общих данных).

+0

Это было полезно спасибо – JohnnyCat