Эта статья имеет рейтинг C-класса по шкале оценки контента Википедии . Она представляет интерес для следующих WikiProjects : | ||||||||||||||||||||||||
|
The contents of the Immediate Consistency page were merged into Linearizability on 18 July 2013. For the contribution history and old versions of the redirected page, please see its history; for the discussion at that location, see its talk page. |
На странице в настоящее время указано:
Однако последнее является лишь частным случаем первого и его трудно определить строго. «Атомарность = линеаризуемость» имеет гораздо больше смысла даже в операционных системах. Я предлагаю объединить эти два понятия и перейти от «атомарность включает изоляцию» к «атомарность означает, что операция, по-видимому, вступает в силу мгновенно в какой-то момент», в интересах упрощения и ясности. Крис Перселл 09:30, 7 февраля 2006 (UTC)
Я отменил редактирование Ewlyahoocom , поскольку оно смешивает идеи базы данных об изоляции и атомарности, до такой степени, что статья теперь фактически неточна. Возможно, мы могли бы обсудить и уточнить изменения здесь, прежде чем снова выкладывать их в сеть? -- Крис Перселл 23:44, 10 апреля 2006 (UTC)
Я отменил вашу правку атомарности, потому что я не считаю, что она точно описывает преобладающее значение термина в базах данных: а именно, она, по-видимому, смешивает атомарность с изоляцией . Извините за резкость. Хотя я готов обсудить более конструктивный прогресс! -- Крис Перселл 23:50, 10 апреля 2006 (UTC)
Хорошо, теперь я думаю, что вы смешиваете атомарность в смысле базы данных с атомарностью в смысле параллельного алгоритма. Атомарность в смысле параллельного алгоритма на самом деле не имеет ничего общего с "операция либо выполняется полностью, либо не выполняется вообще": если бы это было правдой, это было бы частью последовательного определения операции, а не ее атомарности. Атомарность в смысле параллельного алгоритма означает линеаризуемость , не больше и не меньше.
Может быть, нам следует снова объединить различные страницы разрешения неоднозначности атомарности и использовать атомарную транзакцию и линеаризуемость в качестве страниц разрешения неоднозначности для баз данных и параллельных алгоритмов соответственно? -- Крис Перселл 07:56, 11 апреля 2006 (UTC)
Я пришел к мысли, что изоляция (база данных) равна атомарности (параллельные алгоритмы). Атомарность (база данных) — это свойство *последовательной* спецификации транзакции, а именно, что она либо будет успешной, либо потерпит неудачу; изоляция (база данных) определяет, как все будет работать при *параллелизме*. Напротив, атомарность (параллельные алгоритмы) означает "линеаризуемую изоляцию" (если хотите), и success-or-fail на самом деле не имеет подходящего места, поскольку из всех атомарных примитивов только load-linked/store-conditional может потерпеть неудачу.
Таким образом, наука о базах данных не делает педантичного различия; она определяет последовательное свойство «транзакции» и использует всеобъемлющий термин «атомарный», чтобы охватить его. Тот факт, что другие разделы компьютерной науки используют то же самое слово для обозначения исключительно свойств изоляции, не имеет значения.
Я не считаю, что атомарную транзакцию следует объединять с атомарной операцией , поскольку это совершенно разные вещи!
Я попробую переписать все так, как мне бы хотелось, а затем мы сможем встретиться здесь. -- Крис Перселл 12:40, 11 апреля 2006 (UTC)
Рад, что вам понравилось :)
Да, люди называют атомарную инструкцию Compare-and-swap линеаризуемой, во всей литературе по параллельным алгоритмам. Первоначальное определение игнорирует проблему барьеров памяти, но ее можно вернуть, правильно изменив базовую установку вызова-ответа Herlihy et al . Это определенно правильный термин.
Я думаю, что "низкоуровневые детали" на странице атомарных транзакций являются фальшивыми и должны быть удалены. Они являются пережитком предыдущей версии. Однако я не хотел вырезать их сразу, не посоветовавшись, так как они кажутся, по крайней мере, смутно связанными с заголовком страницы, в отличие от того, что я вырезал. Они больше подходят для страницы линеаризуемости , но в целом кажутся довольно сваленными в кучу и не поучительными (для меня). Что вы думаете? Удалить их? Переместить и переписать? -- Крис Перселл 23:03, 11 апреля 2006 (UTC)
Подожди, ты имеешь в виду, что ты закончил ? Когда я сказал "С нетерпением жду, что ты придумаешь", у меня было впечатление, что ты все еще работаешь над этими страницами. Посмотрим, правильно ли я понял:
Наконец, я хотел бы напомнить вам старую поговорку: «Если вы не можете объяснить это просто, вы не понимаете это достаточно хорошо». Вы уверены, что понимаете это достаточно хорошо? Ewlyahoocom 09:58, 12 апреля 2006 (UTC)
Нет, я не закончил. Но тебе придется мне помочь, поэтому я и остановился.
Если вы считаете, что нам следует переместить Атомарность в Атомарность (разрешение неоднозначности) и переместить и перенаправить Линеаризуемость в Атомарность , это может сработать. -- Крис Перселл 10:33, 12 апреля 2006 (UTC)
Я переписал страницу Линеаризуемости . Что вы думаете? -- Крис Перселл 11:45, 12 апреля 2006 (UTC)
Атомарность как концепция широко используется за пределами баз данных. Я не думаю, что окончание "ity" часто используется. Это вы имели в виду?
Мой план для названий страниц был таким, как я их изложил: атомарность — короткая страница устранения неоднозначности, линеаризуемость используется для свойства изоляции. Мне нравится Atomic transaction в качестве заголовка страницы базы данных, но нельзя отрицать, что «атомарность» — излюбленный термин. Тем не менее, становится неуклюжим использование «атомарности (базы данных)» или «атомарности (управление данными)»: вы могли бы также сказать «атомарность (транзакции)», и тогда вы по сути вернетесь к Atomic transaction . Атомарность была бы лучше всего.
В конечном счете, я не слишком беспокоюсь о том, как мы организуем страницы, пока содержание правильное. Мои благословения на любую альтернативу, которую вы предпочитаете. -- Крис Перселл 14:17, 13 апреля 2006 (UTC)
Я не понимаю, почему у нас так много проблем с общением. Знаете что? Делайте с этими страницами что хотите — мне уже все равно. Ewlyahoocom 06:48, 14 апреля 2006 (UTC)
--24.251.211.127 01:34, 28 июля 2006 (UTC)Это описание слишком абстрактно. Было бы уместно сохранить абстрактные детали, но должны быть примеры из реального мира и здесь, и в атомарности, а не в этом A vs. B. Я работаю разработчиком ПО уже десять лет, но я не обязательно нахожу эти вещи самоочевидными или полезными без чего-то, с чем можно связать абстрактные концепции.
Есть предложения? Мы просто хотим улучшить "A" и "B" более выразительными примерами? Например: "Основной поток (A) пытается заблокировать структуру данных о ходе выполнения, чтобы иметь возможность обновить GUI. Тем временем рабочий поток (B) также пытается заблокировать структуру, чтобы отметить свой последний ход выполнения". -- Крис Перселл 09:23, 29 января 2007 (UTC)
Я переписал страницу после того, как были сделаны эти комментарии. Надеюсь, я учел опасения. -- Крис Перселл ( обсуждение ) 16:07, 30 октября 2008 (UTC)
Многие страницы, ссылающиеся на эту статью о «линеаризуемости»[1], используют этот шаблон: [[Linearizability|atomic operations]]
.
Я нахожу это странным, поскольку есть статья об атомарных операциях , и в ней даже не упоминается «линеаризуемость» (за исключением не прокомментированного пункта в последнем разделе «См. также»).
Если «линеаризуемый» и «атомарная операция» действительно означают одно и то же (как следует из первого предложения статьи о линеаризуемости , а также из страницы разрешения неоднозначности атомарности ), разве не следует нам объединить эти две статьи?
Если они означают разные вещи, разве не должна статья об «атомарных операциях» сказать несколько слов об этом различии, и разве не должны другие статьи, которые действительно говорят о линеаризуемости, использовать ссылку [[linearizability]]
, а другие статьи, которые действительно говорят об атомарных операциях, использовать [[atomic operations]]
ссылку? -- 68.0.124.33 ( обсуждение ) 06:31, 3 декабря 2008 (UTC)
В то время, когда я делал эти ссылки, Atomic operation и Linearizibility были отмечены для слияния. Конечным результатом множества обсуждений стало то, что это действительно одно и то же, после чего пришел администратор и удалил запрос на слияние по причине «отсутствия консенсуса». (По-видимому, он не потрудился прочитать обсуждение.) После того, как это произошло во второй раз, я сдался. Пожалуйста, откройте снова и завершите запрос на слияние. -- Крис Перселл ( обсуждение ) 12:08, 21 декабря 2008 (UTC)
Термин «атомарный» более четко определяет концептуально-легкую форму этой концепции. Возможно, нам следует переименовать страницу в Атомарные операции ? -- Yoderj ( обсуждение ) 17:22, 6 марта 2015 (UTC)
пожалуйста, прокомментируйте фразу «гонка атомности» — Предыдущий неподписанный комментарий добавлен Skysong263 ( обсуждение • вклад ) 18:45, 21 декабря 2009 (UTC)
Он смешивает все концепции и противоречит сам себе. Атомарность означает различные вещи на разных уровнях абстракции, начиная с упоминания баз данных в отношении этого, крайне предосудительно... -- 81.84.152.156 (обсуждение) 21:16, 29 июня 2010 (UTC)
На странице говорится: «Библиотека Apache Portable Runtime предоставляет выбор макросов функций атомарных операций для использования в программном обеспечении, лицензированном по MPL [Mozilla Public License?]. Это действительно так? Программное обеспечение Apache Foundation (почти?) всегда находится под лицензией Apache. И производные работы не обязаны использовать эту лицензию. Superm401 - Talk 04:28, 10 января 2009 (UTC)
Пример описывает ситуацию, но не объясняет, какое отношение она имеет к атомарным операциям. -- Snaxe/fow ( обсуждение ) 02:10, 10 апреля 2009 (UTC).
Я рекомендую перенаправить заглушку атомарного действия на эту страницу. Атомарные действия попадают под зонтик линеаризуемости; заглушка в основном описывает некоторые возможные детали реализации, которые могут или не могут улучшить эту страницу. -- Крис Перселл ( обсуждение ) 09:35, 5 августа 2010 (UTC)
Что делает здесь раздел о строгой согласованности? Может ли кто-нибудь расширить связь линеаризуемости со строгой согласованностью? Или, может быть, мы можем удалить этот бесполезный раздел -- Jetru ( обсуждение ) 12:40, 8 апреля 2011 (UTC)
Это кажется в значительной степени избыточным и даже неверным (например, «самый строгий»). Предлагаю удалить это. Возможно, автор запутался в отношении «строгой сериализуемости», которая действительно является одной из самых строгих моделей (линеаризуемость плюс сериализуемость), но все еще не «самая строгая» (а именно потому, что «самый строгий» не является четко определенным; можно упорядочить силу моделей, но нет одной самой сильной модели — например, «никогда не возвращать 0», «никогда не возвращать 1» и т. д.). Питер Бейлис ( обсуждение ) 00:12, 19 июня 2013 (UTC)
В разделе «Примитивные атомарные инструкции» есть утверждение, которое гласит: «Атомарный обмен, используемый в некоторых мэйнфреймах Burroughs, также называемый XCHG».
Оператор XCHG выдается компилятором для реализации своих потребностей в манипулировании стеком, но недоступен пользователю напрямую. [Он был в ESPOL, но ESPOL больше не используется.] Он вызывает обмен двумя значениями вершины стека; то есть он влияет только на стек.
Инструкция, доступная пользователю, которая используется для реализации блокировок, — это RDLK (ReadLock). Она обменивает значение вершины стека с адресом в памяти в одном непрерываемом swell foop.
EXCH и RDLK оба атомарны, то есть не прерываемы. Другие «атомарные» операторы — RSUP и RSDN, которые манипулируют тремя верхними ячейками стека. Но только RDLK доступен программистам (в Algol и NEWP) и, таким образом, используется с реализацией блокировок.
Таким образом, я считаю, что строка должна быть такой: «Атомарный своп, используемый в некоторых мэйнфреймах Burroughs, также называемый RDLK». Или это должно быть указано по-другому, но включать использование RDLK, а не EXCH. — Предыдущий неподписанный комментарий добавлен 70.181.124.207 (обсуждение) 06:54, 28 февраля 2013 (UTC)
Я предлагаю объединить Непосредственную согласованность с Линеаризуемостью (или, в качестве альтернативы, Непосредственную согласованность следует удалить). Это те же модели, и первая является нестандартной терминологией для второй. Pbailis ( talk ) 23:49, 18 июня 2013 (UTC)
Линеаризуемость должна быть отдельной статьей от атомарности. Текущее определение атомарности просто неверно. Я не буду комментировать определение линеаризуемости, потому что не могу его понять, но, вероятно, ее следует определить в терминах общих порядков.
Вот что я предлагаю для атомарности:
В информатике операция (скажем, X) является атомарной по отношению к какой-либо другой операции (скажем, Y), если Y кажется, что X либо происходит сразу, либо не происходит вообще. Атомарность позволяет корректности Y зависеть от истинности свойства, даже если свойство может не быть истинным во время выполнения X, поскольку Y не может наблюдать период, в течение которого выполняется X. Если X является атомарной по отношению к Y, то достаточно (для корректности Y), чтобы свойство было истинным до и после выполнения X.
Обратите внимание, что операция может быть атомарной относительно некоторых операций и не атомарной относительно других. Обратите внимание также, что атомарность не обязательно симметрична: X может быть атомарной относительно Y, без того, чтобы Y была атомарной относительно X.
Атомарность похожа на взаимное исключение — взаимное исключение предотвращает перекрытие вхождений X и Y — но эти две концепции не идентичны. Атомарность может быть реализована посредством взаимного исключения или другими методами, такими как оптимистическое управление параллелизмом . Взаимное исключение часто реализуется с использованием атомарности, но не требует ее. [1]
Тим Леонард (обсуждение) 19:05, 29 июня 2015 (UTC)
Согласен. Понятия не имею, почему атомарность перенаправляет к линеаризуемости, и думаю, что она заслуживает собственной страницы 98.116.215.118 ( обсуждение ) 01:43, 27 февраля 2019 (UTC)
В основном определение, указанное на странице, недействительно.
Во втором случае он очень плохо смешивает формальный и неформальный стили. Не только во вступительной части, но и в самом определении.
> Если операция op1 завершается (получает ответ) до начала (вызова) op2, то op1 предшествует op2 в σ.
Это не часть определения. И оно в основном ничего не утверждает, если правильно понимать. Оно сформулировано очень неясно.
> если ответ предшествовал вызову в исходной истории, он все равно должен предшествовать ему в последовательном переупорядочении.
Можно подумать, что оно утверждает порядок в σ, но все равно не очень понятно. Оба условия, и исходное, и переформулированное, едва ли отражают то, о чем оно утверждает. Что достаточно, а что необходимо. Также оно утверждает свое из [2], но в любом случае определение в [2] другое.
> Для каждой завершенной операции в σ операция возвращает тот же результат выполнения, который бы вернула операция, если бы каждая операция была завершена одна за другой в порядке σ.
Он частично формальный, и в основном переписан в этой форме для какой-то неизвестной цели. Оригинальное определение гораздо яснее.
Там также есть примеры, которые можно выделить в самостоятельный раздел.
Я предлагаю:
John.koepi ( обсуждение ) 21:21, 1 июля 2017 (UTC)
DB и DC имеют некоторые из одинаковых слов, которые означают совершенно разные вещи. «Атомарный» — простой пример. Смешивание сериализуемости с линеаризуемостью проблематично, потому что первый — термин DB, а второй — DC. Операционные модели несовместимы. DB говорит о транзакциях, состоящих из нескольких операций, где DC фокусируется на одной операции и на том, что происходит в присутствии других операций. http://www.bailis.org/blog/linearizability-versus-serializability/ содержит действительно хорошее описание проблемы.
Bcr33d (обсуждение) 15:34, 23 сентября 2019 (UTC)
Я не понимаю, почему "атомарная" реализация Counter линеаризуема. Я понимаю, что отдельные операции чтения/записи линеаризуемы (потому что каждый регистр записывается только одним процессом). Операция "инкремента" имеет точку линеаризации на шаге 3 (запись в Ri), но не похоже, что операция Read должна иметь точку линеаризации. В частности, рассмотрим следующее выполнение с 3 процессами, начинающееся с момента времени 0 (со всеми регистрами, инициализированными в 0):
- Процесс 1 увеличивается в моменты времени 1 и 2 (т.е. это точки линеаризации)
- Обработать 2 приращения в момент времени 3
- Процесс 3 вызывает инкремент в момент времени 1: он считывает 1 из R1 в момент времени 1,5 и считывает 1 из R2 в момент времени 3,5. Таким образом, он возвращает значение 2.
Похоже, что это выполнение невозможно линеаризировать, поскольку не существует момента времени, в который R1 имеет значение 1, а R2 имеет значение 1. Такая точка линеаризации должна быть после 1 и до 2 (потому что процесс 3 считывает 1 из R1), но после момента времени 3 (потому что процесс 3 считывает 1 из R2).
Я что-то упустил?
Will.rosenbaum (обсуждение) 16:55, 23 марта 2021 (UTC)