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

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

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

В операционной системе Linux таблицы страниц состоят из трех уровней[83]. Несколько уровней позволяют эффективно поддерживать неравномерно заполненные адресные пространства даже для 64-разрядных машин. Если бы таблицы страниц были выполнены в виде одного статического массива, то их размер, даже для 32-разрядных аппаратных платформ, был бы чрезвычайно большим. В операционной системе Linux трехуровневые таблицы страниц используются даже для тех аппаратных платформ, которые аппаратно не поддерживают трехуровневых таблиц (например, для некоторых аппаратных платформ поддерживается только два уровня или аппаратно реализовано хеширование). Три уровня соответствуют своего рода "наибольшему общему знаменателю". Для аппаратных платформ с менее сложной реализацией работа с таблицами страниц в ядре при необходимости может быть упрощена с помощью оптимизаций компилятора.

Таблица страниц самого верхнего уровня называется глобальным каталогом страниц (page global directory, PGD). Таблица PGD представляет собой массив элементов типа pgd_t. Для большинства аппаратных платформ тип pgd_t соответствует типу unsigned long. Записи в таблице PGD содержат указатели на каталоги страниц более низкого уровня, PMD.

Каталоги страниц второго уровня еще называются каталогами страниц; среднего уровня (page middle directory, PMD). Каждый каталог PMD — это массив элементов типа pmd_t. Записи таблиц PMD укалывают на таблицы РТЕ (page table entry, запись таблицы страниц).

Таблицы страниц последнего уровня называются просто таблицами страниц и содержат элементы типа pte_t. Записи таблиц страниц указывают на страницы памяти.

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

Рис. 14.1. Таблицы страниц

Каждый процесс имеет свои таблицы страниц (разумеется, потоки эти таблицы используют совместно). Поле pgd дескриптора памяти указывает на глобальный каталог страниц. Манипуляции с таблицами и прохождение по ним требуют захвата блокировки page_table_lock, которая также находится в соответствующем дескрипторе памяти.

Структуры данных, связанные с таблицами страниц, сильно зависят от аппаратной платформы и определены в файле <asm/page.h>.

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

Несмотря на это, управление таблицами страниц все же остается критичной и развивающейся частью ядра. Изменения в ядре 2.6 включают выделение частей таблиц страниц не в области верхней памяти. В будущем, вероятно, появится возможность совместного использования таблиц страниц с копированием при записи. В такой схеме таблицы страниц будут совместно использоваться родительским и порожденным процессами даже после выполнения вызова fork(). Если же родительский или порожденный процесс изменит некоторую запись таблицы страниц, то будет создана копия этой записи, и эти процессы больше не будут совместно использовать данную запись. Совместное использование таблиц страниц позволит устранить затраты, связанные с копированием таблиц страниц при вызове fork().

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

6.2.2 Страницы и таблицы страниц

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

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


8.2.3.2.1 Нумерация страниц

Из книги Информационная технология ПРОЦЕСС СОЗДАНИЯ ДОКУМЕНТАЦИИ ПОЛЬЗОВАТЕЛЯ ПРОГРАММНОГО СРЕДСТВА автора Автор неизвестен


Нумерация страниц

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

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


Нумерация страниц

Из книги Word 2007.Популярный самоучитель автора Краинский И

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


16.3. Просмотр веб-страниц

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

16.3. Просмотр веб-страниц 16.3.1. Ссылки Итак, вы ввели адрес любого сайта в адресную строку браузера и нажали Enter. Если не знаете, что ввести, введите www.dkws.org.ua— этим вы не только увеличите посещаемость моего сайта, но и узнаете много интересного об операционных системах.Что


16.3.4. Сохранение страниц

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

16.3.4. Сохранение страниц Если страница понравилась и вы хотите ее сохранить на диске, то выполните команду Файл, Сохранить. При сохранении (рис. 207) выберите тип файла Веб-архив — вся веб-страница (текст и картинки) будет сохранена в одном файле с расширением. mht. Это очень


Сохранение страниц

Из книги Реферат, курсовая, диплом на компьютере автора Баловсяк Надежда Васильевна

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


Печать страниц

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Печать страниц Распечатать веб-страницу – дело нехитрое, и неважно, сохранили вы ее на диск или просматриваете в подключенном режиме. Чтобы отправить веб-страницу на печать, можно воспользоваться либо кнопкой Печать на панели инструментов, либо командой Файл/Печать. При


Нумерация страниц

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

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


Каталоги веб-страниц

Из книги XSLT автора Хольцнер Стивен

Каталоги веб-страниц Поисковые каталоги напоминают систематические каталоги обычных библиотек. Каталоги – это электронные справочники, в которых собраны списки адресов интернет-страниц, сгруппированные по определенным признакам, чаще всего – по тематике. Обычно


Последовательности страниц и нумерация страниц

Из книги Разработка ядра Linux автора Лав Роберт

Последовательности страниц и нумерация страниц Пока я использовал один и тот же шаблон страницы для всех страниц в рассмотренных нами документах XSL-FO. Если содержимое документа занимает более одной страницы, процессор XSL-FO использует тот же шаблон страницы для всех


Загрузка Web-страниц

Из книги автора

Загрузка Web-страниц Напоследок мы рассмотрим используемый во Flash способ загрузки в окно Web-обозревателя какой-либо Web-страницы. Для этого предназначено действие getURL, формат вызова которого таков: getURL ("<Интернет-адрес Web-страницы>" [, "<Цель>"]); С первым параметром этого


Структура страниц и SEO

Из книги автора

Структура страниц и SEO Главным новшеством в HTML5 применительно к SEO стало изменение структуры страницы. Прежде для сегментации страницы использовался тег div, причем каждая отдельная часть не несла конкретной смысловой нагрузки. Отныне возможна разбивка страницы на