Хешированные таблицы страниц
Структура таблицы страниц, описанная в данном разделе, базируется на понятии хеш-функции (hash function) [24] - целочисленной функцииhash, определенной на элементахs некоторого пространства поискаS (строках, больших числах и др.) и принимающей значения из отрезка[0, H-1]гдеH – натуральное число. Общая идея поиска спомощьюхеш-функций заключается в следующем: пространство поиска разбивается наH непересекающихся подмножеств (списков)Sh, в каждом из которых хранятся элементы, имеющиеодинаковое значение хеш-функции, равноеh. Таким образом, применение хеш-функции позволяет сократить поиск в среднем вH раз: при поиске элементаs сначала вычисляемhash(s), а затем выполняем поиск только в спискеShash(s) Для облегчения доступа к хеш-спискам хранится такжехеш-оглавление – таблица, индексируемая значением хеш-функции, каждый элемент которой содержит ссылку на начало соответствующего списка.
Хешированные таблицы страниц используются, если адресное пространство 64-битное или большей разрядности. Очевидно, что в этом случае, при прямолинейном подходе, размеры таблиц страниц оказались бы слишком велики. Поэтомуиспользуетсядругой метод. Логический номер страницы хешируется (т.е. для него вычисляется хеш-функция). Полученное число (реальный номер страницы) используется как индекс в хеш-оглавлении, ссылающемся на список страниц, хешируемых в один и тот же номер. В найденном таким образом списке и выполняется поиск нужной страницы. Данный способ организации таблицы страниц и схема адресации иллюстрируютсярис. 16.11.

Рис. 16.11. Хешированные таблицы страниц.
Инвертированные таблицы страниц
Данный способ организации таблиц страниц предназначен для сокращения размеров таблиц страниц. В таблице страниц хранится один элемент для каждой реальной страницы, находящейся в памяти. К логическому адресу добавляется номер процесса (pid) владеющего данной страницей. По паре(номер процесса = pid, номер страницы = p) выполняется ассоциативный поиск в таблице страниц. Индекс найденного элемента таблицыi конкатенируется со смещениемd внутри страницы, в результате получается физический адрес. Инвертированные таблицы страниц иллюстрируютсярис. 16.12.

Рис. 16.12. Инвертированные таблицы страниц.
Разделяемые страницы
Разделяемые (совместно используемые) страницы – логические страницы, используемые несколькими процессами и имеющие один и тот же номер в таблице страниц каждого из процессов. Данный механизм полезен для экономии памяти, так как позволяет загружать в память в единственном экземпляре не изменяемую информацию, необходимую нескольким процессам – например, код и массивы констант.
Пример использованияразделяемых страниц тремя процессами приведен нарис. 16.13.Три процесса используют одни и те же коды трех редакторовed1, ed2, ed3, логические страницы которых имеют для обоих процессов номера 0, 1 и 2. Кроме того, каждый процесс использует свои индивидуальные данныеdata1, data2, data3.

Рис. 16.13. Разделяемые страницы.
Ключевые термины
Roll out / roll in - откачка и подкачка на базе приоритетов; более приоритетные процессы исполняются, менее приоритетные – откачиваются на диск.
Ассоциативная память (кэш) страниц, буфер трансляции адресов (translation lookaside buffer – TLB) – сверхбыстродействующая ассоциативная память, содержащая номера наиболее часто используемых страниц и их адреса в основной памяти.
Бит valid-invalid – бит в элементе таблицы страниц, указывающий, принадлежит ли страница логической памяти процесса.
Внешняя фрагментация – ситуация, когда в системе имеется достаточно большая область свободной памяти, но она не является непрерывной.
Внутренняя фрагментация – ситуация в системе, при которой неэффективно расходуется свободная память, вследствие применения стратегии выделения памяти с точностью до страницы.
Иерархическая таблица страниц – организация таблиц страниц в виде иерархии (как правило, двухуровневой), результатом доступа к которой является адрес фактической страницы физической памяти.
Инвертированная таблица страниц – таблица страниц, при обращении к которой выполняется поиск требуемой физической страницы по номеру процесса и логическому номеру страницы.
Компактировка (compaction) – сдвиг или перемешивание памяти с целью объединения всех не смежных свободных областей в один непрерывный блок.
Метод наиболее подходящего – метод решенияобщей задачи распределения памяти, при котором выбирается по списку свободный участок минимального размера, не меньшего, чемn.
Метод наименее подходящего – метод решенияобщей задачи распределения памяти, при котором выбирается по списку свободный участок максимального размера, не меньшего, чемn.
Метод первого подходящего – метод решенияобщей задачи распределения памяти, при котором выбирается первый по списку свободный участок подходящего размера (не меньшего, чемn).
Общая задача распределения памяти - Имеется список свободных областей памяти и список занятых областей разного размера; реализовать оптимальный алгоритм выделения свободного смежного участка памяти длиныn.
Откачка (swap out) - запись образа неактивного процесса на диск.
Откачка и подкачка (swapping) – действия операционной системы пооткачке (записи) образа неактивного процесса на диск илиподкачке (считыванию) активного процесса в основную память.
Подкачка (swap in) - считывание активного процесса с диска в основную память.
Разделяемые страницы – страницы, совместно используемые несколькими процессами и имеющие в их таблицах страниц одинаковые логические номера.
Регистр таблицы страниц (page table base register – PTBR) – регистр, указывающий на таблицу страниц и хранящий ее длину.
Регистр таблицы страниц пользователя (РТСП) – в системе "Эльбрус": регистр, содержащий дескриптор таблицы страниц.
Cмежное распределение памяти – распределение памяти для пользовательских процессов в одной смежной области основной памяти.
Среднее время доступа (Effective Access Time - EAT) – оценка математического ожидания числа обращений к памяти при страничной организации.
Страничная организация (paging) – стратегия управления памятью, при которой логическая и физическая память делится на страницы одинаковой длины, и в основной памяти образы логических страниц могут размещаться произвольным образом.
Страницы – смежные области логической и физической памяти одинаковой длины, обычно – степень 2, используемые пристраничной организации.
Таблица страниц (page table) – системная структура, выделяемой процессу операционной системой для трансляции его логических адресов в физические.
Файл откачки (backing store) - область дисковой памяти, используемая операционной системой для хранения образов откачанных процессов.
Фрагментация – дробление памяти на мелкие несмежные свободные области маленького размера как результат выполнения системой большого числа запросов на память, таких, что размеры подходящих свободных участков памяти оказываются немного больше, чем требуемые.
Фрейм – образстраницы в основной памяти.
Хешированная таблица страниц – таблица страниц, при обращении к которой выполняется поиск, основанный на хешировании номера логической страницы.
