Введение

TinyOS — это встроенная операционная система и платформа, основанная на компонентном подходе, для беспроводных устройств с низким энергопотреблением, таких как те, что используются в беспроводных сенсорных сетях (WSN), системах "умной пыли" (smartdust), повсеместных вычислениях, персональных сетях, автоматизации зданий и интеллектуальных счетчиках. Она написана на языке программирования nesC в виде набора взаимодействующих задач и процессов. Разработка TinyOS началась как совместный проект Калифорнийского университета в Беркли, Intel Research и Crossbow Technology, затем была выпущена как свободное программное обеспечение с открытым исходным кодом под лицензией BSD и впоследствии превратилась в международный консорциум TinyOS Alliance. TinyOS применялась в космических проектах, в частности, была реализована в ESTCube 1.

Реализация

Приложения TinyOS написаны на языке программирования nesC, диалекте языка C, оптимизированном для ограничений по памяти сенсорных сетей. Вспомогательные инструменты представлены в основном Java и shell-скриптами. Связанные библиотеки и инструменты, такие как компилятор nesC и цепочки инструментов Atmel AVR binutils, в основном написаны на C.

Программы TinyOS строятся из программных компонентов, некоторые из которых предоставляют аппаратные абстракции. Компоненты соединяются друг с другом посредством интерфейсов. TinyOS предоставляет интерфейсы и компоненты для общих абстракций, таких как пакетная связь, маршрутизация, сенсорика, управление и хранение данных. TinyOS полностью неблокирующий: он использует один стек вызовов. Следовательно, все операции ввода/вывода (I/O), занимающие более нескольких сотен микросекунд, выполняются асинхронно и используют механизм обратного вызова. Чтобы обеспечить возможность оптимизации компилятором через границы вызовов, TinyOS использует возможности nesC для статической привязки этих обратных вызовов, называемых событиями. Неблокирующий характер TinyOS позволяет поддерживать высокую степень параллелизма при использовании одного стека, но требует от программистов написания сложной логики путем соединения множества небольших обработчиков событий. Для поддержки более сложных вычислений TinyOS предоставляет задачи, аналогичные Deferred Procedure Call и нижним половинам обработчиков прерываний. Компонент TinyOS может запланировать задачу, которую ОС выполнит позже. Задачи не являются прерываемыми и выполняются в порядке поступления (FIFO). Эта простая модель параллелизма обычно достаточна для приложений, ориентированных на ввод/вывод, но трудности с ресурсоемкими приложениями привели к разработке библиотеки потоков для ОС под названием TOSThreads. TOSThreads больше не поддерживаются и признаны устаревшими. Код TinyOS статически связывается с программным кодом и компилируется в небольшой исполняемый файл с использованием специализированной цепочки инструментов GNU. Дополнительные утилиты предоставляются для создания полноценной платформы разработки для работы с TinyOS.

История

TinyOS началась как проект в Калифорнийском университете в Беркли в рамках программы DARPA NEST. С тех пор она привлекла тысячи академических и коммерческих разработчиков и пользователей по всему миру. (перечень в обратном хронологическом порядке)
Август 2012: TinyOS 2.1.2 выпущена.
Апрель 2010: TinyOS 2.1.1 выпущена.
Август 2008: TinyOS 2.1.0 выпущена.
Июль 2007: TinyOS 2.0.2 выпущена. Началась работа над TinyOS 2.1, включающая незначительные изменения в нескольких интерфейсах.
Апрель 2007: TinyOS 2.0.1 выпущена на 4-й конференции TinyOS Technology Exchange в Кембридже, штат Массачусетс.
Ноябрь 2006: TinyOS 2.0 выпущена на конференции SenSys в Боулдере, штат Колорадо.
Июль 2006: TinyOS 2.0 beta2 выпущена.
Февраль 2006: TinyOS 2.0 beta1 выпущена на 3-й конференции TinyOS Technology Exchange в Стэнфорде, Калифорния.
Декабрь 2005: TinyOS 1.1.15 выпущена, последняя версия 1.1.
Июль 2005: Проект NEST завершен.
Июнь 2004: Сформирована рабочая группа для определения дальнейших шагов по развитию TinyOS, основываясь на опыте переноса на новые платформы. Группа приняла решение начать работу над версией 2.0.
Сентябрь 2003 – Декабрь 2005: TinyOS переходит к периодическому выпуску минорных версий.
Август 2003: Выпущена TinyOS версии 1.1, включающая новые функции nesC, в том числе обнаружение гонок данных.
Сентябрь 2002: Выпущена TinyOS версии 1.0, реализованная на nesC.
Апрель 2002: Началась работа над языком программирования nesC в сотрудничестве между Intel Research и UC Berkeley.
Февраль 2002: Беркли распространила 1000 узлов mica среди других участников проекта NEST.
2001: Беркли разработала платформу mica и выпустила TinyOS версии 0.6.
2000: Беркли спроектировала платформу RENE и сотрудничала с компанией Crossbow, Inc., которая занималась массовым производством оборудования. TinyOS версии 0.43 стала доступна для общественности через SourceForge. Версии TinyOS до 1.0 представляют собой смесь скриптов на C и Perl.
1999: Первая платформа TinyOS (WeC) и реализация ОС были разработаны в Беркли.