Главная страница Межпроцессное взаимодействие (состязание) 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: Программы-приложения Тип сегмента и защита
- 32 бита- Относительная адресация Рис. 4.2в. Дескриптор программного сегмента в системе Pentium. Сегменты данных немного отличаются от программных сегментов
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |