отказоустойчивая вычислительная система и способ ее формирования

Классы МПК:G06F15/16 сочетание двух или более вычислительных машин, каждая из которых снабжена по меньшей мере арифметическим устройством, программным устройством и регистром, например для одновременной обработки нескольких программ
G06F11/20 с использованием маскирования сбоев с помощью замещения, например выключения сбойных элементов или переключения на резервные элементы
Автор(ы):, ,
Патентообладатель(и):Новелл, Инк. (US)
Приоритеты:
подача заявки:
1991-08-09
публикация патента:

Изобретение относится к области операционной системы мультипроцессорных отказоустойчивых вычислительных систем. При отказе первичного средства обработки дублирующее средство обработки может взять на себя управление без прерывания работы. В системе используются два средства обработки, каждое из которых содержит машину операционной системы, машину ввода-вывода и средство хранения информации. 2 с. и 10 з.п.ф-лы, 10 ил.
Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7, Рисунок 8, Рисунок 9, Рисунок 10

Формула изобретения

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

2. Способ по п.1, отличающийся тем, что определяют наличие отказа первого средства обработки и передают каждое сообщение во вторую машину ввода-вывода, в которой преобразуют каждое сообщение во входные сигналы, передают входные сигналы во вторую машину операционной системы, обрабатывают входные сигналы во второй машине операционной системы.

3. Способ по п.1, отличающийся тем, что определение состояния первого средства обработки основано на обработке первой машинной операционной системы любых доступных ей сообщений до тех пор, пока первая машина операционной системы не переходит в режим "Ожидание нового сообщения", передача состояния первого средства обработки во вторые средства обработки основана на передаче образа памяти первой машины операционной системы через первую и вторую машины ввода-вывода во вторую машины операционной системы.

4. Способ по п.1, отличающийся тем, что первые средства обработки включают по крайней мере один процессор.

5. Способ по п.1, отличающийся тем, что вторые средства обработки включают по крайней мере один процессор.

6. Способ по п.1, отличающийся тем, что генерируют запрос для выполнения операции ввода-вывода в первую машину операционной системы, передают запрос в первую машину ввода-вывода для обработки первой машиной ввода-вывода, генерируют ответ в первую машину операционной системы для индикации исполнения указанного запроса.

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

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

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

10. Система по п.7, отличающаяся тем, что первая и вторая машины ввода-вывода выполнены с возможностью управления связью внешними входными и выходными устройствами.

11. Система по п. 7, отличающаяся тем, что первая машина операционной системы выполнена с возможностью управления исполнением инструкций отказоустойчивой вычислительной системы.

12. Система по п.11, отличающаяся тем, что вторая машина операционной системы выполнена с возможностью управления исполнением инструкций отказоустойчивой вычислительной системы, когда первая машина операционной системы не может исполнять инструкции.

Описание изобретения к патенту

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

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

Для поддержания работы вычислительной системы во время отказа компонентов требуется избыточная система или система с резервированием. Известная из предыдущего уровня техники система с резервированием включает полную аппаратную избыточность. Во время работы системы предусматриваются два идентичных процессора с одинаковыми входами на аппаратном сигнальном уровне. Обычно один процессор рассматривается как первичный процессор, а другой - как вторичный процессор. Если происходит отказ первичного процессора, система переключается на вторичный процессор. Пример такой системы с аппаратной избыточностью описывается у Ловелла [3], в котором две идентичные вычислительные системы принимают одинаковые входные сигналы и исполняют одинаковые операции. Однако, при отсутствии неисправности только один компьютер обеспечивает выходную информацию, но в случае возникновения отказа управление выходом принимает на себя второй компьютер. Во время работы выходные схемы резервного компьютера запрещаются до момента возникновения неисправности в основном компьютере. В этот момент подается разрешение на выходные схемы резервного компьютера

Использование идентичных процессоров или аппаратных средств имеет множество потенциальных недостатков. Одним из них является сложность и большая стоимость синхронизации процессоров на сигнальном уровне.

Другой известный способ создания системы с резервированием относится к системе с "контрольной точкой" (сохранение состояния процесса в контрольной точке). Система с контрольной точкой работает по принципу "запуск из конечного состояния". Этот принцип устанавливает, что если два устройства находятся в одном и том же состоянии, то при подаче идентичных входных сигналов на каждое устройство на выходах этих устройств будут идентичные выходные сигналы и каждое устройство будет переходить в одно и то же состояние.

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

Известная система с контрольной точкой описывается у Глейзера [6], в которой первичный процессор используется для выполнения определенных задач. Вторичный процессор используется для выполнения других задач. Периодически состояние первичного процессора передается во вторичный процессор. При отказе первичного процессора любые операции, исполняемые первичным процессором со времени последней синхронизации первичного и вторичного процессоров, исполняются вторичным процессором для приведения его текущего состояния в соответствие с первичным процессором. Система Глейзера, также как и другие системы с контрольной точкой, обладает несколькими недостатками. Одним из недостатков являются количества времени и памяти, необходимые для передачи состояния первичной системы во вторичную систему. Другим недостатком систем с контрольной точкой является прерывание обслуживания при отказе первичной системы. Вторичная система должна "приводить в соответствие скорость работы" путем исполнения сообщений в строке сообщений.

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

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

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

Следующей целью настоящего изобретения является создание усовершенствованной резервной системы для работы сетевого сервера.

Дальнейшей целью настоящего изобретения является создание непрерывного обслуживания при возникновении единого отказа компонента аппаратуры.

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

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

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

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

На фиг. 1 изображена блок-схема предпочтительного варианта реализации настоящего изобретения; на фиг. 2 - подробное изображение ввода/вывода фиг. 1; на фиг. 3 - подробное изобретение машины ОС фиг. 1; на фиг. 4 - блок-схема, иллюстрирующая работу машины ОС во время исполнения запросов и событий; на фиг. 5 - блок-схема, иллюстрирующая работу первичной и вторичной машин ввода-вывода во время исполнения событий; на фиг. 6, 7 - блок-схема, иллюстрирующая работу первичной и вторичной машин ввода/вывода во время исполнения запросов; на фиг. 8 - схема, иллюстрирующая переходы из одного состояния в другое согласно настоящего изобретения; на фиг. 9 - блок-схема, иллюстрирующая синхронизацию первичной и вторичной систем; на фиг. 10 - блок-схема альтернативного варианта этого изобретения.

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

Блок-схема предпочтительного варианта этого изобретения приводится на фиг. 1. Изобретение касается первичного процессора и операционной системы, в основном разработанной для тех элементов, которые находятся внутри штриховой линии 21, и резервного или вторичного процессора и операционной системы, в основном разработанной для тех элементов, которые находятся внутри штриховой линии 22. Первичная операционная система 21 включает машину операционной системы (ОС) 10, связанную с машиной ввода/вывода (В/В) 12. Машина ввода/вывода и машина ОС связываются через очереди "событие" и "запрос". Машина В/В записывает события в очередь событий, а машина ОС считает события. Машина ОС записывает запросы в очередь запросов, а машина В/В считывает запрос.

Резервная система 22 включает свою собственную машину ОС 16, которая связывается через очередь событий 17 и очередь запросов 42 с машиной В/В 18. Машина В/В 12 связывается с машиной В/В 18 через высокоскоростные коммуникационные шины 15А и 15B. Шины 15А и 15B представляют один аппаратный канал, который используется для связи двух типов сообщений, А и B. Высокоскоростная коммуникационная шина используется для передачи событий из первичного сервера во вторичный сервер (15А). Она также используется для других связей машин В/В (15B). Машина В/В 12 может также иметь доступ к массовой памяти через линию 13. Машина В/В также связывается с другими устройствами, такими как таймеры, клавиатуры, дисплеи и т.д., показанные символически как блок 44А, связанный с машиной В/В 12 через линию 64. Машина В/В 18 связывается через линию 19 с массовой памятью 20. Машина В/В 12 и машина В/В 18 подключаются к сети 23. Машина В/В 18 соединяется с блоком 44B (таймеры, клавиатуры, дисплеи и т.д.) через шину 65.

Машина В/В 12 принимает данные и синхронные события от вычислительной системы, для которой она является блоком. Например, если изобретение используется как сетевой сервер, машина В/В 12 принимает пакеты из локальной сети (ЛВС) от другого устройства, связанного с сетью. Машина В/В также управляет и сопрягается с физическими устройствами и драйверами устройств, такими как устройство массовой памяти 14, клавиатура или таймер.

Машина ОС работает по приему данных от машин В/В через очереди событий 11 и 17. После выполнения необходимой операции данные возвращаются в машины В/В через очереди запросов 41 и 42 для вывода на другие системные устройства.

Первичный сервер 21 принимает данные или события из сети 23 по входной линии 24. Машина В/В 12 преобразует эти события или данные в формат "сообщение". Каждое сообщение отражает данные или событие, которое может изменять состояние операционной системы. Машина В/В 12 выдает эти сообщения на шину 15А и, когда машина В/В 18 сигнализирует, что она принимает сообщение, сообщение затем передается машинами В/В 12 и 18 на обе машины ОС через шины очереди сообщений о событиях 11 и 17. Эти сообщения последовательно исполняются машинами ОС 10 и 16. За счет очередности сообщений временная зависимость устраняется из системы таким образом, что все асинхронные события преобразуются в синхронную строку сообщений о событиях. Путем отделения машины ОС от машины В/В эта машина в состоянии работать как автомат конечного состояния, имеющий одномерное изображение системы (т.е. очередь сообщений о событиях).

Шины 15А и 15B, связывающие первичную машину В/В 12 с вторичной машиной В/В 18, используют двунаправленный коммуникационный канал. В идеальном случае шины 15А и 15B обеспечивают высокоскоростную связь, имеют малую задержку и низкие непроизводительные издержки центрального процессора (ЦП). Для данного изобретения может быть использован любой подходящий коммуникационный канал, включая расширитель шины и платы локальной вычислительной сети (ЛВС).

Машина ОС и машина В/В могут использоваться по желанию на одном процессоре. Иначе, могут применяться отдельные процессоры, один - для машины ОС и один - для машины B/B. В этом изобретении могут быть также использованы дополнительные машины ОС с дополнительными процессорами. Затем состояния всех машин ОС копируются.

Безотносительно к тому, используется ли один или два процессора для машины ОС и машины В/В, ОЗУ системы делится между этими двумя машинами. Машины В/В могут иметь доступ к памяти машины ОС, но машина ОС не имеет доступа в память машины В/В. Это происходит потому, что адреса буфера памяти могут отличаться для первичной и вторичной машин В/В, приводят к тому, что состояния первичной и вторичной машин ОС становятся различными, если им был разрешен доступ к адресам памяти машины В/В.

Необходимо, чтобы основной и резервный серверы имели идентичные процессоры. Производительность процессоров должна быть одинаковой (тип ЦП, скорость ЦП), и процессоры должны исполнять инструкции идентичным образом, необязательно соблюдать идентичность по контактам и уровню цикла шин, а только по значениям, записанным в память, и по последовательности инструкций. Например, микропроцессор 80386, изготовленный фирмой "Интел", Санта Клара, Калифорния, может использоваться в первичном сервере, а Интел 80486 - во вторичном сервере. Вторичная машина должна иметь больший объем ОЗУ по сравнению с первичной машиной. Кроме того, как первичный, так и вторичный серверы должны иметь одинаковую емкость и конфигурацию дисковой памяти.

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

Для инициализации вторичной операционной системы все новые события не поступают на первичную машину ОС 10 до тех пор, пока она не перейдет в стабильное состояние. В этот момент состояние машины ОС 10 (занесенное в память отображения машины ОС 10) передается через шину сообщений 15В в машину ОС 16 резервной операционной системы. Тогда машина ОС 10 имеет идентичное состояние с машиной ОС 16. В этот момент все сообщения, формируемые машиной В/В 12, которые передаются на машину ОС 10, также поступают на шину 15А машины В/В 18 для передачи в машину ОС 16. Поскольку обе машины ОС 10 и 16 начинают работу в идентичном состоянии и принимают идентичные входные сигналы, каждая машина ОС будет переходить в идентичное состояние после каждого события или сообщения.

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

Если в первичной системе происходит сбой, вторичная машина В/В 18 вторичной операционной системы связывается с сетью 23. Затем вторичная машина В/В 18 используется для генерации сообщений, которые поступают на вторичную машину ОС 16. Из-за того, что резервная операционная система находится в том же состоянии, что и основная операционная система, то во время переключения сервера никаких потерь в производительности для клиентов, использующих сервер, не возникает.

Разделение машин В/В и ОС

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

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

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

Машина ввода/вывода

Как показано на фиг.2, машина В/В содержит три уровня: уровень драйверов, уровень программного управления и уровень сообщений. Драйверы устройств 26А-26Е обеспечивают управление аппаратными элементами, такими как печатающие устройства, устройства памяти (например, дисковые накопители), дисплеи, адаптеры ЛВС, клавиатуры и т.д. Уровень программного управления включает контроллеры для драйверов устройств. Например, дисковый блок 27 управляет драйвером дискового устройства (например, драйвер дискового устройства 26A). Дисковый блок 27 управляет инициированием операции считывания и записи на диск. Кроме того, дисковый блок 27 следит за состоянием дисковой операции. Дисковый блок 27 первичной машины В/В (т.е. машины В/В 12) связывает состояние дисковых операций с резервной машиной В/В. Первичная массовая память 14 и вторичная массовая память 20 является, по существу, идентичными системами. Если первичная машина В/В выполняет операцию чтения с диска 14, она связывается с машиной В/В 18, на которой операция чтения завершена. Если первичная машина В/В выполняет сначала чтение, данные могут быть посланы как сообщение через шину 15В на вторичную машину В/В 18. В других случаях машина В/В 18 считывает данные с ее собственного дискового накопителя 20.

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

Блок отображения информации 29 управляет коммуникациями устройства отображения информации, такого как экран на ЭЛТ, через драйвер устройства 26 С. Блок таймера 30 обеспечивает управление системными часами, а блок клавиатуры 31 обеспечивает интерфейс и связь с клавиатурой.

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

Машина ОС

Применительно к фиг.3 машина ОС включает уровень сообщений 32 для выборки из очереди сообщений, которые принимаются последовательно от машины В/В и для выборки запросов для обеспечения машины ОС запросами к блоку запросов 47 машины В/В. Машина ОС также включает программные средства управления, соответствующие программным средствам управления машины В/В. Например, машина ОС включает программные средства управления диском 33, программные средства управления ЛВС 34, программные средства управления сообщениями 35, программные средства управления таймером 36 и программные средства клавиатуры 37. Верхний уровень 48 машины ОС представляет операционную систему вычислительной системы, использующую данное изобретение.

Программные средства управления диском 33 управляют зеркальным копированием данных на резервные диски 14 и 20. Когда завершается дисковая операция, такая как операция считывания диска, программные средства управления диском 33 определяют, будут ли машины В/В 12 и 18 выполнять операцию считывания или первичная машина В/В будет выполнять считывание и передачу данных на вторичную машину В/В 18. Программные средства управления таймером 36 управляют временными событиями. В общем случае операционная система имеет таймер, который периодически прерывается. Часто это прерывание таймера используется для времязависимых операций. В этом изобретении прерывание таймера само по себе является событием во входной очереди. Путем включения прерывания таймера в сообщение таймерные события становятся относительными вместо абсолютных. Таймерные события изменяются с асинхронных событий на синхронные. Блок 34 ЛВС, дисплейный блок 35 и блок клавиатуры 37 управляют, соответственно, событиями в сети, дисплее и клавиатуре.

Работа машины ОС осуществляется следующим образом

Когда машина ОС принимает сообщение о событии, в состоянии машины ОС могут произойти некоторые изменения и эти изменения занимают некоторое конечное время. В данном изобретении, как только сообщение было принято машиной ОС, эта машина выполняет все операции, которые должны исполняться как функция сообщения. После выполнения всех таких операций машина ОС проверяет очередь сообщений, чтобы убедиться в наличии другого сообщения, готового к исполнению. Если другого сообщения нет, машина ОС становится неактивной до появления сообщения. Такая методика работы требуется для того, чтобы первичная машина ОС и вторичная машина ОС оставались синхронизированными. Новые сообщения могут быть получены первичной и вторичной машинами ОС в различные моменты времени из-за асинхронной работы машины В/В. Поэтому отсутствие или наличие нового события не может быть обработано или использовано для изменения состояния машины ОС.

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

Межмашинная связь

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

Связь между машиной В/В и машиной ОС отличается тем, что:

1. Машина ОС может осуществлять доступ только к своей собственной памяти. Все коммуникации между машиной ОС и машиной В/В должны возникать в памяти машины ОС. Машина ОС не может иметь доступ к памяти, предназначенной для машины В/В. Связность памяти сохраняется. Первичная и вторичная машины ОС зеркально копируются в данном изобретении, а первичная и вторичная машины В/В - нет. Поэтому содержимое памяти каждой машины В/В может быть различным. Пока машины ОС не обращаются в память В/В, сохраняется состояние синхронизации.

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

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

3. Машина В/В не может изменять память, обозначенную как память машины ОС, если она не имеет явного контроля над этой ячейкой памяти машины ОС. Как только машина В/В передает обратное управление машине ОС (через событие), машина В/В не может иметь доступа к этой памяти.

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

При отказе первичного сервера вторичный сервер становится основным сервером. Адрес машины ОС не изменяется, но сообщения, принимаемые из "сети", перенаправляются для непосредственной их передачи на вторичный сервер.

Зеркальное копирование диска

Первичная память 14 и вторичная память 20 должны, согласно данного изобретения, зеркально копироваться. Когда новая вторичная машина входит в диалоговый режим, дисковая система распределяет драйверы во вторичной машине в соответствии с драйверами на первичной машине. Драйверы на двух машинах маркируются счетчиками "текущий уровень синхронизации", который может быть использован для индикации, какой из драйверов не является больше текущим или что два драйвера уже полностью синхронизированы. Если в состоянии синхронизации происходит какое-либо изменение (например, отказывает другой сервер), текущий уровень синхронизации получает приращение от сохранившегося сервера. Сохранившаяся машина также запускает блоки отслеживания памяти, которые записываются на диск. Когда отказавшая машина снова входит в диалоговый режим, после проверки на соответствие состояния среды с прежним, отремонтированная машина может быть вторично синхронизирована путем передачи только тех блоков памяти, которые были изменены при возникновении неисправности. Когда система впервые включается и основная первичная машина входит в диалоговый режим, она отслеживает, какой из дисковых блоков был изменен по тем же причинам.

Связь первичной и вторичной машин В/В

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

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

Имеются две процедуры, используемые для связи между машинами ОС. "AddFSEVent" используется машиной В/В для передачи сообщения в машину ОС, а "Make 10 Reguest" вызывается машиной ОС для связи запроса к машине В/В. AddFSEVent может быть вызвана только первичной машиной В/В. Оба вызова используют тип запроса или тип события для идентификации выполнения запроса или события. Кроме того, оба обращения передают параметр, определяемый функционально-ориентированным образом. Например, это может быть указатель на структуру данных в памяти машины ОС.

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

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

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

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

Состояния сервера во время работы и переходов

Программные средства машины В/В работают в четырех состояниях: неактивное состояние сервера, первичная система при отсутствии состояния вторичной системы, первичная система при наличии состояния вторичной системы и состояние вторичной системы. Кроме того, машина В/В осуществляет следующие переходы из состояния в состояние: из состояния неактивного сервера в состояние первичной системы без вторичной, состояние первичной системы без вторичной в состояние первичной системы с вторичной и состояние вторичной системы в состояние первичной системы. Имеется несколько дополнительных состояний, которые возникают во время синхронизации вторичной системы.

Состояния системы, согласно данного изобретения, иллюстрируются на фиг. 8. Как отмечено, машина В/В работает в одном из четырех состояний S1, S2, S3 и S4. Состояние S1 (машина не находится в состоянии сервера) возникает, когда машина В/В работает, а машина ОС - нет. Состояние S2 (первичная система без вторичной) возникает, когда загружаются как машина В/В, так и машина ОС, но система зеркально не копируется. Когда система зеркально копируется. Когда система зеркально копируется, она переходит в состояние, когда первичная машина ОС и машина В/В работает как первичная машина В/В.

Состояние S3 определяется как первичная система с вторичной. В этом состоянии машина В/В запускается в зеркально скопированную первичную систему. Состояние S4 (вторичная система с первичной) возникает в том случае, когда машина В/В запускается в зеркально скопированную вторичную систему.

Имеется пять возможных переходов из состояния в состояние, которые могут быть опробованы машиной В/В. Они обозначаются линиями Т1-Т5. Первый переход Е1 обеспечивает переход из состояния S1 в состояние S2. Этот переход возникает после запуска машины ОС.

Второй переход Т2 обеспечивает переход из состояния S2 в состояние S3 и происходит в первичной системе в тот момент, когда она синхронизируется с вторичной системой. Переход Т3 осуществляется из состояния S1 в состояние S4 и возникает во вторичной системе в тот момент, когда машина ОС синхронизируется с первичной системой.

Переход Т4 обеспечивает переход из состояния S4 в состояние S2 и происходит при отказе первичной системы. Переход S5 осуществляется из состояния S3 в состояние S2 и возникает при отказе вторичной системы.

Слежение за вторичным сервером и исполнение запросов

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

Вторичная машина В/В может вводить запросы в очередь от машины ОС по некоторым причинам. Первая из них, машина ОС обычно ожидает некоторый вид ответного сообщения на каждый из ее запросов. Если первичная система отказывает, тогда вторичная система (теперь первичная система) формирует запрос и вырабатывает соответствующее ответное событие. Другой причиной является то, что вторичная система ожидает до тех пор, пока она не принимает запрос перед тем, как она может принять ответное событие (случай, который может возникнуть, если первичная система работает значительно впереди вторичной системы), в остальных случаях вторичная система может передавать данные в ее машину ОС в тот момент, когда машина ОС не вполне готова принять ответное событие. Если вторичная машина имеет запрос, введенный в очередь, она будет принимать ответное сообщение, если нет, она сигнализирует первичной системе "снять запоминание" и попытаться снова.

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

Блок-схема, иллюстрирующая исполнение событий и запросов, приводится на фиг. 4-7. Ссылаясь на фиг. 4, работа машин ОС иллюстрируется следующим образом.

Работа машины ОС, когда она вырабатывает запрос, показана на этапах 51 и 52. Работа машины ОС, когда она принимает событие, иллюстрируется этапами 53 и 54. На этапе 51 слой управления ОС определяет, что необходимо для выполнения операции ввода/вывода. На этапе 52 машина ОС генерирует запрос для машины В/В и вводит режим ожидания, ожидая ответного события от машины В/В.

На этапе 53 событие принимается от машины В/В в очередь событий машины ОС. Событие передается на соответствующий блок слоя управления, такой как дисковый блок, блок ЛВС, блок клавиатуры и т.д. На этапе 54 слой управления завершает начальное событие В/В посредством согласования его с первоначальным запросом.

Блок-схема, иллюстрирующая работу машины В/В во время состояний обработки события, приводится на фиг.5. Этапы 53-58 иллюстрируют первичную машину В/В, а этапы 59-63 иллюстрируют вторичную машину В/В. На этапе 55 слой управления первичной машины В/В определяет, имеется ли событие для очереди машины ОС. На этапе 56 это событие встраивается в сообщение и посылается на вторичную машину В/В. Первичная машина В/В затем ожидает до тех пор, пока вторичная машина В/В не подтвердит сообщение перед передачей его на первичную машину ОС. В блоке решения 57 формируется решение, принято ли событие вторичной машиной ОС. Если событие не принимается, первичная машина В/В ожидает до тех пор, пока не будет получено подтверждение. Если вторичная машина В/В приняла событие, удовлетворяющее состоянию блока 57, машина В/В помещает событие в очередь событий первичной машины ОС на этапе 58.

Вторичная машина В/В на этапе 59 ожидает событие от первичной машины В/В. В блоке решения 60 вторичная машина В/В определяет, находится ли она в состоянии готовности для приема события. Если вторичная машина В/В не готова, она не посылает сообщение приема в первичную машину В/В на этапе 61 и возвращается на этап 59 для ожидания другого события. Если вторичная машина В/В готова получить сообщение и условия в блоке решения 60 выполняются, вторичная машина В/В посылает подтверждение события в первичную машину В/В на этапе 62. Затем вторичная машина В/В помещает событие в очередь событий вторичной машины ОС на этапе 63.

Фиг. 6 иллюстрирует состояние обработки машины В/В, когда запросы на обработку генерируются машиной ОС. Этапы 70-74 иллюстрируют состояние первичной машины В/В во время этих операций, а этапы 75-81 (фиг.7) иллюстрируют вторичную машину В/В во время этих операций. На этапе 70 уровень сообщений машины В/В определяет, имеется ли запрос, готовый для очереди запросов. На этапе 71 запрос исполняется машиной В/В. Этот запрос может представлять запрос на операцию записи на диск, посылку пакета в ЛВС и т.д. В блоке решения 72 определяется, требуется ли также исполнение запроса вторичной машины В/В. Если другого исполнения не требуется, первичная машина В/В переходит к этапу 74. Если требуется вторичное исполнение, первичная машина В/В переходит к блоку решения 73. Если вторичный процессор завершает работу, первичная машина В/В переходит к этапу 74А. Если вторичный этап не завершается, первичная машина В/В ожидает до тех пор, пока не завершится вторичный этап. В блоке решения 74А делается определение, генерируется ли запрос о завершении события. Если ответ положительный, первичная машина В/В переходит к этапу 74B и вырабатывает ответ о завершении события. Если завершение события не требуется, первичная машина В/В переходит к этапу 74C и завершает работу.

На этапе 75 уровень сообщений вторичной машины В/В определяет, имеется ли запрос, поступающий из машины ОС. В блоке решения 76 определяется, требуется ли вторичный процессор для исполнения запроса. Если вторичная машина В/В используется для исполнения запроса, вторичная машина В/В переходит к этапу 77 и исполняет запрос. После исполнения запроса вторичная машина В/В информирует первичную машину В/В об окончании операции. Если вторичная машина В/В не исполняет запрос, то она переходит к блоку решения 79 и определяет, вырабатывает ли запрос завершение события. Если запросом не вырабатывается завершение события, вторичная машина В/В переходит к этапу 80 и завершает работу. Если запрос вырабатывает событие, вторичная машина В/В ожидает соответствующее событие от первичной машины на этапе 81.

Последовательность синхронизации сервера

Во время синхронизации вторичной системы с первичной системой полное состояние машины ОС, также как и состояние первичной машины В/В, относящееся к состоянию машины ОС, должно быть связано с вторичной системой. Для инициации синхронизации первичной и вторичной систем машина ОС первичной системы "зависает" для новых событий. Таким образом, новые события не поступают в очередь сообщений первичной системы. После опустошения очереди сообщений первичной системы машина ОС первичной системы зацикливается, ожидая нового события. Когда машина ОС ожидает нового события, она снова находится в стабильном состоянии и остается в таком состоянии до тех пор, пока не вводится новое событие. Полное состояние машины ОС тогда содержится в образе памяти машины ОС; затем образ памяти просто передается во вторичную систему. В конце концов обе машины ОС получают одинаковый набор новых событий и начинают зеркальное копирование друг друга.

Блок-схема, иллюстрирующая последовательность синхронизации, согласно данному изобретению, приводится на фиг. 9. Этапы 85-89 отражают состояния и переходы первичного сервера. Этапы 90-93 отражают состояния и переходы вторичного сервера. Первичный сервер вначале находится в состоянии S2 на этапе 85, а вторичный сервер вначале находится в состоянии S1 (только машина В/В) на этапе 90.

Машины В/В координируют последовательность синхронизации. Когда серверам подается команда на синхронизацию, программные средства управления первичной машины В/В подготавливают синхронизацию на этапе 86. Это позволяет слоям поддержки различных драйверов связываться с машиной ОС и выполнять любые задачи, которые будут сохранять синхронизацию. Первичная система запускает "зависание" машины ОС и приостанавливает также прием запросов от машины ОС.

Затем любые ожидающие запросы, которые исполняются машиной В/В, обрабатываются (и соответствующее завершенное событие, передаваемое в образ машины ОС в памяти, скрывается и не подается в это время в машину ОС). На этапах 87 и 91 машины В/В обмениваются информацией о состоянии. Первичная машина В/В передает информацию о своем состоянии во вторичную машину В/В таким образом, что машины В/В осознают состояния друг друга плюс что вторичная машина В/В распознает любое ожидающее состояние от машины В/В. Этот этап отображается этапом 91 последовательности вторичной машины В/В.

На этапе 88 первичная машина В/В передает образ памяти машины ОС на вторичный сервер. Это соответствует этапу 92 последовательности вторичного сервера, в которой вторичная машина В/В принимает образ памяти машины ОС от первичного сервера.

На этапе 89 синхронизация завершается и первичная система находится в состоянии S3 (первичная с вторичной). Подобным образом, согласно этапу 93 вторичного сервера, процесс синхронизации завершается, и вторичный сервер находится в состоянии S4.

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

Переход при отказе первичного сервера

При возникновении отказа вторичной системы все сообщения в очереди, которые должны быть посланы во вторичную систему, отбрасываются. Если сообщения являются событиями машины ОС, они просто передаются в нее. Уровень обслуживания драйверов машины В/В полностью обрабатывает любые запросы, которые ожидают уведомления от вторичной системы.

Несколько машин ОС и дополнительные процессоры

Настоящее изобретение использует термины "первичные" и "вторичные" серверы, каждый из которых имеет одну машину ОС. Альтернативный вариант, согласно настоящему изобретению, иллюстрируется на фиг.10, на которой первичный и/или вторичный сервер может иметь одну или более машин ОС. Согласно фиг.10, первичный сервер включает три процессора. Процессор 1 использует машину В/В первичного сервера. Первая и вторая машины ОС используются, соответственно, в процессоре 2 и процессоре 3.

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

Таким образом описана отказоустойчивая вычислительная система.

Класс G06F15/16 сочетание двух или более вычислительных машин, каждая из которых снабжена по меньшей мере арифметическим устройством, программным устройством и регистром, например для одновременной обработки нескольких программ

способ, сервер, компьютерная программа и компьютерный программный продукт для кэширования -  патент 2527736 (10.09.2014)
схема передачи данных с текстовой информацией -  патент 2527733 (10.09.2014)
визуализация подписок rss на календаре -  патент 2527194 (27.08.2014)
способ построения системы автоматического управления с взаимодействием через сеть ethernet -  патент 2526765 (27.08.2014)
устройство обработки информации, система обработки информации, способ обработки информации и носитель информации -  патент 2525746 (20.08.2014)
системы и способы для передачи файлов данных, независимо от платформы -  патент 2525743 (20.08.2014)
расширяемость для основывающейся на web визуализации диаграмм -  патент 2524855 (10.08.2014)
способ и система для загрузки файла для веб-приложения -  патент 2523216 (20.07.2014)
переносимость и совместимость медийных данных для различных платформ-адресатов -  патент 2523123 (20.07.2014)
способ использования мобильных телефонов -  патент 2520417 (27.06.2014)

Класс G06F11/20 с использованием маскирования сбоев с помощью замещения, например выключения сбойных элементов или переключения на резервные элементы

резервированная многоканальная вычислительная система -  патент 2527191 (27.08.2014)
автоматизированная система управления боевого корабля с повышенной живучестью -  патент 2510961 (10.04.2014)
система автоматизации и способ управления системой автоматизации -  патент 2510932 (10.04.2014)
распределенное хранение восстанавливаемых данных -  патент 2501072 (10.12.2013)
способ и устройство защиты данных -  патент 2488876 (27.07.2013)
устройство резервирования -  патент 2481619 (10.05.2013)
резервированная двухпроцессорная вычислительная система -  патент 2460121 (27.08.2012)
отказоустойчивая вычислительная система с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации -  патент 2455681 (10.07.2012)
устройство для контроля и резервирования информационной системы -  патент 2453079 (10.06.2012)
способ автоматического прерывания задач, находящихся в цикличности -  патент 2438170 (27.12.2011)
Наверх