память, используемая операционной системой - PullRequest
0 голосов
/ 05 июня 2018

Я думаю, что мне не хватает фундаментальной концепции того, как ОС управляет памятью.

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

Это имеет смысл для того, как процессы обращаются к памяти.Однако я не понимаю, как сама ОС обращается к памяти.

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

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

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

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

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

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

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

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

0 голосов
/ 05 июня 2018

Я не понимаю, как сама ОС обращается к памяти.

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

Подумайте об этом так: у каждого процесса есть собственная таблица страниц,То же самое касается ОС.ОС запоминает расположение этих таблиц страниц в управляющих структурах, связанных с каждым процессом (например, PCB), и для текущего запущенного процесса адрес (физический указатель) на таблицу страниц хранится в аппаратном обеспечении (для архитектуры x86 этов контрольном регистре 4 (CR4)).На x86 всякий раз, когда ОС переключает запущенный процесс, она изменяет значение в CR4 так, чтобы адрес указывал на правильную таблицу страниц (свою собственную, если она переключается на себя).

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

...