
- •2. Процессы и потоки
- •2.5.3.4 Почтовые ящики
- •2 Процессы и потоки
- •2.1 Понятия процесс и поток
- •2.2 Создание процессов и потоков
- •2.3 Состояния потоков
- •2.4 Планирование процессов
- •2.4.1 Основные понятия планирования процессов
- •2.4.2 Алгоритмы планирования, основанные на квантовании
- •2.4.3 Алгоритмы планирования, основанные на приоритетах
- •2.4.4 Планирование в операционных системах пакетной обработки информации
- •2.4.4.1 Критерий эффективности
- •2.4.4.2 Алгоритмы планирования
- •2.4.5 Планирование в интерактивных системах (системах разделения времени)
- •2.4.5.1 Критерий эффективности
- •2.4.5.2 Алгоритмы планирования
- •2.4.6 Планирование в системах реального времени
- •2.5 Взаимодействие между процессами
- •2.5.1 Виды взаимодействий между процессами
- •2.5.2 Синхронизация процессов и потоков
- •2.5.2.1 Состязания (гонки)
- •2.5.2.1.1 Ситуация состязания
- •2.5.2.1.2 Критические секции
- •2.5.3.1.3 Способы реализации взаимного исключения
- •2.5.2.2.1 Ситуация взаимной блокировки
- •2.5.2.2.2 Моделирование взаимоблокировок
- •2.5.2.3 Методы борьбы с тупиками
- •2.5.2.3.2 Обнаружение и устранение взаимоблокировок
- •2.5.2.3.4 Обнаружение взаимоблокировки при наличии нескольких ресурсов каждого типа
- •2.5.2.3.5 Выход из взаимоблокировки
- •2.5.2.4 Динамическое избежание взаимоблокировок
- •2.5.2.4.1 Траектории ресурсов
- •2.5.2.4.2 Безопасные и небезопасные состояния
- •2.5.2.4.3 Алгоритм банкира для одного вида ресурсов
- •2.5.2.4.4 Алгоритм банкира для несколько видов ресурсов
- •2.5.2.6.1 Мьютексы
- •2.5.2.6.2 Системные семафоры
- •2.5.2.6.3 События
- •2.5.2.6.4 Ждущие таймеры
- •2.5.2.6.5 Сигналы
- •2.5.2.6.3 Мониторы Хоара
- •2.5.3.1 Конвейеры (каналы)
- •2.5.3.2 Очереди сообщений
- •2.5.3.3 Разделяемая память
- •2.5.3.4 Почтовые ящики
- •2.5.3.5 Сокеты
2.4.5.2 Алгоритмы планирования
1. Циклическое планирование
Самый простой алгоритм планирования и часто используемый.
Каждому процессу предоставляется квант времени процессора. Когда квант заканчивается, процесс переводится планировщиком в конец очереди, а управление передается следующему за ним процессу.
Преимущества:
- простота;
- справедливость (как в очереди покупателей, каждому только по килограмму).
Недостатки:
- слишком малый квант времени (по сравнению с временем переключения контекстов) приводит к частому переключению процессов и снижению производительности;
- слишком большой квант может привести к увеличению времени ответа на интерактивный запрос.
2. Приоритетное планирование
Каждому процессу присваивается приоритет, и управление передается процессу с самым высоким приоритетом.
Обычно процессы объединяют по приоритетам в группы, и применяют приоритетное планирование среди групп, а внутри группы используют циклическое планирование.
Схема назначения приоритета потокам в Windows 2000
Как показано на Рис. 2.6, в Windows 2000 предусмотрено 32 уровня приоритета — от 0 до 31. Эти значения группируются так:
- шестнадцать уровней реального времени (16-31);
- пятнадцать варьируемых (динамических) уровней (1-15);
- один системный уровень (0), зарезервированный для потока обнуления страниц .
- 16 уровней реального времени.
Рис. 2.6 Уровни приоритета потоков
Уровни приоритета потока назначаются с учетом двух разных точек зрения -Win32APIи ядраWindows2000. Win32 API сначала упорядочивает процессы по классам приоритета, назначенным при их создании (реального времени, высокий, выше обычного, обычный, ниже обычного и простаивающий), а затем — по относительному приоритету индивидуальных потоков в рамках этих процессов (критичный по времени, наивысший, выше обычного, обычный, ниже обычного, наименьший и простаивающий). Приоритет каждого потока в Win32 API устанавливается, исходя из класса приоритета его процесса и относительного приоритета самого потока. Связь между приоритетами Win32 и внутренними приоритетами Windows 2000 в числовой форме показана на Рис. 2.8.
Приоритеты, показанные на Рис. 2.8, являются базовыми для потоков. Сначала потоки наследуют базовый приоритет процесса. Обычно базовый приоритет процесса по умолчанию равен значению из середины диапазонов приоритетов процессов (24, 13, 10, 8, б или 4).Если у процесса только одно значение приоритета (базовое), то у каждого потока их два: текущее и базовое. Текущий приоритет для потоков в динамическом диапазоне (1-15) может быть выше базового, что обычно и бывает. Windows 2000 никогда не изменяет приоритеты потоков в диапазоне реального времени (16-31), поэтому у таких потоков базовый приоритет идентичен текущему.
Рис. 2.7 Приоритеты в ядре и Win32
Гарантированное планирование
В системе с n-процессами, каждому процессу будет предоставлено 1/nвремени процессора.
ОС отслеживает распределение процессорного времени между потоками с момента создания каждого потока и вычисляет отношение времени, предоставленного потоку, к времени, на которое он имеет право (время с момента создания, деленное на n). Если это отношение меньше 1, то поток недополучил процессорное время. На выполнение запускается поток с наименьшим значением этого отношения.
4. Лотерейное планирование
Процессам раздаются "лотерейные билеты", дающие право доступа к ресурсам. Планировщик может выбрать любой билет случайным образом. Чем больше билетов у процесса, тем больше у него шансов захватить ресурс. Взаимодействующие процессы могут при необходимости обмениваться билетами.
5. Справедливое планирование
Процессорное время распределяется среди процессов, а не потоков. Это справедливо, если у одного процесса несколько потоков, а у другого один.