Главная страница Межпроцессное взаимодействие (состязание) Прежде всего, задачей отображения страниц является определение данной величины. За этим полем следует бит присутствия/отсутствия. Если этот бит равен 1, запись имеет силу и может использоваться. Если он равен О, виртуальная страница, которой соответствует эта запись, в данный момент отсутствует в памяти. Обращение к записи в таблице страниц, где индикатору присутствия/отсутствия присвоено нулевое значение, приводит к страничному прерыванию. Блокирование кэша Изменение Присутствие/отсутствие
Обращение Защита Рис. 4.11. Типичная запись в таблице страниц Биты защиты говорят о том, какие разрешены виды доступа к этой странице. В простейшей форме это поле содержит один бит, равный 1 для чтения/записи и равный О только для чтения. Более сложные схемы имеют три бита, по одному для допуска каждой из операций чтения, записи и выполнения страницы. Биты изменения и обращения отслеживают использование страницы. Когда страница записывается, аппаратура автоматически устанавливает бит изменения. Этот бит учитывается, когда операционная система решает освободить страничный блок. Если страница в нем была изменена (то есть она фязная ), ее новая версия должна быть переписана на диск. Если она не была модифицирована (то есть страница чистая ), ее можно просто удалить из памяти, так как все еще действительна копия на диске. Этот бит иногда называют грязньш битом, так как он отражает состояние страницы. Бит обращения устанавливается всякий раз, когда происходит обращение к странице для чтения или записи. Его значение помогает операционной системе при выборе страницы для удаления из памяти, когда случается страничное прерывание. Страницы, не использующиеся в данный момент, являются лучшими кандидатами, чем находящиеся в работе. Этот бит играет важную роль в нескольких алгоритмах перемещения страниц, которые мы изучим позже в текущей главе. Наконец, последний бит позволяет запретить кэширование страницы. Данное свойство важно для страниц, отображающихся не на память, а на регистры устройств. Если операционная система находится в цикле ожидания ответа от некоторого устройства ввода/вывода, которому была только что отдана команда, существенно, чтобы аппаратура продолжала получать слово из устройства, а не использовало старую копию, хранимую кэш-памятью. При помощи этого бита кэширование можно отключить. Компьютеры, имеющие отдельное пространство адресов ввода/вывода и без отображения регистров ввода/вывода на память, не нуждаются в нем. Заметим, что адрес места на диске, где хранится страница тогда, когда она не находится в памяти, не является частью таблицы страниц. Причина очень про- ста. Таблица страниц содержит только ту информацию, которая нужна аппаратуре для перевода виртуального адреса в физический. Информация, необходимая операционной системе для обработки страничных прерываний, хранится в про-фаммных таблицах внутри самой ОС. Аппаратуре она не нужна. 4.3.3. Буферы быстрого преобразования адреса (TLB) в большинстве схем со страничной организацией памяти таблицы страниц хранятся в памяти из-за их значительного размера. Потенциально такое устройство оказывает колоссальное влияние на производительность. Рассмотрим, например, команду процессора, копирующую содержимое одного регистра в другой. В отсутствие страничной организации памяти эта команда приводит только к одному обращению к памяти для выборки самой команды. Если же память организована по9транично, потребуются дополнительные ссылки для доступа к таблице страниц. Так как скорость выполнения команд в основном офаничена скоростью, с которой центральный процессор выбирает команды и данные из памяти, необходимость двух обращений к таблице страниц на одну ссылку к памяти уменьшает производительность на 2/3. При таких условиях никто не стал бы внедрять этот метод. Разработчики компьютеров многие годы размышляли об означенной проблеме и в результате придумали решение. Оно основано на наблюдении, что большинство программ склонно делать огромное количество обращений к небольшому количеству страниц, а не наоборот. То есть в таблице страниц лишь малая толика записей читается интенсивно, остальная часть едва ли вообще востребована. В результате принятого решения компьютер снабжается небольшим аппаратным устройством, служащим для отображения виртуальных адресов в физические без прохода по таблице страниц. Параметры этого устройства, называемого буфером быстрого преобразования адреса (TLB - Translation Lookaside Buffer) или иногда ассоциативной памятью, представлены в табл. 4.1. Оно обычно находится внутри диспетчера памяти и поддерживает несколько записей. В нашем примере их восемь, но фактически записей редко бывает больше 64. Каждая запись содержит информацию об одной странице, а именно: номер виртуальной страницы, бит, устанавливаемый при изменении страницы, код защиты (разрешения на чтение/запись/выполнение) и номер физического страничного блока, в котором расположена эта страница. Эти поля однозначно соответствуют полям в таблице страниц. Еще один бит служит признаком того, действительна ли запись (то есть используется ли она в данный момент) или нет. Пример, который мог бы сформировать TLB-буфер, представленный в таблице, - это циклический процесс, располагающийся в виртуальных страницах 19, 20 и 21. Соответственно, эти записи в табл. 4.1 имеют защитные коды для чтения и выполнения. Основные данные, используемые в текущий момент (скажем, обрабатываемый массив), находятся в страницах 129 и 130. Страница 140 содер- жит индексы, требуемые для вычислений массива. И наконец, в страницах 860 и 861 находится стек. Таблица 4.1. Буфер быстрого преобразования памяти для увеличения скорости страничной подкачки Действительная Виртуальная Изменение Защита Страничный запись страница кадр 140 1 RW 31 20 О RX 38 130 1 RW 29 129 1 RW 62 19 О RX 50 21 О RX 45 860 1 RW 14 861 1 RW 75 Теперь рассмотрим, как же функционирует буфер быстрого преобразования адреса (TLB). Когда виртуальный адрес представляется диспетчером памяти для отображения, аппаратура сначала убеждается в том, что номер его виртуальной страницы присутствует в TLB, путем сравнения адреса со всеми записями одновременно (то есть параллельно). Если найдено имеющее силу совпадение и обращение не нарушает биты защиты, страничный блок берется прямо из TLB, без перехода к таблице страниц. Если номер виртуальной страницы присутствует в буфере, но инструкция пытается записать что-то на страницу, доступную только для чтения, формируется ошибка защиты точно так же, как это происходило бы из са ой таблицы страниц. Интересная ситуация получается, если номер виртуальной страницы не находится в буфере быстрого преобразования адреса. Диспетчер памяти обнаруживает этот факт и выполняет обычный поиск в таблице страниц. Затем он удаляет одну из записей из буфера и заменяет ее только что найденной записью из таблицы страниц. Таким образом, если страница снова вскоре будет затребована, во второй раз поиск окажется успешным, а не неудачным. Когда запись удаляется из буфера быстрого преобразования адреса, бит изменения копируется в запись таблицы страниц в памяти. Другие значения уже находятся там. Когда буфер загружается из таблицы страниц, все поля берутся из памяти. Программное управление TLB До сих пор мы предполагали, что каждая машина со страничной виртуальной памятью имеет таблицы страниц, распознаваемые аппаратным обеспечением и буфером быстрого преобразования адреса. При таком устройстве за управление TLB и обработку его ошибок полностью отвечает аппаратура менеджера памяти
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |