От OSF/1 к Digital UNIX
Ключевые особенности Digital UNIX
Заключение

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

Сегодня Digital UNIX - это:

  • двоичная совместимость по всему семейству процессоров Alpha - от маленькой рабочей станции до 114-процессорного кластера, от одноплатной машины реального времени до высоконадежной системы хранения и анализа информации и поддержки принятия решений;
  • стабильность. Digital UNIX имеет все возможности 64-разрядных ОС с самого начала поставок - с 1993 года. Это, в свою очередь, обеспечивает отсутствие миграций, исключает необходимость смены или коренной модификации приложений, а также проблемы с обучением персонала. В конечном итоге - это сохранение инвестиций в информационные технологии;
  • реализация в рамках одной операционной системы стандартов BSD (Berkley Software Distribution) и System V (SVD2, SVD3);
  • защита информации - уровни защиты по классам C2 и B1;
  • широкий диапазон сетевых возможностей. Digital UNIX поддерживает работу по сетевым протоколам TCP/IP, DECnet/OSI, SNA и X.25, а также работу в PC LAN по ставшими уже стандартом де-факто протоколам NetBEUI и IPX/SPX;
  • поддержка сетевых устройств FDDI, ATM, Ethernet, Fast Ethernet, а также обеспечение возможности работы по протоколам PPP и Slip;
  • ОС реального времени, удовлетворяющая требованиям стандарта POSIX 1003.1b;
  • полный спектр программных средств для поддержки разработки и отладки приложений, создаваемых как для однопроцессорных машин, так и для SMP-систем и кластеров.
  • Digital UNIX обладает уникальными кластерными возможностями - системы TruCluster, основанные на технологии Memory Channel, решают задачу одновременного увеличения скорости работы приложений и повышения надежности систем таким образом, что выход из строя любого элемента системы не приводит к потери работоспособности всего комплекса. Возможности кластеров с системой Digital UNIX по наращиванию производительности были продемонстрированы при установке рекорда по тестам TPC-C: 3090 tpm (305 $/tpm) на базе Oracle Parallel Server.

    ОС Digital UNIX не только соответствует всем требованиям промышленных стандартов (X/OPEN Unix 95 [SPEC 1170] [для версии 4.0], X/OPEN Unix 93 [для версии 3.2], POSIX 1003.1 a [System API], POSIX 1003.1 b [Real time], POSIX 1003.1 c [Потоки], POSIX 1003.2 [Commands and Utilities], BSD 4.3/4.4, SVID2 & SVID3, ...), но и является основой для стандарта 64-разрядного интерфейса приложений LP64. Возможности построения высокопроизводительных интегрированных систем обеспечиваются совокупностью программных средств для поддержки следующих решений:

  • транспортного уровня для создания вычислительных сетей, как локальных, так и распределенных (TCP/IP, DECnet/OSI, IPX/SPX, X.25, NetBEUI);
  • поддержки распределенных файловых систем - NFS, DCE-DFS, PATHWORKS for LAN Manager и PATHWORKS for NetWare;
  • функционирования почтовых систем и пользовательских систем типа клиент-сервер, созданных с помощью таких средств, как LinkWorks, DCE, Object Broker (Corba), Mailbus 400;
  • дисковых подсистем (LSM - Logical Storage Manager, AdvFS - Advanced File System, NSR - Network Save and Restore, HSM - Hierarchical Storage Manager).
  • От OSF/1 к Digital UNIX

    Операционная система Digital UNIX (ранее известная как DEC OSF/1) была разработана Digital Equipment с использованием кодов операционной системы OSF/1 Open Software Foundation версий OSF/1 R1.0, OSF/1 R1.1 и OSF/1 R1.2. Смена имени операционной системы с DEC OSF/1 на Digital UNIX обусловлена получением в начале 1995 года лицензии консорциума X/Open на соответствие требованиям X/Open Unix 93. В свою очередь, Digital UNIX V4.0 имеет лицензию на соответствие требованиям X/Open Unix 95 (стандарт Unified Unix - COSE SPEC 1170).

    Open Software Foundation была основана в конце восьмидесятых годов группой ведущих поставщиков программного обеспечения и вычислительной техники при участии DIGITAL. Ныне вкладчиками этого консорциума являются несколько сотен компаний и корпораций. OSF - это независимая бесприбыльная научная организация, направляющая свои усилия на создание технологии для открытых вычислений, обеспечивающей системам и приложениям условия для взаимодействия и работы вне какой-либо зависимости от применяемых аппаратных средств и типов операционных систем. Технологии, отбираемые и развиваемые OSF в рамках программы RFT (Request for Technology), по мере поступления запросов и предложений на разработку от промышленности, комитетов по стандартизации и т. п., воплощаются в программные продукты. Примером разработки такого рода, а именно развития Unix-систем на основе накопленного опыта и максимального соответствия формальным и неформальным стандартам, стала операционная система OSF/1.

    Первая версия ОС OSF/1 R1.0 была построена на базе ядра Mach 2.5, разработанного в университете Корнеги Меллон, и использования кодов BSD (Berkeley Software Definition) версии 4.3 (Reno). OSF/1 отвечала требованиям POSIX 1003.1 (System API), XPG3 (X/Open Portable Guide issue 3), SVID2 (System V Interface Definition issue 2), использовала графический интерфейс MIT X11R5 и OSF Motif 1.1.3. С точки зрения разработчика, выбор ОС OSF/1 в качестве отправной точки для построения новой операционной системы был весьма оправдан. Действительно:

  • четкая модульная структура ядра OSF/1, основанного на технологии Mach, значительно облегчает процесс модификации ОС по сравнению с процессом внесения изменений в традиционный монолитный Unix, в котором различные подсистемы "проросли" друг в друга, и добавление, скажем, нового типа файловой системы влечет за собой модификацию ядра;
  • OSF/1 изначально включает в себя черты как BSD, так и System V;
  • сетевой интерфейс OSF/1, соответствующий стандарту XTI (X/Open Transport Interface), также включает в себя и streams (System V), и sockets (BSD);
  • есть указания на то, где и как помечать области оперативной памяти (locks), уже обрабатываемые одним из процессоров в архитектуре SMP;
  • имеются примеры того, как реализовать систему с гарантированным временем выхода из ядра ОС при приоритетном прерывании (pre-empted kernel) для работы приложений в режиме реального времени;
  • в основе OSF/1 лежат не процессы, как в традиционном Unix, а потоки - нити исполнения, которые принесло с собой ядро Mach 2.5. Нить исполнения - это небольшая область памяти: стек и регистры CPU. Внутри одного процесса, в том числе внутри ядра, может работать сразу множество нитей - каждая на своем процессоре. Наличие под уровнем традиционных процессов уровня нитей исполнения программы (потоки) позволяет облегчить разработку SMP-систем и систем реального времени.
  • В марте 1992 года для основных поставщиков и разработчиков программного обеспечения была выпущена версия DEC OSF/1 V1.0 на базе RISC - рабочих станций DECstation. Версия включала в себя компилятор ANSI C и была совместима с ОС ULTRIX для облегчения переноса программных продуктов на новую платформу. В ноябре 1992 года вышел первый официальный вариант DEC OSF/1 V1.2 для работы на вычислительных машинах семейства AlphaGeneration, также адресованный разработчикам программного обеспечения. Это был первый промышленный вариант полностью 64-разрядной операционной системы. Благодаря высокой степени соответствия стандартам перенос приложений на новую платформу оказался легче, чем ожидалось. С марта 1993 года пользователи начали получать версию DEC OSF/1 V1.3. Таким образом, за два года с момента начала разработки на базе OSF/1 была выпущена новая 64-разрядная промышленная операционная система. Версии 1.3A и 1.3B обеспечивали поддержку новых типов вычислительных машин на базе процессора Alpha.

    Новое качество операционная система OSF/1 обрела с выпуском версии 2.0 в марте 1994 года. В частности, в OSF/1 V2.0 появилась поддержка уровня защиты по классу C2, новой журнальной файловой системы Polycenter Advanced File System, системы управления дисковыми массивами Logical Storage Manager. Кроме того, эта ОС стала соответствовать требованиям XPG4 (X/Open Portable Guide issue 4) и обеспечивать поддержку System V Environment.

    Следующий шаг был сделан при выпуске новой версии 3.0 в августе 1994 года. Ее отличительной особенностью является поддержка архитектуры SMP для многопроцессорных вычислительных машин. Последовательное развитие этой версии, поддержка новых типов процессоров и периферийных устройств, расширение функциональности выразились в появлении новых модификаций операционной системы Digital UNIX V3.2A - V3.2G. С марта 1996 года поставляется V4.0. Ее главные качества - повышенная скорость работы, расширение функциональности, уменьшение размера занимаемого дискового пространства. Она содержит новый графический интерфейс пользователя для интерактивного управления ресурсами операционной системы. В этот набор входят конфигурационные утилиты для таких подсистем, как bind, nis, nfs, подсистемы инсталляции программного обеспечения. По данным компаний D. H. Brown и Illuminata, с выходом версии 4.0 система Digital UNIX занимает или делит первое место среди Unix-систем по рейтингу функциональности как для коммерческих, так и для технических областей применения. Сегодня поставляется модификация Digital UNIX V4.0B.

    Ключевые особенности Digital UNIX

    64-разрядная архитектура. Все регистры процессора Alpha имеют 64 разряда, но это само по себе еще не обеспечивает такую же разрядность операционной системы в целом. Действительно, NT - неплохая 32-разрядная система, работающая и на процессоре Alpha. В Digital UNIX, если рассматривать операционную систему с точки зрения языка Си, переменные char - 1 байт, short - 2 байта, int - 4 байта, long - 8 байт, а указатель хранится в 8 байт памяти и обрабатывается в 64-битных регистрах процессора.

    Выход за пределы 32-битной адресации - самая яркая особенность операционной системы Digital UNIX. Преодолено характерное для классических Unix-систем ограничение в 2 Гбайт на размеры оперативной и виртуальной памяти, размеры файловой системы и собственно файлов. Обеспечена возможность линейной, без сегментации, адресуемости оперативной и виртуальной памяти в огромном адресном пространстве, значительно выходящем за этот предел. Так, AlphaServer 8400 может иметь до 28 Гбайт оперативной памяти. Каждый процесс в операционной системе Digital UNIX может захватить до 241 байт виртуального адресного пространства.

    Кто же и как может использовать эти новые возможности? Тот, кто нуждается в большой оперативной и виртуальной памяти: географические информационные системы, видеосерверы (хранение и анализ видеопродукции, мгновенная выдача заказчику видеоинформации), здравоохранение (информационные базы данных, анализ рентгеновских снимков), наука и проектирование. В качестве примера использования новых возможностей, которые обеспечивает 64-разрядная адресация, можно привести основных потребителей вычислительных ресурсов в мире - серверы баз данных. Их разработчики быстро оценили те преимущества в быстродействии, обеспечиваемые огромным пространством в оперативной памяти вычислительной машины, - это возможность организовать кэширование данных с дисков в таких масштабах, о которых прежде можно было только мечтать. Появившиеся 64-разрядные версии Oracle, Informix, Adabas, Oracle RDB, Progress продемонстрировали увеличение скорости обработки запросов к базам данных в десятки раз. Допустимые размеры файлов и файловых систем в Digital UNIX также далеко выходят за рамки старых ограничений в 2 Гбайт. Для Network File System (NFS) и журнальной файловой системы Advanced File System (AdvFS) это 264 байт. Размеры традиционной файловой системы Unix File System (UFS) не должны превышать 241 байт. Максимальный размер каждого неформатированного дискового массива в Digital UNIX равен 1 Тбайт.

    Механизм виртуальной памяти. Подсистема виртуальной памяти обеспечивает ОС возможность работы с большим объемом памяти, чем имеется физически. Реализация этого механизма состоит в том, что наиболее редко используемые страницы, находившиеся в оперативной памяти, записываются на диск и освобождают пространство в оперативной памяти. По мере необходимости происходит подкачка нужных страниц с диска в память. Прямое повторение механизма определения физического адреса по виртуальному, применяемого в 32-разрядных системах, когда каждый процесс имеет одну таблицу адресов физических страниц, по которой проводится пересчет виртуального адреса в физический, для 64-разрядных систем невозможно - размер этой таблицы становится невероятно большим. В Digital UNIX реализована трехуровневая система хранения адресов физических страниц и определения физического адреса по виртуальному. Она позволяет получить 243 байт общего адресного пространства. И из 64 бит адреса система использует 43 младших бита (10 + 10 + 10 + 13 бит). Адресное пространство, закрепленное за ядром операционной системы и адресуемое физически, составляет 241 байт. Таков же и размер виртуального адресного пространства ядра операционной системы, и максимальный размер виртуального пространства каждого процесса пользователя. Размер страницы оперативной памяти выбран равным 8 Кбайт, что соответствует 13 битам адреса. Собственно операционная система может работать и со страницами большего размера (16, 32, ... Кбайт), что позволяет раздвинуть границы адресуемого пространства путем простого увеличения размера страницы. Конкретная величина размера страницы памяти зависит от аппаратной реализации и передается операционной системе при старте.

    Алгоритмы подкачки. В том случае, когда страница памяти, содержащая адрес, запрашиваемый процессом, не находится в оперативной памяти, а "сброшена" на диск, или же при первоначальном выделении некоторой области виртуальной памяти в работу вступает собственно подсистема виртуальной памяти. Она может работать в двух режимах: Lazy или Eager. Работу первого режима можно охарактеризовать лозунгом: "Не делай ничего такого, от чего быть может потом придется отказаться". Эта подсистема пришла из OSF/1, лозунг же - из микроядра Mach. Вторая, более изощренная система подкачки пришла из операционной системы Ultrix. Здесь следует отметить, что модульность ядра OSF/1 и Digital UNIX (DEC OSF/1) позволяет достаточно легко заменять отдельные подсистемы. Их основное различие состоит в том, что подсистема виртуальной памяти, работающая в режиме Eager, при запросе на выделение некоторой области виртуальной памяти сразу резервирует необходимое для нее место на диске в swap-области. Режим работы виртуальной памяти Lazy предполагает, что заранее, до момента сброса этих страниц из оперативной памяти на диск, резервировать это пространство в swap-области не следует. Системный администратор может выбрать наиболее подходящий режим работы (Lazy или Eager) в зависимости от типа решаемых на вычислительной машине задач.

    Работа подсистемы виртуальной памяти в каждом из этих двух режимов на самом деле является взаимодействием двух конкурирующих механизмов - систем paging и swapping. Swapping - сброс всей памяти, занятой определенным процессом, на диск - является механизмом работы операционной системы в условиях острого недостатка свободных страниц оперативной памяти. Поскольку процессор в этом случае часто вынужден ожидать окончания операции с диском, производительность системы сильно снижается. Штатным для Digital UNIX режимом работы является paging. В этом случае работает механизм избирательного сбрасывания страниц из оперативной памяти на диск, позволяющий поддерживать высокую скорость работы как приложений, так и операционной системы. Следует отметить, что наличие качественной подсистемы paging - важная особенность Digital UNIX, ведь именно благодаря этому механизму достигается высокая "эластичность" операционной системы.

    Unified Buffer Cache. Помимо подсистемы виртуальной памяти за "обладание" страницами физической памяти борется подсистема Unified Buffer Cache (UBC), осуществляющая буферизацию работы с файловыми системами. В зависимости от типа нагрузки на вычислительную машину: работает ли она файловым сервером или выполняет в основном вычислительные задачи, динамически изменяется и область оперативной памяти, отведенная под UBC. Максимальная и минимальная границы области изменения UBC определяются в файле /etc/sysconfigtab системным администратором и при перезапуске машины могут быть изменены.

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

    Наиболее существенный момент при создании математического обеспечения для многопроцессорных вычислительных машин - сбалансированность соотношения времени доступа к оперативной памяти, внешнему кэшу и скорости процессора. Этим определяется, в конечном итоге, время простоя процессора при ожидании разрешения на доступ к системным ресурсам, а значит, и эффективность реализации параллельных вычислений на SMP-системах в целом. Если не проведена чрезвычайно тонкая работа по оптимизации математического обеспечения, то попытка увеличить скорость работы отдельных приложений или всей операционной системы не приведет к желаемому результату - линейному увеличению скорости выполнения задач при росте числа процессоров в системе. В некоторых случаях может происходить даже потеря скорости. Учет всех временных факторов в такой ситуации заранее прогнозировать практически невозможно, поэтому для организации эффективной работы SMP-систем необходим именно тот компьютер, для которого все это создается, или, по крайней мере, система с близким соотношением скорости процессора и скорости доступа к оперативной памяти. Так, первые многопроцессорные модели DEC 7000 на базе Alpha-процессоров были созданы до появления первой SMP-версии операционной системы OSF/1. На них она собственно и создавалась (DEC OSF/1 V3.0).

    Необычайно актуален также выбор частей операционной системы, отдача от распараллеливания которых будет максимальна. Также важно определение тех подсистем, распараллеливать которые не стоит. Отказ от распараллеливания получил название funnelling. Типичные примеры использования этого приема - утилита reboot и файловая система CDFS, работающая с CD-ROM.

    Потоки. Как уже неоднократно отмечалось, отправной точкой при разработке операционной системы для процессора Alpha отнюдь не случайно стала операционная система OSF/1 Open Software Foundation, базирующаяся на микроядре Mach 2.5, основанном на потоках исполнения. Поток представляет собой структуру в памяти машины: стек и содержимое регистров процессора. Традиционный процесс также присутствует в OSF/1 и в Digital UNIX, но он уже ссылается на набор принадлежащих ему потоков исполнения и описывает структуры памяти данной задачи. Ближайший аналог потокам исполнения, существующий практически на любой вычислительной машине, - пара функций языка Си: setjmp() и longjmp().

    Locks. Синхронизация доступа каждого потока исполнения к разделяемым ресурсам осуществляется с помощью меток-"защелок" (lock). Если имеется несколько потоков исполнения, конкурирующих между собой за доступ к определенному ресурсу, например к конкретной области в оперативной памяти, то для обеспечения согласованности работы они должны помечать эту область как занятую перед началом работы с ней и снимать метку lock по завершении операции. Существует несколько способов ставить метки. В простейшем варианте (Simple Lock) поток, поставив свою метку, просто осуществляет циклическую проверку на предмет отсутствия ранее установленных меток. Процессорное время до момента снятия чужой метки расходуется вхолостую. Поэтому в Digital UNIX существуют и другие типы меток, допустим mutex и рекурсивный mutex. Основная их особенность состоит в том, что данный поток в случае, когда необходимая ему область памяти уже занята, просто "засыпает" на некоторое время, освобождая процессор для выполнения других операций. Рекурсивный mutex предусматривает дополнительную проверку с тем, чтобы поток, захвативший искомый ресурс, не дожидался снятия своей собственной метки при попытке обратиться к тому же самому ресурсу после выполнения ряда рекурсивных операций.

    "Теплый кэш", управление очередями. Чрезвычайно важный момент для повышения скорости работы системы - наличие "теплого кэша" на данном процессоре для данного потока исполнения. Действительно, при переходе потока исполнения на другой процессор его кэш должен загрузить в себя область оперативной памяти, с которой работает данный поток исполнения. Эта особенность привела к созданию в ядре операционной системы специальных средств, которые (при прочих равных обстоятельствах) гарантируют, что очередной квант времени данный поток проведет на том же процессоре, где она была до этого. Кроме того, специальные утилиты ОС позволяют системному администратору в процессе работы создавать множества процессов и процессоров с тем, чтобы "привязать" определенные процессы к их "собственным" процессорам. Для предотвращения ситуации dead lock предполагается, что приоритетным правом на захват ресурса обладают процессоры с меньшим порядковым номером. Аппаратные прерывания перехватываются нулевым процессором и уже потом передаются для обработки остальным процессорам.

    Кластеры, Memory Channel. Борьба за качество операционной системы и расширение ее функциональных возможностей не является, естественно, самоцелью. Все это делается ради повышения скорости и надежности работы приложений пользователя. Дальнейшее наращивание (сверх возможностей SMP) вычислительной мощности требует использования в той или иной мере MPP-подхода, создания кластера из отдельных одно- или многопроцессорных машин. Таким кластером и стали системы Production Server и Compute Server семейства TruCluster на базе Digital UNIX. Для обеспечения межкластерных коммуникаций Digital использует технологию Memory Channel, впервые разработанную корпорацией Encore. Скорость межмашинного обмена по такому каналу может достигать 100 Мбайт/с. Но самая главная особенность этой технологии - малое время задержки при установке одним из компьютеров кластера метки lock на некоторый выделенный ресурс - менее 5 мкс.

    Сама логика организации системы синхронизации доступа к разделяемым ресурсам в кластере является общей практически для всех систем такого типа. Эта система синхронизации носит название DLM - Distributed Lock Manager. Существует множество реализаций MPP-систем и собственно каналов межкластерного взаимодействия. В таблице 1 дана оценка времени задержки (latency), а также пропускной способности межкластерного канала, характерных для разных типов вычислительных кластеров.

    Таблица 1.

    Тип
    Пропускная способность
    Задержка
    сетевые устройства (network cluster)
    1Мбайт/с (Ethernet), 10Мбайт/с (FDDI), 15Мбайт/с (ATM)
    > 150 мкс
    IBM SP2 (Vulcan switch)
    35 Мбайт/с
    ~ 40 мкс
    Memory Channel Cluster
    35-100 Мбайт/с
    2 ~ 5 мкс
    Shared system bus (SMP)
    > 500 Мбайт/с
    < 0,5 мкс

    Особенность систем Production Server и Compute Server семейства TruCluster, использующих технологию Memory Channel, - малое время задержки при установке "защелки" (lock), поскольку при одновременной работе приложения на нескольких вычислительных машинах требуется передать огромное количество коротких (несколько десятков байт) сообщений Distributed Lock Manager. Благодаря этому удается осуществить распараллеливание работы приложений на разных узлах кластера. Так, корпорации Oracle и Digital объявили о показателях TPC-C: 30390 tpm (305 долл./tpm) при работе Oracle Universal Server на кластере из четырех компьютеров Alpha- Server 8400, соединенных шиной Memory Channel (32 процессора, 32 Гбайт оперативной памяти в одном кластере).

    Заключение

    Digital UNIX является зрелой 64-разрядной операционной системой, объединяющей в себе реализации BSD и System V и удовлетворяющей общепринятым стандартам. Созданная на основе микроядра Mach и операционной системы OSF/1 Open Software Foundation, она получила сертификат о соответствии стандартам X/Open Unix 93 и X/Open Unix 95. Обладая мощным механизмом виртуальной памяти, кластерными возможностями, системой Real Time и механизмом построения многопроцессорных систем, она является хорошей средой для разработки и выполнения высокопроизводительных и ответственных приложений.