
- •ЮУрГУ
- •Тема 2 Вычислительный процесс и его реализация
- •1. Принципы планирования
- •Процедура выбора очередного задания для загрузки в компьютер,
- •Параметры планирования
- •Вытесняющее и невытесняющее планирование
- •2. Алгоритмы планирования
- •First-Come, First-Served (FCFS)
- •Round Robin (RR)
- •Round Robin (RR)
- •Shortest-Job-First (SJF)
- •Вытесняющий алгоритм SJF
- •Вытесняющий алгоритм SJF
- •Гарантированное планирование
- •Приоритетное планирование
- •Приоритетное планирование
- •Многоуровневые очереди (Multilevel
- •Многоуровневые очереди с обратной связью (Multilevel Feedback
- •Многоуровневые очереди с обратной связью (Multilevel Feedback
- •3. Планирование потоков
- •Возможный вариант планирования потоков: на уровне пользователя с квантом времени в 50 мс
- •Пример многопоточного веб-сервера
- •4. Планирование потоков в Windows
- •Упрощенная диаграмма состояний потоков в ОС Windows
- •Приоритеты планирования
- •Приоритеты планирования
- •Величина кванта времени
- •Привязка к процессорам
- •Литература:

Возможный вариант планирования потоков: на уровне пользователя с квантом времени в 50 мс и потоками, работающими по 5 мс при работе ЦП в пределах этого кванта (а); на уровне ядра с теми же характеристиками (б)

Пример многопоточного веб-сервера
При реализации потоков на уровне пользователя система поддержки исполнения программ (планировщик потоков) владеет информацией о том, чем занимаются потоки, и при блокировке рабочего потока запустит диспетчер, чтобы тот запустил следующий рабочий поток.
При реализации потоков на уровне ядра такого не произойдет, т. к. ядро не знает, чем занимается каждый поток.
4. Планирование потоков в Windows

Упрощенная диаграмма состояний потоков в ОС Windows
В ОС Windows принадлежность потоков к процессу не учитывается, то есть единицей планирования является поток. Поток работает в течение кванта времени и не знает, когда он будет вытеснен.
Запуск процедуры планирования определяется следующими событиями:
1.Завершение потока.
2.Переход потока в состояние готовности.
3.Переход потока в состояние ожидания.
4.Выход потока из состояния ожидания в состояние готовности (может быть следствием прерывания).
5.Создание потока.
6.Деятельность текущего потока может иметь следствием вывод другого потока из состояния ожидания (при высоком приоритете может сразу
выполняться).
7.Изменение приоритета потока в результате вызова системного сервиса или самой Windows (поток может сразу же начать выполняться, если имеет высокий приоритет).
8.Изменение привязки (affinity) потока к процессору.
События 1-3 связаны с освобождением процессора, причем процедуры

Приоритеты планирования
Приоритеты потоков в ОС Windows
В Windows реализовано вытесняющее приоритетное планирование, когда каждому потоку присваивается определенное числовое значение – приоритет, в соответствии с которым ему выделяется процессор. Потоки с одинаковыми приоритетами планируются в соответствии с алгоритмом RR.
Слой абстрагирования приоритетов
Классы приоритетов для всех потоков конкретного процесса в ОС Windows
Относительные приоритеты потоков в ОС Windows

Приоритеты планирования
Формирование базового приоритета потока из класса приоритета процесса и относительного приоритета потока в ОС Windows (базовый приоритет выбирается из середины таблицы; при смене приоритета процесса меняются приоритеты его
потоков)
Динамическое повышение приоритета
1. После завершения операций ввода-вывода – зависит от устройства (рекомендованное значение для жесткого диска и CD – 1, для сети – 2, клавиатуры и мыши – 6, звуковой карты – 8). Тем самым поощряются интерактивные потоки и поддерживается занятость устройств ввода-вывода.
2.Решение проблемы голодания потоков, долго не получающих доступ к процессору (примерно 4 с). Система временно повышает их приоритет до 15 и дает им два кванта времени.
3.Пробуждение потока.
4.Получение потоком доступа к оконному вводу.
5.Решение проблемы инверсии приоритетов.
Величина кванта времени
Оптимальная величина кванта времени (доли секунды) должна обеспечивать обслуживание без переключения запроса пользователя, который занимает процессор ненадолго, после чего обычно генерирует запрос на ввод-вывод. В этом случае минимизируются расходы на диспетчеризацию и обеспечиваются приемлемые времена откликов.
По умолчанию начальная величина кванта времени в Windows Professional равна 2 интервалам таймера, в Windows Server - 12 для уменьшения переключения контекста. Изменение величины кванта времени можно сделать с помощью реестра (HKLM\SYSTEM\CurrenyControlSet\Control\PriorityControl\Win32PrioritySeparati on) Планирование в условиях
многопроцессорности
Осуществляется для симметричных мультипроцессорных систем (процессоры идентичны).
Используется общая очередь потоков в состоянии готовности, так как ведение отдельных очередей может иметь следствием неравномерную загрузку процессоров. Любой поток становится в очередь и планируется на любой доступный процессор.
В системе нет главного процессора, поэтому каждый процессор занимается самопланированием и сам выбирает поток из очереди готовности. Чтобы гарантировать, что два процессора не выберут один и тот же поток, для каждого процессора организуется эксклюзивный доступ к данной очереди за счет спин-блокировки диспетчера ядра.
Привязка к процессорам
У каждого потока есть маска привязки к процессорам (affinity mask), указывающая на каких процессорах можно выполнять данный поток. По умолчанию Windows использует нежесткую (soft affinity) привязку потоков к процессорам, т.е. некоторое преимущество имеет последний процессор, на котором выполнялся поток, чтобы повторно использовать данные из его кэша (родственное планирование). Потоки наследуют маску привязки процесса.
Кроме того, в блоке ядра потока хранится номер идеального процессора, т. е. предпочтительного для выполнения данного потока, который выбирается случайным образом при создании потока. Это значение увеличивается на 1 при создании нового потока, поэтому создаваемые потоки равномерно распределяются по набору доступных процессоров.
Готовые потоки подключаются к простаивающему процессору, если их несколько , выбирается идеальный, а затем последний, на котором выполнялся поток. Если все процессоры заняты, делается попытка вытеснения, если неудачно, то новый поток помещается в очередь с соответствующим уровнем приоритета.
В Windows реализовано двухуровневое планирование:
-на первом уровне потоки приписываются конкретным процессорам;
-на втором уровне каждым процессором осуществляется реальное
планирование с помощью приоритетов, а при равных приоритетов – с помощью алгоритма Round Robin.
Если какой-то процессор начинает простаивать, у загруженного процессора отбирается поток и отдается ему, при этом используется преимущество родственности кэша.
Переключение из пользовательского режима в режим ядра (и обратно) не
Литература:
1.Таненбаум Э. Современные операционные системы. 3-е изд. с. 181…203.
2.Столингс В. Операционные системы. 4-е изд. – M.: Издательский дом «Вильямс», 2002, с 457…508.
3.Основы операционных систем. Курс лекций. Учебное пособие / В. Е. Карпов, К. А. Коньков / под редакцией В. П. Иванникова. – М.: ИНТУИТ.РУ «Интернет-Университет Информационных Технологий», 2005, с. 51…74.
4.Устройство и функционирование ОС Windows. Практикум к курсу «Операционные системы»: учебное пособие/ К. А. Коньков. – М.: Интернет-Университет Информационных Технологий ; БИНОМ.
Лаборатория знаний, 2008, с. 64…73.