فری‌آرتوس

از ویکی‌پدیا، دانشنامهٔ آزاد
سیستم‌عامل بی‌درنگ رایگان
توسعه‌دهندهReal Time Engineers Ltd.
خانوادهسیستم‌عامل بی‌درنگ
وضعیت توسعهCurrent
مدل منبعSource available
انتشار پایدار۱۰٫۲٫۰
February 25th, 2019
مخزن
بازار هدفسامانه نهفته
بن‌سازه رایانشمعماری آرم (ARM7, ARM9, Cortex-M3، Cortex-M4، Cortex-A), ریزکنترل‌گر ای‌وی‌آر، AVR32، HCS12، MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430، میکروکنترولر پی‌آی‌سی، Renesas H8/S, SuperH, RX, اکس۸۶، اینتل ام‌سی‌اس-۵۱، Coldfire, V850, 78K0R, Fujitsu MB91460 series, Fujitsu MB96340 series, Nios II, Cortex-R4, TMS570, RM4x, Espressif ESP32.
گونه هستهریزهسته
پروانهپروانه ام‌آی‌تی
وبگاه رسمی

سیستم عامل فری آرتی‌اواس (به انگلیسی: FreeRTOS) یک هسته سیستم‌عامل بی‌درنگ برای سامانه‌های نهفته است و از ۳۵ نوع معماری پلت‌فرم میکروکنترلر پشتیبانی می‌کند. [۱] این سیستم‌عامل تحت پروانه MIT توزیع شده‌است.

پیاده‌سازی[ویرایش]

FreeRTOS طراحی شده‌است تا ساده و کوچک باشد. هسته اصلی تنها از ۳ فایل با فرمت c تشکیل شده‌است. به منظور سادگی و سهولت در تغییر عمدتاً به زبان c نوشته شده‌است، اما تعداد کمی توابع به زبان ماشین (اسمبلی) نیز در نقاطی از برنامه که مورد نیاز بوده استفاده شده‌است. (عمدتاً در روال‌های زمانبند معماری‌محور)

فری‌آر‌تی‌او‌اس روش‌هایی را برای چندریسه‌ای (رشته‌های اجرایی همزمان)، چندوظیفگی، نشان‌برها (سمافورها) و شمارنده‌های نرم‌افزاری فراهم می‌آورد. یک حالت بدون تیک (بدون وقفه شمارنده) نیز برای کاربردهایی با مصرف انرژی کم تهیه شده‌است. اولویت‌بندی نخ‌ها (رشته‌های پردازشی) نیز پشتیبانی می‌شود. کاربردهای FreeRTOS می‌توانند به‌صورت کاملاً ایستا تخصیص یابند.

از سوی دیگر، اجزای RTOS می‌توانند به‌صورت پویا با ۵ روش تخصیص حافظه فراهم شده اختصاص یابند:

  • فقط اختصاص بده
  • با یک الگوریتم ساده و سریع اختصاص بده و آزاد کن
  • یک الگوریتم اختصاص و رهاسازی با پیچیدگی بیشتر اما سریع‌تر با هماهنگی حافظه
  • یک روش جایگزین برای روش پیچیده‌تر که شامل هماهنگی حافظه می‌شود و همچنین به یک هیپ اجازه تجزیه و ذخیره شدن در چند مکان حافظه را می‌دهد
  • کتابخانه تخصیص و رهاسازی c با برخی محافظت‌های طرد متقابل

هیچ ویژگی پیچیده‌تر دیگری که معمولاً در سیستم‌های عامل مانند لینوکس و ویندوز مثل درایورهای دستگاه‌های متصل مدیریت حافظه پیشرفته، حساب‌های کاربری و شبکه دیده می‌شوند، وجود ندارند. تأکید روی فشرده (خلاصه و سبک) بودن و سرعت اجرا است. FreeRTOS را می‌توان به عنوان یک کتابخانه نخ (رشته پردازشی) تصور کرد، بیشتر از آنکه یک سیستم عامل باشد، اگر چه رابط خط دستور (command line) و POSIX-like افزونه‌های مربوط به ورودی/خروجی موجود هستند. همچنین توسط کتابخانه‌های مشهوری مانند SSL/TLS نیز مثل WolfSSL پشتیبانی می‌شود.

FreeRTOS روش چند نخی (چند رشتهٔ پردازشی) را با فراخوانی رویه تیک نخ (رشته پردازشی) در زمان‌های کوتاه منظم توسط برنامه میزبان پیاده‌سازی می‌کند. رویه تیک نخ (رشتهٔ پردازشی) وظیفه‌ها را بر اساس اولویت و روش زمانبندی Round-Robin تغییر می‌دهد (یا بین آن‌ها جابه‌جا می‌شود). این زمان دوره‌ای منظم معمولاً از ۱/۱۰۰۰ ثانیه تا ۱/۱۰۰ ثانیه است که توسط وقفه یک شمارنده سخت‌افزاری انجام می‌شود، اما این زمان دوره‌ای معمولاً با توجه به کاربرد مورد نظر تغییر می‌کند.

فایل دانلودی شامل ساختار آماده و نمایش برای هر خروجی و کامپایلری است که طراحی سریع کاربرد را ممکن می‌سازد. سایت FreeRTOS.org همچنین شامل تعداد زیادی اسناد و آموزش‌های RTOS می‌شود (آموزش‌ها و دستورالعمل‌های بیشتر و همین‌طور جزئیات طراحی RTOS به‌صورت پرداخت‌محور در دسترس هستند).

ویژگی‌های کلیدی[ویرایش]

  • کتاب و دستورالعمل‌های مرجع
  • اشغال کم حافظه، سرریز کم و سرعت اجرای بالا
  • امکان بدون تیک (بدون وقفه) برای کاربردهای با مصرف انرژی کم
  • ایجاد شده هم برای توسعه‌دهندگان متخصص و توسعه‌دهندگان تازه‌کار برای اهداف تجاری
  • زمانبند هم برای عملیات انحصاری و هم عملیات شراکتی می‌تواند پیکربندی شود
  • پشتیبانی از روال‌های عادی همکاری‌ها (coroutine) در FreeRTOS (عملیات‌های ساده و سبک با استفادهٔ محدود از فراخوانی پشته هستند)
  • پشتیبانی از پیگیری عملیات از طریق روش‌های کلی ردگیری. ابزارهای مانند tracealyzer که توسط شریک تجاری FreeRTOS، یعنی Percepio ارائه شده، می‌توانند رفتار زمان اجرا سیستم‌های بر اساس FreeRTOS را ضبط و نمایش دهد. این شامل زمانبندی وظایف و فراخوانی هسته سیستم برای عملیات‌های سمافورها و صف می‌شود. traceatyzer یک نسخه رایگان نیز ارائه می‌دهد که ویژگی‌های محدودی را در اختیار قرار می‌دهد.

معماری‌های پشتیبانی شده[ویرایش]

مشتقات[ویرایش]

Amazon FreeRTOS[ویرایش]

آمازون یک تعمیم از FreeRTOS را فراهم کرده‌است که با عنوان a:FreeRTOS مورد ارجاع قرار می‌گیرد. این یک FreeRTOS با کتابخانه‌هایی برای پشتیبانی از اینترنت اشیاء است. مخصوصاً برای سرویس‌های وب آمازون. از نسخه ۱۰٫۰٫۰ در ۲۰۱۷، آمازون نظارت بر کد FreeRTOS را بر عهده گرفته‌است. که شامل هرگونه بروزرسانی در هسته نیز می‌شود.

SAFERTOS[ویرایش]

SAFERTOS به عنوان نسخه تکمیل‌کننده FreeRTOS توسعه داده شد، با عملکرد مشابه اما طراحی شده به‌طور خاص برای پیاده‌سازی‌های با امنیت حیاتی. FreeRTOS تحت پوشش HAZOP قرار گرفت و نقاط ضعف آن شناسایی و برطرف شد. نتیجه در دورهٔ حیات توسعه کامل IEC 61508 منتشر شد که بالاترین سطح برای یک بخش فقط سخت‌افزاری محسوب می‌شود.

SAFERTOS توسط سیستم‌های بسیار یکپارچه WITTENSTEIN توسعه داده شد، با همکاری توسعه‌دهندگان اصلی بخش مهندسان بی‌درنگ در پروژه FreeRTOS. هر دوی FreeRTOS و SAFERTOS الگوریتم زمانبندی مشابه‌ای را استفاده می‌کنند، رابط کاربری مشابه‌ای دارند و در نتیجه بسیار مشابه هستند اما با اهداف متفاوتی توسعه داده شده‌اند. SAFERTOS فقط در زبان c توسعه داده شده تا ملزومات گواهی IEC61508 را تأمین کند.

SAFERTOS برای مطابقت با استانداردها می‌تواند به تنهایی در حافظه فقط خواندنی میکروکنترلر قرار گیرد. زمانی که در حافظه سخت‌افزاری پیاده می‌شود، که SAFERTOS فقط با پیکربندی اصلی و مورد تأیید قابل استفاده است. این به این معنی است که گواهی تأیید سیستم نیازی به بررسی مجدد هسته خروجی طراحی‌شان ندارند. SAFERTOS در حافظه فقط خواندنی بعضی از میکروکنترلر Stellaris از شرکت Texas وجود دارد. کد منبع SAFERTOS نیازی نیست تا به‌طور جداگانه سفارش داده شود. در این سناریوی مصرف یک فایل هدر c استفاده می‌شود تا توابع و واسط کاربری SAFERTOS به مکان‌هایشان در حافظه فقط خواندنی مرتبط شوند.

OPENRTOS[ویرایش]

OPENRTOS یک نسخه با مجوز تجاری از Amazon FreeRTOS است که توسط شرکت سیستم‌های بسیار یکپارچه WITTENSTEIN فروخته می‌شود. این محصول یک پشتیبانی را فراهم می‌آورد و به شرکت‌ها اجازه می‌دهد که از هسته و کتابخانه‌های Amazon FreeRTOS بدون گواهی a:FreeRTOS MIT استفاده کنند.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. «OSRTOS». www.osrtos.com. دریافت‌شده در ۲۰۱۹-۰۵-۱۸.

پیوند به بیرون[ویرایش]