`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Андрей Зубинский

Синтезируемая экзоядерная ОС как сервис

+44
голоса

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

Дальше, увы, текста будет много, зато без картинок )

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

Вот и ещё одна «трудная новизна», из той же «оперы».

Сразу придётся предупредить – я ни в коем случае не «пропагандирую» всё, о чём будет идти речь далее (и даже не буду скрывать где и что меня смущает). Но и интересности явления не отвергаю.

Начнём издалека. Буквально на днях корпорация Microchip объявила о пополнении списка своих сторонних партнёров со статусом «Premier» небольшой компанией Ziedman Technologies. И, так как само событие очень трудно назвать незаурядным, и с учётом фона (Microchip как раз пребывает в шумной стадии приобретения Atmel, сделка временно задерживается решением… Министерства Обороны Франции, потому что Atmel является поставщиком радиационно стойких компонентов), об этом почти никто не слышал. Восполняю пробел, так как Zeidman предлагает нечто новое и, как идею, весьма интересное. Правда, придётся выдержать вынужденное отступление.

«Встраиваемые системы» где-то с прошлого года становятся полноценной отраслью IT, частично IoT hype в этом и заключается. И специфика мира «встраиваемых систем» тоже перестаёт быть тайной, тем более, что громадных отличий от «настольного» и «серверного», в ней нет. К этой специфике относятся и операционные системы. Не буду вдаваться в их принципиальные отличия (в конце концов, даже хорошая RTOS с плохо написанной "прикладной" программой на практике ничего от особенностей «систем реального времени» не оставляет).

В контексте интереснее способы распространения и развёртывания (deployment) ОС для встраиваемых систем. Их всегда было несколько. Традиционный в мире IT, при котором ОС является «черным ящиком» в машинных кодах, в мире встраиваемых систем тоже распространён (с защитой от реверс-инжиниринга лицензионным соглашением). Но сообщество разработчиков по ряду очевидных причин предпочитает Open Source, когда ОС поставляется в исходных текстах. Есть и гибридный способ, когда, например, ядро (микроядро) ОС – «черный ящик», а сервисы и библиотеки – Open Source (или наоборот, бывает всякое).

Были попытки «уложить» эти схемы распространения и развёртывания ОС в формат web-сервисов (причём одна попытка была сделана совсем недавно, по-моему, я об этом уже писал, ОС для IoT Wind River).

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

В Ziedman Technologies попробовали посмотреть на задачи распространения, развёртывания и разработки встраиваемого ПО как на нечто цельное. Выделили из всех упрятанных за каждой задачей ключевые фрагменты функциональности так, чтобы как можно дальше отдалиться от особенностей конкретной встраиваемой системы (включая всё, что относится к архитектуре вычислителя), но сохранить самое важное для работоспособности результирующей системы – поддержку и реализацию concurrency (специально не перевожу, чтобы не искажать смысл, потому что «concurrency is not parallelism» © Роб Пайк).

Радикальным изменением при таком подходе стало… отсутствие ОС в традиционном её понимании. Операционной системы, как единой распространяемой и развёртываемой сущности, больше нет. Её функциональность автоматически формируется на основе кода «прикладного» программиста и «размазывается» автоматической генерацией кода по всей результирующей встраиваемой программе (условно говоря, это можно назвать экзоядром). При этом программист почти полностью освобождается от ответственности за любые механизмы синхронизаций доступа к общим ресурсам и от прочих нюансов, а система генерации дополнительного кода следит за возможными неприятностями (гонками, дедлоками etc, обо всё этом – далее).

О механизмах, реализующих эти процессы, известно только самое важное – они работают, на уровне идей они в чём-то похожи на языки моделирования и синтеза аппаратных средств (VHDL etc), и, наконец, что в реализации используется ANTLR (очень старый, очень мощный «швейцарский нож» чуть ли не для всего, что связано с генерацией программ распознавания языков, описанных формальными грамматиками).

У Ziedman Technologies есть даже патентный портфель, защищающий всё перечисленное, но патенты делали очень опытные поверенные (что неудивительно, учитывая историю основателя компании – он много лет занимался в том числе консалтингом и анализом программ в юридических тяжбах, связанных со спорами из-за кода), так что реально полезной информации из него выудить трудно.

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

Но политика Ziedman Technologies (система стала полностью бесплатной и сгенерированный код не требует роялти) в сочетании с поддержкой мощного производителя популярных микроконтроллеров, могут всё изменить.

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

Теперь можно и о сути. Это не так просто, как кажется, потому что SynthOS (сервис? система? подход к разработке? инструмент?), несмотря на «OS» в названии, совершенно нетривиальна.

На самом высоком уровне работа с SynthOS выглядит так – вы изучаете руководство, регистрируетесь на сайте сервиса, чем хотите, где хотите и как хотите (естественно, с учётом правил сервиса) пишете свой код на языке С и готовите отдельный файл описания кода (единственный с фиксированным именем - project.sop). Если вы считаете, что всё сделано – дальнейшие действия незначительно зависят от используемой вами рабочей ОС. Вы или создаёте сетевой накопитель (ОС Windows), или отдельный каталог (Unix-подобные ОС). В первом и втором случае надо создать два каталога (подкаталога) с именами «in» и «out». В каталог с именем «in» скопировать свои рабочие файлы, смонтировать с помощью протокола WebDAV накопитель или созданный каталог верхнего уровня с URL сервиса и нажать единственную кнопку Run на странице сервиса. В подкаталоге «out», соответственно, появятся модифицированные исходные тексты со всем недостающим, что вместе с вашим приложением образует работающую систему реального времени. Из совсем нетривиального – так как SynthOS работает на уровне исходных текстов на языке С, то вся ответственность за «прямое низкоуровневое использование целевой платформы» лежит сугубо на программисте, указание точного названия целевой платформы в файле project.sop имеет сугубо информационный характер.

О специфике разработки в SynthOS, в силу непрофильности нашего издания, много не напишу. Но назову её «предельным минимализмом программирования систем реального времени, в том числе и для сверхмалых вычислителей без подсистем управления памятью (MMU)».

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

Например, высокоуровневый понятийный ряд содержит только процесс инициализации (Init Task), запускаемые планировщиком задач процессы (Loop Task), запускаемые программистом процессы (Call Task), и, наконец, обработчики прерываний (ISR Task, та единственная область, где может быть нужен язык ассемблера, если компилятор целевой платформы не позволяет писать обработчики прерываний на С).

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

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

Но и ощутимо нетривиальный. Сказывается недостаточность примеров, «необласканность» вниманием и даже некоторое отторжение со стороны сообщества разработчиков (например, кому-то категорически не нравится отправка своих исходных текстов куда-то, кто-то высказывает сомнения в надёжности результатов по сравнению с традиционным подходом).

Из-за этих нюансов судьба сервиса становится тем более интересной. Что с ним сделает Microchip (компания, очень осторожная в приобретениях и альянсах)? Как повлияют на неё действия производителя? Ответов на эти вопросы пока нет.

Зато уже можно совершенно безвозмездно «играться» с SynthOS. Хотя бы потому, что это действительно интересно.

+44
голоса

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT