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

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

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

5) наконец, происходит чтение или сохранение.

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

Виртуальный адрес MULTICS

Номер сегмента

Номер страницы

Смещение

Номер сегмента


Сегмент дескрипторов

Номер страниц

Смещение

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

Страница

Рис. 4.23. Преобразование в системе MULTICS адреса, состоящего из двух частей,

в адрес в оперативной памяти

Как вы, без сомнения, теперь догадались, если бы на практике предыдущий алгоритм выполнялся операционной системой для каждой команды процессора, программы были бы не слишком быстры. В действительности аппаратура для MULTICS содержит высокоскоростной буфер быстрого преобразования адреса (TLB) размером в 16 слов, способный производить поиск параллельно по всем своим записям для заданного ключа. Это проиллюстрировано на рис. 4.24. Когда компьютер получает адрес, аппаратура адресации сначала проверяет наличие виртуального адреса в TLB. При его наличии она получает номер страничного блока прямиком из TLB и формирует фактический адрес слова, к которому происходит обращение, не выполняя поиск в сегменте дескрипторов или таблице страниц.

Адреса 16 самых часто востребуемых страниц хранятся в буфере (TLB). Программы, у которых рабочий набор меньше размера буфера, будут хранить адреса



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

Поле сравнения

Номер Виртуальная Страничный сегмента страница блок

Защита

Эта запись используется?

Возраст V

Чтение/запись

Только чтение

Чтение/запись

Только выполнение

Только выполнение

Рис. 4.24. Простейший вариант буфера быстрого преобразования адреса в системе MULTICS. Два разных размера страниц делают фактическое строение TLB

более сложным

4.6.3. Сегментация с использованием страниц: Intel Pentium

Виртуальная память на компьютере Pentium во многих отношениях аналогична памяти в системе MULTICS, включая наличие и сегментации, и страничной организации. В то время как MULTICS имеет 256 К независимых сегментов, каждый до 64 К 36-разрядных слов, система Pentium поддерживает 16 К независимых сегментов, каждый до 1 млрд 32-разрядных слов. Хотя в последней системе меньше сегментов, их увеличенный размер намного более важен, так как программы редко нуждаются более чем в 1000 сегментах, но многим программам необходимы сегменты значительного размера.

Основа виртуальной памяти Pentium состоит их двух таблиц: локальной таблицы дескрипторов iDr (Local Descriptor Table) и глобальной таблицы дескрипторов GDT (Global Descriptor Table). У каждой программы есть своя собственная таблица LDT, но глобальная таблица дескрипторов одна, ее совместно используют все программы в компьютере. Таблица LDT описывает сегменты, локальные для каждой программы, - ее код, данные, стек и т. д., тогда как таблица GDT несет информацию о системных сегментах, включая саму операционную систему.



Чтобы получить доступ к сегменту, программа системы Pentium сначала загружает селектор для этого сегмента в один из шести сегментных регистров машины. Во время выполнения регистр CS содержит селектор для сегмента кода, а регистр DS хранит селектор для сегмента данных. Каждый селектор представляет собой 16-разрядный номер (рис. 4.25).

Биты

Индекс

Уровень

О = GDT/1 = LDT привилегированности (0-3) Рис. 4.25. Селектор в системе Pentium

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

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

0:16-разрядный сегмент 1:32-разрядный сегмент

0: Предел в байтах 1: Предел в страницах

База 24-31

База о-15

1 г , г

0: Сепиент отсутствует в памяти 1: Сегмент присутствует в памяти Уровень привилегированности (О-3) 0. Система

1: Программы-приложения Тип сегмента и защита

Предел 16-19

База 16-23

Предел 0-15

- 32 бита-

Относительная адресация

Рис. 4.2в. Дескриптор программного сегмента в системе Pentium. Сегменты данных немного отличаются от программных сегментов



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.
Копирование материалов разрешено исключительно при условии цититирования.