RTOS چیست؟ اجزای اصلی RTOS قلب تپنده سیستم

RTOS چیست؟ اجزای اصلی RTOS قلب تپنده سیستم

اجزای اصلی RTOS؛ قلب تپنده سیستم

اگر RTOS را یک شهر هوشمند در نظر بگیریم، هر بخش از آن نقش مشخصی دارد. در این شهر، هیچ کاری بدون برنامه‌ریزی انجام نمی‌شود. همه چیز زمان‌بندی شده، اولویت‌بندی شده و تحت کنترل است.

در این بخش با مهم‌ترین اجزای RTOS آشنا می‌شویم:

  • Task (وظیفه)

  • Scheduler (زمان‌بند)

  • Context Switching (تعویض زمینه)

  • Queue (صف)

  • Semaphore (سمافور)

  • Mutex (قفل دسترسی)

این‌ها ستون‌های اصلی هر سیستم عامل بلادرنگ هستند.


Task چیست؟

در RTOS، برنامه دیگر یک حلقه بزرگ while(1) نیست. بلکه به بخش‌های کوچک‌تر به نام Task تقسیم می‌شود.

هر Task در واقع یک وظیفه مستقل است که:

  • کد مخصوص خودش را دارد

  • حافظه و وضعیت اجرای خودش را دارد

  • می‌تواند در زمان مشخص اجرا شود

  • می‌تواند متوقف یا دوباره اجرا شود

مثال ساده

فرض کنید یک سیستم هوشمند دارید که باید:

  1. دما را بخواند

  2. داده را به سرور ارسال کند

  3. یک LCD را به‌روزرسانی کند

در RTOS این سه کار به سه Task جدا تبدیل می‌شوند:

  • Task سنسور دما

  • Task ارتباط شبکه

  • Task نمایشگر

هر کدام مستقل هستند، اما توسط RTOS هماهنگ می‌شوند.


ویژگی مهم Task: حالت‌های مختلف اجرا

هر Task در RTOS فقط اجرا نمی‌شود، بلکه در حالت‌های مختلف قرار می‌گیرد:

1. Running (در حال اجرا)

Task در حال استفاده از CPU است.

2. Ready (آماده اجرا)

Task آماده است اما CPU در اختیار Task دیگری است.

3. Blocked (مسدود)

Task منتظر یک رویداد است (مثلاً دریافت داده یا پایان زمان تأخیر).

4. Suspended (متوقف)

Task به‌صورت دستی متوقف شده است.

این حالت‌ها باعث می‌شوند RTOS بتواند مدیریت دقیقی روی اجرای برنامه داشته باشد.


Scheduler چیست؟

Scheduler مهم‌ترین بخش RTOS است.

اگر Taskها را بازیگران یک صحنه تئاتر در نظر بگیریم، Scheduler کارگردان است.

وظیفه Scheduler این است که تصمیم بگیرد:

  • کدام Task اجرا شود

  • چه زمانی اجرا شود

  • چه مدت اجرا شود

  • در چه لحظه‌ای متوقف شود


انواع Scheduling در RTOS

در سیستم‌های RTOS معمولاً چند نوع زمان‌بندی وجود دارد:

1. Preemptive Scheduling (اولویت‌محور)

در این حالت اگر یک Task مهم‌تر آماده شود، اجرای Task فعلی قطع می‌شود و Task جدید اجرا می‌شود.

2. Cooperative Scheduling (همکاری‌محور)

در این حالت Taskها خودشان کنترل CPU را به Task دیگر واگذار می‌کنند.

در میکروکنترلرها معمولاً Preemptive استفاده می‌شود چون دقیق‌تر و قابل اعتمادتر است.


Priority (اولویت Taskها)

در RTOS همه Taskها برابر نیستند.

هر Task یک اولویت (Priority) دارد.

  • Task با اولویت بالا سریع‌تر اجرا می‌شود

  • Task با اولویت پایین ممکن است دیرتر اجرا شود

مثال واقعی

فرض کنید در یک سیستم پزشکی:

  • خواندن ضربان قلب → اولویت بالا

  • ذخیره داده در حافظه → اولویت متوسط

  • نمایش گراف → اولویت پایین

اگر سیستم شلوغ شود، RTOS اول کارهای حیاتی را انجام می‌دهد.


Context Switching چیست؟

یکی از مفاهیم بسیار مهم در RTOS، تعویض زمینه (Context Switching) است.

تعریف ساده:

زمانی که CPU از یک Task به Task دیگر می‌رود، باید وضعیت Task قبلی را ذخیره و وضعیت Task جدید را بازیابی کند.

این شامل موارد زیر است:

  • مقدار رجیسترها

  • شمارنده برنامه (Program Counter)

  • وضعیت حافظه

  • وضعیت Stack

مثال ساده

فرض کنید دارید کتاب می‌خوانید، وسط صفحه را علامت می‌زنید، سپس کتاب را می‌بندید و می‌روید سراغ کتاب دیگر. بعداً دوباره برمی‌گردید و از همان نقطه ادامه می‌دهید.

RTOS دقیقاً همین کار را برای Taskها انجام می‌دهد.


Queue چیست؟

Queue (صف) یکی از ابزارهای مهم ارتباط بین Taskها است.

در RTOS، Taskها معمولاً باید با هم ارتباط داشته باشند. Queue مثل یک کانال ارتباطی امن عمل می‌کند.

کاربرد Queue

  • ارسال داده بین Taskها

  • انتقال اطلاعات سنسور

  • مدیریت پیام‌ها

  • ذخیره موقت داده‌ها

مثال

Task سنسور دما مقدار 25 درجه را می‌خواند و در Queue قرار می‌دهد.
Task نمایشگر این مقدار را از Queue دریافت می‌کند و روی LCD نشان می‌دهد.


Semaphore چیست؟

Semaphore یک ابزار برای هماهنگی بین Taskهاست.

کاربرد اصلی:

کنترل دسترسی به منابع مشترک یا هماهنگ‌سازی اجرا

مثال ساده:

فرض کنید دو Task می‌خواهند هم‌زمان از یک پرینتر استفاده کنند. اگر کنترل نباشد، داده‌ها قاطی می‌شوند.

Semaphore مثل یک چراغ راهنمایی عمل می‌کند:

  • سبز → اجازه ورود

  • قرمز → انتظار


انواع Semaphore

1. Binary Semaphore

فقط دو حالت دارد: 0 یا 1
برای کنترل ساده استفاده می‌شود.

2. Counting Semaphore

می‌تواند چند مقدار داشته باشد
برای مدیریت چند منبع هم‌زمان استفاده می‌شود.


Mutex چیست؟

Mutex (Mutual Exclusion) شباهت زیادی به Semaphore دارد اما دقیق‌تر و امن‌تر است.

Mutex برای این استفاده می‌شود که فقط یک Task در یک زمان مشخص به یک منبع دسترسی داشته باشد.

تفاوت مهم Mutex و Semaphore

  • Mutex مالک دارد (Owner دارد)

  • Semaphore مالک ندارد

مثال واقعی

اگر یک فایل روی حافظه SD دارید:

  • فقط یک Task باید بتواند هم‌زمان آن را تغییر دهد

  • Mutex این کار را تضمین می‌کند


تفاوت Queue، Semaphore و Mutex

این سه مفهوم معمولاً با هم اشتباه گرفته می‌شوند:

ابزارکاربرد اصلی
Queueانتقال داده
Semaphoreهماهنگی و سیگنال‌دهی
Mutexکنترل دسترسی انحصاری

چرا این مفاهیم مهم هستند؟

اگر این ابزارها وجود نداشتند:

  • داده‌ها خراب می‌شدند

  • Taskها با هم تداخل پیدا می‌کردند

  • سیستم غیرقابل پیش‌بینی می‌شد

  • خطاهای سخت‌گیرانه (Hard Fault) رخ می‌داد

در واقع این ابزارها باعث می‌شوند RTOS قابل اعتماد و صنعتی باشد.


جمع‌بندی این بخش

در این بخش فهمیدیم که RTOS فقط یک سیستم عامل ساده نیست، بلکه یک ساختار دقیق برای مدیریت هم‌زمانی است.

مفاهیمی مثل Task، Scheduler، Queue، Semaphore و Mutex پایه‌های اصلی این سیستم هستند. بدون درک این مفاهیم، کار با هیچ RTOSی مثل FreeRTOS یا Zephyr به‌صورت حرفه‌ای ممکن نیست.


در بخش سوم و پایانی مقاله بررسی می‌کنیم:

  • Context Switching در سطح سخت‌افزار

  • FreeRTOS و RTOSهای معروف

  • مزایا و معایب واقعی RTOS در پروژه‌های صنعتی

  • اشتباهات رایج برنامه‌نویسان

  • و یک جمع‌بندی کاملاً کاربردی برای انتخاب بین Bare Metal و RTOS

برای مطالعه بخش سوم اینجا کلیک کنید

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

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

سیزده − سه =