среда, 17 декабря 2008 г.

TinyOS

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

TinyOS заметно отличается от ОС общего назначения, таких как UNIX, Windows и пр. Например, приложения для БСС не являются интерактивными в том же смысле, что и приложения для обычных ПК. Это объясняется тем, что TinyOS не нуждается во встроенной поддержке пользовательского интерфейса. К тому же ограничения в ресурсах памяти, с одной стороны, и аппаратная поддержка распределения памяти — с другой, делают такие механизмы, как виртуальная память, ненужными или даже невозможными в реализации.

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

Архитектура TinyOS включает две главные функциональные составляющие: планировщик задач и компонент. Понятие «компонент» в TinyOS несколько отличается от общепринятого. Так, интерфейс компонента TinyOS состоит из двух частей: верхней (upper), предоставляемой этим компонентом как провайдером, и нижней (lower), требуемой для его функционирования. Обе части содержат описания команд и событий.

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

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

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

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

Как и в остальных ОС, в TinyOS существуют атомарные потоки (task), которые выполняются вплоть до своего завершения, хотя и могут быть вытеснены событиями. С компонентом может быть связано более одного потока. Потоки могут вызывать команды нижележащего уровня, сигнализировать о событиях более высокому уровню и планировать другие потоки внутри компонента. Семантика потока «выполнение вплоть до завершения» позволяет иметь один стек, который выделяется выполняющемуся в данный момент потоку, что очень важно в системах с ограниченной памятью. Потоки дают возможность имитировать параллельную обработку внутри каждого компонента, так как они выполняются асинхронно по отношению к событиям. Однако потоки не должны блокироваться или простаивать в ожидании, поскольку в таких случаях они будут препятствовать развитию обработки в других компонентах.

Операционка от Microsoft

Singularity - очень интересная разработка от Microsoft, они написали полную систему с нуля едином адресном пространстве на модели безопасного языка. Они придумали этот новый язык, Sing#, который произошел от c#, в Sing#, как и Java вы не можете просто написать p= random & *p=0, язык вам просто этого не позволит.

Это безопасный язык, Он сильно ограничивает вас в том, что вы можете сделать, и все компоненты взаимодействуют друг с другом в едином адресном пространстве через "именованные потоки (named pipes)"

Поток имеет протокол, и этот протокол описан на формальном языке - вы посылаете сообщение кому-нибудь этого типа. И они посылают обратно от A, B или C и т.д.

Вам надо написать все это на формальном языке и система проверит можете ли вы произвести те или иные действия согласно формальному протоколу этого канала.

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

Это очень интересная разработка, они заставили её рабтать, таким образом, это интересный подход. Она не совместима с Windows, она не совместима с Unix, она не совместима ни с чем, это будет маркетинговой проблемой для них.

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

Интерьвью с Эндрю Танненбаумом (разработчик Minix, учитель Линуса)

Все серии SembianOS


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

TinyOS — компонентная операционная система с открытым исходным кодом и предназначенная для беспроводных сенсорных сетей. TinyOS является встраиваемой ОС написанной на языке nesC и представляет из себя ряд взаимодействующих задач и процессов. Предназначена для объединения с так называемой «умной пылью». TinyOS разрабатывается консорциумом, который возглавляют Калифорнийский университет в Беркли совместно с исследовательским подразделением компании Intel.

Приложения в TinyOS написаны на nesC, диалекте языка C, оптимизированном в соответствии с ограничениями на объём памяти в сетях датчиков. Её дополнительные инструменты представлены в основном в форме Java-приложений и интерфейсов для shell-скриптов. Сопутствующие библиотеки и инструменты, такие как компилятор nesC и инструментарий для программирования AVR, главным образом написаны на C.

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

Код TinyOS статически связан с кодом программы и компилируется в маленький исполняемый файл при помощи традиционного инструментария GNU toolchain. Сопутствующие утилиты предоставляют полноценную платформу для разработки под TinyOS.


Symbian OS — это операционная система для смартфонов и коммуникаторов, разрабатываемая консорциумом Symbian, основанным в июне 1998 года компаниями: PsionNokiaEricsson и Motorola. Позже к консорциуму присоединились компании:Sony EricssonSiemensPanasonicFujitsuSamsungSony и Sanyo.

Symbian OS является преемником операционной системы EPOC32, разработанной компанией Psion для своих карманных компьютеров. В 19982000 гг. значительная часть системы была переписана с целью оптимизации кода для работы на устройствах с ограниченными ресурсами. Разработчикам удалось добиться значительной экономии памяти, улучшения кэширования кода и, как следствие, ускорения работы программ, при пониженных требованиях к энергопотреблению. С точки зрения разработки, отличительной особенностью системы является полностью объектно-ориентированная архитектура (на уровне API). Начиная с версии системы 9.x появился серьёзный механизм защиты — разграничение API в соответствии с правами приложений (capabilities). Основной язык разработки приложений — С++, имеется поддержка Java.

На данный момент наиболее распространённой (по количеству устройств) версией является Symbian OS Series 60 2nd Edition. В 2005 году вышла Symbian OS Series 60 3rd Edition, основанная на новом ядре EKA2, что привело к нарушению обратной совместимости с программами, написанными для предыдущих версий.

Компании NokiaSony Ericsson и некоторые другие оснащают свои смартфоны только системой Symbian OS. Главный конкурент Symbian OS — это операционная система Microsoft Windows Mobile (Pocket PC Edition и Smartphone Edition). В будущем также ожидается усиление конкуренции со стороны Linux устройств.

Соотношение смартфонов с различными операционными системами. Сентябрь 2008 [6].

Платформа2 кв. 2007 г.2 кв. 2008 г.изменение
2 кв 07 / 2 кв 08
Symbian65,6 %57,1 %-8,5 %
Windows Mobile11,5 %12,0 %0,5 %
Linux10,1 %7,3 %-2,8 %
RIM (BlackBerry)8.9 %17.4 %8,5 %
Mac OS1 %2.8 %1,8 %
PalmOS1,7 %2,3 %0,6 %
Прочие1,3 %1,1 %-0,2 %

Беспроводные сенсорные сети

Четыре статьи из журнала "Компьютер пресс" за 2007-2008 гг.

Беспроводные сенсорные сети. Часть 1 
Новейшие технологии беспроводной связи и прогресс в области производства микросхем позволили в течение последних нескольких лет перейти к практической разработке и внедрению нового класса распределенных коммуникационных систем — сенсорных сетей.


Беспроводные сенсорные сети. Часть 2 
Беспроводные сенсорные сети состоят из миниатюрных вычислительных устройств — мотов, снабженных сенсорами (температуры, давления, освещенности, уровня вибрации, место положения и т.п.) и приемопередатчиками сигналов, работающими в радиодиапазоне.

Беспроводные сенсорные сети. Часть 3. Средства программирования 
Как уже отмечалось (см. КомпьютерПресс № 4’2008), современный технологический уровень развития БСС дает возможность перейти к практическому использованию сенсорных сетей, но для этого необходимо уметь разрабатывать программное обеспечение для мотов. В настоящее время для этой цели имеются специальные средства и даже технологии, к которым в первую очередь относятся операционная система TinyOS и язык программирования NesC.

Беспроводные сенсорные сети: эмуляция работы. Часть 4 
Беспроводные сенсорные сети (БСС) состоят из микрокомпьютеров — мотов, снабженных сенсорными датчиками и приемопередающими устройствами, работающими в радиодиапазоне