Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [ 114 ] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

ценные на рисунке крестиками, не отображаются. В аппаратном обеспечении страницы, физически присутствующие в памяти, отслеживаются с помощью бита присутствия/отсутствия.

Виртуальное адресное пространство

60-64 К

56 - 60 К

52-56 К

48 -52 К

44 -48 К

40 -44 К

36 - 40 К

32 - 36 К

28 - 32 К

24-28 К

20-24 К

16-20 К

12 -16К

8-12 К

4-8К

0 -4К

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 или какое-нибудь другое число битов также возможно. Разная дробность подразумевает различные размеры страниц.

Номер виртуальной страницы используется как индекс в таблице страниц для поиска записи этой страницы. По записи в таблице страниц находится номер физического блока страницы (если это имеет место). Данный номер присоединяется к старшим разрядам числа смещения, замещая собой номер виртуальной страницы и тем самым формируя физический адрес, который может быть послан в память.

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



0 оо

Таблица страницы

12 битов смещения копируются прямо из входных данных в выходные

Бит

присутствия/ отсутствия

Виртуальная страница 2 используется как индекс в таблице страниц

оо1оооооооооо1100

Физическай адрес на выходе (24580)

Виртуальный адрес на входе (8196)

Рис. 4.9. Внутренняя операция диспетчера памяти в системе с шестнадцатью страницами размером 4 Кбайт

Несмотря на столь простое описание, нам придется столкнуться с двумя важными проблемами.

1. Таблица страниц может быть слишком большой.

2. Отображение должно быть быстрым.

Первое утверждение следует из того факта, что современным компьютерам сродни по крайней мере 32-разрядные виртуальные адреса. При размере страницы, скажем, 4 Кбайт, 32-разрядное адресное пространство будет состоять из 1 млн страниц, а 64-разрядное адресное пространство будет включать в себя намного больше страниц, чем то количество, с которым вы захотите иметь дело. При 1 млн страниц в виртуальном адресном пространстве таблица страниц должна состоять из 1 млн записей. И помните, что каждый процесс нуждается в своей собственной таблице страниц (так как у него есть свое собственное виртуальное адресное пространство).

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [ 114 ] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.