Перейти до вмісту

Contiki

Матеріал з Вікіпедії — вільної енциклопедії.
Contiki
Image
РозробникAdam Dunkelsd Редагувати інформацію у Вікіданих
Ліцензіямодифікована ліцензія BSDd[1][2] Редагувати інформацію у Вікіданих
www.contiki-os.org

Contiki — це вбудована операційна система для мережевих систем з обмеженим обсягом пам'яті, орієнтована насамперед на малопотужні бездротові пристрої Інтернету речей (IoT). Contiki використовується в системах вуличного освітлення, моніторингу звуку для розумних міст, радіаційного моніторингу та сигналізації.[3] Це відкрите програмне забезпечення, що розповсюджується за ліцензією BSD-3-Clause.

Назва Contiki походить від назви знаменитого плота Кон-Тікі, на якому здійснив свою експедицію Тур Хеєрдал.

Contiki була створена Адамом Дункельсом[en] у 2002 році[4], а згодом розроблялася міжнародною командою розробників з Texas Instruments, Atmel, Cisco, ENEA, ETH Zurich, Redwire, RWTH Eysdthcbntnjv Аахена, Оксфордського університету, SAP, Sensinode, Swedish Institute of Computer Science, ST Microelectronics, Zolertia та багатьох інших організацій.[5]

Contiki забезпечує багатозадачність завдяки легкому витіснювальному плануванню поверх керованого подіями ядра.[6]

Contiki має вбудований стек TCP/IP; для її роботи потрібно приблизно 10 кілобайтів оперативної пам'яті (RAM) та 30 кілобайтів постійної пам'яті (ROM).[3] Повнофункціональна система, включно з графічним інтерфейсом користувача, потребує близько 30 кілобайтів оперативної пам'яті.[7]

Нещодавно було створено нову гілку проєкту, відому як Contiki-NG: операційна система для пристроїв Інтернету речей нового покоління.

Апаратне забезпечення

[ред. | ред. код]

Типова система Contiki має обсяг пам'яті порядку кілобайтів, енергетичний бюджет порядку міліватів, швидкість обробки даних, що вимірюється в мегагерцах, і пропускну здатність зв'язку порядку сотень кілобітів за секунду. До таких систем належать багато типів вбудованих систем, а також старі 8-бітні комп'ютери.

Мережеві можливості

[ред. | ред. код]

Contiki надає три мережеві механізми: стек TCP/IP uIP,[8] який забезпечує підтримку мереж IPv4, стек uIPv6,[9] який забезпечує підтримку мереж IPv6, та стек Rime, що являє собою набір спеціалізованих полегшених мережевих протоколів, розроблених для бездротових мереж з низьким енергоспоживанням. Стек IPv6 також містить протокол маршрутизації Routing Protocol for Low-Power and Lossy Networks (RPL) для IPv6-мереж з низьким енергоспоживанням і ненадійними каналами зв'язку, а також рівень стиснення заголовків і адаптації 6LoWPAN для каналів IEEE 802.15.4.

Rime є альтернативним мережевим стеком, призначеним для використання у випадках, коли накладні витрати стеків IPv4 або IPv6 є надмірними. Стек Rime надає набір примітивів зв'язку для бездротових систем з низьким енергоспоживанням. Типовими примітивами є односкачкова одноадресна передача, односкачкова широкомовна передача, багатоскачкова одноадресна передача, широкомовне розповсюдження повідомлень по мережі та збір даних без використання адрес. Ці примітиви можуть використовуватися як окремо, так і в поєднанні для формування складніших протоколів і механізмів.[10]

Contiki включає в себе бібліотеку wolfSSL.

Програмна модель

[ред. | ред. код]

Для ефективної роботи на системах з малим обсягом пам'яті модель програмування Contiki базується на протопотоках.[11][12] Протопотік є ефективною з точки зору використання пам'яті абстракцією програмування, яка поєднує властивості як багатопотоковості, так і подійно-орієнтованого програмування, забезпечуючи низькі накладні витрати пам'яті для кожного протопотоку. Ядро викликає протопотік процесу у відповідь на внутрішню або зовнішню подію. Прикладами внутрішніх подій є спрацювання таймерів або надсилання повідомлень від інших процесів. Прикладами зовнішніх подій є спрацювання датчиків або надходження пакетів від сусіднього радіовузла.

Протопотоки працюють кооперативно. Таким чином, процес Contiki повинен завжди явно повертати керування ядру через регулярні проміжки часу. Процеси Contiki можуть використовувати спеціальну конструкцію протопотоків для блокування в очікуванні подій, одночасно повертаючи керування ядру між кожним викликом, пов'язаним із подією.

Примітки

[ред. | ред. код]
  1. https://github.com/contiki-os/contiki/blob/master/LICENSE
  2. https://github.com/contiki-ng/contiki-ng/blob/develop/LICENSE.md
  3. 1 2 Contiki OS.
  4. Contiki: Bringing IP to Sensor Networks
  5. Community, Contiki OS.
  6. Dunkels, Adam (2004), Contiki – a lightweight and flexible operating system for tiny networked sensors, Proceedings of the 29th Annual IEEE International Conference on Local Computer Networks., с. 455—462.
  7. [(https://www.wired.com/2014/06/contiki/) Out in the Open: The Little-Known Open Source OS That Rules the Internet of Things]
  8. Dunkels, Adam (Травень 2003), Full TCP/IP for 8 Bit Architectures, Proceedings of the First ACM/Usenix International Conference on Mobile Systems, Applications and Services (MobiSys), San Francisco
  9. Durvy, Mathilde; Abeillé, Julien; Wetterwald, Patrick; O'Flynn, Colin; Leverett, Blake; Gnoske, Eric; Vidales, Michael; Mulligan, Geoff; Tsiftes, Nicolas; Finne, Niclas; Dunkels, Adam (Листопад 2008), Making sensor networks IPv6 ready, Proceedings of the Sixth ACM Conference on Networked Embedded Sensor Systems (SenSys) (poster session), Raleigh, NC, US: ACM
  10. Dunkels, Adam; Österlind, Fredrik; He, Zhitao (Листопад 2007), An adaptive communication architecture for wireless sensor networks, Proceedings of the Fifth ACM Conference on Networked Embedded Sensor Systems (SenSys), Sydney, AU.
  11. Dunkels, Adam; Schmidt, Oliver; Voigt, Thiemo; Ali, Muneeb (Листопад 2006), Protothreads: Simplifying event-driven programming of memory-constrained embedded systems, Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys), Boulder, CO, USA Dunkels, A.; Schmidt, O.; Voigt, T.; Ali, M. (2006). Protothreads. Proceedings of the 4th international conference on Embedded networked sensor systems - Sen Sys '06. с. 29. doi:10.1145/1182807.1182811. ISBN 1595933433. S2CID 983128. ([(http://dunkels.com/adam/dunkels06protothreads.pdf) PDF], [(http://dunkels.com/adam/dunkels06protothreads.ppt) Presentation slides]).
  12. Protothread, [(http://code.google.com/p/protothread/) Code] {{citation}}: Перевірте значення |url= (довідка).