stringtranslate.com

Отказоустойчивость

Отказоустойчивость — это способность системы поддерживать надлежащую работу, несмотря на сбои или неисправности в одном или нескольких ее компонентах. Эта способность имеет важное значение для систем высокой доступности , критически важных для выполнения задач или даже жизненно важных систем .

Отказоустойчивость конкретно относится к способности системы обрабатывать сбои без какой-либо деградации или простоя. В случае ошибки конечные пользователи остаются в неведении относительно каких-либо проблем. И наоборот, система, которая испытывает ошибки с некоторым прерыванием обслуживания или постепенным снижением производительности, называется «устойчивой». При устойчивости система адаптируется к ошибке, поддерживая обслуживание, но признавая определенное влияние на производительность.

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

История

Первым известным отказоустойчивым компьютером был SAPO , построенный в 1951 году в Чехословакии Антонином Свободой . [1] : 155  Его базовая конструкция представляла собой магнитные барабаны , соединенные через реле, с методом голосования для обнаружения ошибок памяти ( тройная модульная избыточность ). Несколько других машин были разработаны в этом направлении, в основном для военного использования. В конце концов, они разделились на три отдельные категории:

  1. Машины, которые могли бы работать долгое время без какого-либо обслуживания, например, те, которые используются на космических зондах и спутниках НАСА ;
  2. Компьютеры, которые были очень надежны, но требовали постоянного контроля, например, те, которые использовались для контроля и управления атомными электростанциями или экспериментами на суперколлайдере ; и
  3. Компьютеры с большим объемом автономной работы, которые будут интенсивно использоваться, например, многие суперкомпьютеры, используемые страховыми компаниями для мониторинга вероятностей .

Большая часть разработок в области так называемых вычислений LLNM (Long Life, No Maintenance) была выполнена NASA в 1960-х годах [2] в рамках подготовки к проекту Apollo и другим исследовательским аспектам. Первая машина NASA отправилась в космическую обсерваторию , а вторая попытка, компьютер JSTAR, использовалась в Voyager . Этот компьютер имел резервную копию массивов памяти для использования методов восстановления памяти, и поэтому его называли компьютером JPL Self-Testing-And-Repairing. Он мог обнаруживать собственные ошибки и исправлять их или при необходимости задействовать избыточные модули. Компьютер все еще работает по состоянию на начало 2022 года. [3]

Гипернадежные компьютеры были впервые использованы в основном производителями самолетов , [1] : 210  компаниями атомной энергетики и железнодорожной промышленностью в Соединенных Штатах. Этим организациям нужны были компьютеры с огромным количеством времени безотказной работы, которые могли бы достаточно изящно выходить из строя во время сбоя, чтобы обеспечить продолжение работы, при этом полагаясь на постоянный человеческий мониторинг выходных данных компьютера для обнаружения сбоев. IBM снова разработала первый компьютер такого типа для NASA для управления ракетами Saturn V , но позже BNSF , Unisys и General Electric построили свои собственные. [1] : 223 

В 1970-х годах в этой области было проведено много работ. [4] [5] [6] Например, F14 CADC имел встроенную самодиагностику и избыточность. [7]

В целом, ранние попытки создания отказоустойчивых конструкций были сосредоточены в основном на внутренней диагностике, где неисправность указывала на то, что что-то выходит из строя, и рабочий мог это заменить. Например, у SAPO был метод, при котором неисправные барабаны памяти издавали шум перед отказом. [8] Более поздние попытки показали, что для полной эффективности система должна была быть самовосстанавливающейся и диагностируемой — изолируя неисправность, а затем внедряя избыточное резервное копирование, предупреждая о необходимости ремонта. Это известно как избыточность N-модели, где неисправности вызывают автоматические отказоустойчивые функции и предупреждение оператору, и это по-прежнему самая распространенная форма отказоустойчивой конструкции первого уровня, используемая сегодня.

Другим первоначальным методом было голосование, как обсуждалось выше, с несколькими резервными резервами, работающими постоянно и проверяющими результаты друг друга. Например, если четыре компонента сообщили ответ 5, а один компонент сообщил ответ 6, остальные четыре «голосовали» за то, что пятый компонент был неисправен, и выводили его из эксплуатации. Это называется голосованием большинства M из N.

Исторически сложилась тенденция к отходу от N-модели и переходу к M-модели из N, поскольку сложность систем и трудность обеспечения переходного состояния от состояния с отрицательным отказом к состоянию с положительным отказом не нарушали работу.

Tandem Computers , в 1976 году [9] и Stratus были среди первых компаний, специализирующихся на разработке отказоустойчивых компьютерных систем для обработки онлайн-транзакций .

Примеры

«M2 Mobile Web», оригинальный мобильный веб-интерфейс Twitter, позднее служил резервной устаревшей версией для клиентов без поддержки JavaScript и/или несовместимых браузеров до декабря 2020 года.

Аппаратная отказоустойчивость иногда требует, чтобы сломанные части были извлечены и заменены новыми, пока система все еще работает (в вычислительной технике это известно как горячая замена ). Такая система, реализованная с одной резервной копией, известна как одноточечная толерантность и представляет собой подавляющее большинство отказоустойчивых систем. В таких системах среднее время между отказами должно быть достаточно большим, чтобы у операторов было достаточно времени для исправления сломанных устройств ( среднее время ремонта ) до того, как резервная копия также выйдет из строя. Полезно, если время между отказами будет как можно больше, но это не является особым требованием в отказоустойчивой системе.

Отказоустойчивость особенно успешна в компьютерных приложениях. Tandem Computers построили весь свой бизнес на таких машинах, которые использовали одноточечную устойчивость для создания своих систем NonStop с временем безотказной работы, измеряемым годами.

Отказоустойчивые архитектуры могут охватывать также компьютерное программное обеспечение, например, путем репликации процессов .

Форматы данных также могут быть разработаны для постепенного ухудшения. Например, HTML разработан для обеспечения прямой совместимости , что позволяет веб-браузерам игнорировать новые и неподдерживаемые сущности HTML, не делая документ непригодным для использования. Кроме того, некоторые сайты, включая популярные платформы, такие как Twitter (до декабря 2020 года), предоставляют дополнительный облегченный интерфейс, который не использует JavaScript и имеет минимальную компоновку, чтобы обеспечить широкую доступность и охват , например, на игровых консолях с ограниченными возможностями просмотра веб-страниц. [10] [11]

Терминология

Пример изящной деградации по замыслу в изображении с прозрачностью. Каждое из двух верхних изображений является результатом просмотра составного изображения в средстве просмотра, которое распознает прозрачность. Два нижних изображения являются результатом просмотра без поддержки прозрачности. Поскольку маска прозрачности (в центре внизу) отбрасывается, остается только наложение (в центре вверху). Изображение слева было разработано для изящной деградации, поэтому все еще имеет смысл без информации о прозрачности.

Высокоустойчивая к отказам система может продолжать работать на том же уровне производительности, даже если один или несколько компонентов вышли из строя. Например, здание с резервным электрогенератором будет подавать то же напряжение на настенные розетки, даже если отключится электросеть.

Система, которая разработана для отказоустойчивой , или отказоустойчивой, или отказоустойчивой изящно , независимо от того, функционирует ли она на пониженном уровне или полностью выходит из строя, делает это таким образом, чтобы защитить людей, имущество или данные от травм, повреждений, вторжений или раскрытия. В компьютерах программа может отказоустойчивой, выполняя изящный выход (в отличие от неконтролируемого сбоя), чтобы предотвратить повреждение данных после возникновения ошибки. [12] Аналогичное различие проводится между «хорошо проваливается» и « плохо проваливается ».

Система, разработанная для постепенной деградации или мягкого отказа (используется в вычислительной технике, аналогично «отказоустойчивости» [13] ), работает на пониженном уровне производительности после отказа какого-либо компонента. Например, если отключается сетевое питание, в здании может работать освещение на пониженном уровне или лифты могут работать на пониженной скорости. В вычислительной технике, если для потоковой передачи онлайн-видео не хватает пропускной способности сети, вместо версии с высоким разрешением может транслироваться версия с более низким разрешением. Прогрессивное улучшение — еще один пример, когда веб-страницы доступны в базовом функциональном формате для старых веб-браузеров с небольшим экраном или ограниченными возможностями, но в расширенной версии для браузеров, способных обрабатывать дополнительные технологии или имеющих больший дисплей.

В отказоустойчивых компьютерных системах программы, которые считаются надежными, предназначены для продолжения работы, несмотря на ошибку, исключение или недопустимый ввод, а не для полного сбоя. Хрупкость программного обеспечения является противоположностью надежности. Устойчивые сети продолжают передавать данные, несмотря на отказ некоторых ссылок или узлов. Ожидается, что устойчивые здания и инфраструктура также предотвратят полный отказ в таких ситуациях, как землетрясения, наводнения или столкновения.

Система с высокой прозрачностью отказов будет предупреждать пользователей о том, что произошел отказ компонента, даже если он продолжает работать с полной производительностью, так что отказ может быть устранен или ожидается неминуемый полный отказ. [14] Аналогично, компонент fail-fast разработан для сообщения в первой точке отказа, а не для создания отчетов, когда выходят из строя последующие компоненты. Это позволяет легче диагностировать основную проблему и может предотвратить неправильную работу в сломанном состоянии.

Состояние единичного сбоя — это ситуация, когда одно средство защиты от опасности неисправно. Если состояние единичного сбоя неизбежно приводит к другому состоянию единичного сбоя, то два отказа считаются одним состоянием единичного сбоя. [15] Источник предлагает следующий пример:

Состояние единичного отказа – это состояние, когда неисправно одно средство защиты от опасности в оборудовании или присутствует одно внешнее ненормальное состояние, например, короткое замыкание между токоведущими частями и рабочей частью. [16]

Критерии

Обеспечение отказоустойчивого дизайна для каждого компонента обычно не является вариантом. Сопутствующая избыточность влечет за собой ряд штрафов: увеличение веса, размера, энергопотребления, стоимости, а также времени на проектирование, проверку и тестирование. Поэтому необходимо рассмотреть ряд вариантов, чтобы определить, какие компоненты должны быть отказоустойчивыми: [17]

Примером компонента, который проходит все испытания, является система удержания пассажиров автомобиля. Хотя основная система удержания пассажиров обычно не рассматривается, это гравитация . Если автомобиль переворачивается или подвергается сильным перегрузкам, то этот основной метод удержания пассажиров может выйти из строя. Удержание пассажиров во время такой аварии абсолютно необходимо для безопасности, поэтому первый тест пройден. Несчастные случаи, приводящие к выбрасыванию пассажиров, были довольно распространены до появления ремней безопасности , поэтому второй тест пройден. Стоимость избыточного метода удержания, такого как ремни безопасности, довольно низкая, как с экономической точки зрения, так и с точки зрения веса и пространства, поэтому третий тест пройден. Поэтому добавление ремней безопасности во все автомобили является отличной идеей. Другие «дополнительные системы удержания», такие как подушки безопасности , стоят дороже и поэтому проходят этот тест с меньшим отрывом.

Другим прекрасным и долгосрочным примером реализации этого принципа является тормозная система: хотя фактические тормозные механизмы имеют решающее значение, они не особенно склонны к внезапному (а не прогрессирующему) отказу и в любом случае обязательно дублируются, чтобы обеспечить равномерное и сбалансированное приложение тормозного усилия ко всем колесам. Было бы также непомерно дорого дополнительно удваивать основные компоненты, и они значительно увеличили бы вес. Однако столь же критические системы для приведения в действие тормозов под контролем водителя по своей природе менее надежны, как правило, используя трос (может ржаветь, растягиваться, заклинивать, рваться) или гидравлическую жидкость (может протекать, кипеть и образовывать пузырьки, впитывать воду и, таким образом, терять эффективность). Таким образом, в большинстве современных автомобилей гидравлический тормозной контур ножного тормоза разделен по диагонали, что дает две меньшие точки отказа, потеря либо только снижает тормозную мощность на 50% и не вызывает такого опасного дисбаланса тормозного усилия, как прямое разделение спереди-назад или слева-справа, и если гидравлический контур полностью выйдет из строя (относительно очень редкое явление), есть отказоустойчивость в виде тросового стояночного тормоза, который управляет относительно слабыми задними тормозами, но все еще может безопасно остановить автомобиль в сочетании с торможением трансмиссией/двигателем, пока требования к нему соответствуют нормальному потоку движения. Совокупно маловероятное сочетание полного отказа ножного тормоза с необходимостью резкого торможения в экстренной ситуации, скорее всего, приведет к столкновению, но все равно на более низкой скорости, чем это было бы в противном случае.

По сравнению с рабочим тормозом, активируемым педалью, сам стояночный тормоз является менее важным элементом, и если он не используется в качестве одноразового резерва для ножного тормоза, не вызовет немедленной опасности, если будет обнаружено, что он не работает в момент применения. Поэтому в него как такового не встроено избыточности (и обычно он использует более дешевую, легкую, но менее износостойкую тросовую систему приведения в действие), и может быть достаточно, если это происходит на холме, использовать ножной тормоз, чтобы на мгновение удержать автомобиль неподвижно, прежде чем тронуться с места, чтобы найти ровный участок дороги, на котором можно остановиться. В качестве альтернативы, на пологих уклонах, трансмиссию можно переключить на передачу Park, Reverse или First, а блокировку трансмиссии / компрессию двигателя использовать для удержания автомобиля в неподвижном состоянии, поскольку им нет необходимости включать утонченность, чтобы сначала остановить его.

На мотоциклах аналогичный уровень отказоустойчивости обеспечивается более простыми методами; во-первых, передняя и задняя тормозные системы полностью разделены, независимо от их метода активации (который может быть тросовым, стержневым или гидравлическим), что позволяет одной полностью выйти из строя, не затрагивая другую. Во-вторых, задний тормоз относительно сильный по сравнению со своим автомобильным собратом, являясь мощным дисковым на некоторых спортивных моделях, хотя обычно предполагается, что передняя система должна обеспечивать большую часть тормозного усилия; поскольку общий вес транспортного средства более центрирован, задняя шина, как правило, больше и имеет лучшее сцепление, так что гонщик может откинуться назад, чтобы перенести на нее больший вес, тем самым позволяя применить большее тормозное усилие до того, как колесо заблокируется. На более дешевых и медленных машинах утилитарного класса, даже если переднее колесо должно использовать гидравлический диск для дополнительного тормозного усилия и более простой компоновки, заднее колесо обычно будет примитивным, несколько неэффективным, но исключительно прочным барабаном со штоковым приводом, благодаря простоте соединения педали с колесом таким образом и, что еще важнее, практически невозможности катастрофического отказа, даже если остальная часть машины, как и многие недорогие велосипеды после первых нескольких лет использования, находится на грани разрушения из-за пренебрежительного обслуживания.

Требования

Основные характеристики отказоустойчивости требуют:

  1. Отсутствие единой точки отказа . Если в системе произошел сбой, она должна продолжать работать без перебоев во время процесса ремонта.
  2. Изоляция неисправности неисправного компонента – при возникновении неисправности система должна иметь возможность изолировать неисправность компонента, вызвавшего сбой. Для этого требуется добавление специальных механизмов обнаружения неисправностей, которые существуют только для изоляции неисправностей. Для восстановления после неисправности требуется классификация неисправности или неисправного компонента. Национальный институт стандартов и технологий (NIST) классифицирует неисправности на основе местоположения, причины, продолжительности и следствия. [ где? ] [ требуется разъяснение ]
  3. Сдерживание сбоя для предотвращения распространения сбоя – Некоторые механизмы сбоя могут привести к сбою системы, распространяя сбой на остальную часть системы. Примером такого типа сбоя является «несанкционированный передатчик», который может затопить законную связь в системе и вызвать общий сбой системы. Требуются брандмауэры или другие механизмы, которые изолируют несанкционированный передатчик или неисправный компонент для защиты системы.
  4. Наличие режимов реверсии [ требуется уточнение ]

Кроме того, отказоустойчивые системы характеризуются как плановыми, так и незапланированными сбоями в обслуживании. Они обычно измеряются на уровне приложений, а не только на уровне оборудования. Показатель качества называется доступностью и выражается в процентах. Например, система с пятью девятками статистически обеспечит доступность 99,999%.

Отказоустойчивые системы обычно основаны на концепции избыточности.

Методы обеспечения отказоустойчивости

Исследование видов допусков, необходимых для критических систем, включает в себя большой объем междисциплинарной работы. Чем сложнее система, тем тщательнее должны быть рассмотрены и подготовлены все возможные взаимодействия. Учитывая важность систем высокой стоимости в транспорте, коммунальном хозяйстве и армии, область тем, которые затрагиваются в исследовании, очень широка: она может включать такие очевидные предметы, как моделирование и надежность программного обеспечения или проектирование оборудования , до таких загадочных элементов, как стохастические модели, теория графов , формальная или исключающая логика, параллельная обработка , удаленная передача данных и многое другое. [18]

Репликация

Запасные компоненты отвечают первой основополагающей характеристике отказоустойчивости тремя способами:

Все реализации RAID , избыточного массива независимых дисков , за исключением RAID 0, являются примерами отказоустойчивого устройства хранения данных , использующего избыточность данных .

Машина с отказоустойчивостью Lockstep использует реплицированные элементы, работающие параллельно. В любой момент времени все репликации каждого элемента должны находиться в одном и том же состоянии. Для каждой репликации предоставляются одни и те же входы , и ожидаются одни и те же выходы. Выходы репликаций сравниваются с помощью схемы голосования. Машина с двумя репликациями каждого элемента называется двойной модульной избыточностью (DMR). Тогда схема голосования может обнаружить только несоответствие, а восстановление полагается на другие методы. Машина с тремя репликациями каждого элемента называется тройной модульной избыточностью (TMR). Схема голосования может определить, какая репликация ошибочна, когда наблюдается голосование два к одному. В этом случае схема голосования может вывести правильный результат и отбросить ошибочную версию. После этого внутреннее состояние ошибочной репликации предполагается отличным от состояния двух других, и схема голосования может переключиться в режим DMR. Эту модель можно применять к любому большему количеству репликаций.

Машины с отказоустойчивостью Lockstep проще всего сделать полностью синхронными , когда каждый вентиль каждой репликации делает один и тот же переход состояния на одном и том же краю часов, а часы репликаций находятся точно в фазе. Однако можно построить системы Lockstep без этого требования.

Синхронизация репликаций требует приведения их внутренних сохраненных состояний в соответствие. Они могут быть запущены из фиксированного начального состояния, например, состояния сброса. В качестве альтернативы внутреннее состояние одной реплики может быть скопировано в другую реплику.

Один из вариантов DMR — это пара-и-запасной . Два реплицированных элемента работают в паре, с избирательной схемой, которая обнаруживает любое несоответствие между их операциями и выдает сигнал, указывающий на наличие ошибки. Другая пара работает точно так же. Последняя схема выбирает выход пары, которая не объявляет об ошибке. Пара-и-запасной требует четырех реплик вместо трех, как у TMR, но она использовалась в коммерческих целях.

Вычисления, не обращающие внимания на сбои

Вычисления, не обращающие внимания на сбои, — это метод, позволяющий компьютерным программам продолжать выполнение, несмотря на ошибки . [19] Метод может применяться в разных контекстах. Он может обрабатывать недействительные чтения памяти, возвращая программе искусственное значение, [20] которая, в свою очередь, использует искусственное значение и игнорирует предыдущее значение памяти , к которому она пыталась получить доступ, это сильно контрастирует с типичными средствами проверки памяти , которые сообщают программе об ошибке или прерывают ее выполнение.

Подход имеет издержки производительности: поскольку метод переписывает код для вставки динамических проверок на валидность адреса, время выполнения увеличится на 80–500%. [21]

Восстановление пастырства

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

Он использует фреймворк бинарного инструментария Just-in-Time Pin . Он присоединяется к процессу приложения при возникновении ошибки, восстанавливает выполнение, отслеживает эффекты восстановления по мере продолжения выполнения, содержит эффекты восстановления в процессе приложения и отсоединяется от процесса после того, как все эффекты восстановления сбрасываются из состояния процесса. Он не мешает нормальному выполнению программы и, следовательно, влечет за собой незначительные накладные расходы. [22] Для 17 из 18 систематически собранных реальных ошибок разыменования нуля и деления на ноль реализация прототипа позволяет приложению продолжать выполняться, чтобы предоставлять приемлемый вывод и обслуживание своим пользователям на входах, вызывающих ошибку. [22]

Автоматический выключатель

Шаблон проектирования выключателя — это метод, позволяющий избежать катастрофических отказов в распределенных системах.

Избыточность

Избыточность — это предоставление функциональных возможностей, которые были бы ненужными в безотказной среде. [23] Это может состоять из резервных компонентов, которые автоматически «включаются», если один компонент выходит из строя. Например, большие грузовые автомобили могут потерять шину без каких-либо серьезных последствий. У них много шин, и ни одна из них не является критической (за исключением передних шин, которые используются для управления, но, как правило, несут меньшую нагрузку, каждая в целом, чем остальные четыре-16, поэтому имеют меньшую вероятность выхода из строя). Идея включения избыточности для повышения надежности системы была впервые выдвинута Джоном фон Нейманом в 1950-х годах. [24]

Возможны два вида избыточности: [25] пространственная избыточность и временная избыточность. Пространственная избыточность обеспечивает дополнительные компоненты, функции или элементы данных, которые не нужны для безотказной работы. Пространственная избыточность далее классифицируется на аппаратную, программную и информационную избыточность в зависимости от типа избыточных ресурсов, добавленных в систему. При временной избыточности вычисления или передача данных повторяются, а результат сравнивается с сохраненной копией предыдущего результата. Текущая терминология для этого вида тестирования называется «тестированием отказоустойчивости в процессе эксплуатации» или сокращенно ISFTT.

Недостатки

Преимущества отказоустойчивой конструкции очевидны, тогда как многие ее недостатки не очевидны:

Связанные термины

Существует разница между отказоустойчивостью и системами, которые редко имеют проблемы. Например, системы Western Electric crossbar имели частоту отказов два часа за сорок лет, и поэтому были очень отказоустойчивыми . Но когда случался отказ, они все равно полностью прекращали работу, и поэтому не были отказоустойчивыми .

Смотрите также

Ссылки

  1. ^ abc Daniel P. Siewiorek; C. Gordon Bell; Allen Newell (1982). Компьютерные структуры: принципы и примеры . McGraw-Hill . ISBN 0-07-057302-6.
  2. ^ Альгирдас Авизиенис; Джордж К. Джилли; Фрэнсис П. Матур; Дэвид А. Реннелс; Джон А. Рор; Дэвид К. Рубин. «Компьютер STAR (самотестирующийся и ремонтирующийся): исследование теории и практики проектирования отказоустойчивых компьютеров» (PDF) .
  3. ^ "Состояние миссии Voyager (чаще всего устаревшее как минимум на три месяца)". NASA . Получено 2022-04-01 .
  4. ^ Рэнделл, Брайан ; Ли, Пенсильвания; Трелеавен, ПК (июнь 1978 г.). «Проблемы надежности в проектировании вычислительных систем». ACM Computing Surveys . 10 (2): 123–165. doi :10.1145/356725.356729. ISSN  0360-0300. S2CID  16909447.
  5. ^ PJ Denning (декабрь 1976 г.). «Отказоустойчивые операционные системы». ACM Computing Surveys . 8 (4): 359–389. doi :10.1145/356678.356680. ISSN  0360-0300. S2CID  207736773.
  6. Теодор А. Линден (декабрь 1976 г.). «Структуры операционных систем для поддержки безопасности и надежного программного обеспечения». ACM Computing Surveys . 8 (4): 409–445. doi :10.1145/356678.356682. hdl : 2027/mdp.39015086560037 . ISSN  0360-0300. S2CID  16720589.
  7. ^ Рэй Холт. «Центральный компьютер данных о воздухе F14A и новейшие технологии LSI в 1968 году».
  8. ^ Отказоустойчивые вычисления в компьютерном проектировании Нилфорошан, М.Р. Архив журнала «Вычислительные науки в колледжах» Том 18, Выпуск 4 (апрель 2003 г.) Страницы: 213 – 220, ISSN  1937-4771
  9. ^ "История TANDEM COMPUTERS, INC". FundingUniverse . Получено 2023-03-01 .
  10. ^ Натаниэль (17 марта 2021 г.). «Почему ваш сайт должен работать без JavaScript». Сообщество DEV . Получено 16.05.2021 .
  11. ^ Фэрфакс, Закери (28.11.2020). «Закрытие устаревшего Twitter означает, что вы больше не сможете твитить с 3DS». Screen Rant . Получено 01.07.2021 .
  12. ^ Hudak, JJ; Suh, B.-H.; Siewiorek, DP; Segall, Z. (1993). «Оценка и сравнение отказоустойчивых методов программного обеспечения». IEEE Transactions on Reliability . 42 (2): 190–204. doi :10.1109/24.229487. ISSN  1558-1721.
  13. ^ Stallings, W (2009): Операционные системы. Внутреннее устройство и принципы проектирования , шестое издание
  14. ^ Тампи, Сабу М. (2009-11-23). ​​«Введение в распределенные системы». arXiv : 0911.4395 [cs.DC].
  15. ^ "Control". IEEE . Архивировано из оригинала 1999-10-08 . Получено 2016-04-06 .
  16. ^ Баха Аль-Шейх, Саймон Г. Стейси, Основы оборудования для анестезии, интенсивной терапии и периоперационной медицины (2017), стр. 247.
  17. ^ Дуброва, Е. (2013). «Отказоустойчивый дизайн», Springer, 2013, ISBN 978-1-4614-2112-2 . 
  18. ^ Оценка надежности некоторых отказоустойчивых компьютерных архитектур . Springer-Verlag. Ноябрь 1980. ISBN 978-3-540-10274-8.
  19. ^ Герцберг, Амир; Шульман, Хая (2012). «Забывчивые и справедливые вычисления с использованием сервера для двухсторонних вычислений». 2012 Седьмая международная конференция по доступности, надежности и безопасности . IEEE. стр. 75–84. doi :10.1109/ares.2012.28. ISBN 978-1-4673-2244-7. S2CID  6579295.
  20. ^ Риггер, Мануэль; Пекарек, Даниэль; Мёссенбёк, Ханспетер (2018), «Контекстно-зависимое вычисление с отсутствием запоминания как средство предотвращения переполнений буфера», Сетевая и системная безопасность , Конспект лекций по информатике, т. 11058, Cham: Springer International Publishing, стр. 376–390, arXiv : 1806.09026 , doi : 10.1007/978-3-030-02744-5_28, ISBN 978-3-030-02743-8, получено 2020-10-07
  21. ^ Керомитис, Ангелос Д. (2007), «Характеристика систем самовосстановления программного обеспечения», в Городецкий, Владимир И.; Котенко, Игорь; Скормин, Виктор А. (ред.), Характеристика систем самовосстановления программного обеспечения , Безопасность компьютерных сетей: Четвертая международная конференция по математическим методам, моделям и архитектурам для безопасности компьютерных сетей, Springer , ISBN 978-3-540-73985-2
  22. ^ abc Long, Fan; Sidiroglou-Douskos, Stelios; Rinard, Martin (2014). «Автоматическое исправление и сдерживание ошибок во время выполнения с помощью Recovery Shepherding». Труды 35-й конференции ACM SIGPLAN по проектированию и реализации языков программирования . PLDI '14'. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 227–238. doi : 10.1145/2594291.2594337 . ISBN 978-1-4503-2784-8. S2CID  6252501 .
  23. ^ Лапри, Дж. К. (1985). «Надежные вычисления и отказоустойчивость: концепции и терминология», Труды 15-го Международного симпозиума по отказоустойчивым вычислениям (FTSC-15), стр. 2–11.
  24. ^ фон Нейман, Дж. (1956). «Вероятностная логика и синтез надежных организмов из ненадежных компонентов», в «Исследованиях автоматов», под ред. К. Шеннона и Дж. Маккарти, Princeton University Press, стр. 43–98
  25. ^ Авизиенис, А. (1976). «Системы, устойчивые к отказам», IEEE Transactions on Computers, т. 25, № 12, стр. 1304–1312