Составители:
полнительно для каждого потока счетчик команд, регистры, стек, ло-
кальную память, состояние выполнения.
• Счетчик команд – отслеживает порядок выполнения.
• Регистры – используются для хранения текущих переменных.
• Стек – содержит протокол выполнения процесса, где для каж-
дой вызванной, но еще не вернувшейся процедуры, отведен от-
дельный фрейм. Во фрейме находятся локальные переменные
процедуры и адрес возврата. Каждый поток может вызывать
различные процедуры и соответственно иметь различный про-
токол выполнения процесса.
• Локальная память – статическая память, выделяемая потоку для
локальных переменных.
• Состояние выполнения потока – одно из четырех основных со-
стояний (готовый к выполнению, выполняющийся, блокирован-
ный, завершающийся).
В многопоточном режиме процессы обычно запускаются с одним по-
током. Этот поток может создавать новые потоки, определив их ука-
затели команд и аргументы. Новые потоки создаются со своим собст-
венным контекстом регистров и стековым пространством, после чего
помещаются в очередь готовых к выполнению потоков. В случае не-
обходимости ожидания некоторого события поток блокируется (при
этом сохраняется содержимое его пользовательских регистров, счет-
чика команд и указателя стека). После этого процессор может перей-
ти к выполнению другого потока. После завершения потока его кон-
текст регистров и стеки удаляются.
Многопоточная модель процесса охватывает две категории по-
токов: потоки на уровне пользователя (user-level threads – ULT) и
потоки на уровне ядра (kernel – level threads – KLT) [3,5]. Потоки на
уровне пользователя управляются самим приложением. Обычно при-
ложение в начале своей работы состоит из одного потока, с которого
35
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »