Особенности использования семафоров в мультипроцессорах

Для того чтобы во время выполнения операций , запретить доступ к семафору других процессов, в мультипроцессорах приходится с помощью специальной линии использовать блокировку шины, связывающую коммуникационную среду с памятью.

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

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


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



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