Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/OS/Unix/D19831103Elc039.shtml

Модернизированная версия ОС Unix фирмы Bell Labs для отказоустойчивого мультипроцессорного комплекса

УДК 681.3.066

Сэм Глейзер (Sam Glaser)
Фирма Auragen Systems Corp. (Форт-Ли, шт.Нью-Джерси)

Sam Glaser. Enhanced version of Bell Labs' Unix serves fault-tolerant multiprocessor system, pp.145—149.

Описана усовершенствованная версия операционной системы Unix System III под названием Auros, предназначенная для оперативной многоабонентской обработки транзакций в мультипроцессорном вычислительном комплексе модели 4000 фирмы Auragen Systems Corp. В операционной системе для обеспечения отказоустойчивости предусмотрен специальный механизм передачи сообщений, осуществляющий постоянное обновление состояний пассивных дублирующих процессов, а также отдельные системные служебные модули для организации распределенных вычислений; модифицированная файловая система способствует повышению производительности.

Несколько коммерческих вариантов операционной системы Unix фирмы AT&T Bell Laboratories имеют модификации, которые делают их гораздо более эффективными, чем исходная версия, для большинства приложений, связанных с небольшими объемами обрабатываемых деловых данных. Однако ни один из этих вариантов не обладает скоростными и надежностными характеристиками, необходимыми для деловых приложений более крупного масштаба — например, для оперативной обработки транзакций,— а именно такие приложения, как ожидают, станут в 1980-х годах одним из главных направлений внедрения компьютеров. Поэтому новый отказоустойчивый распределенный мультипроцессорный вычислительный комплекс модели 4000 фирмы Auragen, построенный на базе модернизированной версии операционной системы Unix System III под названием Auros, был разработан с ориентацией на требования подобных многоабонентских систем обработки транзакций.

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

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

Расширяемая система

Распределенный мультипроцессорный вычислительный комплекс модели 4000 фирмы Auragen удовлетворяет всем этим требованиям — он включает микрокомплексы из микропроцессоров с непосредственной связью. Эти отдельные микропроцессоры реализуют отдельные системные функции, обеспечивая терминальный ввод-вывод, дисковый ввод-вывод, прикладные вычисления и выполнение работ операционной системы. Поскольку эти функции не требуют использования ресурсов одного центрального процессора, производительность системы остается достаточно высокой даже при увеличении числа и количества видов выполняемых оперативных транзакций. Типичная отказоустойчивая система содержит минимум два таких микрокомплекса, гибко связанные между собой, но предусматривает возможность расширения с включением до 32 микрокомплексов, не требуя переработки прикладных программ.

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

Специальные служебные модули

В операционной системы Auros подпрограммы обработки файлов и функции терминального ввода-вывода исключаются и реализуются как специальные системные служебные модули, или привилегированные процессы пользователя. Кроме файлового служебного и терминального (ТТ) модулей в ОС Auros применяются страничный служебный модуль (для управления виртуальной памятью с подкачкой страниц по требованию) и процессный служебный модуль (в функции которого входит контроль и балансирование распределения нагрузки между процессами пользователя в различных микрокомплексах). Функции ядра в ОС Auros — это обработка сообщений, автоматическое переключение ресурсов для обеспечения отказоустойчивости и определение процессов, готовых к выполнению. Для обеспечения максимальной производительности мультипроцессорного вычислительного комплекса модели 4000 компоненты операционной системы распределения в соответствии со специализацией отдельных блоков микрокомплекса (рис.1). Страничный, процессный и файловый служебные модули — все они выполняются наряду с программами пользователя в рабочем процессоре, который содержит два микропроцессора МС8010, разделяющие одно устройство управления памятью с подкачкой страниц по требованию. В любой конкретный момент времени каждый микропроцессор 68010 выполняет ту или иную программу пользователя или служебный модуль, который размещается в основной памяти микрокомплекса.

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

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

Процессорные микрокомплексы

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

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

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

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

Очереди и счетчики

Главная модификация, которую сделала фирма Auragen,— это интеграция системы передачи сообщений с очередями и счетчиками и ядра ОС Unix. Система передачи сообщений с очередями и счетчиками управляет всеми обменами информацией между процессами и представляет собой основной механизм, обеспечивающий отказоустойчивость МВК фирмы Auragen. Отказоустойчивые комплексы требуют резервирования аппаратных средств, с тем чтобы в случае выхода из строя одного компонента другой такой же компонент мог взять на себя его функции и работа могла продолжаться. Архитектура МВК фирмы Auragen, включающая ряд микрокомплексов, предусматривает такое резервирование аппаратных средств. Однако программы также требуют дублирования; каждая программа в отказоустойчивом комплексе имеет две копии — главную, которая выполняет фактические вычисления, и пассивную резервную, которая в случае ошибки главной копии может продолжить работу.

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

Работу всех этих механизмов легче всего понять на простом примере системы с тремя главными процессами — с терминальным (ТТ) служебным модулем, прикладной программой и файловым служебным модулем — и тремя соответствующими резервными процессами. Здесь главный ТТ-модуль посылает запрос (сообщение 1М) прикладной программе, которая в свою очередь выдает запрос файловому модулю (сообщение 2М) на запись блока данных. После того как файловый модуль сформирует и запишет этот блок в файл, очереди и счетчики в резервных процессах будут находиться в состоянии, показанном на рис.2. В этот момент каждый дублирующий ТТ-модуль и дублирующий процесс прикладной программы будут иметь в своем счетчике значение 1, хотя дублирующий процесс прикладной программы и дублирующий файловый модуль будут содержать в своих очередях по одному сообщению (1М и 2М соответственно).

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

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

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

Восстановление в случае ошибки

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

Инициируя восстановление, резервный процесс прикладной программы считывает первое сообщение своей очереди (1М) и, подобно тому как это сделал главный процесс некоторое время назад, формирует запрос на запись (здесь он обозначается как 2М', поскольку физически это другое сообщение) для дублирующего файлового служебного модуля. Теперь вступает в действие механизм счетчиков. Поскольку счетчик дублирующего процесса прикладной программы имеет значение больше 0, система «осознает», что сообщение 2М' — это дублирующий запрос записи; вместо повторной записи тех же самых данных система отбрасывает это сообщение и уменьшает значение счетчика (рис.4). Аналогично будет отброшено сообщение 4М', так что значение счетчика дублирующего процесса прикладной программы станет нулевым.

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

Теперь дублирующий процесс прикладной программы читает и обрабатывает третье входное сообщение (5М) и формирует третий блок данных, выдавая запрос на его запись (сообщение 6М). Поскольку система сообщений с очередями и счетчиками видит, что такое сообщение главным процессом ранее не выдавалось (поскольку в счетчике сообщений, выдаваемых соответствующим главным процессом, сейчас 0), это сообщение выдается (главному) файловому модулю, так что третий блок данных записывается на диск.

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

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

Поддержание работоспособности

В любой отказоустойчивой системе целостность и работоспособность системы нарушаются, «если какая-либо ошибка проходит необнаруженной. В МВК модели 4000 имеются механизмы обнаружения ошибок, предотвращающие возможность распространения ошибочной информации по системе в случае необнаруженной ошибки. За работоспособность («здоровье») МВК несет ответственность так называемый «системный доктор» ОС Auros. Он постоянно взаимодействует с каждым микрокомплексом, контролирует состояние последнего и выдает ему запросы на периодическое проведение диагностики. Если микрокомплекс выдает сообщение об ошибке или не выходит на связь, системный доктор инициирует процедуру восстановления.

В дополнение к системному доктору в МВК модели 4000 контролируется четность всех шин адресов, управления и данных, что позволяет обнаруживать однобитовые ошибки. Кроме аппаратного контроля четности в МВК фирмы Autagen предусмотрен контроль средствами операционной системы, когда производится вызов какой-нибудь подпрограммы операционной системы. Эти проверки гарантируют, что операционной системе будут передаваться только действительные параметры.

Высокая производительность

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

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

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

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

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

Переключение с процесса на процесс в МВК модели 4000 осуществляется быстро и занимает минимум ресурсов рабочего процессора. Такое переключение связано с копированием текущего состояния процесса пользователя в определенное место основной памяти. Состояние процесса запоминается в 16 общих регистрах и в восьми регистрах управления памятью. Рабочий процессор может быстро переключаться с процесса на процесс, запоминая и восстанавливая эти 24 регистра. В операционной системе Auros время переключения с процесса на процесс еще более сокращается благодаря тому, что в исполнительном процессоре список подготовленных к выполнению процессов упорядочен по приоритетности. Когда рабочий процессор производит переключение с процесса на процесс, он просто выполняет первую задачу этого списка.

Разработка прикладных программ

В МВК модели 4000 обширный набор утилит для разработки программ, предусмотренный в ОС Unix, дополнен некоторыми средствами, упрощающими взаимодействие пользователя с машиной. В системе имеется пара «художник экрана — администратор экрана», что дает программистам возможность создавать требуемые форматы экрана, просто «вычерчивая» их. «Художник экрана» в диалоговом режиме помогает программисту указывать имена полей, критерии редактирования и видеоатрибуты.

После выхода из «художника экрана» начинает работать «администратор экрана», который формирует программный код, необходимый для воспроизведения и управления экраном. Любые транзакционные прикладные программы на языке Си, Кобол или Паскаль могут использовать сформированный бланк-шаблон экрана, включая простые операторы чтения (READ) и записи (WRITE) для экрана. «Администратор экрана» управляет воспроизведением, редактированием и чтением всех бланков-шаблонов экрана. Если пользователь введет неправильные данные, администратор экрана пометит флажком ошибочное поле и попросит ввести данные заново. В большинстве случаев программный код для подтверждения действительности данных не требуется.

Система управления реляционной базой данных фирмы Auragen под названием Aurelate упрощает разработку программ, освобождая программистов от необходимости задумываться о способах хранения данных в физической памяти. Так называемый Главный языковый интерфейс базы данных Aurelate позволяет программистам использовать справочный язык SQL, похожий на естественный английский, в качестве подъязыка, включенного в главный язык программирования. Предкомпилятор базы данных Aurelate осуществляет предварительную обработку любых программ на языке Си, Фортран или Кобол, где язык SQL используется как интерфейсный подъязык данных. Язык SQL обеспечивает автоматический выбор оптимальных путей доступа к данным.

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

Дочерние статьи:

Повышение надежности и скорости файловой системы Unix

Схемы синхронизации процессоров

Выходные данные:

Журнал "Электроника" том 56, No.22 (678), 1983г - пер. с англ. М.: Мир, 1983, стр.62

Electronics Vol.56 No.22 November 3, 1983 A McGraw-Hill Publication

Sam Glaser. Enhanced version of Bell Labs' Unix serves fault-tolerant multiprocessor system, pp.145—149.

Раздел: МЕТОДЫ, СХЕМЫ, АППАРАТУРА

Тема:     Операционная система Unix





Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/OS/Unix/D19831103Elc039.shtml