ТОП 10:

Работа микропроцессоров Intel x86 в защищенном режиме. Общая схема формирования исполнительного адреса. Кольца защиты. Организация дескрипторных таблиц. Типы дескрипторов.



 

1) Концепция незащищенного режима:

Offset – смещение, дает возможность создавать сегменты размером до 64кб, однако сам сегмент памяти, выделенный под задачу может иметь размер < 64кб. В таком случае при передаче задаче физического адреса сегмента (адреса его базы в оперативной памяти) задача может установить значение смещения (offset) больше размера сегмента в следствие чего повредить данные другой программы. Так появилась потребность создавать режим защищенного адреса.

 

Концепция защищенного адреса:

1. Наличие механизмов защиты памяти.

2. Разделение прав пользователей.

 

Появилась потребность ограничения доступа прикладных программ к физическому адресу сегмента. Доступ к данным по физическому адресу стал доступен лишь высокопривилегированным программам как ядро ОС.

 

Кольца защиты: В работе микропроцессора х86 существует 4 кольца защиты:

#0 – работа ядра ОС

#1 – системные сервисы

#2 – подсистема ввода-вывода

#3 – пользовательские программы

 

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

 


Таблица Трансляции Адресов (ТТА):

 

Таблица трансляции адресов представляет из себя таблицу с базой известной операционной системе. Задача, желающая обратиться к памяти имеет селектор ТТА, соответствующий отведенному ей сегменту, по этому селектору из ТТА получается дескриптор, в котором записана база сегмента, далее из базы+смещения составляется адрес элемента оперативной памяти. Сама ТТА недоступна прикладным программам. Из 3х типов регистров: общих (доступных всем), скрытых (не доступных никому) и ограниченно видимых (доступных лишь некоторым программам, в частности ядру ОС) регистр базы ТТА является ограниченно видимым.

 

Для каждой задачи создается Локальная дескрипторная таблица (LDT), которая определяет адресное прстарнство всей программы, её база хранится в Глобальной дескрипторной таблице (GDT), которая же существует в одном экземпляре. Также существует Дескрипторная таблица прерываний, в которой хранятся адреса всех программ реагирования на прерывание.

 

2) Кольца защиты (поподробнее):

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

3)Дескрипторные таблицы — служебные структуры данных, содержащие дескрипторы сегментов.

Дескриптор (англ. Descriptor) — дословно описатель, описательный элемент.

Дескриптор сегмента — служебная структура в памяти, которая определяет сегмент. Длина дескриптора равна восьми байтам.

В архитектуре x86 есть три вида дескрипторных таблиц:

  • Глобальная дескрипторная таблица (англ. Global Descriptor Table, GDT);
  • Локальная дескрипторная таблица (англ. Local Descriptor Table, LDT);
  • Таблица векторов прерываний (англ. Interrupt Descriptor Table, IDT);

1. Таблица GDT (Global Descriptor Table) — глобальная дескрипторная табли­ца. Это основная общесистемная таблица, к которой допускается обращение со стороны программ, обладающих достаточными привилегиями. Располо­жение таблицы GDT в памяти произвольно; оно локализуется с помощью специального регистра gdtr (48 бит). В таблице GDT могут содержаться следующие типы дескрипторов:

· дескрипторы сегментов кодов программ;

· дескрипторы сегментов данных программ;

· дескрипторы стековых сегментов программ;

· дескрипторы TSS (Task Segment Status) — специальные системные объек­ты, называемые сегментами состояния задач;

· дескрипторы для таблиц LDT;

· шлюзы вызова;

· шлюзы задач.

2. Таблица LDT (Local Descriptor Table) — локальная дескрипторная таблица. Для любой задачи в системе может быть создана своя дескрипторная табли­ца подобно общесистемной GDT. Для связи между таблицами GDT и LDT в таблице GDT создается дескриптор, описывающий область памяти, в которой находится LDT. Рас­положение таблицы LDT в памяти также произвольно и локализуется с по­мощью специального регистра ldtr (16 бит). В таблице LDT могут содержаться сле­дующие типы дескрипторов:

· дескрипторы сегментов кодов программ;

· дескрипторы сегментов данных программ;

· дескрипторы стековых сегментов программ;

· шлюзы вызова;

· шлюзы задач.

3. Таблица IDT (Interrupt Descriptor Table) — дескрипторная таблица преры­ваний. Данная таблица также является общесистемной и содержит дескрип­торы специального типа, которые определяют местоположение программ обработчиков всех видов прерываний. В качестве аналогии можно привести таблицу векторов прерываний реального режима. Расположение таблицы IDT в памяти произвольно и локализуется с помощью специального регис­тра idtr (48 бит). Элементы данной таблицы называются шлюзами. Отметим, что эти шлюзы бывают трех типов:

· шлюзы задач;

· шлюзы прерываний;

· шлюзы ловушек.

Каждая из дескрипторных таблиц может содержать до 8192 (213) дескрипторов

 

Билет №11

Работа с подпрограммами в режиме защищенного адреса микропроцессоров Intel x86. Межкольцевые вызовы подпрограмм. Ограничение прав доступа. Управление задачами. Сегмент состояния задачи. Вложенные задачи.

 

Дескриптор содержит байт доступа, который определяет тип сегмента: сегмент кода, сегмент данных или сегмент LDT.

1)

Байт доступа:

Р – бит присутствия (1 если сегмент загружен в память)

А – бит обращения (1 если было обращение к дескриптору)

DPL – уровень привелегий сегмента (номер кольца)

R – разрешение чтения (1 если чтение разрешено. Выполнение/запись разрешены всегда)

W – разрешение записи (1 если запись разрешена. Чтение/Выполнение запрещены всегда)

ED – признак расширения вниз

 

Вызов подпрограмм:

 

При вызове подпрограммы в стек вызываемой процедуры записываются SS, SP – регистры вызывающей процедуры, затем передаваемые параметры, затем адрес возврата – CS и IP регистры.

 

 

При возврате:

1 Извлекается адрес возврата

2 Удаляются параметры из обоих стеков

3 Обратное переключение стеков

4 Сброс регистров DS и ES если они адресуют более привелегированный сегмент

 

Для предотвращения троянских вызовов создана шлюзовая система вызова процедур

Концепция:

1 Согласование прав доступа

2 Копирование аргументов межу стеками

 

Программа с большим номером кольца может вызвать программу из кольца с меньшим номером, но при этом уровень привелегий вызванной программы будет установлен равным уровню привелегий вызывающей программы. Программа с меньшим номером кольца не может вызывать программы с большим номером. Программы одного кольца могут вызывать друг друга.

 

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

Селектор TSS (task state segment) определяет дескриптор TSS в таблице GDT. Последний бит в байте доступа – бит B (busy) – бит занятости, определяет выполняется ли данная задача (1 если задача активная), и служит для предотвращения выполнения одной задачи одновременно 2мя процессорами при работе в многопроцессорном режиме. При вызове задачи бит занятости устанавливается равным 1, при выходе – 0. Вызов задачи с битом занятости равным 1 запрещен.

 

 

2) Дополнение.

1.Межкольцевые вызовы задач

Используется функция jmp <селектор шлюза TSS>

Одной из команд обычно используемых для передачи управле ния является команда JMP. Эта команда выполняет безусловный переход, т.е. обеспечивает передачу управления при любых обстоятельствах.

Селектор TSS - указывает на дескриптор TSS задачи, на которую произойдёт переключение, если передача управления будет происходить через этот шлюз.

2. Сегмент состояния задачи (TSS) является одной из нескольких структур данных, определяемых системной архитектурой 80386. Фактически, эти структуры данных являются "типами данных" для операционных систем. Сегмент TSS соответствует тому, что в некоторых операционных системах называется блоком управления задачей; в этом сегменте хранится состояние виртуального процесора задачи. Каждая задача 80386

представлена своим TSS, который делится на две части. Младшая

часть TSS определена системной архитектурой 80386 и содержит

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

 

Билет №12

Задача управления ресурсами ЭВМ. Операционные системы и их классификация. Иерархия подсистем. Системные вызовы. Примеры реализации системных функций.

 

*часть аварикуса*

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

 

У линукса 319 системных вызовов, у фряхи – 330.

 

Дополнение:

Операцио́нная систе́ма, сокр. ОС (англ. operating system) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это определение применимо к большинству современных ОС общего назначения.

В логической структуре типичной вычислительной системы ОС занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами — с одной стороны — и прикладными программами с другой.

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

В большинстве вычислительных систем ОС являются основной, наиболее важной (а иногда единственной) частью системного ПО. С 1990-х наиболее распространёнными операционными системами являются ОС семейства Microsoft Windows и системы класса UNIX (особенно Linux).

 

Функции операционных систем

Основные функции:

  • Выполнение по запросу программ тех достаточно элементарных (низкоуровневых) действий, которые являются общими для большинства программ и часто встречаются почти во всех программах (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).
  • Загрузка программ в оперативную память и их выполнение.
  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
  • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).
  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.
  • Обеспечение пользовательского интерфейса.
  • Сетевые операции, поддержка стека сетевых протоколов.

Дополнительные функции:

  • Параллельное или псевдопараллельное выполнение задач (многозадачность).
  • Эффективное распределение ресурсов вычислительной системы между процессами.
  • Разграничение доступа различных процессов к ресурсам.
  • Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам.
  • Взаимодействие между процессами: обмен данными, взаимная синхронизация.
  • Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.
  • Многопользовательский режим работы и разграничение прав доступа (см. аутентификация, авторизация).

 

Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.

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

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

 

Билет №13







Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.204.176.125 (0.012 с.)