Межпроцессное взаимодействие в OC WINDOWS Vista.
При работе системы происходит постоянный обмен информации между потоками.
Механизмы обмена:
1. Канал (именованные и неименованные);
2. Почтовые слоты (mail slots. Механизм почтовых слотов похож на механизм каналов. Отличие заключается в том, что с помощью почтовых слотов информация отсылается одновременно нескольких получателям. Доставка не гарантирована);
3. Сокеты (чаще всего используются для передачи информации по сети);
4. Совместное использование объектов.
Данные 4 механизма представляют собой взаимодействие в виде передачи информации.
Процессы также могут использовать различные виды и типы объектов для синхронизации.
С объектами синхронизации работают только потоки.
Объекты синхронизации:
· Семафоры;
· Мьютекс;
· Критическая область;
· События (события делятся на: события уведомления и события синхронизации).
Реализация процессов и потоков в OC WINDOWS Vista.
Процессы в ОС Vista являются контейнерами для ресурсов и потоков. Потоки это абстракция ядра для планирования процессов. Каждый поток имеет два стека: один стек в режиме ядра, второй – в режиме пользователя. Процессы и потоки представляют собой объекты. В OS Windows Vista cуществует структура job (задание). Данная структура была создана, чтобы группировать процесс.
При работе системы происходит постоянный обмен информации между потоками.
Механизмы обмена:
5. Канал (именованные и неименованные);
6. Почтовые слоты (mail slots. Механизм почтовых слотов похож на механизм каналов. Отличие заключается в том, что с помощью почтовых слотов информация отсылается одновременно нескольких получателям. Доставка не гарантирована);
7. Сокеты (чаще всего используются для передачи информации по сети);
8. Совместное использование объектов.
Данные 4 механизма представляют собой взаимодействие в виде передачи информации.
Процессы также могут использовать различные виды и типы объектов для синхронизации.
С объектами синхронизации работают только потоки.
Объекты синхронизации:
· Семафоры;
· Мьютекс;
· Критическая область;
· События (события делятся на: события уведомления и события синхронизации).
31. Планирование в OC WINDOWS Vista. Условия вызова планировщика.
1. Планирование происходит на основе потоков. После завершения работы поток входит в режим ядра, вызывает планировщик и после этого происходит переключение на другой поток. Поток вызывает планировщик в следующей ситуации:
1) Текущий, выполняющийся поток блокируется на семафоре мьютексе, семафоре, событии и т. д.;
2) Поток сигнализирует объект;
3) Истекает квант времени;
4) Завершается операция ввода/вывода;
5) Истекает время ожидания.
В первом случае поток работает в режиме ядра. Поток не может выполнять работу с процессором, а поэтому вызывает планировщик для следующего потока.
Во втором случае поток также находится в режиме ядра. При этом событии поток не блокируется, однако всё равно вызывается планировщик. Вызывается он потому что, возможно существует поток с более высоким приоритетом.
В третьем случае происходит прерывание в режиме ядра.
Четвертый случай подразумевает запуск потока после того как он дождался и завершил операцию ввода/вывода.
Планирование в OC WINDOWS Vista. Система приоритетов.
В системе Windows Vista используется приоритетный алгоритм планирования. Существуют два понятия: базовый приоритет и текущий приоритет. Базовый приоритет устанавливается по умолчанию при создании процесса/потока. Текущий приоритет изменяется динамически во время работы системы. В системе всего существует 32 уровня приоритетов (от 0 до 31). От 1 до 15 – пользовательские потоки. От 16 до 31 – системные потоки. Процесс с приоритетом «0» - это поток обнуления страниц.
Также существует понятие класс приоритетов и относительный приоритет.
Класс – задает приоритет для процесса и всех потоков, находящихся в нём. Допустимые значения:
Real-time
High
Above normal
Normal
Idle
Класс устанавливается для процесса, но влияет на приоритеты потоков.
Относительный приоритет. Допустимые значения:
Time critical
Highest
Above normal
Normal
Below normal
Lowest
Idle
Базовый алгоритм планированиям ОС Vista поддерживает массив с 32 элементами. Элементы массива соответствуют приоритетам от 0 до 31. Каждому элементу массива соответствует список процессов соответствующего приоритета. Планировщик просматривает этот массив, начиная с самого высокого приоритета и ищет не пустой список потоков. Как только будет найден данный список, выбирается первый в очереди поток и выполняется в течение одного кванта времени. Если выбранный поток не успел выполниться, то он ставится в конец очереди своего приоритета. То есть на каком-либо уровне приоритетов потоки планируются циклически. В дополнении к базовым алгоритмам планирования используются механизм динамического изменения текущего приоритета.
Планирование в OC WINDOWS Vista. Условия изменения приоритетов.
Условие повышения приоритета:
- в первом случае: поток завершил операцию ввода/вывода, и готов приступить к вычислениям. Величина повышения приоритета зависит от устройства, с которым работает данный поток.
- во втором случае: поток ждал изменение семафора, мьютекса, события и после данного события его приоритет повышается(на один или два уровня).
Условия понижения приоритета:
При повышении приоритета, его значение не всегда остается постоянным. Поток, получивший прирост текущего приоритета может использовать данную ситуацию в течение одного кванта времени. По истечении этого кванта времени приоритет снижается на единицу, вплоть до значения базового приоритета.