
- •Самарская государственная академия путей сообщения
- •Организация вычислительных процессов в эвм и системах Арбитраж, планирование и диспетчеризация
- •Самара 2005
- •Рецензенты: к.Т.Н., доцент н.А. Локтев (нпц «Информационные и транспортные системы»);
- •1.Мультипроцессорный и мультипрограммный
- •3.Основы организации планирования
- •4.Планирование вычислительных процессов
- •6.Практические и лабораторные работы
- •1.Мультипроцессорный и мультипрограммный способы организации вычислительных процессов
- •1.1. Мультипроцессорные системы и арбитраж
- •1.2. Мультипрограммные системы
- •1.3. Гиперпотоковая организация вычислений
- •2.Процессы и потоки в вычислительных системах
- •2.1. Определение процессов, потоков и ресурсов вс
- •2.2. Состояния потоков
- •3. Основы организации планирования и диспетчеризации процессов и потоков
- •3.1. Принципы планирования процессов и потоков
- •3.2. Классификация алгоритмов планирования (вытесняющие и невытесняющие, бесприоритетные и приоритетные алгоритмы)
- •3.3. Линейные алгоритмы планирования
- •3.4.Алгоритмы планирования, основанные на квантовании
- •3.5.Алгоритмы планирования, основанные на приоритетах
- •3.6. Смешанные алгоритмы планирования
- •4. Планирование вычислительных процессов
- •4.1. Принципы планирования в системах реального времени
- •4.2.Планирование с предельными сроками
- •4.3.Частотно-монотонное планирование
- •5.Планирование в windows 2000
- •5.1. Уровни приоритетов потоков в Windows 2000
- •5.2. Особенности алгоритмов планирования в Windows 2000
- •5.3.Учет квантов и управление их величиной
- •5.4.Динамическое повышение приоритета
- •5.5.Планирование потоков в симметричных мультипроцессорных системах
- •6. Практические и лабораторные работы по планированию процессов и потоков
- •6.1. Изучение диспетчера задач и системного монитора
- •6.2. Мониторинг использования ресурсов вычислительной системы
- •Запустите системный монитор.
- •Добавьте на график различные счетчики объекта «Память» и понаблюдайте за их изменением в процессе работы вычислительной системы.
- •6.3. Учет квантов и управление их величиной
- •6.4. Изучение изменения состояния потоков при планировании
- •6.5. Изучение динамического изменения приоритета потока активного процесса
- •6.6.Изучение динамического повышения приоритета gui-потоков
- •6.7. Изучение динамического повышения приоритетов при нехватке процессорного времени
- •Библиографический список Основная литература
3.2. Классификация алгоритмов планирования (вытесняющие и невытесняющие, бесприоритетные и приоритетные алгоритмы)
С самых общих позиций все множество алгоритмов планирования можно разделить на два класса: вытесняющие и невытесняющие алгоритмы планирования /1,7,8,10/.
Невытесняющие (non-preemptive) алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению поток.
Вытесняющие (preemptive) алгоритмы – это такие способы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого потока принимается ОС, а не активной задачей.
Основным различием между вытесняющими и невытесняющими алгоритмами является степень централизации механизма планирования потоков. При вытесняющем мультипрограммировании функции планирования потоков целиком сосредоточены в операционной системе и программист разрабатывает свое приложение, не заботясь о том, что оно будет выполняться одновременно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активного потока, запоминает его контекст, выбирает из очереди готовых потоков следующий, запускает новый поток на выполнение, загружая его контекст.
При невытесняющем мультипрограммировании механизм планирования распределен между ОС и прикладными программами. Прикладная программа, получив управление от ОС, сама определяет момент завершения очередного цикла своего выполнения и только затем передает управление ОС с помощью какого-либо системного вызова. ОС формирует очереди потоков и выбирает в соответствии с некоторым правилом (например с учетом приоритетов) следующий поток на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков приложений.
Для пользователей это означает, что управление системой теряется на произвольный период времени, который определяется приложением (а не пользователем). Если приложение тратит слишком много времени на выполнение какой-либо работы, например на форматирование диска, пользователь не может переключиться с этой задачи на другую задачу, допустим на текстовый редактор, в то время как форматирование продолжалось бы в фоновом режиме.
Поэтому разработчики приложений для операционной среды с невытесняющей многозадачностью вынуждены, возлагая на себя часть функций планировщика, создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Например, программа форматирования может отформатировать одну дорожку дискеты и вернуть управление системе. После выполнения других задач система возвратит управление программе форматирования, чтобы та отформатировала следующую дорожку. Подобный метод разделения времени между задачами работает, но он существенно затрудняет разработку программ и предъявляет повышенные требования к квалификации программиста. Программист должен обеспечить «дружественное» отношение своей программы к другим выполняемым одновременно с ней программам. Для этого в программе должны быть предусмотрены частые передачи управления ОС. Крайним проявлением «недружественности» приложения является его зависание, которое приводит к общему краху системы. В системах с вытесняющей многозадачностью такие ситуации, как правило, исключены, так как центральный планирующий механизм имеет возможность снять зависшую задачу с выполнения.
Однако распределение функций планирования потоков между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложения самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент возвращения управления, то при этом исключаются нерациональные прерывания программ в «неудобные» для них моменты времени. Кроме того, легко решаются проблемы совместного использования данных: задача во время каждого цикла выполнения использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит данные. Существенным преимуществом невытесняющего планирования является более высокая скорость переключения с потока на поток.
В большинстве современных ОС, например Windows 2000/XP, используются вытесняющие алгоритмы планирования/11/.
Далее среди множества алгоритмов планирования выделяются два больших класса – бесприоритетные и приоритетные алгоритмы (рис.3.1) /7,8,12/.
При бесприоритетном планировании выбор процессов или потоков производится в соответствии с некоторым заранее установленным порядком без учета их относительной важности и времени обслуживания.
При реализации приоритетных дисциплин обслуживания отдельным процессам и потокам предоставляется преимущественное право перейти в состояние выполнения в соответствии с установленными для них приоритетами. Приоритеты могут быть фиксированными (постоянными) и динамическими (изменяемыми в ходе вычислительного процесса), что, конечно, требует дополнительных ресурсов ВС на вычисление приоритетов и усложняет ОС.
Р
ассмотрим
кратко некоторые наиболее часто
используемые алгоритмы планирования.