Как процесс запускается при пейджинге по требованию? - PullRequest
0 голосов
/ 28 ноября 2018

Я изучал управление памятью в ОС и вдруг получил это сомнение.Говорят, что при пейджинге по требованию процесс запускается с нуля страниц, перенесенных в основную память.Виртуальное адресное пространство содержит много вещей, включая данные, стек, кучу и текстовую область или код.Так что, если процесс собирается выполняться и у него нет страницы в основной памяти, как регистр команд будет хранить свою первую инструкцию, которая будет выполнена ЦП, что приведет к дальнейшим ошибкам страницы?

1 Ответ

0 голосов
/ 28 ноября 2018

Это плохой способ просмотра адресного пространства.

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

Адресное пространство состоит из памяти с различными атрибутами: только для чтения, только для чтения / выполнения, чтения / записи и редко для чтения / записи / выполнения.

Виртуальная память - это использование вторичного хранилищасимулировать физическую память.Загрузчик программы читает исполняемый файл и строит адресное пространство на диске.Например, в некоторых системах исполняемый файл сам стал файлом подкачки кода и данных.

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

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

Так что, если процесс собирается выполнятьсяи у него нет страницы в основной памяти, как регистр команд будет хранить свою первую инструкцию, которая будет выполняться ЦП, что приведет к дальнейшим ошибкам страницы?

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

...