کانتیکی

**کانتیکی**  یک سیستم عامل متن باز است که برای وسایل اینترنت اشیاء طراحی شده و هم‌اکنون تا حد بسیاری پورتابل است به طوری که رایانه‌های بسیار قدیمی (برای مثال آتاری اس تی) و ریزکنترل‌گر‌ها و دستگاه‌های AVR (مانند بردهای آردوینو) و بسیاری دیگر را پشتیبانی کرده و بر عکس سیستم عامل‌هایی مانند نت‌بی‌اس‌دی، برای پردازنده‌های بدون واحد مدیریت حافظه طراحی شده‌است. این سیستم عامل ابتدا در سال ۲۰۰۲ توسط آدام دانکلز طراحی و ساخته شد و پس از آن توسط عده زیادی از توسعه دهنگانی از سراسر دنیا و از شرکت‌هایی مثل تگزاس اینسترومنتس، اتمل، سیسکو سیستمز، دانشگاه آکسفورد و بسیاری دیگر توسعه میابد.

این سیستم عامل به شکل پیشفرض از مجموعه پروتکل اینترنت و چندکارگی پشتیبانی می‌کند و می‌تواند تنها بر روی یک حافظه فقط خواندنی ۳۰ کیلوبایتی بارگیری شده و با ۱۰ کیلوبایت حافظه تصادفی شروع به کار با واسط گرافیکی کاربر کند.

یک مثال از استفاده‌های کانتیکی در سامانه‌های روشنایی شهری، حسگر‌های امواج رادیویی و سامانه‌های هشدار است

## سخت‌افزارها
کانتیکی تا کنون برای سخت‌افزارهایی سازگار شده‌است که همزمان مقید به حافظه و توان و قدرت پردازش و پهنای باند ارتباطی به اندازه دو مورد اول باشند. یک سامانه بر پایه کانتیکی معمولاً حافظه‌ای در مقیاس کیلوبایت، توانی در مقیاس میلی وات و فرکانس پردازشی در مقیاس چندین مگاهرتز و صدها کیلوبیت بر ثانیه پهنای باند می‌طلبد. این رده از سخت‌افزارها شامل سیستم‌های توکار معمول تا کامپیوترهای قدیمی ۸-بیت می‌شود.

## شبکه
کانتیکی سه ساختار شبکه را شامل می‌شود:
* پشته uip که قابلیت ارتباط به وسیله پروتکل IPV4 را فراهم می‌کند
این پشته یکی از مدرن‌ترین پشته هاییست که TCP/IP کامل را بر روی سیستم‌های ۸-بیت فراهم می‌کند
* پشته uipv6 که قابلیت ارتباط به وسیله پروتکل IPV6 را فراهم می‌کند
این پشته توسط سیسکو توسعه میابد و در زمان رو نمایی کوچک‌ترین پشته‌ای بود که از IPV6 پشتیبانی می‌کرد
* و پشته Rime که شامل یک پروتکل برای شبکه‌های بدون سیم کم مصرف است.

## برنامه نویسی
به منظور توسعه یک برنامه برای سیستم عامل کانتیکی، ابتدا باید یک فرایند را تعریف کنیم. ساختار اساسی یک برنامه به شرح زیر است:

```c
# include "contiki.h" //همواره این کتابخانه باید گنجانده شود

PROCESS(Example, "Example process"); //این یک پروسه را تعیین می‌کند
AUTOSTART_PROCESSES(&Example); //این پروسه‌ها را همزمان با بالا آمدن سیستم آغاز می‌کند

PROCESS_THREAD(Example, ev, data)
{
  PROCESS_BEGIN(); // آغاز پروسه را تعریف می‌کند
  while(1){
    PROCESS_WAIT_EVENT ();
      // برنامه
  }
  PROCESS_END();
}
```

makefileها هم که برنامه‌ها را نصب می‌نمایند ساختاری شبیه به این دارند

```c
CONTIKI = ../.. // جاهای خالی بستگی به محل قرار گرفتن پروژه دارند
all: app-name
include $(CONTIKI)/Makefile.include
```


## عملکرد کم مصرف
بسیاری از سامانه‌های بر پایه کانتیکی به طرز تحسین برانگیزی کم مصرف هستند. این سیستم عامل می‌تواند حسگرهایی را کنترل کند که با باتری کار کرده و چندین ماه نیز به کار ادامه دهند. کانتیکی سامانه‌هایی را فراهم می‌آورد که برق مصرفی وسایلی که روی آن‌ها اجرا می‌شود را پایین بیاورد. برای مثال مکانیزم اصلی برای ارتباطات رادیویی "ContikiMAC" نام دارد، این مکانیزم قابلیت‌هایی دارد که می‌تواند وسیله را در حالت کم مصرف نگه داشته و با این حال باز هم به رد و بدل کردن پیغام‌های رادیویی ادامه دهد.

## قابلیتها
نصب کامل کانتیکی این قابلیت هارا فراهم میاورد:
* چند کارگی در هسته
* چند رشتگی به وسیله قبضه کردن
* اتصال شبکه TCP/IP
* سامانه پنجره (Window system) و رابط گرافیکی کاربر
* پشتیبانی از VNC و Telnet
* مرورگر وب (گفته می‌شود کوچک‌ترین در دنیاست)
* وب سرور توکار
* اسکرین سیور

## منابع

## پیوند به بیرون
* 

رده:سیستم‌عامل‌های آرم
رده:سیستم‌عامل‌های آزاد
رده:سیستم‌عامل‌های توکار
رده:شبکه بی‌سیم حسگر
رده:مرورگرهای وب آزاد
رده:نرم‌افزار اپل II
رده:نرم‌افزارهای آتاری اس‌تی
رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند