
- •Управление процессами и потоками в мультипрограммных ос. Общие сведения о процессах и потоках в ос Windows. Понятие объекта ядра. Типы объектов ядра.
- •Описатель, командная строка, и переменные окружения процесса.
- •Создание процессов.
- •Завершение процесса.
- •Общие сведения о потоках. Создание потоков.
- •Выполнение потоков.
- •Завершение потоков.
- •Планирование потоков. Приостановка и возобновление процессов и потоков.
- •Приоритеты потоков. Классы приоритетов процессов и относительные приоритеты потоков.
- •Синхронизация процессов и потоков в мультипрограммных ос. Независимые и взаимодействующие процессы. Понятие критических ресурсов и критических секций.
- •Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
- •Синхронизация с помощью критических секций.
- •Мьютексы.
- •События.
- •Семафоры.
- •Передача и обмен данными между процессами. Способы передачи данных и типы связей между процессами.
- •Средства передачи и обмена данными между процессами в ос Windows.
- •Обмен данными с помощью буфера обмена данными Clipboard.
- •Обмен данными по технологии dde.
- •Обмен данными по технологии ole. Понятие документно-ориентированной среды.
- •Принципы технологии ole.
- •Особенности ole 2.0
- •Обмен данными через разделяемые файлы.
- •Обмен данными через файлы, проецируемые в память. Создание файлов, проецируемых в память.
- •Обмен данными через проекцию файлов в память.
- •Обмен данными через страничный файл.
- •Обмен данными через программные каналы.
- •Средства организации анонимных и именованных каналов в Windows.
- •Концепция почтовых ящиков.
- •Создание почтовых ящиков.
- •Соединение клиентов с почтовым ящиком.
- •Обмен данными через почтовый ящик.
- •Закрытие почтового ящика.
- •Получение информации о почтовом ящике.
- •Обмен данными с помощью очередей сообщений.
- •Подсистема управления памятью. Функции подсистемы управления памятью.
- •Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство.
- •Способ построения вап процессов.
- •Способы распределения памяти на уровне управления процессами. Односвязное непрерывное распределение памяти.
- •Распределение памяти фиксированными разделами.
- •Распределение памяти динамическими и перемещаемыми разделами.
- •Виртуализация оперативной памяти. Свопинг и виртуальная память.
- •Страничное распределение памяти.
- •Преобразование адресов страниц прямым отображением.
- •Преобразование адресов страниц ассоциативным отображением.
- •Преобразование адресов страниц комбинированным ассоциативно-прямым отображением.
- •Совместное использование программ и данных в системах со страничной организацией памяти. Выбор размера страниц.
- •Сегментное распределение памяти.
- •Управление доступом в системах с сегментной организацией памяти.
- •Сегментно-страничное распределение памяти.
- •Реализация режима виртуальной памяти. Стратегии замещения страниц.
- •Стратегия замещения случайной страницы.
- •Стратегия замещения по принципу fifo.
- •Замещение страницы, которая использовалась наименее часто (lfu).
- •Замещение страницы, которая не использовалась в последнее время (nur).
- •Концепция локального и рабочего множества программ в системах с виртуальной памятью.
- •Уровни привилегий и защита по привилегиям.
- •Кеширование данных в памяти эвм. Иерархия устройств памяти. Понятие и принцип действия кэш-памяти.
- •Способы отображения основной памяти на кэш.
- •Двухуровневое кэширование.
- •Кеширование в процессорах моделей Pentium.
- •Структура линейного виртуального адресного пространства процесса в ос Windows.
- •Раздел 4 используется для хранения совместно используемых всеми процессами данных. Сюда же загружаются все системные .Dll модули, поэтому же доступны любому пользовательскому процессу.
- •Управление устройствами. Основные понятия и концепции организации.
Синхронизация процессов и потоков в ос Windows. Объекты синхронизации и функции ожидания.
В ОС Windows, синхронизация процессов и потоков осуществляется с помощью специальных объектов, называемых объектами синхронизации. Часть из них является объектами ядра системы. Они могут находиться в одном из двух состояний:
сигнальное (включенное) состояние;
несигнальное (выключенное) состояние.
В целом, все объекты синхронизации могут быть разбиты на три класса.
К первому относят те объекты, которые существуют только для решения задач синхронизации взаимодействующих потоков:
mutex;
event;
semaphore.
Ко второму классу объектов синхронизации относится так называемый ожидающий таймер, который переходит в сигнальное состояние по истечении заданного интервала времени.
К третьему классу относятся объекты, которые переходят в сигнальное состояние по завершении своей работы:
job;
process;
thread.
Для синхронизации параллельных потоков наиболее часто используются объекты первого типа, к которым добавляется несистемный объект, называемый объектом критической секции.
Windows для целей синхронизации потоков, помимо объектов синхронизации, использует специальные системные функции, называемые функциями ожидания. Это функции, параметрами которых являются объекты синхронизации. Функции ожидания обычно используются для блокировки, то есть приостановки выполнения потоков при доступе к критическим ресурсам.
Блокировка потока выполняется следующим образом:
Если дескриптор объекта синхронизации является параметром функции ожидания, а сам объект синхронизации находится в несигнальном состоянии, то поток, в котором вызывается функция ожидания, блокируется до перехода объекта синхронизации в сигнальное состояние. Блокирование означает, что доступ к критическому ресурсу временно запрещается, например, вследствие того, что ресурс предоставлен в данный момент другому потоку. Когда объект синхронизации переходит в сигнальное состояние, то это означает, что доступ к ресурсу разрешается, и поток, вызвавший функцию ожидания, может продолжить свое выполнение.
В Windows широко используются две функции ожидания:
WaitForSingleObject ();
WaitForMultipleObjects ().
Первая функция используется для ожидания перехода в сигнальное состояние только одного объекта синхронизации. Эта функция имеет следующий обобщенный формат:
WaitForSingleObject (PS1, PS2);
PS1 – дескриптор объекта синхронизации, PS2 – интервал ожидания в миллисекундах. Данная функция выполняется следующим образом:
В течение интервала PS2 она ожидает перехода объекта синхронизации, дескриптор которого задается параметром PS1, в сигнальное состояние. Если PS2 == 0, то функция только проверяет состояние объекта синхронизации. Если PS2 == INFINITE, то функция ждет перехода объекта синхронизации в сигнальное состояние бесконечно долго.
В случае успешного завершения, данная функция может возвратить одно из трех значений:
объект перешел в сигнальное состояние. Это означает, что объект синхронизации перешел в сигнальное состояние, или уже находился в нем;
«забытый» мьютекс. Означает, что объектом синхронизации являлся мьютекс, который не был освобожден завершившимся потоком. В этом случае, он принудительно освобождается ОС и переходит в сигнальное состояние;
время ожидания истекло. Смысл в том, что закончился период PS2.
В случае неудачного завершения возвращается константа WAIT_FAILED.
Вторая функция служит для ожидания перехода в сигнальное состояние нескольких объектов синхронизации, либо одного из нескольких объектов.
WaitForMultipleObjects (PM1, PM2, PM3, PM4);
Первый параметр – количество объектов синхронизации; второй – массив дескрипторов объектов; третий – режим ожидания; четвертый – интервал ожидания в миллисекундах.
Если PM3 == true, то функция в течение интервала времени, равного PM4, ждет освобождения всех объектов синхронизации, дескрипторы которых заданы в PM2, перейдут в сигнальное состояние.
Если PM3 == false, то функция в течение PM4 ждет освобождения любого из объектов синхронизации. Если PM4 == 0, то функция только проверяет состояние объектов синхронизации.
Если PM4 == INFINITE, то функция ожидает перехода объектов синхронизации в сигнальное состояние бесконечно долго.
Количество объектов синхронизации, которые могут использоваться в данной функции не должно превышать некоторого максимального значения, задаваемого в ОС, и объекты синхронизации не должны повторяться.