Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 9 стр.

UptoLike

Составители: 

9
свободный поток ожидает присоединения к другому потоку, который
становится его родительским потоком (JOIN).
Диаграмма на рис. 1.3 иллюстрирует возможные условия блокировки
потоков. Важно помнить о том, что когда поток блокирован, то независимо
от причины блокировки он не потребляет ресурсы процессора. Наоборот,
единственным состоянием, в котором поток потребляет ресурсы процессо-
ра, является состояние выполнения (RUNNING).
При порождении потока по умолчанию устанавливается логическая
связь нового потока с родительским. При наличии этой связи родительский
поток «отслеживает» дочерний поток и фиксирует момент его завершения,
получая от него «посмертную квитанцию» – код завершения. Если же роди-
тельский поток завершается, то завершаются и все дочерние потоки. Суще-
ствует также возможность создать свободный поток, не обремененный ка-
кими-либо связями с родительским потоком.
1.4. Диспетчеризация потоков
Диспетчеризацияэто процедура переключения процессора между
потоками, «готовыми к исполнению». При переключении потоков контекст
потока сохраняется в его системной области. Решение о переключении
принимается ядром всякий раз, когда изменяется состояние исполняемого
потока, при этом не имеет значения, какому процессу он принадлежит. При-
чинами изменения состояния потока могут быть:
блокировка потока;
изменение приоритета потока;
собственное «желание» потока освободить процессор.
Среди потоков, готовых к исполнению, всегда исполняется тот поток,
который имеет наибольший приоритет. Если все потоки, готовые к исполне-
0
5
63
A B C
G Z
F
E
Idle
Ready
query
Blocked
Active
Priority
10
Рис. 1.4