
- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
События.
Событием называется сообщение о некотором выполненном в системе действии. В ОС события используются для оповещения одного потока о том, что другой поток выполнил некоторое действие. Задача оповещения одного потока о действии, которое совершил другой поток, называется задачей условной синхронизации, или задачей оповещения.
В ОС Windows, событие описывается объектами ядра системы Events. Существует два типа событий:
события с ручным сбросом;
события с автоматическим сбросом.
Различие между ними состоит в том, что события с ручным сбросом можно перевести в несигнальное состояние только путем вызова функции ResetEvent (), а событие с автоматическим сбросом переходит в несигнальное состояние как при помощи ResetEvent, так и при помощи функции ожидания. При этом, если события с автоматическим сбросом ожидают несколько потоков, используя WaitForSingleObject, то из состояния ожидания освобождается только один из этих потоков.
События создаются путем вызова CreateEvent, которая имеет четыре параметра - pe1, pe2, pe3, pe4.
pe1 – атрибуты защиты;
pe2 – тип события;
pe3 – начальное состояние;
pe4 – имя события.
Чаще всего, первый параметр получает значение NULL. Если pe2 == true, то создается событие с ручным сбросом, в противном случае – с автоматическим. Если pe3==true, то начальное состояние события является сигнальным, а в противном случае – несигнальным. pe4 определяет имя события, которое позволяет обращаться к нему из потоков, выполняющихся в разных процессах. Событие может быть безымянным.
В случае удачного завершения, CreateEvent возвращает Handle, и NULL – в противном случае. Если событие с указанным в pe4 именем уже существует, то CreateEvent возвращает дескриптор существующего события, а GetLastError будет возвращать ERROR_ALREADY_EXISTS.
Для перевода любого события в сигнальное состояние используется функция SetEvent (Handle). При успешном завершении возвращается не ноль, и ноль – в противном случае.
Функция ResetEvent (Handle) используется для перевода любого события в несигнальное состояние. Возвращает аналогичные значения.
Для освобождения потоков, ожидающих сигнального состояния события с ручным сбросом используется функция PulseEvent (Handle). При вызове этой функции, все потоки, ждущие события с дескриптором Handle, выводятся из состояния ожидания, а само событие переходит в несигнальное состояние. Если эта функция вызывается для события с автоматическим сбросом, то из состояния ожидания выводится только один из ожидающих потоков. Если потоков, ожидающих сигнального состояния события нет, то состояние этого события остается несигнальным.
Доступ к уже существующему событию может быть открыт с помощью CreateEvent или OpenEvent. При использовании CreateEvent, значения второго и третьего её параметров игнорируются, поскольку они уже заданы другим потоком. Поток, в котором вызывается функция CreateEvent, получает полный доступ к событию с именем, заданным в четвертом параметре. Функция OpenEvent используется в том случае, когда заранее известно, что поток с заданным именем уже существует. Формат:
OpenEvent (po1, po2, po3);
po1 – определяет флаги доступа;;
po2 – режим наследования;
po3 – имя события.
Смысл второго и третьего параметров аналогичен этим параметрам в мьютексе.
po1 определяет тип доступа к событию, и может быть представлен логической комбинацией трех флагов.
Флаг a означает полный доступ – поток может выполнять над событием любые действия. Флаг b называется модификацией состояния. Он означает, что поток может использовать функции SetEvent и ResetEvent для изменения состояния события. Флаг c называется синхронизацией. Поток может использовать события в функциях ожидания.