На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

2
Ожидается:
16 Июня 2024

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

27.03.2019

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

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

Можно выделить основные проблемы, связанные с некоторыми реализациями спин-блокировок: нарушение условия справедливости (нет гарантии, что потоки получают доступ к критической секции в порядке запросов на вход) или низкая масштабируемость (падение производительности при увеличении количества потоков, взаимодействующих с критической секцией). Наличие таких проблем в многопроцессорных системах подтверждается уже проведенными исследованиями.

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

Подробное описание дается в статье «Сравнительный анализ реализаций спин-блокировок», авторы: Тараканов Д.С., Косяков М.С. (Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, Санкт-Петербург).