Перейти до вмісту

Ф'ютекс

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Futex)

Ф'ютекс (англ. futex, скорочення від англ. fast userspace mutex) — у програмуванні спосіб реалізації семафорів і м'ютексів POSIX у Linux. Вперше введені в ядро з версії 2.5.7 (development); вироблена стабільна семантика з 2.5.40; включаються в стабільні версії серії 2.6.x (stable).

Розроблено Уберті Франке (Hubertus Franke) (з дослідницького центру IBM імені Томаса Ватсона), співробітниками технологічного центру IBM з Linux Меттью Кирквудом (Matthew Kirkwood) і Рості Расселом, а також розробником в компанії Red Hat Інго Молнаром (Ingo Molnar).

Ф'ютекс являє собою вирівняне ціле в загальній пам'яті (для декількох процесорів). Це ціле може бути збільшене або зменшене на одиницю за одну асемблерну інструкцію. Процеси, «зав'язані» на цей ф'ютекс, чекають, коли це значення стане позитивним. Всі операції з ф'ютексами практично повністю проводяться в просторі користувача, відповідні функції ядра задіюються лише в обмеженому наборі спірних випадків. Це дозволяє підвищити ефективність використання синхронізуючих примітивів, оскільки більшість операцій не використовують арбітраж, а значить і уникнути використання відносно дорогих системних викликів (англ. system calls).

Подібним чином оптимізовані об'єкти CRITICAL_SECTION у Win32 API, а також FAST_MUTEX в ядрі Windows.[1]

Виноски

[ред. | ред. код]

Посилання

[ред. | ред. код]