Распределенные автоматизированные системы
Лычёв А.В. © изд-во ВМИРЭ © 2007 год
49
3. Блокировка.
В свою очередь, эти три состояния детализируются в
двадцать одно состояние потока выполнения. Для связывания
данных, относящихся к потоку выполнения и хранящихся в ло-
кальной памяти потока, с самим потоком, используется уни-
кальный для каждого потока выполнения глобальный целочис-
ленный ключ процесса. Потоки выполнения создаются и уничто-
жаются динамически, их количество внутри распределенного
процесса может изменяться в значительных пределах. Заверше-
ние потока выполнения включает в себя останов всех процес-
сов потока и освобождение ресурсов, занимаемых потоком.
При каждом вызове ядра, исключении или аппаратном пре-
рывании, в результате которых управление передается микро-
ядру, работа активного потока выполнения приостанавливает-
ся. Микроядро, получив управление, осуществляет планирова-
ние потоков. Действие планирования происходит при изменении
состояния любого потока вне зависимости от того, в каком
распределенном процессе этот поток расположен. Планирование
потоков осуществляется сразу по всем распределенным процес-
сам. Как правило, выполнение приостановленного потока через
некоторое время возобновляется. При этом микроядро переклю-
чает ресурсы процессора с одного потока на другой, когда
активный поток:
1. Блокируется. Активный поток блокируется, если он
должен ожидать какого-либо события. Блокированный поток
удаляется из очереди готовности, после чего запускается по-
ток с наивысшим приоритетом, находящийся в очереди готовно-
сти. Когда блокированный поток разблокируется, он помещает-
ся в конец очереди готовности на соответствующий приоритет-
ный уровень;
2. Вытесняется. Активный поток вытесняется, когда по-
ток с более высоким приоритетом в результате снятия блоки-
ровки помещается в очередь готовности. Прерванный поток ос-
тается на соответствующем приоритетном уровне в начале оче-
реди готовности, а поток с более высоким приоритетом начи-
нает выполняться;
3. Отдает управление. Активный поток в соответствии со
своим алгоритмом самостоятельно освобождает процессор и по-
мещается в конец очереди готовности на данном уровне при-
оритета. После этого запускается поток с наивысшим приори-
тетом.
Всего в ОС РВ QNX поддерживается до 256 уровней при-
оритетов. Непривилегированные потоки имеют приоритеты от 1
до 63, причем с ростом номера уровень приоритета повышает-
ся. Привилегированные потоки имеют приоритеты от 64 до 255.
В ОС РВ QNX имеется специальный поток с нулевым приоритетом
по имени «idle» (idle - праздный, ленивый, бесполезный).