25
Потоки. Понятие. Планирование и диспетчеризация потоков.
Поток - независимая последовательность
вычислительных операций, содержащихся в процессе. Для процесса ОС распределяет
все ресурсы (гл. память). Но процесс - это единица - только участок памяти.
Чтобы процесс делал действие надо в нем создать поток (хотя бы один). С
процессами и потоками надо осуществить планирование и диспетчеризацию потоков. Планирование-определение
момента времени, при котором следует прекратить текущий поток, и какому потоку передать
действие. Критерии: максимальное время для каждого потока, приоритетность
задачи, статическое планирование - жесткий переход от потока к потоку (напр.
для ОС реал. времени). Диспетчеризация
- переключение потоков с 1-го на др., т.е. сначала надо спланировать, что и
куда переключать, а потом собственно переключение, следовательно, 1.сохранение
контекста выполняемого потока, 2.загрузка контекста или потока, который выбран
планированием, 3.запуск нового, выбранного потока на выполнение. Возможные
состояния потоков: 1.выполнение-активное состояние, т.е. поток обладает
всеми нужными ресурсами и он выполняется процессором. 2.ожидание-пассивное
состояние, т.е. поток заблокирован по внутренним причинам(например
не может получить ресурсы, которые надо). 3.готовность-пассивное состояние,
поток заблокирован по внешним причинам, т.е. все ресурсы есть, но недоступен
процессор. Вытесняющие и не вытесняющие алгоритмы планирования. Не
вытесняющий - активный поток выполняется, пока он сам не отдает управление ОС.
Вытесняющий -решение о переключении потока принимает
ОС, а не задача. При вытесняющем планировании должен быть некоторый планировщик
заданий, который распределяет работу между приложениями.
+ - можно одновременно выполнять несколько задач по
различным планированиям. Не вытесняющий + - каждая задача решается быстрее(в отдельности без пакета), процессорное время принадлежит
одной задаче. В зависимости от задачи
каждый раз выбирают различное планирование. Варианты планирования: 1.на основе квантования -каждому потоку дается непрерывный отрезок процессорного
времени - квант. Смена потока
происходит: если поток завершился раньше кванта; произошла ошибка; поток
перешел в ожидание; исчерпан квант времени. Кванты могут быть различны: если
очень короткий, то поток будет долго в ожидании(суммарно),
если слишком длинный, то поток выполняется намного в результате 1-го кванта,
следовательно, алгоритм вырождается в последующую обработку потоков, как для
однопрограммного режима. В процессе выполнения задачи кванты могут быть
фиксированы, а могут и меняться, следовательно, вначале выделяется большой
квант для каждого потока, а потом уменьшается, поэтому получат преимущество
короткие задачи. Либо возможен обратный вариант - от меньших квантов к большим, тогда уменьшается время на переключение между
длительными потоками. Потоки могут использовать выделенные кванты не полностью,
тогда планировщик создаст 2 очереди: 1 из потоков, которые исчерпали свои
кванты и 2 потоки, которые не исчерпали свои кванты. Тогда при переключении
потоков сначала смотрит 2-ю очередь, а потом 1-ю. Т.е. при алгоритме
квантования не нужна предварительная информация о решаемых задачах, т.е. просто
приступает к решению задачи без приоритетов по очереди. 2. На основе приоритетов -каждый
поток есть 200 приоритетов. Чем больше приоритет, тем меньше поток ожидания и
тем больше он исполняет процессорное время. Приоритет потока связан с
приоритетом процесса, т.е. сначала определяется приоритет для процесса. Для
процесса ОС при выделении ресурсов по информации о процессе, которая дается
пользователем, определяет базовый уровень приоритета. А потом для всех потоков
процессора - диапазон приоритетов, который не пересекается с диапазоном потоков
др. процессов. При прерывании потока следующий на выполнение поток определяется
по приоритету. Существуют относительный и абсолютный приоритет. Относительный -
активный поток выполняется до завершения ошибки или ожидания, т.е. квант
времени исполняется полностью. Абсолютный - может быть смена
потока на поток с высшим приоритетом вне зависимости от кванта. 3. Смешанный алгоритм - квантование
+ приоритеты. Величина кванта и выбор потока определяется его приоритетом.
Потоки с высшим приоритетом могут вытеснять активный поток. Вытесненный поток
помещается в отдельную очередь. 4. Для
системы реального времени - для этих систем делают тестирование всех
возможных ситуаций. Существуют жесткие и мягкие системы. Жесткие
- нарушение выделенного времени не допустимо. Мягкие - возможны вариации по
времени, хотя они и нежелательны, но не запрещены.