В работе [1] был опубликован прогноз на десять лет развития ОС для традиционных устройств: ПК, серверов и встроенного оборудования. Однако интерес представляет и более широкий круг программно-конфигурируемых виртуализованных и невиртуализованных устройств всех размеров — от носимых компьютеров до кластеров самых разных областей применения, от умного дома до умного города. Все ОС для таких устройств, хотя и могут различаться внешне, реализуют виртуализацию ресурсов и программируемость функций — общие принципы, лежащие в основе программно-конфигурируемых сетей [2], систем хранения и ЦОД. Так же, как традиционная ОС управляет аппаратной системой с помощью программных абстракций и обеспечивает поддержку выполнения приложений, ОС будущего обеспечат программно-конфигурируемые возможности для новых технологий. Таким образом, по сути программно-конфигурируемая сеть — это операционная система для сетевого оборудования, а программно-конфигурируемое облако — это облачная ОС. Назовем такие операционные системы повсеместными (Ubiquitous OS, UOS).

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

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

Повсеместные операционные системы

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

Идея ОС для Интернета возникла в середине 1990-х во время конкурентной борьбы между Microsoft и Netscape, приведшей к появлению первых инструментов и интерфейсов программирования для веб-приложений. С тех пор предлагалось немало реализаций ОС для Сети: JavaOS, Chrome OS и др. — которые обладают встроенными возможностями обработки онлайн-данных на географически распределенных системах или виртуальных машинах и предоставляют те или иные сервисы через интернет-соединения. Эти «операционные метасистемы» нередко работают поверх традиционных ОС, обеспечивая поддержку веб-приложений и сервисов.

Программно-конфигурируемый подход

Термин «программно-конфигурируемый» относится к семейству технологий, включая программно-конфигурируемые сети, системы хранения и ЦОД, обобщенно обозначенных аббревиатурой SDX (от software-defined everything). В программно-конфигурируемой системе аппаратные ресурсы могут быть виртуализованными и контролироваться компонентами ОС или слоем управления, а пользователи могут писать программы доступа и управления сервисами, предоставляемыми виртуализованными ресурсами.

Те же возможности предоставляются и обычными ОС. В частности, Linux и Windows обеспечивают виртуализацию аппаратных ресурсов с помощью драйверов, а поддержку разработки и выполнения приложений — посредством пакетов SDK и библиотек. Мобильные ОС вроде Android предоставляют дополнительный программно-конфигурируемый слой с абстракциями более высокого уровня для мобильных приложений, в том числе средства управления мобильными данными (контактами, сведениями геолокации), наборы API для разработки и библиотеки для поддержки выполнения приложений. При этом ОС, работающие как на малых устройствах (например, TinyOS), так и на огромных кластерах (облачные ОС), обеспечивают виртуализацию ресурсов и программируемость функций. Иными словами, любая «программно-конфигурируемая система» — это попросту ОС для соответствующей технологии. В программно-конфигурируемой сети, например, управляющий уровень обеспечивает возможность разработки высокоуровневых приложений для управления сетевыми функциями, а уровень данных виртуализует сетевые ресурсы.

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

Повсеместные ОС

Больше четверти века тому назад Марк Вейзер, научный руководитель Xerox PARC, предложил концепцию повсеместных вычислений. В то время идея показалась нереалистичной, но сегодня с появлением Интернета вещей она воплощается в жизнь. Повсеместными становятся и операционные системы — новый тип ОС для программно-конфигурируемого мира, в котором ПО используется для управления всеми сторонами жизни людей.

ОС для WWW. Это Linux-подобные среды на основе браузерных движков, позволяющие выполнять приложения и управлять их данными: Firefox OS, Chrome OS, eyeOS, YouOS и G.ho.st.

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

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

ОС для города. Существует ряд инициатив по созданию ОС для умного города, и один из таких проектов — Living PlanIT Urban Operating System. Эта ОС предоставляет абстракции и интерфейсы для управления электро- и водоснабжением, вывозом ТБО, транспортом, связью, а также интерфейсы программирования, обеспечивающие интероперабельность различных платформ.

Облачные ОС. Концептуально облачная ОС выполняет те же функции, что и традиционная, — управляет приложениями и оборудованием, но в масштабе облака, заменяя файловые системы на объектное хранилище и обеспечивая практически безграничную емкость хранения и пропускную способность. Вместо управления процессами на физических машинах облачная ОС управляет задачами на виртуальных машинах, и, что более важно, она предлагает различные API использования ресурсов облака. Многие операторы облачных сервисов создали собственные облачные ОС: Microsoft Azure, Amazon Web Services, Huawei Fusion Sphere и т. п. Существуют облачные ОС с открытым кодом: OpenStack и Apache CloudStack.

ОС для Интернета вещей. В Google разработали Android Things (Brillo) — встраиваемую ОС для маломощных устройств Интернета вещей с ограниченной емкостью памяти, использующую интерфейсы программирования Android и сервисы Google.

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

На рис. 1 показана общая архитектура UOS, реализующих основные концепции: виртуализацию ресурсов и программируемость функций с расчетом на «повсеместные» сценарии:

  • Абстракции для управления ресурсами. Такие абстракции в UOS подобны драйверам традиционных ОС, но они обеспечивают виртуализацию более широкого круга ресурсов. Кроме того, пользователям и приложениям предоставляются API для доступа к виртуализованным ресурсам. Например, UOS для социальной сети управляет пользовательской информацией и отношениями, а также следит за действиями и коммуникациями пользователей.
  • Поддержка разработки и выполнения повсеместных приложений. UOS предоставляет API, модели программирования, библиотеки и средства разработки приложений подобно традиционным ОС, но работает на более высоком уровне, так как повсеместные приложения выполняются поверх UOS, которая, в свою очередь, работает поверх традиционных ОС вроде Linux и Windows. Основное отличие в том, что UOS рассчитана на поддержку приложений сторонних разработчиков, тогда как нынешнее ПО обычно опирается на проприетарный уровень в системе.

Перпективы UOS

UOS могут использоваться для самых разных объектов, как реальных, так и виртуальных, включая традиционные ИТ-системы (рис. 2).

Повсеместные операционные системы
Рис. 2. Категории UOS

Концепция UOS базируется на трех принципах:

  • UOS могут масштабироваться для систем любого масштаба, вплоть до распределенных по нескольким континентам, и в перспективе смогут поддерживать практически все системы, как унаследованные, так и будущие. UOS также могут создаваться для приложений нового типа — например, для работы с большими данными и основанными на нейросетевых технологиях.
  • UOS может быть создана для любого объекта (системы объектов) физического мир. Смысл повсеместных вычислений — вывести возможности ИТ за рамки традиционных систем, чтобы делать предметы «умнее» и обеспечить поддержку их программирования, для чего и потребуется UOS. Роботы уже имеют собственные ОС, а для всей техники умного дома потребуется операционная система, обеспечивающая программируемость. Понадобится ОС и для всех подвижных объектов.
  • UOS может быть создана для любого объекта виртуального мира. ОС можно реализовать для объектов в конкретной области применения. Например, организации различных типов и размеров, включая семьи, предприятия и государственные ведомства, можно снабдить программно-конфигурируемыми возможностями управления персоналом, информацией, расписаниями и запасами.

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

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

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

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

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

Существующие языки высокого уровня, такие как Си, C++ и Java, рассчитаны на традиционные компьютеры, а чтобы можно было разрабатывать эффективные приложения для UOS (скажем, для ОС предприятия), потребуются новые домен-специфичные языки.

Прототип UOS

Интернет-приложения нового типа, характеризующиеся автономностью, взаимодействием, ситуационным выполнением, возможностью развиваться и надежностью, получили название Internetware. Такие приложения состоят из набора программных объектов, распределенных по Сети, и набора коннекторов, обеспечивающих различные виды взаимодействия. Реагируя на динамическое изменение среды выполнения, программные объекты адаптируются к ним, изменяя свои структуры и поведение. В рамках исследовательского проекта сегодня разрабатываются ОС для Internetware, включающие ряд программно-конфигурируемых технологий. Ядро ОС предоставляет абстракции для управления облачными и граничными ресурсами, а слой фреймворка приложений поддерживает приложения для различных областей применения, в том числе корпоративных сред, мобильных устройств и данных в виде сервиса (Device as a Service, DaaS). В таких ОС приложение работает поверх существующих аппаратных систем, в том числе облачных и граничных устройств.

YanCloud. ОС для частных облаков, поддерживающая все существующие гипервизоры (Xen, VMware и KVM) и предоставляющая программно-конфигурируемые возможности для систем управления облаком. Используется такими компаниями, как Lenovo и Founder.

CampusOS. Прототип ОС для поддержки интернет-приложений университетских кампусов, позволяющая управлять ресурсами, а также данными студентов и преподавателей, курсовыми расписаниями и мероприятиями.

YanDaaS. ОС для управления данными и обмена между унаследованными программными системами, объединяющая изолированные унаследованные системы и приложения путем автоматизированного создания API и разработки новых приложений без унаследованного исходного кода. YanDaaS развернута в сотнях промышленных систем в рамках китайской государственной программы умного города.

***

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

Литература

  1. D. Milojicic, T. Roscoe. Outlook on Operating Systems // Computer. — 2016. Vol. 49, N. 1. — P. 43–51.
  2. N. McKeown et al. OpenFlow: Enabling Innovation in Campus Networks // ACM SIGCOMM Computer Communication Rev.— 2008. Vol. 38, N. 2. — P. 69–74.

Хун Мэй (meih@pku.edu.cn) — профессор, Яо Го (yaohuo@pku.edu.cn) — профессор, лаборатория высоконадежных программных технологий Пекинского университета.

Toward Ubiquitous Operating Systems: A Software-Defined Perspective, Hong Mei and Yao Guo, IEEE Computer, January 2018, IEEE Computer Society. All rights reserved. Reprinted with permission.