ARM, AVR, RTOS, آموزش های متنی

سیستم عامل بلادرنگ RTOS چیست؟

RTOS یا سیستم عامل بلادرنگ چیست؟

سیستم عامل بلادرنگ RTOS چیست؟

عبارت RTOS خلاصه شده Real-Time Operating System است، یعنی سیستم عامل بلادرنگ. اما بلادرنگ یعنی چه؟ برای رسیدن به پاسخ این سوال، نیاز است که ابتدا به مفهوم بلادرنگ یا Real-Time بپردازیم. در این مقاله بررسی می کنیم که، بلادرنگ چه چیزی هست و چه چیزی نیست. در ویدئو آموزشی زیر در قالب چند مثال به زیبایی مفهوم بلادرنگ بیان شده است.

مشاهده ویدئو

یک ذهنیت اشتباه

در نگاه اول خیلی افراد ممکنه فکر کنند زمانی که یک سیستم پردازش بلارنگ داره، به این مفهومه که دارای سخت افزارهای گران قیمت و اصطلاحا خفن هست! یک CPU بسیار قوی، RAM و … ، اما جالبه که بدونید سخت افزار قوی و گران قیمت هیچ ارتباطی با بلادرنگ بودن پردازش نداره! حالا داستان چیه؟ در ادامه مقاله بررسی میکنیم!

بلادرنگ یا Real-Time

زمانی که می گیم یک کاربرد بلادرنگ هست، به این معنی ست که یک رویداد رخ می دهد، بلافاصله سیستم پردازشی باید متوجه رخداد شود، و فورا پردازش های مورد نظر را باید انجام دهد. اما از زمان وقوع رخداد چقدر زمان سپری میشه تا پردازش های مرتبط انجام و کامل بشه؟

معمولا این زمان باید به حدی کم باشه که از دید ناظر بیرونی، در یک لحظه احساس بشه، بدون تاخیر یا به عبارت دیگر بلادرنگ (بی درنگ). حالا که نسبت به بحث بلادرنگ قدری درک شهودی پیدا کردیم، اجازه بدید تعریف دقیقتری برای پردازش بلادرنگ داشته باشیم.

در RTOS امکان اولویت بندی وقایع وجود دارد. بسته به اهمیت رویدادی که رخ می دهد، یک ضرب الاجل (dead-line) برای انجام آن درنظر می گیریم، که طبیعتا زمان پردازش مورد نیاز آن از چند میکرو ثانیه تا چند میلی ثانیه می تونه طول بکشه. در شرایطی که زمان پاسخ گویی سیستم به رخداد (Response time) از ضرب الاجل تعیین شده، تجاوز نکنه، گفته میشه پردازش به صورت بلادرنگ انجام شده. و چرا Response Time انقدر برای ما در سیستم های بلادرنگ مهم هست؟

نحوه کارکرد سیستم عامل RTOS

زمانی که تصمیم می گیریم پروژه ای را بر مبنای RTOS پیاده سازی کنیم، لازمه با عینک و دنیا بینی RTOS به پروژه نگاه کنیم! در این حالت پروژه بزرگ به تعدادی پروژه کوچکتر شکسته می شه. هر کدام از پروژه های کوچکتر حکم یک ویژگی برای سیستم کلی را دارن. این ویژگی ها را می تونیم در لوپ (حلقه) های مجزا و مستقل از هم پیاده سازی کنیم. در اصطلاح سیستم عاملی به این لوپ های مجزا که هر کدام یک ویژگی سیستم را در بر دارد تسک (Task) گفته میشه.

  • در سیستم عامل RTOS می تونیم تسک ها رو با توجه به اهمیت اجرا اولویت بندی کنیم!
  • سیستم عامل RTOS بر پایه واحد زمان بندی کننده (scheduler) تسک ها رو زمانبندی می کند.
  • scheduler با توجه به اولویت تعیین شده برای تسک ها، جهت اجرا به تسک ها بودجه زمانی اختصاص می دهد.

در مقاله ای دیگر تحت عنوان استفاده از سیستم عامل RTOS در میکروکنترلرها روش کارکرد سیستم عامل با جزئیات خیلی بیشتری تشریح شده است. برای اطلاعات بیشتر حتما مقاله را مشاهده نمایید.

چرا به پردازش های بلادرنگ نیاز داریم؟

در نظر بگیرید خودرویی دچار صانحه ی تصادف بشه و کیسه هوای آن به موقع باز نشه. فاجعه اتفاق می افته درسته؟ بهترین مثالی که اهمیت پردازش بلادرنگ را نشان میده، بدون شک کیسه هوای خودرو هست. بنابراین فاجعه زمانی رخ می دهد که Response time مورد نظر برآورده نشه، و شروع و تکمیل یک فرایند از ضرب الاجل تعیین شده تجاوز کنه. بله نتیجه مرگ یا آسیب جدی سرنشین خودرو خواهد بود!

چند نمونه دیگر از این مثال ها رو شما می توانید نام ببرید؟ ددلاین هایی که اگر رعایت نشوند و از دست بروند، صدمات جانی و مالی در پی دارند! به همین جهت سیستمی که قراره کاربرد سخت (Hard Real-Time Application) داشته باشه، باید بتونه از پس زمانبندی تسک های اولویت بالا در ددلاین تعیین شده بر بیاد. در غیر این صورت سیستم طراحی شده امن نیست و باید دور ریخته شود و دوباره طراحی بشه!


منابع پیشنهادی جهت یادگیری FreeRTOS

در لینک زیر می تونید کتاب الکترونیکی را دانلود کنید و یک شروع سریع با سیستم عامل FreeRTOS برای میکروکنترلر STM32 داشته باشید.

دانلود کتاب شروع کار با RTOS

همینطور می تونید در دوره جامع آموزش سیستم عامل FreeRTOS در لینک زیر شرکت کنید.


لینک های مفید

نصب و راه اندازی FreeRTOS با STM32 و cubeMX

استفاده از سیستم عامل RTOS در میکروکنترلرها

مقایسه برنامه نویسی به روش RTOS و Super Loop

برنامه نویسی به روش RTOS امروز یک ضرورت است؟!


اگر سوال، پیشنهاد ویا نظری راجع به این مطلب دارید، از قسمت نظرات در پایین همین صفحه، می توانید با ما و بقیه ی خوانندگان درمیان بگذارید.

author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

12 نظر در “سیستم عامل بلادرنگ RTOS چیست؟

  1. ارسلان احمدی گفت:

    سلام. قابلیت اطمینان در سیستمهای Bare-metal بالاست یا آرتاس؟

    1. درود بر شما.
      در هر دو سبک baremetal و RTOS ، اطمینان می تونه بالا و یا کم باشه، بستگی به پیاده سازی داره.
      در کل برای پروژه های کوچک baremetal کافی هست.
      برای پروژه های متوسط و بزرگ RTOS گزینه مطلوبتری هست.
      با آرزوی بهترین ها.

  2. غزل ربیعی گفت:

    سلام ببخشید یک idیا گروهی معرفی میکنید سوالات و اشکالاتfreertosبپرسیم و اینکه خودتون حضور داشته باشید در اون گروه که پاسخ دهید . ممنون

    1. درود بر شما.

      دوستان شرکت کننده در دوره FreeRTOS در حال حاضر می تونن با شماره واتساپ سایت موجود در بخش تماس با ما در ارتباط باشند. به اینصورت اگر سوال و یا مشکلی از مطالب ارائه شده در دوره FreeRTOS دارید، بررسی و پاسخ داده می شود.

      با آرزوی بهترین ها

  3. غزل ربیعی گفت:

    ممنون از سایت خوبتون و پاسخگویی تون
    ممنون میشم اگه در موردtask notificationsو event group هم مطلب بزارید .
    و اینکه حتما لازم یک متغییر از یک تسک به تسک دیگر باqueueارسال بشه یا با متغییر Global هم ارسال بشه اوکی درصورتی که بدونیم از این متغییر در جای دیگه ایی به جز این دوتا تسک استفاده نکردیم .ممنون

    1. خواهش می کنم، خوشحالم مفید بوده.
      به امید خدا مباحث جدید رو در نظر داریم در آپدیت های آینده به دوره FreeRTOS اضافه کنیم.
      اینکه در عوض queue از متغییر Global استفاده بشه، بستگی به شرایط پروژه داره، به عنوان یک قائده کلی نمیشه گفت درسته، اما در شرایط خاصی می شه استفاده کرد. بستگی به معماری پروژه داره و البته محدودیت ها رو بیشتر می کنه.

      1. ارسلان احمدی گفت:

        سلام مهندس، ممنون بابت جواب.
        در شرایطی که baremetal با روشهای استاندارد (MISRA……) تولید شده باشد و مدت زمان تولید برنامه نادیده گرفته شود صرفا از دیدگاه قابلیت اطمینان؟ ( هر چند که نادیده گرفتن زمان برای نوشتن کد غیر فنی هست)

        1. درود بر شما.
          خواهش می کنم. متاسفانه متوجه سوالتون نشدم. MISRA و … ها زمانی که تعداد برنامه نویس ها زیاد هست و قراره یک پروژه گروهی کار بشه برای یکدست بودن کار اهمیت پیاده می کنه که خروجی تکه های پروژه یک دست باشه و یکسری اصول اولیه رعایت بشه و … .
          قابلیت اطمینان بستگی به پروژه داره، اینکه کجا قراره کار کنه و چه استانداردهایی رو باید پاس کنه. برای شرایط خاصتر RTOS هایی هم وجود دارند که استانداردهای خاصی رو پاس کردند.
          امیدوارم مفید بوده باشه.
          با آرزوی بهترین ها

  4. غزل ربیعی گفت:

    سلام ممنون از پاسخگویی
    ببخشید ی سوال دیگه Queue mail چیه و همچنین
    xQueue send to back from isr
    یا
    XQueue send to front from isr
    چه مزیتی نسبت به
    XQueue send from isrدارد ؟

    1. درود بر شما. خواهش می کنم.

      در مورد سوال اول : عبارت mail در سیستم عامل های مختلف می تونه مفهوم متفاوتی داشته باشه، اما در FreeRTOS ، عبارت هست از Queue ای که دارای یک Item است و این Item توسط فرستنده overwrite می شود و هرگز توسط گیرنده پاک نمی شود بلکه Peek می شود.

      در مورد سوال دوم : دو API یاد شده، xQueueSendToBackFromISR و xQueueSendFromISR معادل یکدیگر می باشند و تفاوتی ندارند و موجب می شوند در عملیات Enqueue ، اون item جدید در ته صف اضافه شود. این در حالی هست که API دیگر xQueueSendToFrontFromISR موجب می شود در عملیات Enqueue، اون item جدید به جلو صف اضافه شود.

      سوال مربوط به Queue رو بهتر بود در لینک زیر می پرسیدید
      https://easymcu.org/fa/freertos-what-is-queue/

      با آرزوی بهترین ها

  5. غزل ربیعی گفت:

    سلام ببخشید delayبرحسبmicro secondچه جوری درسیستم عاملfreertosایجاد کنیم باstm32 ؟ممنون

    1. درود بر شما.
      اگر میزان تاخیر مورد نیاز در رنج میکرو ثانیه هست، از تاخیرهای عادی در روش برمتال می تونید استفاده کنید، فقط سعی کنید تا جای ممکن کم و محدود استفاده کنید.
      با آرزوی بهترین ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.