Мьютексы


Одним из вариантов семафорных механизмов для организации взаимного исключения являются мьютексы. Термин mutex произошел от англ. mutual exclusion semaphore, что переводится как семафор взаимного исключения. Мьютексы реализованы во многих ОС, их основное назначение – организация взаимного исключения для задач из одного и того же или разных процессов. 
Мьютексы – это простейшие двоичные семафоры, которые могут находиться в одном из двух состояний – отмеченном или неотмеченном (открыт или закрыт). Если какая-либо задача, принадлежащая любому процессу, становится владельцем мьютекса, то он переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным.
Организация последовательного доступа к ресурсам с использованием мьютексов становится проще, т.к. в каждый момент только одна задача может владеть этим объектом. Для того чтобы объект мьютекс стал доступен задачам, принадлежащим разным процессам, при создании ему необходимо присвоить имя, потом это имя нужно передать «по наследству» задачам, которые должны его использовать для взаимодействия. Для этого вводятся специальные системные вызовы, в которых указываются начальное значение мьютекса, его имя и, возможно, атрибуты защиты. Если начальное значение мьютекса равно true, то считается, что задача, создающая этот объект, будет им сразу владеть. Можно указать в качестве начального значения false – в этом случае мьютекс не принадлежит ни к одной из задач и только специальным обращением к нему можно изменить его состояние.

Загрузка...