TinyOS
| Розробник | TinyOS Alliance |
|---|---|
| Написано на | nesC |
| Родина ОС | Вбудовані операційні системи |
| Модель початкових кодів | Open source |
| Початковий випуск | 2000 |
| Випущено у виробництво | 2000 |
| Останній випуск | 2.1.2 / 20 серпня 2012 |
| Репозиторій | |
| Цільовий ринок | Бездротові сенсорні мережі |
| Мови | English |
| Ліцензія | BSD |
| tinyos.net | |
TinyOS — вбудована операційна система та платформа для бездротових пристроїв з низьким енергоспоживанням, таких як ті, що використовуються в бездротових сенсорних мережах (WSN), smartdust, повсюдних обчисленнях, персональних мережах, автоматизації будівель та розумних лічильниках[1].
Вона написана мовою програмування nesC як набір взаємодіючих завдань та процесів. Все почалося як співпраця між Каліфорнійським університетом, Берклі, Intel Research та Crossbow Technology, було випущено як вільне та відкрите програмне забезпечення за ліцензією BSD, і з того часу перетворилося на міжнародний консорціум, TinyOS Alliance.
TinyOS використовувалася в космосі, була реалізована в ESTCube-1.
Застосунки TinyOS пишуться мовою програмування nesC, діалектом мови C, оптимізованим для обмежень пам’яті сенсорних мереж.[2] Його допоміжні інструменти переважно мають форму фронтендів на Java та сценаріїв оболонки. Пов’язані бібліотеки та інструменти, такі як компілятор nesC та toolchain Atmel AVR binutils, здебільшого написані на C.
Програми TinyOS побудовані з програмних компонентів, деякі з яких надають апаратні абстракції. Компоненти з’єднуються між собою за допомогою інтерфейсів. TinyOS надає інтерфейси та компоненти для поширених абстракцій, таких як пакетна комунікація, маршрутизація, сенсинг, актуaція та зберігання.
TinyOS є повністю неблокуючою: вона має один стек викликів. Таким чином, усі операції вводу/виводу (I/O), які тривають довше ніж кілька сотень мікросекунд, є асинхронними та мають зворотний виклик. Щоб дозволити нативному компілятору краще оптимізувати через межі викликів, TinyOS використовує можливості nesC для статичного зв’язування цих зворотних викликів, що називаються подіями.
Хоча неблокуюча природа дозволяє TinyOS підтримувати високу конкурентність з одним стеком, це змушує програмістів писати складну логіку, поєднуючи багато малих обробників подій. Для підтримки більших обчислень TinyOS надає задачі, які подібні до DPC чи нижніх половин обробників переривань. Компонент TinyOS може поставити задачу, яку ОС запланує до виконання пізніше. Задачі не є[Витискальна багатозадачність|витіснюваними]] і виконуються в порядку FIFO. Ця проста модель конкурентності зазвичай є достатньою для застосунків, орієнтованих на I/O, але її складність для застосунків із великим навантаженням на CPU призвела до розробки бібліотеки потоків виконання для ОС під назвою TOSThreads. TOSThreads не підтримується і була визнана застарілою.[3]
Код TinyOS статично зв’язується з кодом програми та компілюється у невеликий бінарний файл, використовуючи власний GNU toolchain. Пов’язані утиліти надаються для створення платформи розробки та роботи з TinyOS.
TinyOS розпочався як проєкт у UC Berkeley як частина програми DARPA NEST. Відтоді він зріс і охоплює тисячі академічних і комерційних розробників та користувачів у всьому світі.
- ↑ Виникнення мережевих абстракцій та методів у TinyOS. csl.stanford.edu. Процитовано 26 березня 2026.
- ↑ Levis, Philip; Gay, David (2009). Programming TinyOS. Cambridge University Press. ISBN 9780521896061.
- ↑ TinyOS development repository TOSThreads deprecated. TinyOS current development repository. Процитовано 3 грудня 2018.