
Термин Big Data должен был появиться в тот же день, когда очевидной стала несостоятельность сегментной организации оперативной памяти, реализованная в архитектуре x86. Ограничение адресного пространства, обслуживаемого 20-битной адресной шиной, вызвало к жизни ряд новых подходов в работе процессоров Intel. Краеугольным камнем для них стала 32-битность в защищенном режиме. Препятствием — проблема совместимости с «реальной адресацией». На какие компромиссы пошли разработчики процессорной архитектуры, на многие годы определившей философию программного обеспечения персональных компьютеров?
Защищенный режим или Protected Mode, появившийся в процессоре 80286, сохранив понятия сегмента и смещения, и радикально модернизировал механизм сегментации, предложив концепцию логического (виртуального) адреса.
В защищенном режиме работы процессора содержимое сегментных регистров используется не как слагаемое при вычислении адреса, а как индекс или селектор, выбирающий дескриптор сегмента в специальной структуре, называемой дескрипторной таблицей и описывающей свойства каждого сегмента: базовый адрес, размер и атрибуты, связанные с управлением привилегиями и защитой памяти. Изящность такой метаморфозы позволяет предположить, что задумана она была инженерами Intel еще на момент создания архитектуры реального режима 8086.
Рис 1. Идея алгоритма по преобразованию логического адреса в физический
О таблице дескрипторов
Программа, переключающая процессор в защищенный режим, должна подготовить в памяти управляющие структуры, используемые процессором в этом режиме. Одна из таких структур — таблица дескрипторов сегментов, описывающая свойства адресуемых областей памяти.
- При старте платформы и выполнении процедуры POST, обязанности по управлению контекстом процессора возлагаются на BIOS или UEFI, что подразумевает использование таблиц страниц и сегментов, построенных firmware.
- При выполнении Legacy-boot, firmware передает управление загрузчику в 16-битном режиме Real Mode. Переключение процессора в Protected Mode и управление его контекстом входит в обязанности ОС, либо не выполняется, в случае 16-битной системы MS-DOS. Вместе с тем, до момента передачи управления от BIOS к загрузчику ОС, в частности во время инициализации и тестировании памяти, процессор может временно переводиться в Protected Mode процедурами POST.
- При UEFI-boot, в момент передачи управления от firmware к загрузчику операционной системы, процессор уже работает в Protected Mode, тем не менее, ОС повторно инициализирует CPU, предварительно создав собственные таблицы дескрипторов и сегментов, прекращая полномочия контекста UEFI, вызовом функции ExitBootServices().
Рис 2. Функция ExitBootServices завершает выполнение UEFI BIOS
Еще со времен i386, инженеры Intel предусмотрели два вида дескрипторных таблиц: локальной (Local Description Table), ориентированной на поддержку пользовательских приложений, и глобальной (Global Description Table), предназначенной для управления сегментами операционной системы. Вид дескрипторной таблицы определяется битом #2 селектора сегмента. Как известно, разработчики многих операционных систем зачастую игнорировали данный вид гибкости.
Виртуальная память
В 32-битном процессоре 80386, сегментация была дополнена механизмом трансляции страниц или Paging, лежащим в основе организации виртуальной памяти.
Дескриптор сегмента кода, используемый в 32-битном режиме (IA32),
определяет базовый адрес, размер и атрибуты сегмента
Дескриптор сегмента кода, используемый в 64-битном режиме (IA32e),
поля базового адреса и размера не используются
Позднее, в реализации 64-битной версии x86, где первую скрипку играла компания AMD, роль сегментации была существенно уменьшена, а управление базовым адресом и размером диапазонов памяти, перемещено на уровень трансляции страниц.