Чи є реалізація апаратного блокування без тестування та встановлення чи заміни?


19

Замки, як правило, реалізуються за допомогою інструкцій на тестування та встановлення та заміни машинного рівня. Чи є інші реалізації, які не використовують їх?

Крім того, чи можна сказати, що всі апаратні рішення на вирішенні проблеми критичного розділу можна класифікувати лише на три, а саме: переривання відключення, тестування та встановлення та заміни?

Відповіді:


13

Так, ви можете реалізувати взаємне виключення лише з завантаженням пам'яті та зберіганням інструкцій. Існує давня традиція розробки послідовно простіших рішень цієї проблеми.

Найдавніша з мене відома версія під назвою "рішення Деккера" була введена в Dijkstra, Edsger W .; "Співпрацюючі послідовні процеси", у F. Genuys, ред., Мови програмування: Інститут розширеного вивчення НАТО , стор. 43-112, Academic Press, 1968 . З тих пір було десятки рішень. Я обговорю лише кілька більш помітних.

Лампорт, Леслі; "Нове рішення задачі програмування Дейкстри", Comm ACM 17 (8): 453-455, 1974 р. Вводить "алгоритм хлібопекарського виробництва" (адже він заснований на аналогії людей, що приймають номери, щоб визначити порядок, в якому вони будуть знаходитись) подається в пекарні). Однією з особливо помітних особливостей цього алгоритму є те, що він демонструє, що для вирішення проблеми взаємного виключення взагалі не потрібно атомної апаратності. Читання, що перекриває запис в одне місце, може повернути будь-яке значення, і алгоритм все ще працює. Лампорт дещо обговорює це в описі статті на своїй домашній сторінці .

Рішення Петерсона, Peterson, GL; "Міфи про проблему взаємного виключення", Інф. Зб. Лет. , 12 (3): 115-116, 1981 , розроблений спеціально для того, щоб його було легко зрозуміти та обґрунтувати . Нарешті, особливим фаворитом мого є Лампорт, Леслі; "Алгоритм швидкого взаємного виключення", ACM Trans. Склад. Сис. , 5 (1): 1-11, 1987. У цій роботі Лампорт намагався оптимізувати рішення проблеми взаємного виключення у (звичайному) випадку про те, що для критичного розділу мало міркувань. Це гарантує взаємне відчуження та безвихідність свободи, але не справедливості. Це (я вважаю) перший алгоритм взаємного виключення, що використовує лише звичайні зчитування та записи, які можуть синхронізувати N процесорів за O (1) час, коли немає суперечок. (Коли є суперечка, вона повертається на тест O (N).) Він дає неофіційну демонстрацію того, що найкраще, що ви можете зробити у випадку вільного розгляду, - це сім доступів до пам'яті. (І Dekker, і Peterson роблять це з 4, але вони можуть працювати лише з двома процесорами, коли ви розширите їхні алгоритми до N, вони повинні додати додатковий O (N) доступ.)

Мабуть, люди, які працюють над проблемою вирішення взаємного виключення, використовуючи лише пам'ять, що читає і пише, засмучуються чужими (відсутністю) розуміння проблеми та її рішень. Це частково демонструється назвою статті Петерсона ("Міфи про проблему взаємного виключення") і частково короткою заміткою, яку Лампорт опублікував у 1991 році: Лампорт, Леслі; "Проблема взаємного виключення вирішена", Comm ACM 34 (1): 110, 1991 , яку Лампорт дещо гірко описує на своїй домашній сторінці .

Отже, щоб відповісти на ваше друге запитання: Ні. Існує набагато більше трьох категорій рішень на рівні апаратних засобів для вирішення критичної проблеми (використання лише завантажень і магазинів - це одне, інші включають інструкції порівняння та заміни, пов’язані з завантаженням / магазином інструкції (використовуючи протокол узгодженості кешу для перевірки на атомність) та інструкції з добування та додавання. В іншому сенсі дійсно є лише одна категорія рішень: ті, що передбачають отримання купою асинхронних процесів для узгодження глобального порядку подій .

(Зауважте, що ця відповідь - це (обширна) редакція попередньої відповіді, яку я дав на зовсім інше запитання .)


Зрозуміло, що ll / sc можна, звичайно, поширити на загальну транзакційну пам'ять, яка охоплює весь критичний розділ, а не лише придбання блокування. Відмінність того, що забезпечує гарантія обладнання, також здається значним; Прогрес вперед іноді гарантується (тобто, один агент виграє гонку, щоб отримати замок в даний момент часу), але навіть слабкі поняття, пов'язані з справедливістю, здається, зазвичай караються програмним забезпеченням (дещо зрозуміло).
Пол А. Клейтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.