Функциональность потоков

Потоки, подобно процессам, характеризуются состоянием выполнения и могут быть синхронизированы друг с другом. Основными состояниями потоков являются:

– состояние выполнения;

– состояние готовности;

– состояние блокировки.

С изменением состояния потоков связаны следующие действия:

1) Порождение.

Во время создания нового процесса, вместе с ним создаётся и поток этого процесса. В рамках одного и того же процесса поток может породить другой поток, определив его указатель команд и аргумент. Новый поток создаётся со своим собственным контекстом регистров и стековым пространством, после чего он помещается в очередь готовых к выполнению потоков.

2) Блокирование.

Если потоку нужно подождать, пока не наступит некоторое событие, то он блокируется. При этом сохраняется содержимое его пользовательских регистров, счётчик команд, указатель стека. После этого процессор может перейти к выполнению другого потока.

3) Разблокирование.

Когда наступает событие, которое ожидал блокированный поток, тогда этот поток переходит в состояние готовности.

4) Выполнение.

Идет выполнение потока.

5) Завершение.

После завершения контексты регистров и стек потока удаляется.

6) Синхронизация потоков.

Так как все потоки используют одно и тоже адресное пространство и другие ресурсы, действия различных потоков надо синхронизировать, чтобы они не мешали друг другу и не повредили совместно используемые данные. При синхронизации потоков используются те же методы, что и при синхронизации процессов. Это значит, что решаются задачи потребитель-производитель, чтение-запись и другие.

Взаимодействие процессов

Если двум или более процессам необходимо взаимодействовать друг с другом, то они должны быть связаны, то есть иметь средства для обмена информацией. Предполагается, что процессы связаны слабо. Под этим подразумевается, что кроме достаточно редких моментов явной связи эти процессы рассматриваются как совершенно независимые друг от друга. В частности, не допускаются какие-либо предположения об относительных скоростях различных процессов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: