در طول این سری، ویژگیهای کلیدی یک سیستم بلادرنگ را ارزیابی خواهیم کرد. ما متوجه خواهیم شد که چگونه یک هسته لینوکس با قابلیت بلادرنگ با خط اصلی متفاوت است و به عنوان مثال، به معاوضه های عملکردی که باید هنگام انتخاب هسته بلادرنگ در مقابل یک هسته با تاخیر کم توجه کنید، خواهیم پرداخت.
اگرچه برای دنبال کردن این مجموعه به دانش پیش نیازی نیاز ندارید، توصیه می کنیم درک اولیه ای از نقش لینوکس در بخش تعبیه شده از طیف محاسباتی داشته باشید. اگر تازه وارد این فضا شده اید و تازه از ابتدا شروع کرده اید، مقدمه ای برای لینوکس تعبیه شده دریافت کنید یا راهنمای رسمی لینوکس برای برنامه های کاربردی جاسازی شده را بررسی کنید.
لینوکس بلادرنگ چیست؟
طبق پیشبینیهای IDC، نزدیک به ۳۰ درصد از دادههای جهان تا سال ۲۰۲۵ به پردازش بلادرنگ نیاز خواهند داشت [۱]. در حالی که حجم کاری سطوح متفاوتی از عملکرد بلادرنگ و زمانهای چرخه دلخواه بسته به پیکربندیهای سیستمی خاص متفاوت است، تحلیلگران انتظار دارند که پذیرش محاسبات بلادرنگ در بازار ادامه یابد و در سالهای آینده تسریع شود.
تقاضا برای رایانه های شخصی صنعتی که سیستم های کنترل، سرورهای لبه صنعتی، PLC ها، روبات ها و پهپادها را با قابلیت های بلادرنگ هدایت می کنند، در حال افزایش است. در بخش نرمافزاری، محاسبات بلادرنگ از طریق هسته لینوکس به لطف پشتیبانی غنی از دستگاههای سختافزاری و لوازم جانبی به عنوان یک راهحل ارزشمند در حال ظهور است. در میان رویکردهای مختلف برای آوردن قابلیتهای بلادرنگ به هسته، پچ PREEMPT_RT با تغییر کد هسته موجود، با هدف افزایش قابلیت پیشبینی و کاهش تأخیرها میباشد.
این مجموعه وبلاگ سه قسمتی قصد دارد توضیح دهد که لینوکس بلادرنگ چیست. متأسفانه، موضوع بحث برانگیز است و به نظر نمی رسد که ۱۰۰٪ توافق بر سر اصطلاحات وجود داشته باشد. در بخش اول، ما به دو تعریف از معنای واقعی زمان واقعی نگاه خواهیم کرد. همانطور که به زودی خواهید آموخت، یک سیستم بلادرنگ محدود به زمان است و دارای محدودیت های زمانی مشخص و مشخصی است.
با این حال، چندین تعریف دیگر در زمان واقعی وجود دارد، و برخی متناقض هستند. به دلیل سردرگمی، ابتدا با نگاهی به برخی از رایجترین تصورات غلط در مورد لینوکس بلادرنگ، شفافیت را ارائه خواهیم کرد. بعداً در این وبلاگ، یک نمای کلی در سطح بالا از برخی از عمودها ارائه خواهیم کرد که ممکن است برای روشن شدن بیشتر موارد استفاده از آن به زمان واقعی نیاز باشد.
بخش دوم از این سری مقالات، زیر سرپوش یک هسته لینوکس بلادرنگ به نظر می رسد. ما در مورد preemption و تفاوت بین انتقال فضای کاربر به فضای هسته در یک هسته لینوکس با و بدون قابلیت محاسبه بلادرنگ یاد خواهیم گرفت. در نهایت، در قسمت سوم، PREEMPT_RT را معرفی میکنیم و مکانیسمهایی را که پچست برای کاهش تأخیر هسته پیادهسازی میکند، مطالعه میکنیم.
بدون هیچ مقدمه ای، بیایید شروع کنیم.
باورهای غلط در مورد لینوکس بلادرنگ
یک سیستم بلادرنگ فقط به یک کرنل بلادرنگ نیاز دارد
قبل از کاوش عمیق تر در مورد آنچه لینوکس بلادرنگ را تشکیل می دهد، بسیار مهم است که بدانیم یک هسته لینوکس بلادرنگ به تنهایی لزوماً یک سیستم را بلادرنگ نمی سازد. هسته تنها یکی از اجزای یک سیستم بلادرنگ است، و حتی کارآمدترین سیستم عامل بلادرنگ (RTOS) در حضور سایر مخازن تاخیر بیفایده است. حتی با وجود یک هسته با قابلیت بلادرنگ، هر سیستم معمولاً به تنظیم خاصی نیاز دارد. برآورده ساختن نیازهای محاسبات بلادرنگ مستلزم درک دقیق پشته کلی است، از سیلیکون زیرین گرفته تا سیستم عامل، لایه شبکه و برنامه های کاربردی.
زمان واقعی = عملکرد بهینه
یکی دیگر از تصورات غلط رایج این است که در زمان واقعی منجر به به اصطلاح عملکرد بهینه می شود. این سوء تفاهم اغلب از برنامههای ویدیویی که بهعنوان بلادرنگ توصیف میشوند، به دلیل عدم تأخیر درک شده ناشی میشود. اینها معمولاً فقط بهترین سیستمهایی هستند که به اندازه کافی کارایی دارند تا هر گونه اطلاع انسانی از خرابی ضرب الاجل را حذف کنند. هسته لینوکس بلادرنگ منجر به عملکرد بهینه نمی شود. ما به دنبال پاسخ قطعی به یک رویداد خارجی هستیم، با هدف به حداقل رساندن تأخیر پاسخ به جای توان عملیاتی بهینه. در واقع، یک هسته لینوکس بلادرنگ تقریباً به طور قطع در هر چیزی به جز پاسخدهی به زمانبندی وظایف، بدتر از CFS یا سایر زمانبندیها عمل میکند.
همیشه ضروری است
همچنین، یک سیستم عامل بلادرنگ همیشه ضروری نیست. به نظر می رسد که چیزی «زمان واقعی» باشد، معمولاً به دلیل مفهوم عملکرد، اما باید به پیامدهای واقعی یک مهلت از دست رفته و اینکه آیا آنها الزامات بلادرنگ را تضمین می کنند، نگاه کرد. به عنوان مثال، اگر یک ضرب الاجل به ترتیب ثانیه باشد، یک CPU چند گیگاهرتزی با تنظیم مناسب احتمالاً آن را از دست نخواهد داد.
چه زمانی از لینوکس بلادرنگ استفاده کنیم
با در نظر گرفتن توضیحات بالا، چه زمانی باید به یک هسته لینوکس بلادرنگ تکیه کرد؟
طبق یک تعریف شناخته شده، در یک سیستم بلادرنگ، صحت محاسبات نه تنها به درستی منطقی نتیجه، بلکه به زمانی که آن را تولید می کند نیز بستگی دارد. اگر محدودیت های زمان بندی سیستم برآورده نشود، گفته می شود که خرابی سیستم رخ داده است [2]. استاندارد POSIX 1003.1 نیز تعریف مشابهی دارد. این استاندارد بیان می کند که به موقع بودن واقعی توانایی یک سیستم عامل برای ارائه سطح مورد نیاز خدمات در یک زمان پاسخ محدود است [3].
به طور خلاصه، یک سیستم بلادرنگ برای موارد استفاده شدید وابسته به تأخیر مناسب است، جایی که مهلت از دست رفته منجر به شکست می شود، نه فقط تخریب سیستم. ما معمولاً این سناریوها را کجا می بینیم؟
لینوکس بلادرنگ در کاربردهای هدف
مراقبت های بهداشتی
به دستگاههای اختصاصی مانند تجهیزات پزشکی پشتیبانی از زندگی فکر کنید، جایی که اپراتورها انتظار دارند که سیستمهای محاسباتی وظایف خود را در یک مهلت مشخص انجام دهند و در صورت از دست دادن مهلت، عواقب فاجعهباری داشته باشند.
کارخانه ها
علاوه بر رباتهای پزشکی در صنعت مراقبتهای بهداشتی، قابلیتهای بلادرنگ در موارد مختلف استفاده و عمودی نقش دارند. در میان بخشهای اصلی بازار، ما شاهد اتوماسیون فرآیندی و گسسته در بخش صنعتی هستیم. جبرگرایی و قابلیت های بلادرنگ در کف کارخانه حیاتی هستند. به عنوان مثال، PLC ها در یک خط مونتاژ باید داده ها را در زمان واقعی تحویل و پردازش کنند تا یکپارچگی سیستم و ادامه تولید حفظ شود، زیرا یک مهلت از دست رفته می تواند کل خط تولید را به خطر بیندازد.
مخابرات
پیادهسازی معماری Open RAN مجازیسازی شده به اپراتورهای تلفن همراه اجازه میدهد تا عملکردهای شبکه خاصی را مستقر کنند، که به انعطافپذیری بیشتر و استفاده کارآمد از منابع شبکه اجازه میدهد. با اجرای لینوکس بلادرنگ در معماری Open RAN، اپراتورها میتوانند شبکههای 5G مدرن، مقیاسپذیر، مقرونبهصرفه و مقرونبهصرفه بسازند، از آمادگی 6G اطمینان حاصل کنند و امکان استقرار سرویسهای جدید نوآورانه را برای مشترکین فراهم کنند.
خودرو
سیستمهای بیدرنگ در صنعت خودروسازی نیز وجود دارند، زمانی که نیازهای تأخیر واقعاً محدود هستند، و یک ضربالاجل از دست رفته میتواند فاجعهبار باشد، مانند ترمزهای خودرو که از تصادف جلوگیری میکنند. RTOS عموماً در خودروها به کار گرفته شده اند تا تأخیرهای مورد نیاز را برآورده کنند. با این حال، امروزه تولیدکنندگان تجهیزات اصلی و تامین کنندگان ردیف 1 آنها به طور فزاینده ای به هسته لینوکس برای برنامه هایی مانند سیستم های اطلاعات سرگرمی و رابط های انسان و ماشین متکی هستند.
خلاصه
لینوکس بلادرنگ دارای کاربردهای بازار بسیار گسترده تری نسبت به موارد ذکر شده است، از تضمین کیفیت محصول و ایمنی گرفته تا نفت و گاز و حمل و نقل با الزامات دقیق دقیق برای سیستم های اتوماسیون.
چگونه متوجه می شوید که یک سیستم عامل با تأخیر کم نسبت به هسته لینوکس بلادرنگ قابل قبول است؟ برای پاسخ به این سوال، باید به الزامات تأخیر و عواقب از دست دادن یک ضرب الاجل نگاه کنید. یک تصمیم آگاهانه فقط می تواند از آن داده ها حاصل شود. اگر نیازهای تأخیر شما واقعاً محدود است و مهلت از دست رفته منجر به خرابی سیستم می شود، ممکن است لینوکس بلادرنگ ضروری باشد. از سوی دیگر، اگر نیازهای تأخیر کمی سختگیرانهتر و عواقب آن کمتر باشد، ممکن است یک هسته با تأخیر کم کافی باشد.