25   Потоки. Понятие. Планирование и диспетчеризация потоков.

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

 

Hosted by uCoz