سیستم عامل بی درنگ Real Time چیست و چگونه کار می کند؟
وقتی واژه سیستم عامل به گوشمان میخورد، اولین چیزهایی که به ذهن مان میآید همانهایی هستند که در زندگی روزمره مان از آنها استفاده میکنیم؛ مثل ویندوز، مکینتاش و لینوکس برای کامیپوترها و اندروید و ios برای موبایلهایمان. برخی گمان میکنند سیستم عامل برای کامپیوتر است اما در حقیقت بیشتر دستگاههای دیجیتال الکترونیک نوعی سیستم عامل در خود دارند.
میکروکنترلرها هم مثل بسیاری از دستگاههای الکترونیک، سیستم عامل دارند. سیستم عاملهای مختلفی برای میکروکنترلرها طراحی شده اند و ما در این پست قصد داریم درباره سیستم عامل بی درنگ یا Real Time Operating System (RTOS) صحبت کنیم. همانطور که از نام این سیستم عامل پیداست، واکنش این سیستم عامل بسیار سریع است. میکروکنترلرها فضای زیادی برای کدها ندارند و به همین خاطر سیستم عاملهای آنها حیطه کمیبرای پیشرفت دارند. این سیستم عاملها تلاش میکنند حداقل حیطه عمل را برای زمانبندی و بررسی وظایف مختلف سیستمهای کوچک را فراهم کنند.
برای درک بهتر این مفهوم، ابتدا درباره مفهوم ماشین حالات صحبت میکنیم. در کدهای زیر میتوانید پیاده سازی مفهوم ماشین حالات را ببینید:
همانطور که در کدها پیداست، یک شرط برای تغییر توالی اجرای کار وجود دارد که میتواند اصلاح و پیچیده تر شود. برنامه نویس میتواند این کد را تغییر دهد و برای تغییر وظایف از عبارات تصمیم گیری (نظیر if، if-else، switch-case) استفاده کند. روند اجرای دستورات هم به لحاظ منطقی مشخص خواهد شد.سیستم عامل بی درنگ برای کار کردن وظایف مشخص و روتینی را انجام میدهد. هسته سیستم عامل، توجه CPU را برای یک بازه زمانی مشخص به یک وظیفه خاص اختصاص میدهد. علاوه براین اولویت وظایف را چک میکند، پیامهای وظایف را مرتب میکند و زمانبندی را هم مشخص میکند.
کارکردهای اصلی سیستم عامل درنگ
- زمانبندی
- خدمات RTOS
- هماهنگ سازی و پیام رسانی
زمانبندی
بطور کلی وظایف یک دستگاه، سه حالت دارند:
- آماده اجرا – وقتی وظیفه ای تمام منابع و پیش فرضهای لازم برای اجرا را دارد اما هنوز اجرا نشده است، آماده اجرا نام میگیرد. درواقع این حالت نقطه شروع قبل از اجرا میباشد.
- در حال اجرا – این حالت به وظایفی اطلاق میشود که در حال انجام و پیاده سازی هستند.
- مسدود – وقتی یک وظیفه منابع و پیش فرضهای کافی برای اجرا را در اختیار نداشته باشد، در حالت مسدود قرار میگیرد.
برای زمانبندی یک وظیفه، از سه تکنیک استفاده میشود:
- زمانبندی مشارکتی (Co-operative) – در این تکنیک وقتی پیاده سازی یک وظیفه کامل شود، وظیفه اجرا خواهد شد.
- زمانبندی نوبت گردشی (Round Robin) – در این روش، یک مسیر یا بازه زمانی ثابت به هر وظیفه اختصاص داده میشود که پیاده سازی باید در طی آن کامل شود. در غیر اینصورت وظیففه جریان و دادههای تولید شده را از دست میدهد و برای اجرا باید منتظر نوبت بعدی اش بماند.
- زمانبندی پیشگیرانه (Preemptive) – در این روش، بسته به زمان تخصیص داده شده اولویت وظیفهها مشخص میشوند. در برنامهها معمولاً 256 سطح اولویت مورد استفاده قرار میگیرد. به این ترتیب به هر وظیفه یک سطح اولویت خاص اختصاص داده میشود. البته برخی از سیستمها از سطوح اولویت بیشتری حمایت میکنند و چند وظیفه ایها هم از اولویت یکسانی برخوردارند.
در سیستم عامل بی درنگ، هسته به وظایف مختلف سیستم رسیدگی میکند. هسته در این سیستم وظایف زیر را انجام میدهد:
- ایجاد یک وظیفه
- حذف یک وظیفه
- تغییر اولویت یک وظیفه
- تغییر حالت یک وظیفه
خدمات سیستم عامل بی درنگ
قلب هر سیستم عامل، هسته آن است. وظایف یک دستگاه همیشه نیاز به کنترل سخت افزاری ندارند. مدیریت و تخصیص منابع یکی از وظایف اصلی هسته است. از آنجاییکه وظایف همیشه به تمرکز CPU نیاز ندارند، هسته باید خدمات دیگری را هم ارائه دهد. این خدمات عبارتند از:
- خدمات وقفه گردانی
- خدمات زمانی
- خدمات مدیریت دستگاه
- خدمات مدیریت حافظه
- خدمات ورودی – خروجی
پیام رسانی
پیام رسانی، ابزار ارتباط با سایر سیستمها و ارتباط میان وظایف را فراهم میکند. خدمات پیام رسانی شامل موارد زیر باشد:
- نشانبرها (Semaphores)
- پرچمهای رخداد
- صندوقهای پیام
- پایپها
- صفهای پیام
نشانبرها برای همگام سازی دسترسی به منابع مشترک – مثل مناطق داده ای مشترک – مورد استفاده قرار میگیرند. پرچمهای رخداد هم برای همگام سازی فعالیتهای وظایف درونی سیستم کاربرد دارند. صندوقهای پیام، پایپها و صفهای پیام برای ارسال پیام بین وظایف مختلف مورد استفاده قرار میگیرند.
حال به معرف چند سیستم عامل بلادرنگ بیشتر مورد استفاده قرار گرفته اند، می پردازیم.
Windows CE
نسخه ای از سیستم عامل Windows شرکت Microsoft، برای کامپیوتر های کوچک و سیستم های جاسازی شده 32 بیتی سیار می باشد. واضح است که Windows CE دارای هسته ای متفاوت از Windowsهای رومیزی می باشد. این سیستم عامل روی پردازنده های Intel x86 پشتیبانی می شود و سازگار با پردازنده های MIPS، ARM و Hitachi SuperH می باشد.
این سیستم عامل دارای 256 سطح الویت است. هسته Windows CE قادر است در فضای حافظه کمتر از 1 مگابایت اجرا شود. بنابراین در دستگاه هایی که فاقد فضای ذخیره سازی هستند و همچنین به کاربر امکان هیچگونه توسعه ای را نمی دهد، در ROM دستگاه ذخیره می شود.
VxWorks
سیستم عامل بلادرنگی بر پایه Unix است که توسط شرکت Wind River Systems ایجاد و به فروش می رسد و همانند بسیاری از سیستم های عامل بلادرنگ دارای یک هسته چند وظیفه ای با قابلیت قبضه کردن و پاسخگویی سریع وقفه، امکانات ارتباطات بین فرایندی و همگام سازی، و یک سیستم پرونده می باشد. VxWorks گسترده ترین استفاده به عنوان یک RTOS در صنعت سیستم های جاسازی شده را داشته و دارای یک محیط گرافیکی پیشرفته است. این سیستم عامل دارای بیش از 1800 واسط برنامه سازی کاربردی است و روی سخت افزاری رایج قابل استفاده می باشد. خصایص مشخص اصلی VxWorks شامل مدیریت حافظه منطبق با استاندارد POSIX، امکانات چند پردازنده ای، پوسته ای برای واسط کاربر، قابلیت اشکال زدائی در سطح نمادین و منبع، و نظارت بر عملکرد سیستمی باشد. ریز هسته این سیستم عامل از 256 سطح الویت پشتیبانی می کند. برخی سیستم های مخابراتی ساخت ایران از سیستم عامل VxWorks استفاده میکنند. از برجسته تری کاربرد های این سیستم عامل می توان استفاده آن در کاوشگر مریخ را نام برد.
LynxOS
سیستم عامل بلادرنگی بر پایه Unix که توسط شرکت LynuxWorks ارائه می شود. این سیستم عامل منطبق با استاندارد POSIX و سازگار با Linux باشد و دارای ویژگی چند نخی است و برای کاربرد های بلادرنگ پیجیده ای که نیاز به پاسخگویی های سریع و قطعی دارند، طراحی شده است. این سیستم عامل اساساً در سیستم های جاسازی شده بلادرنگ، در کاربرد هایی مانند ارتباطات فضایى و فضانوردی، سیستم های نظامی، کنترل فرایند تولید و مخابرات استفاده می شود. این سیستم عامل دارای 512 سطح الویت می باشد.
VRTX
سیستم عامل بلادرنگ و چندوظیفه ای است که در حال حاضر توسط شرکت Mentor Graphics پشتیبانی و ارائه می شود و برای سیستم های جاسازی شده معمولی و سیستم های با معماری یک سیستم کامل روی یک تراشه (SoC) مناسب است. VRTX بر روی سخت افزاری ARM، MIPS، PowerPC و دیگر میکروپروسسورها با معماری RISC قابل اجرا می باشد. این سیستم عامل در تلسکوپ فضایی هابل در حال استفاده است و رقیب سرسختی برای سیستم عامل VxWorks شناخته می شود.
QNX
سیستم عامل بلادرنگِ تجاری بر پایه Unix و منطبق با استاندارد POSIX می باشد که اصولاً در بازار سیستم های جاسازی شده مورد استفاده قرار می گیرد. QNX به عنوان یک سیستم عامل مبنتی بر معماری ریز هسته، همانند اغلب سیستم عامل ها در شکل تعدادی وظایف کوچک (خدمتگذارها) به اجرا در می آید. رویکرد ریز هسته موجب انعطاف می شود و کاربر را قادر می سازد که بدون نیاز به تغییر دادن خود سیستم عامل، هر عملکردی را از کار بیاندازد. از طرف دیگر بخاطر معماری ریز هسته ایش، یک سیسنم عامل توزیعی نیز هست. این سیستم عامل بسیار کوچک است بر روی یک دیسک جا می گیرد و به عنوان سیستمی بسیار سریع و کاملاً منصف مطرح شده است.
QNX (2001) تقریباً بر روی اکثر پردازنده های جدیدی که در بازار سیستم های جاسازی شده مورد استفاده قرار می گیرد، قابل اجرا است.
این سیستم عامل دارای نسخه غیر تجاری به نام QNX NC بوده است که از سال 2003 توسعه و پشتیبانی از آن متوقف شده است.
RTLinux
سیستم عامل بلادرنگ RTLinux به عنوان توسعه ای از Linux، در ابتدا توسط V. Yodaiken ایجاد شد. این سیستم عامل در دو نسخه رایگان (RTLinux Free) و تجاری (RTLinux Pro) موجود است. RTLinux از طریق کنترل وقفه بین سخت افزار و سیستم عامل از عملیات بلادرنگ سخت پشتیبانی می کند. وقفه هایی که نیاز به پردازش قطعی دارند توسط هسته بلادرنگ پردازش می شوند، در این حین بقیه وقفه ها به سوی سیستم عامل غیر بلادرنگ فرستاده می شوند. سیستم عامل (Linux) به عنوان یک نخ با الویت پایین از هسته RTLinux اجرا می شود. در بسیاری از کارهای تحقیقاتی در ایران و جهان از نسخه رایگان این سیستم عامل استفاده می شود.
eCos
سیستم عامل بلادرنگ eCos برای سیستم های جاسازی شده و کاربردهایی که تنها به یک فرایند با چند نخ نیاز دارند، استفاده می شود. این سیستم عامل رایگان و کدهای آن قابل دسترسی است. eCos به زبان برنامه نویسی C نوشته شده و لایه ها و واسط های برنامه سازی کاربردی آن مطابق با استاندارد های POSIX و µITRON می باشد. این سیستم عامل دارای قابلیت پیکربندی است، بدین ترتیب می تواند مطابق نیاز های کاربردی مورد نظر، بهینه شود و با صدها گزینه اختیاری، بهترین عملکرد بلادرنگی و کمترین سخت افزار مورد نیاز ممکن را ارئه می کند. این سیستم عامل برای استفاده در دستگاه هایی با فضای حافظه 10 تا 100 کیلوبایت طراحی شده است و بر روی طیف وسیعی از سخت افزاری شامل ARM، Motorola 68000، MIPS، PowerPC و غیره قابل اجرا می باشد. برخی سیستم های مخابراتی ساخت ایران از این سیستم عامل استفاده میکنند. در حال حاضر این سیستم عامل توسط شرکت eCos Centric پشتیبانی میشود.
منبع :
circuitstoday .com
saakhtani .ir
tech-news .ir
سایر وب سایت های فارسی زبان
ممنون
ممنون.