Главная страница Межпроцессное взаимодействие (состязание) ценные на рисунке крестиками, не отображаются. В аппаратном обеспечении страницы, физически присутствующие в памяти, отслеживаются с помощью бита присутствия/отсутствия. Виртуальное адресное пространство
I Виртуальная страница Адрес физической памяти Страничный блок Рис. 4.8. Связь между виртуальными и физическими адресами, получаемая с помощью таблицы страниц Что происходит, если программа пытается воспользоваться неотображаемой страницей, скажем, с помощью инструкции MOVE REG,32780 которая обращается к байту 12 на виртуальной странице 8 (откладываемой с адреса 32768)? Диспетчер памяти замечает, что страница не отображается (обозначена крестиком на рисунке), и инициирует прерывание центрального процессора, передающее управление операционной системе. Такое прерывание называется ошибкой из-за отсутствия страницы или страничным прерыванием (page fault). Операционная система выбирает редко используемый страничный блок и записывает его содержимое на диск. Затем она считывает с диска страницу, на которую ссылается прерывание, в только что освободившийся блок, изменяет карту отображения и запускает заново прерванную команду. Например, если операционная система решает удалить из оперативной памяти страничный блок 1, она загружает виртуальную страницу 8 по физическому адресу 4 К и производит два изменения в карте диспетчера памяти. Во-первых, отмечается содержимое виртуальной страницы 1 как неотображаемое для того. чтобы перехватывать в будущем любые попытки обращения к виртуальным адресам между 4 К и 8 К. Затем заменяется крест в записи для виртуальной страницы 8 на номер 1, следовательно, когда прерванная команда будет выполняться заново, она спроецирует виртуальный адрес 32780 на физический адрес 4108. Теперь рассмотрим диспетчер памяти изнутри, чтобы увидеть, как он работает, и понять, почему мы выбрали размер страницы, являющийся степенью числа 2. На рис. 4.9 представлен пример виртуального адреса 8196 (0010000000000100 в двоичном виде), который отображается согласно карте менеджера памяти на рис. 4.8. Входной 16-разрядный виртуальный адрес разделяется на 4-разрядный номер страницы и 12 бит смещения. При четырех битах под номер страницы в нашей системе может существовать 16 страниц, а с 12 бит смещения мы можем адресоваться ко всем 4096 байтам внутри страницы. Номер страницы используется в качестве индекса в таблице страниц, выдающей номер страничного блока, соответствующего виртуальной странице. Если бит присутствия/отсутствия равен О, управление переходит к операционной системе. Если этот бит равен 1, номер страничного блока, найденный в таблице страниц, записывается в три старших бита выходного регистра, а 12 бит смещения копируются без изменения из входного виртуального адреса. Все вместе они составляют 15-разрядный физический адрес. Затем содержимое выходного регистра выставляется на шину памяти как адрес физической памяти. 4.3.2. Таблицы страниц в теории отображение виртуальных адресов на физические происходит так, как мы только что описали. Виртуальный адрес делится на номер виртуальной страницы (старшие биты) и смещение (младшие биты). Например, при 16-разрядных адресах и размере страницы 4 Кбайт старшие 4 бита могут указывать одну из 16 виртуальных страниц, а нижние 12 бит могут определять байт смещения (от О до 4095) внутри выбранной страницы. Однако разбиение страницы на 3, 5 или какое-нибудь другое число битов также возможно. Разная дробность подразумевает различные размеры страниц. Номер виртуальной страницы используется как индекс в таблице страниц для поиска записи этой страницы. По записи в таблице страниц находится номер физического блока страницы (если это имеет место). Данный номер присоединяется к старшим разрядам числа смещения, замещая собой номер виртуальной страницы и тем самым формируя физический адрес, который может быть послан в память. Назначение таблицы страниц заключается в отображении виртуальных страниц на страничные блоки. Говоря математически, таблица страниц - это функция, имеющая в качестве аргумента номер виртуальной страницы и вырабатывающая в результате номер физического блока. На основе полученного результата поле виртуальной страницы в виртуальном адресе может быть заменено полем страничного блока, таким образом формируется физический адрес.
Таблица страницы 12 битов смещения копируются прямо из входных данных в выходные Бит присутствия/ отсутствия Виртуальная страница 2 используется как индекс в таблице страниц оо1оооооооооо1100 Физическай адрес на выходе (24580) Виртуальный адрес на входе (8196) Рис. 4.9. Внутренняя операция диспетчера памяти в системе с шестнадцатью страницами размером 4 Кбайт Несмотря на столь простое описание, нам придется столкнуться с двумя важными проблемами. 1. Таблица страниц может быть слишком большой. 2. Отображение должно быть быстрым. Первое утверждение следует из того факта, что современным компьютерам сродни по крайней мере 32-разрядные виртуальные адреса. При размере страницы, скажем, 4 Кбайт, 32-разрядное адресное пространство будет состоять из 1 млн страниц, а 64-разрядное адресное пространство будет включать в себя намного больше страниц, чем то количество, с которым вы захотите иметь дело. При 1 млн страниц в виртуальном адресном пространстве таблица страниц должна состоять из 1 млн записей. И помните, что каждый процесс нуждается в своей собственной таблице страниц (так как у него есть свое собственное виртуальное адресное пространство). Второе положение - это вывод из той реальности, что преобразование виртуальных адресов в физические должно быть выполнено для каждого обращения
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |