Как ядро ​​отслеживает сопоставление фреймов с другими процессами? - PullRequest
0 голосов
/ 06 июля 2019

В отношении незначительных сбоев страниц , Википедия говорит:

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

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

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

1 Ответ

1 голос
/ 06 июля 2019

В системе виртуальной памяти операционная система должна поддерживать представление адресного пространства процесса во вторичном хранилище. Это «виртуальная» часть виртуальной памяти.

Виртуальное представление обычно делится на разделы. Каждый раздел содержит страницы с одинаковыми атрибутами (r / w / rw / rx) и хранится непрерывно.

Обычно, если процессы совместно используют память, они разделяют целые разделы.

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

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

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

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

...