موضوع مقاله: سیستم‌عامل بی‌درنگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سیستم‌عامل بی‌درنگ | مقدمه: این سیستم عامل منطبق با استاندارد POSIX و سازگار با Linux می‌باشد و دارای ویژگی چند نخی است و برای کاربردهای بی‌درنگ پیچیده‌ای که نیاز به پاسخگویی‌های سریع و قطعی دارند، طراحی شده‌است. | ## بخش 1: سیستم‌عامل بی‌درنگ | برای مثال در سیستم‌های کنترل فرایند، رایانه‌های بی‌درنگ باید داده‌های فرایند تولید را جمع‌آوری کرده و به کمک آن ماشین‌های داخل کارخانه را کنترل کنند. خیلی اوقات باید فرجه زمانی (deadline) به‌طور دقیق برآورده شود؛ یعنی باید کارها در لحظات خاصی از زمان انجام گیرد. برای مثال اگر یک خودرو در خط مونتاژ در حال حرکت باشد و ربات جوشکاری خیلی زود یا خیلی دیر جوش دهد، خودرو خراب خواهد شد. زمانی از یک سیستم بی‌درنگ استفاده می‌شود که لازم باشد عملیات پردازنده یا جریان داده در زمان کاملاً مشخصی انجام شود؛ بنابراین یک سیستم بی‌درنگ اغلب به‌عنوان ابزار کنترلی در یک کاربرد خاص استفاده می‌شود. سیستم‌هایی که آزمایش‌های علمی را کنترل می‌کنند، سیستم‌های تصویربرداری پزشکی، سیستم‌های کنترل صنعتی، و نیز برخی از موتورهای انژکتوری در خودرو، کنترلرهای لوازم خانگی و سیستم‌های جنگ‌افزاری، سیستم‌های بی‌درنگ هستند. این سیستم‌ها برای آنکه به‌درستی کار کنند باید پاسخ درست را در فرجه زمانی از پیش تعیین شده بازگردانند در صورتی که در سیستم‌های اشتراک زمانی مطلوب است (ولی اجباری نیست) که سریع پاسخ دهند. فلسفه طراحی طراحی بر اساس اولویت ـ در این طراحی تنها زمانی وظیفه ای تعویض می‌شود که وظیفه ای با اولویت بالاتر درخواست دهد، به این نوع طراحی را اولویت اولیه نیز می‌نامند. ‫‬مشخصات سیستم عامل‌های بی‌درنگ سیستم عامل‌های بی‌درنگ را می‌توان با داشتن ملزومات یگانه در پنج حوزه عمومی زیر، مشخص نمود: قطعی بودن پاسخ دهی کنترل کاربر قابلیت اطمینان نرمش با خطا سیستم عاملی قطعی است که عملیات خود را در زمان‌های ثابت یا فواصل زمانی از پیش تعیین شده انجام دهد. در یک سیستم بی‌درنگ، درخواست‌های فرایند برای خدمت توسط رخدادها، اولا به سرعتی که می‌تواند به وقفه‌ها پاسخ دهد و ثانیاً به اینکه آیا سیستم ظرفیت کافی برای اداره تمام درخواست‌ها، در زمان معلوم را دارد یا خیر، وابسته است. یک معیار مفید برای قابلیت عملکرد قطعی سیستم عامل، حداکثر تأخیر از زمان ورود یک وقفه دستگاه با اولویت بالا، تا زمان شروع خدمت است. در سیستم عامل‌های غیربی‌درنگ این تأخیر ممکن است در محدوده ده تا صدها میلی ثانیه باشد، در حالی که در یک سیستم عامل بی‌درنگ ممکن است این تأخیر حد بالایی از حدود چند میکرو ثانیه تا یک میلی ثانیه باشد. قطعی بودن دربارهٔ این است که سیستم عامل قبل از تصدیق، چه مدت صرف خدمت دادن به وقفه می‌نماید. قطعی بودن و پاسخ دهی به همراه هم، زمان پاسخ به رخدادهای خارجی را تعیین می‌کنند ویژگی زمان پاسخ در سیستم‌های بی‌درنگ بسیار حساس است، زیرا چنین سیستم‌هایی باید نیازهای زمانی اعمال شده توسط افراد، دستگاه‌ها و جریان داده‌ها در خارج از سیستم را رعایت کنند. عموماً کنترل کاربر در یک سیستم بی‌درنگ بسیار وسیع تر از کنترل کاربرد در سیستم عامل عادی است. در سیستم عامل‌های عادی کاربر یا هیچ گونه کنترلی بر عمل زمان‌بندی ندارد رهنمودهای کلی ارائه کند ولی در یک سیستم بی‌درنگ لازم است به کاربر اجازه کنترل دقیق اولویت وظیفه داده شود و بتواند میان وظیفه‌های سخت و نرم تفاوت قائل شود. یک خرابی گذرا در سیستم بی‌درنگ ممکن است تا تعمیر یا تعویض، منجر به سطح خدمت پایین‌تر گردد. | ## بخش 2: سیستم‌عامل بی‌درنگ | ولی در سیستم بی‌درنگ که در حال پاسخ دهی و کنترل رخدادها در زمان حقیقی است، از دست رفتن با کاهش کارآمدی یک پردازنده می‌تواند عواقب فاجعه آمیزی داشته باشد. در حال اجرا – این حالت به وظایفی گفته می‌شود که در حال انجام و پیاده‌سازی هستند. سه روش معمول برای حل این مشکل وجود دارد: وقفه موقتی/ غیرفعال کردن وقفه‌ها سیستم عامل‌های عمومی به‌طور معمول به کاربر برنامه‌ها اجازه نمی‌دهد که وقفه را مسدود کند، زیرا کاربر برنامه می‌تواند تا زمانی که بخواهد CPU را کنترل کند. بعضی از پردازنده‌های مدرن کد حالت کاربر، اجازه نمی‌دهند که وقفه‌ها را غیرفعال کنند زیرا این کنترل یک منبع سیستم عامل کلیدی محسوب می‌شود. با این حال، بسیاری از سیستم‌های جاسازی شده و RTOSها، اجازه می‌دهند که برنامه خود را در حالت هسته برای کارایی بیشتر سیستم تماس اجرا کند و همچنین اجازه دهد برنامه به کنترل بیشتری از محیط عامل بدون نیاز به مداخله سیستم عامل بپردازد. در سیستم‌های تک پردازنده، یک برنامه در حال اجرا در حالت هسته و وقفه‌های پنهانی، کمترین روش سرریز، برای جلوگیری از دسترسی همزمان به یک منبع مشترک، است. در حالی که وقفه‌ها مسدود می‌شوند و کار فعلی تماس OS را مسدود نمی‌کند، کار فعلی استفاده «منحصربفرد» از CPU را دارد، زیرا هیچ کار دیگری یا وقفه نمی‌تواند کنترل را در دست بگیرد، بنابراین بخش بحرانی محافظت می‌شود. هنگامی که وظیفه از بخش بحرانی آن خارج می‌شود، باید وقفه‌ها را پنهان کند؛ در صورت وجود وقفه، به وقفه‌ها پرداخته می‌شود، سپس اجرا خواهد شد. قطع موقت وقفه تنها زمانی انجام می‌شود که طولانی‌ترین مسیر از طریق بخش بحرانی، کوتاه‌تر از حداکثر وقفه پوشیده مورد نظر باشد. به‌طور معمول این روش حفاظت فقط زمانی استفاده می‌شود که بخش بحرانی تنها چند دستورالعمل باشد و حاوی حلقه نباشد. این روش برای محافظت از ریزپردازنده‌های سخت‌افزاری ایدئال است که بیت‌ها توسط وظایف مختلف کنترل می‌شوند. این مکانیزم‌ها شامل تماس‌های سیستم می‌شوند و معمولاً در هنگام خروج توزیع‌کننده سیستم‌عامل را فراخوانی می‌کنند، بنابراین معمولاً صدها دستورالعمل CPU را برای اجرا درگیر می‌کنند، در حالی که وقفه‌های پنهان می‌تواند به عنوان یک دستورالعمل در برخی از پردازنده‌ها انجام شوند. اگرچه رفتار زمان-بی‌درنگ آن‌ها شفافیت کمتری از سیستم‌های سمافور دارد، اما سیستم‌های مبتنی بر پیام ساده از بیشتر خطرات پروتکل پرهیز می‌کنند و عموماً بهتر از سیستم‌های سمافوره عمل می‌کنند. تداخل اولویت می‌تواند زمانی رخ دهد که یک وظیفه بر روی یک پیام با کمترین اولویت کار کند و پیامی با اولویت بالاتر در صف پیام ورودی خود (یا پیامی که به‌طور غیرمستقیم از یک کار اولویت بالاتر منشأ گرفته‌است) نادیده گرفته شود. بن‌بست (علوم‌کامپیوتر)های پروتکل زمانی می‌تواند رخ دهد که دو یا چند وظیفه منتظر یکدیگر برای ارسال پیام‌های پاسخ باشند. مدیر وقفه‌ها و برنامه‌ریز از آنجایی که یک مدیر وقفه وظایف با بالاترین اولویت را مسدود می‌کند و از زمانیکه سیستم عامل‌های بی‌درنگ طراحی شده‌اند تا تأخیر زمانی را به حداقل برسانند، مدیر وقفه معمولاً حد ممکن کوتاه نگه می‌دارد. | ## بخش 3: سیستم‌عامل بی‌درنگ | مدیر وقفه بازپرداخت تمام تعاملات با سخت‌افزار را در صورت امکان به تأخیر می‌اندازد؛ به‌طور معمول همه چیز لازم است تا وقفه را تأیید یا غیرفعال کند (به طوری که زمانی که مدیریت وقفه انجام می‌شود دوباره رخ نخواهد داد) و یک کار را که باید انجام شود، اعلام کند. این را می‌توان با انحلال یک راننده از طریق رهاسازی سمافور، تنظیم یک پرچم یا ارسال پیام انجام داد. یک سیستم عامل فهرستی از اشیائی که مدیریت می‌کند مانند موضوعات، انحصار متقابل، حافظه و غیره را نگه می‌دارد. به همین دلیل زمانی که یک مدیر وقفه یک عملکرد سیستم عامل را در حالی که برنامه در حال انجام شدن است، صدا بزند، می‌تواند مشکل ساز باشد. تابع سیستم‌عامل که توسط یک مدیر وقفه صدا زده می‌شود می‌تواند پایگاه داده شیء را به دلیل بروز رسانی برنامه در یک حالت ناسازگار پیدا کند. RTOSهایی که معماری یکپارچه را اجرا می‌کنند، به سادگی با قطع کردن وقفه‌ها در هنگام بروز رسانی کاتالوگ داخلی مشکل را حل می‌کنند. کاهش‌یافتنش این است که تأخیر وقفه افزایش می‌یابد، و به‌طور بالقوه وقفه‌ها از دست می‌روند. معماری جداگانه تماس‌های سیستم‌عامل را مستقیماً انجام نمی‌دهد بلکه کار مربوط به سیستم عامل را به یک مدیر جداگانه منتقل می‌کند. این مدیر دارای اولویت بالاتری نسبت به هر موضوع است اما اولویت کمتری نسبت به مدیریت‌وقفه‌ها دارد. در نتیجه، سیستم عامل‌هایی که معماری بخشی (به انگلیسی: segment) را پیاده‌سازی می‌کنند بیشتر قابل پیش‌بینی هستند و می‌توانند در مقایسه با معماری یکپارچه با نرخ وقفه بالاتر مقایسه شوند. تخصیص حافظه تخصیص حافظه در یک سیستم عامل بی‌درنگ مهم‌تر از سایر سیستم عامل‌ها است. هر زمان که امکان‌پذیر باشد، تمام تخصیص حافظه مورد نیاز در زمان کامپایل تعیین شده‌است. با تخصیص مکرر و آزاد شدن توده‌های کوچک حافظه، اتفاقی که ممکن است رخ دهد این است که در آن حافظه موجود به چندین بخش تقسیم شده و RTOS قادر به تخصیص یک حافظه متناوب و به اندازه کافی از حافظه نیست، اگرچه حافظه کافی وجود دارد. از آنجا که دیسک‌های مکانیکی زمان پاسخ بسیار طولانی‌تر و غیرقابل پیش‌بینی دارند، مبادله فایل‌های دیسک به دلایل مشابه مثل تخصیص RAM مورد استفاده نمی‌شود. | ## جمع‌بندی | الگوریتم ساده بلوک-سایز-ثابت برای سیستم جاسازی شده به‌علت کم بودن سربار (به انگلیسی:overhead)به خوبی کار می‌کند.