Линеаризуемость

Линеаризуемость

Линеаризу́емость (англ. linearizability) в многопоточном программировании — это свойство программы, при котором результат любого параллельного выполнения процедур (операций) эквивалентен некоторому последовательному выполнению. В этом случае для пользователя, вызывающего операции линеаризуемой программы, эффект выполнения каждой операции мгновенен.

Как показано в статье [1] линеаризуемость является локальным и неблокируемым свойством. Локальность означает, что если доказана линеаризуемость операций для нескольких программ в отдельности (или для операций работающих с разными объектами одной программы), то программы вместе (операции вместе) также будут линеаризуемы. В линеаризуемой программе запущенные операции не требуют для своего завершения запуска других операций. Это свойство неблокируемости. Кроме того, линеаризуемость упрощает доказательство свойств программ, которые используют линеаризуемые операции, так как поведение линеаризуемой программы сводится к последовательным выполнениям.

Свойство линеаризуемости во многом сходно с такими свойствами как сериализуемость (англ. serializability), атомарность, последовательная согласованность (англ. sequential consistency). В отличие от них, линеаризуемость предполагает наличие спецификации, тогда как эти свойства накладывают ограничения только на саму программу. В некоторых источниках термин атомарность используется как синоним линеаризуемости, в других же означает самолинеаризуемость.

Часто под неформальным понятием потоковой безопасности (англ. thread-safety) понимают именно линеаризуемость.

Понятие линеаризуемости впервые появилось в статье Херлихи (Herlihy) и Винг (Wing) 1987 года[источник не указан 935 дней] как модель консистентности для систем с объектной организацией общей памяти. В отличие от всех остальных систем, здесь программы не могут напрямую использовать общие переменные, а только через специальные функции-методы (операции). Для этих систем линеаризуемость совпадает со строгой консистентностью.

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

См. также

Примечания

Ссылки

  • M. Herlihy и J. Wing, «Axioms for Concurrent Objects», Труды 14-го ACM SIGACT-SIGPLAN симпозиума по Принципам языков программирования (Январь 1987), стр. 13-26 [1].
  • M. Herlihy, «A methodology for implementing highly concurrent data structures», Труды ACM SIGPLAN симпозиума по Принципам и практике параллельного программирования, 1990, стр. 197—206 [2].
  • M. Herlihy и J. Wing «Linearizability: a correctness condition for concurrent objects», Труды ACM по Языкам программирования и системам, 1990, стр. 463—492 [3].



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Линеаризуемость" в других словарях:

  • Атомарность — (в программировании)  свойство непрерывности операции. Атомарная операция выполняется полностью (или происходит отказ в выполнении), без прерываний. Атомарность имеет особое значение в многопроцессорных компьютерах (и многозадачных… …   Википедия

  • Thread-safety — Потоковая безопасность (англ. thread safety) это концепция программирования, применимая к многопоточным программам. Код потоково безопасный, если он функционирует корректно при использовании из нескольких потоков одновременно. В частности,… …   Википедия

  • Модель консистентности — В распределенной системе, такой как распределенная общая память или распределенном хранилище, таком как база данных, файловая система, web caching или optimistic replication существуют разнообразные модели консистентности данных. Модель… …   Википедия

  • Потоковая безопасность — (англ. thread safety) это концепция программирования, применимая к многопоточным программам. Код потоково безопасный, если он функционирует корректно при использовании из нескольких потоков одновременно. В частности, он должен обеспечивать… …   Википедия

  • Атомарные операции — Атомарные операции  операции, выполняющиеся как единое целое либо не выполняющиеся вовсе. Атомарность операций имеет особое значение в многопроцессорных компьютерах (и многозадачных операционных системах), так как доступ к неразделяемым… …   Википедия

  • Атомарная операция — Атомарные операции  операции, выполняющиеся как единое целое либо не выполняющиеся вовсе. Атомарность операций имеет особое значение в многопроцессорных компьютерах (и многозадачных операционных системах), так как доступ к неразделяемым… …   Википедия

  • Линейность по параметрам — Линейность по параметрам  свойство эконометрических моделей, позволяющее рассматривать их с эконометрической точки зрения (с точки зрения оценки параметров) как линейные модели. Содержание 1 Определение 2 Линеаризация 3 …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»