- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
Уровни привилегий и защита по привилегиям.
В ОС, использующих страничную или сегментно-страничную систему, для решения проблемы защиты данных могут использоваться средства двух видов:
Средства программного характера, с помощью которых защита реализуется путем размещения программ и данных по непересекающимся участкам линейного ВАП с помощью таблиц дескрипторов сегментов, а также с помощью индивидуальных для каждой программы таблиц страничного преобразования, что исключает перекрытие этих программ в физической памяти.
Средства аппаратного уровня, которые образуются за счет использования системных структур данных. Они соответствуют способу защиты, который называется защитой по привилегиям.
Каждому программному сегменту назначается определенный уровень защиты (уровень привилегий), код которого указывается в специальном поле дескриптора сегмента. Это поле имеет название DPL – Descriptor Pivilege Level. Кроме того, уровень привилегий указывается и во всех дескрипторах прерываний, или шлюзах. Уровень, хранящийся в дескрипторе, назначается автоматически всем объектам, входящим в данных сектор. В ОС Windows предусмотрено всего четыре таких уровня – 00, 01, 10, 11. Если сегменту команд назначается уровень с определенным кодом, то все процедуры получают тот же уровень защиты. Аналогично, все данные, входящие в сегмент данных, имеют тот уровень защиты, который указан в поле DPL дескриптора сегмента данных.
Уровень привилегий используемого в данный момент сегмента команд называется текущим уровнем привилегий – Current Privilege Level. Он определяется полем DPL селектора сегмента команд, который загружается в регистр CS процессора.
Система защиты по привилегиям основана на сравнении уровня CPL текущего процесса со значениями поля DPL тех сегментов, к которым обращается программа. Если содержимое полей одинаково, то обращение к памяти считается корректным и разрешается, в противном случае возникает прерывание по защите памяти. Защита построена так, что чем больше значение уровня, тем меньшими привилегиями обладает сегмент с этим уровнем. При описании системы защиты, уровни с большими привилегиями называют внутренними, а с меньшими – внешними. Поэтому их представляют в виде колец защиты.
На уровне 0 – ядро. На уровне 3 – все прикладные и некоторые менее важные системные. Уровни 1 и 2 не используются.
Данные из сегмента с некоторым уровнем привилегий могут быть получены программой того же или более внутреннего уровня.
Процедура или функция из сегмента с некоторым уровнем привилегий может быть вызвана программой только того же уровня, или более внешнего. При этом, вызов должен осуществляться не непосредственно, а через специальный дескриптор – шлюз вызова. Этот дескриптор аналогичен дескриптору исключений – в нем имеется адресная информация вызываемой процедуры или функции.
Каждый уровень привилегий имеет свой собственный стек, поэтому при переключении на другой уровень исходный стек сохраняется.
Все команды для защиты памяти и работы с памятью являются системными, и могут использоваться только в программах уровня 0. Это исключает вмешательство прикладных программ в работу системных.
Из перечисленных правил вытекает, что в ОС Windows системные и прикладные программы разделены друг от друга по разным уровням привелегий. Прикладные программы не могут разрушить системные поля данных, которые находятся в сегментах внутренних уровней. Вместе с тем, вызов системных функций из прикладных программ возможен, но только для тех из них, для которых предусмотрены шлюзы вызова.
В поле DPL шлюзов вызова указывается уровень внешнего кольца, то есть уровень прикладной программы. Если же в шлюзе вызова некоторой процедуры указывается уровень 0, то такую процедуру может вызвать функция только того же уровня 0.
