ЗАНЯТИЕ № 17. Матричные и векторные процессоры

10.1 Динамическое (спекулятивное) исполнение

Одной из главных особенностей шестого поколения микропро­цессоров архитектуры IA32 (новая архитектура Intel NetBurst для про­цессоа Pentium 4  и устанавливает новый стандарт для высокопроизво­дительных микропроцессоров.) является динамическое (спекулятив­ное) исполнение. Под этим термином подразумевается следующая со­вокупность возможностей:

  • Глубокое предсказание ветвлений (с вероятностью >90% можно предсказать 10-15 ближайших переходов).
  • Анализ потока данных (на 20-30 шагов вперед просмотреть программу и определить зависимость команд по данным или ресурсам).
  • Опережающее исполнение команд (Микропроцессор поколе­ния 6 может выполнять команды в порядке, отличном от их следования в программе).

Внутренняя организация микропроцессора 6 поколения соот­ветствует архитектуре RISC, поэтому блок выборки команд, считав поток инструкций IA-32 из L1 кэша инструкций, декодирует их в се­рию микроопераций. Поток микроопераций попадает в буфер пере­упорядочивания (пул инструкций). В нем содержатся как не выпол­ненные пока микрооперации, так и уже выполненные, но еще не по­влиявшие на состояние процессора. Для декодирования инструкций предназначены три параллельных дешифратора: два для простых и один для сложных инструкций. Каждая инструкция IA-32 декодиру­ется в 1-4 микрооперации. Микрооперации выполняются пятью парал­лельными исполнительными устройствами: два для целочисленной арифметики, два для вещественной арифметики и блок интерфейса с памятью. Таким образом, возможно выполнение до пяти микроопера­ций за такт.

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

Взаимная зависимость команд от значения регистров архитек­туры IA-32 может требовать ожидания освобождения регистров. Для решения этой проблемы предназначены 40 внутренних регистров об­щего назначения, используемых в реальных вычислениях.

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

Описанная схема отображена на рис. 160.

Рис. 160. Блок схема микропроцессора Pentium Pro

10.2 Технология Hyper-Threading
Технология Hyper-Threading была создана корпорацией Intel в целях повышения производительности и эффективности серверных систем. Она дополняет традиционную многопроцессорность, обеспе¬чивая более высокий параллелизм и запас производительности для ПО с поддержкой потоков. Напомним, что под потоком (или тредом, thread) в данном случае понимают объект (таких объектов может быть несколько), создаваемый ОС внутри процесса и выполняющий ин¬струкции программы. Вообще говоря, Hyper-Threading — это форма синхронной многопотоковой технологии SMT (Simultaneous Multi-Threading Technology), которая позволяет одновременно выполнять на одном процессоре множество потоков, создаваемых программными приложениями. Работа множества потоков достигается за счет дубли¬рования архитектурных состояний (логических процессоров) при сов¬местном использовании единого набора ресурсов процессора. По мере того как применение параллелизма в работе программ и процессоров получает все большее распространение, современные серверные плат¬формы все чаще обращаются к использованию потоков для повыше¬ния общей производительности системы. Серверные приложения адаптируются — разделяются на несколько потоков инструкций — и в результате получают возможность более полно реализовать преиму¬щества многопроцессорности. Потоки позволяют параллельно выпол¬нять процессы и одновременно выполнять одним процессом различ¬ные части программы на различных процессорах. Ход выполнения потоков строго отслеживается логическим процессором, а ресурсы, необходимые для их выполнения, — это функциональные модули про¬цессора, реализующие то или иное действие: сложение, перемноже¬ние, загрузку и т. п.
Для повышения производительности и пропускной способно¬сти современных приложений в семействе процессоров Intel Xeon тех¬нология Hyper-Threading используется совместно с микроархитекту¬рой NetBurst. Появление Xeon изменило подход к разработке процес¬соров общего назначения, позволив исполнять несколько программ¬ных потоков на одном ядре процессора. Hyper-Threading предусматри¬вает параллелизм на уровне потоков (Thread-Level-Parallelism, или TLP), что приводит к росту эффективности использования ресурсов. ОС, поддерживающие многопроцессорность, способны диспетчеризо¬вать потоки для организации параллельной обработки на нескольких процессорах в пределах сервера. Серверные приложения могут без модификаций выполняться на серверных процессорах семейства Xeon и пользоваться преимуществами параллелизма уровня потоков на каждом процессоре системы.
Предполагается, что серверные приложения для многопроцес¬сорных систем получают выигрыш от применения технологии Hyper-Threading в таких областях, как обслуживание Интернета, поисковые машины, базы данных подразделений или малых предприятий, а также почтовые серверы, файл-серверы и серверы печати. Их работа ускоря¬ется благодаря тому, что технология Hyper-Threading сокращает время отклика и повышает производительность обработки транзакций. Раз¬работчики полагают, что со временем все большее число программ будет оптимизироваться для использования процессорного паралле¬лизма и, соответственно, будет расти эффективность технологии Hyper-Threading. Измерения, выполненные в Intel Microprocessor Software Labs, показали, что эта технология способна увеличить про¬изводительность для функций Microsoft Active Directory на 18%, для Microsoft SQL Server — на 22%, для Microsoft Exchange — на 23%, а для Microsoft IIS — на 30%.
Принцип действия
Для пояснения новой технологии удобно провести аналогию между работой процессора и промышленного предприятия. На тради¬ционном заводе, как правило, имеется несколько линий сборки (в Hyper-Threading — ресурсы выполнения) и единый планировщик (архи¬тектурное состояние), который следит за заказами (потоками) и орга¬низует продвижение их выполнения на всем протяжении технологиче¬ской цепочки. Диспетчер может поддерживать параллельную работу линий сборки на всем заводе, но если он будет вынужден ждать какой-то части собираемого агрегата, то и линия сборки замедлит свою ра¬боту. Для процессора это означает, что функциональный блок может вынужденно простаивать в ожидании данных с диска.
При использовании технологии Hyper-Threading каждому «за¬воду» (процессору) разрешается иметь двух диспетчеров (два архитек¬турных состояния). Они совместно используют сборочные линии, принадлежащие заводу. Пока один из диспетчеров ожидает получения некоего узла, другой может использовать линии сборки, что повышает эффективность работы завода. Теперь завод может производить за час больше изделий, поскольку его сборочные линии используются более интенсивно. Нет необходимости и наращивать производственные мощности, поскольку здесь просто более эффективно используются существующие.
На рис. 161 одна конфигурация представляет собой традицион¬ную многопроцессорную систему с двумя физическими процессорами, каждый из которых имеет свой собственный набор ресурсов выполне¬ния и собственное, единственное архитектурное состояние. Другая конфигурация — это система на основе процессоров семейства Intel Xeon, где каждый процессор использует технологию Hyper-Threading.

Рис. 161. Эволюция многопроцессорных систем

Как видно, архитектурное состояние каждого процессора дуб-лировано, но каждый из них по-прежнему имеет один набор ресурсов исполнения. При диспетчеризации потоков ОС воспринимает два от-дельных архитектурных состояния как два «логических» процессора.
Программные приложения, способные работать с несколькими процессорами, могут без модификаций выполняться на удвоенном числе логических процессоров, имеющихся в системе. Каждый логи¬ческий процессор может отвечать на прерывания независимо от дру¬гих. Первый логический процессор может отслеживать потоки одной программы, в то время как второй будет заниматься потоками другой программы.
Поскольку оба процессора совместно используют единый набор ресурсов исполнения, второй поток может задействовать ре¬сурсы, которые при обработке всего одного потока простаивали бы. Здесь же мы получаем увеличение загрузки ресурсов исполнения в пределах каждого физического процессора.
Такое улучшение использования ресурсов процессора приво¬дит к повышению пропускной способности при обработке многопо¬точных приложений. Например, один логический процессор может выполнять операции с плавающей точкой, а второй в это же время вы¬полняет сложение и операцию загрузки.
Hyper-Threading привносит совсем немного новых схем — в ос¬новном это дублирование регистров и назначение ресурсов потокам. При этом дублируются как видимые, так и внутренние (физические) регистры. Начальные стадии конвейера не меняются, однако задей¬ствуются атрибуты (биты, указывающие на принадлежность к опреде¬ленной нити). Исполнительное ядро со всеми входящими в него устройствами также не изменяется, но его ресурсы разделяются между двумя нитями. Блок процессора, отвечающий за восстановление архи¬тектурного состояния на основании выполненных микроопераций, ра¬ботает последовательно (по нитям). Среди добавленных в процессор компонентов стоит упомянуть средства APIC (Advanced Programmable Interrupt Controller), назначающие прерывания для обработки разными процессорами в мультипроцессорной системе. На рис. 162 показаны упрощенные схемы процессоров с механизмом Hyper-Threading и без него. Согласно имеющейся информации, включение возможностей новой технологии добавляет к площади кристалла менее 5%.

Рис. 162. Обычный процессор (а) и процессор с Hyper-Threading (б).

10.3 Режимы работы
Реальный режим (Real Mode)
После инициализации (системного сброса) МП находится в ре¬альном режиме. В реальном режиме МП работает как очень быстрый 8086 с возможностью использования 32-битных расширений. Меха¬низм адресации, размеры памяти и обработка прерываний (с их после-довательными ограничениями) МП 8086 полностью совпадают с ана-логичными функциями других МП IA-32 в реальном режиме. В отли¬чие от 8086, остальные члены семейства IA-32 в определенных ситуа¬циях генерируют исключения, например, при превышении предела сегмента, который для всех сегментов в реальном режиме равен 0FFFFh.
Имеется две фиксированные области в памяти, которые резер-вируются в режиме реальной адресации: область инициализации си¬стемы и область таблицы прерываний.
Ячейки от 00000h до 003FFH резервируются для векторов пре-рываний. Каждое из 256 возможных прерываний имеет зарезервиро-ванный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы.
Режим системного управления (System Management Mode)
В новых поколениях МП Intel появился еще один режим ра¬боты — режим системного управления. Впервые он был реализован в МП 80386SL и i486SL. Начиная с расширенных моделей Intel-486, этот режим стал обязательным элементом архитектуры IA-32. С его помо¬щью прозрачно даже для операционной системы на уровне BIOS реа¬лизуются функции энергосбережения.
Режим системного управления предназначен для выполнения некоторых действий с возможностью их полной изоляции от приклад¬ного программного обеспечения и даже от операционной системы. МП переходит в этот режим только аппаратно: по низкому уровню на кон¬такте SMI# или по команде с шины APIC (Pentium+). Никакой про¬граммный способ не предусмотрен для перехода в этот режим. МП возвращается из режима системного управления в тот режим, при ра¬боте в котором был получен сигнал SMI#. Возврат происходит по ко¬манде RSM. Эта команда работает только в режиме системного управ¬ления и в других режимах не распознается, генерируя исключение #6 (недействительный код операции).
Когда МП находится в режиме SMM, он выставляет сигнал SMIACT#. Этот сигнал может служить для включения выделенной области физической памяти (System Management RAM), так что па¬мять SMRAM можно сделать доступной только для этого режима. При входе в режим SMM МП сохраняет свой контекст в SMRAM (контекст сопроцессора не сохраняется) и передает управление процедуре, назы¬ваемой обработчиком System Management Interrupt. Состояние МП в этот момент точно определено: регистр EFLAGS обнулен (кроме заре¬зервированных битов), сегментные регистры содержат селектор 0000, базы сегментов установлены в 00000000, пределы 0FFFFFFFFh.
Следует отметить, что в режиме SMM не предусмотрена ра¬бота с прерываниями и особыми случаями: прерывания по IRQ и SMI# замаскированы, пошаговые ловушки и точки останова отключены, об-работка прерывания по NMI откладывается до выхода из режима SMM. Если необходимо обеспечить работу с прерываниями или осо¬быми случаями, то надо инициализировать IDT и разрешить прерыва¬ния, выставив флаг IF в регистре EFLAGS. Прерывания по NMI будут разблокированы автоматически после первой же команды IRET.
При возврате из SMM (по инструкции RSM) МП восстанавли¬вает свой контекст из SMRAM. Обработчик может программно внести изменения в образ контекста МП, тогда МП перейдет не в то состоя¬ние, в котором произошло SMI.
Эти особенности режима системного управления позволяют использовать его для реализации системы управления энергосбереже¬нием компьютера или функций безопасности и контроля доступа.

Защищенный режим (Protected Mode)
Основным режимом работы МП является защищенный режим. Ключевые особенности защищенного режима: виртуальное адресное пространство, защита и многозадачность. МП может быть переведен в защищенный режим установкой бита 0 (Protect Enable) в регистре CR0. Вернуться в режим реального адреса МП может по сигналу RESET или сбросом бита PE (в Intel-286 недоступно).
В защищенном режиме программа оперирует с адресами, кото¬рые могут относиться к физически отсутствующим ячейкам памяти, поэтому такое адресное пространство называется виртуальным. Раз¬мер виртуального адресного пространства программы может превы¬шать емкость физической памяти и достигать 64Тбайт.
Преобразование логического адреса в физический происходит в два этапа: сначала блок управления сегментами выполняет трансля¬цию адреса в соответствии с сегментированной моделью памяти, по¬лучая 32-битный линейный адрес, а затем блок страничного преобра¬зования выполняет разбиение на страницы, преобразуя 32-битный ли¬нейный адрес в 32-битный или 36-битный (P6) физический. МП не предусматривает механизмов запрещения сегментации; с другой сто¬роны, страничная трансляция есть опциональный механизм и может использоваться либо не использоваться в зависимости от особенно¬стей операционной системы.
В рамках сегментированной модели адресации для программы память представляется группой независимых адресных блоков, назы-ваемых сегментами. Для адресации байта памяти программа должна использовать логический адрес, состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а сме¬щение указывает на конкретный байт в адресном пространстве вы¬бранного сегмента. Селектор сегмента может находиться либо непо¬средственно в коде команды, либо в одном из сегментных регистров. Смещение также может либо непосредственно находиться в коде ко¬манды, либо вычисляться на основе значений регистров общего назна¬чения.
С каждым сегментом связана особая структура, хранящая ин-формацию о нем: дескриптор. Дескриптор — это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме, хранящаяся в дескрипторной таб¬лице. Дескриптор сегмента содержит базовый адрес описываемого сегмента, предел сегмента и права доступа к сегменту. В защищенном режиме сегменты могут начинаться с любого линейного адреса (кото¬рый называется базовым адресом сегмента) и иметь любой предел вплоть до 4Гбайт.
Дескрипторные таблицы — это массивы памяти переменной длины, содержащие 8-байтные элементы: дескрипторы. Дескриптор¬ная таблица может иметь длину от 8 байт до 64 Кбайт и в каждой таб¬лице может быть до 8192 дескрипторов. Существуют две обязатель¬ных дескрипторных таблицы — глобальная дескрипторная таблица (Global Descriptor Table — GDT) и дескрипторная таблица прерывания (Interrupt Descriptor Table — IDT), а также множество (вплоть до 8191) необязательных локальных дескрипторных таблиц (Local Descriptor Table — LDT), из которых в каждый момент времени процессору до¬ступна только одна. Расположение дескрипторных таблиц определя¬ется регистрами процессора GDTR, IDTR, LDTR.
GDT содержит дескрипторы, доступные всем задачам в си¬стеме. GDT может содержать дескрипторы любых типов: и дескрип¬торы сегментов, и системные дескрипторы (кроме шлюзов прерыва¬ний и ловушек). Первый элемент GDT (с нулевым индексом) не ис¬пользуется. Ему соответствует нуль-селектор, обозначающий «пу¬стой» указатель.
LDT обеспечивают способ изоляции сегментов программы и данных исполняемой задачи от других задач. LDT связана с конкрет¬ной задачей и может содержать только дескрипторы сегментов, шлюзы вызовов и шлюзы задач.
Сегмент не может быть доступен задаче, если его дескриптор не существует ни в текущей таблице LDT, ни в таблице GDT. Исполь¬зование двух дескрипторных таблиц позволяет, с одной стороны, изо¬лировать и защищать сегменты исполняемой задачи, а с другой — поз¬воляет разделять глобальные данные и код между различными зада¬чами.
IDT может содержать только шлюзы задач, шлюзы прерываний или шлюзы ловушек.
Для вычисления линейного адреса МП выполняет следующие действия (рис. 162):

  1. МП использует селектор сегмента для нахождения дескрип¬тора сегмента. Селектор содержит индекс дескриптора в де¬скрипторной таблице (Index), бит TI, определяющий, к какой дескрипторной таблице производится обращение (LDT или GDT), а также запрашиваемые права доступа к сегменту (RPL). Если селектор хранится в сегментном регистре, то обращение к дескрипторным таблицам происходит только при загрузке се¬лектора в сегментный регистр, т. к. каждый сегментный ре¬гистр хранит соответствующий дескриптор в программно-не¬доступном («теневом») регистре-кэше.
  2. МП анализирует дескриптор сегмента, контролируя права до¬ступа (сегмент доступен с текущего уровня привилегий) и предел сегмента (смещение не превышает предел);
  3. МП добавляет смещение к базовому адресу сегмента и полу¬чает линейный адрес.
    Если страничная трансляция отключена, то сформированный линейный адрес считается физическим и выставляется на шину про¬цессора для выполнения цикла чтения или записи памяти.
Рис. 162. Схема преобразования логического адреса в линейный

Механизм сегментации обеспечивает превосходную защиту, но он не очень удобен для реализации виртуальной памяти (подкачки). В дескрипторе сегмента есть бит присутствия, по нему процессор опре¬деляет, находится ли данный сегмент в физической памяти или на внешнем запоминающем устройстве (на винчестере). В последнем случае генерируется исключение #11, обработчик которого может подгрузить сегмент в память. Неудобство заключается в том, что раз¬личные сегменты могут иметь различную длину. Этого можно избе¬жать, если механизм подкачки реализовывать на основе страничного преобразования. Особенностью этого преобразования является то, что процессор в этом случае оперирует с блоками физической памяти рав¬ной длины (4 Кбайт) — страницами. Страницы не имеют непосред¬ственного отношения к логической структуре программы. Кроме того, в МП подсемейства P6 страничная трансляция обеспечивает 36-бит¬ную физическую адресацию памяти (64 Гбайт). Страничное преобра¬зование действует только в защищенном режиме и включается уста¬новкой в 1 бита PG в регистре CR0.
В страничном преобразовании участвуют два типа структур: каталоги таблиц (Page Directory) и таблицы страниц (Page Table). Эти структуры состоят из 1024 32-битных элементов. Элементы содержат старшие 20 бит физического адреса адресуемых объектов. Элементы таблицы страниц (Page Table Entry — PTE) адресуют страницы, а эле¬менты каталога таблиц (Page Directory Entry — PDE) адресуют таблицы страниц. Старшие 20 бит физического адреса каталога таблиц хра¬нятся в регистре CR3 (Page Directory Base Register — PDBR) (это един¬ственный регистр процессора, который содержит физический адрес памяти). Все структуры выровнены по границе страницы.

Рис. 163. Стандартная 2-уровневая схема страничной трансляции

В процессе страничной трансляции адресов полученный ли¬нейный адрес разбивается на три части. Старшие десять бит (Directory) линейного адреса являются индексом элемента из каталога таблиц. По этому элементу определяется физический адрес таблицы страниц. Биты 21-12 (Table) линейного адреса выбирают элемент из этой таб¬лицы страниц. Выбранный элемент определяет физический адрес страницы. Младшие 12 бит (Offset) линейного адреса определяют смещение от начала страницы.
Страницы начинаются на границах 4 Кбайт областей памяти, поэтому младшие 12 бит адреса страницы всегда равны нулю. В ката¬логе таблиц элементы хранят физические адреса таблиц страниц. В таблице страниц элементы хранят физические адреса самих страниц.
В МП Pentium фирма Intel реализовала новую возможность — расширение размера страниц (Page Size Extension — PSE). PSE позво¬ляет использовать страницы размером 4 Мбайт и одноуровневый ме¬ханизм страничной трансляции.
В подсемействе P6 шина адреса была расширена до 36 бит. Со-ответственно, процессоры Pentium Pro, Pentium II, Pentium III и более поздние способны адресовать до 64 Гбайт физической памяти. Эта возможность называется расширением физического адреса (Physical Address Extension — PAE) и доступна только при использовании стра-ничной трансляции.
Использование PSE и PAE следующим образом влияет на страничное преобразование:
переключения задач обеспечивают многозадачность в защи¬щенном режиме. Задача — это «единица измерения» заданий для про¬цессора, которую процессор может выполнять, приостанавливать и осуществлять над ней диспетчеризацию. В качестве задачи может ис¬полняться прикладная программа, сервис операционной системы, ядро операционной системы, обработчик прерывания или исключения и т.п. В защищенном режиме архитектура IA-32 предоставляет механизм для сохранения состояния задачи и переключения с одной задачи на другую. Все команды процессора выполняются в контексте той или иной задачи. Даже самые простые системы должны определить как минимум одну задачу. Более сложные системы могут использовать средства управления задачами для поддержки многозадачных прило¬жений.
Среда задачи состоит из содержимого регистров МП и всего кода с данными в пространстве памяти. МП способен быстро пере¬ключаться из одной среды выполнения в другую, имитируя парал¬лельную работу нескольких задач. Для некоторых задач может эмули¬роваться управление памятью, как у МП 8086. Такое состояние задачи называется режимом виртуального 8086 (Virtual 8086 Mode). О пребы¬вании задачи в данном состоянии сигнализирует бит VM в регистре флагов. При этом задачи виртуального МП 8086 изолированы и защи¬щены, как от друг друга, так и от обычных задач защищенного ре¬жима.
Задачу составляют два компонента: адресное пространство за¬дачи и сегмент состояния задачи (Task State Segment — TSS).
В адресное пространство задачи входят доступные ей сегменты кода, данных и стека. Если используется механизм привилегий, то каждой задаче должны быть предоставлены сегменты стека для всех используемых уровней привилегий.
Сегмент состояния задачи хранит состояние регистров (кон¬текст) процессора:
• состояние сегментных регистров (селекторы сегментов, формирующие адресное пространство задачи);
• состояние регистров общего назначения;
• состояние регистра флагов (EFLAGS);
• указатель очередной команды (EIP);
• значение регистра CR3 (PDBR);
• значение регистра LDTR.
В многозадачных системах TSS предоставляет механизм для связывания (вложения) задач.
Каждая задача идентифицируется селектором соответствую¬щего ей TSS. Этот селектор загружается в регистр задачи (Task Register — TR) при переключении на задачу. В теневую часть регистра загружаются базовый адрес, предел и атрибуты TSS. Операционная система может предусматривать для каждой задачи свое линейное ад¬ресное пространство (свой набор страниц для страничного преобразо¬вания ), тогда при переключении задачи загружается и регистр CR3 (PDBR), хранящий адрес каталога таблиц для страничного преобразо¬вания.
В защищенном режиме процессор обеспечивает определенные механизмы защиты на основе сегментации и на основе страничного преобразования. Механизмы защиты позволяют ограничивать доступ к определенным сегментам или страницам при помощи уровней при¬вилегий (4 для сегментов и 2 для страниц). Например, критические код и данные операционной системы могут быть расположены на более привилегированном уровне, чем прикладные программы. Это позво¬лит ограничить и контролировать доступ прикладных программ к функциям и данным операционной системы.
Механизм защиты обеспечивает соответствие любой ссылки на ячейки памяти определенным условиям. Все проверки выполняются до начала цикла обращения к памяти. Нарушение любого условия приводит к генерации исключения. Проверки выполняются парал¬лельно с формированием адреса и поэтому не ухудшают производи¬тельность процессора. Все ссылки должны пройти следующие про¬верки:
• контроль предела;
• контроль типа;
• контроль уровня привилегий ;
• контроль выравнивания;
• ограничение адресного пространства;
• ограничение точек входа в процедуры (для шлюзов);
• ограничение набора команд (привилегированные инструкции).
В защищенном режиме нет способа отключить механизм за¬щиты. Даже если назначить всем сегментам и задачам нулевой (самый высший) уровень привилегий, все равно будут выполняться проверки контроля предела и типа. В то же время, механизм защиты на уровне страниц можно подавить, если назначить всем страницам уровень привилегий суперпользователя и обеспечить доступ на чтение и за¬пись.
Контроль пределов и типов сегментов обеспечивает целост¬ность сегментов кода и данных. Программа не имеет права обратиться к виртуальной памяти, выходящей за предел того или иного сегмента. Программа не имеет права обратиться к сегменту данных как к коду, и наоборот.
Архитектура защиты МП обеспечивает 4 иерархических уровня привилегий, что позволяет ограничить задаче доступ к отдель¬ным сегментам в зависимости от ее текущих привилегий. Привилегии — это свойство (обычно устанавливаемое при проектировании си¬стемы), которое определяет, какие компьютерные операции разреша¬ются в любой момент времени и какие доступы к памяти законны. Привилегии используются для обеспечения безопасности в компью¬терной системе. Привилегии реализуются путем присвоения значения от 0 до 3 ключевым объектам, которые опознаются процессором. Зна¬чение 0 соответствует наибольшим привилегиям, тогда как значение 3 — наименьшим.
Четыре уровня привилегий можно интерпретировать в виде колец защиты (рис. 164). Центр (уровень 0) предназначен для сегмен¬тов, содержащих наиболее критичные программы (обычно ядро опе¬рационной системы). Внешние кольца предназначены для сегментов с менее критичными программами или данными. Использование всех четырех уровней привилегий не является необходимым. Существую¬щие системы, спроектированные с меньшим количеством уровней, могут просто игнорировать другие допустимые уровни. UNIX и Windows, например, используют только два уровня привилегий: 0 (для ядра системы) и 3 (для всего остального), а OS/2 использует уровни 0 (для ядра системы), 2 (для процедур ввода-вывода) и 3 (для приклад¬ных программ).

Рис. 164. Интерпретация уровней привилегий в виде колец защиты

Оставить комментарий

avatar
  Подписаться  
Уведомление о