Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы по ОС.doc
Скачиваний:
37
Добавлен:
27.08.2019
Размер:
3.35 Mб
Скачать

32 Вопрос. Tlb и его назначение. Моменты сброса tlb.

TLB (Translation Lookaside Buffer) – буфер быстрого преобразования адреса, служащий для отображения виртуальных адресов в физические без прохода по таблице страниц.

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

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

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

TLB сбрасывается при переключении процесса. То есть если целевая задача при переключении использует отличный контекст памяти (каталог страниц и таблицы страницы), происходит очистка TLB, таким образом, снижается производительность процессора.

Существует несколько стратегий борьбы с очисткой:

  1. Сохранение TLB в оперативной памяти;

  2. Спецификация принадлежности записи TLB к определенному адресному пространству.

9. Адресное пространство процесса. Область, отображаемое в данные и код ядра, необходимость и обновление этого отображения. Выделение памяти процессу и освобождение им памяти. Связь функций выделения памятью стандартной библиотеки и системных вызовов, необходимость менеджера памяти режима пользователя.

Все на примере Windows (сама идея подходит и для общего случая)

Адресное пространство процесса

Все 32-разрядные приложения имеют адресное пространство процесса размером 4 ГБ (то есть для 32-разрядного приложения может быть выделено не более 4 ГБ памяти). Операционная система Microsoft Windows предоставляет приложениям адресное пространство размером 2 ГБ, также известное как виртуальное адресное пространство пользователя. Все потоки одного приложения содержатся в одном виртуальном адресном пространстве пользователя. Оставшиеся 2 ГБ пространства резервируются операционной системой (эту область памяти также называют адресным пространством ядра). Windows 2000 Server и более поздние версии операционных систем, включая Windows Server 2003, содержат параметр boot.ini, позволяющий приложениям получать доступ к 3 ГБ адресного пространства и ограничивающий адресное пространство ядра размером в 1 ГБ.

Расширения AWE позволяют 32-разрядным приложениям получать доступ ко всему объему физической памяти, которым располагает операционная система. Такой результат достигается путем сопоставления подмножества объемом до 64 ГБ с адресным пространством пользователя. Сопоставление буферного пула приложения с памятью, сопоставленной AWE, осуществляется при помощи таблиц виртуальной памяти Windows.