رایانش بیدرنگدر علوم رایانه رایانش بیدرنگ[۱] یا محاسبه همزمان-با-وقوع (به انگلیسی: Real-time computing) به بررسی مسائل بیدرنگ بودن سامانههای رایانهای از جمله ضرب الاجل (سررسید)هایی (به انگلیسی: deadline) که برای یک پردازش وجود دارد میپردازد. در سامانههای غیر بیدرنگ هیچ ضربالاجلی برای پردازشها وجود ندارد حتی اگر پاسخ سریع یا عملکرد بالا مورد انتظار باشد. نیاز به نرمافزارهای بیدرنگ معمولاً توسط سیستمعاملهای بیدرنگ و زبان برنامهنویسی بیدرنگ برطرف میشود که بستری را برای ایجاد نرمافزارهای بیدرنگ فراهم میسازند. کاربرد سامانههای بیدرنگ میتواند در زمینههایی باشد که مأموریت بحرانی باشد. ترمزهای ضد قفل وسیله نقلیه مثال سادهای از مورد استفاده سامانههای بیدرنگ است، محدودیت پردازش درخواست در یک بازه زمانی کوتاه که در آن بازه ترمزها بایستی آزاد شوند تا از قفل شدن چرخها جلوگیری کنند. درصورتی که پردازش بیدرنگ در ضربالاجل نتواند درخواست پردازش را پاسخ دهد پردازش شکست خورده تلقی میشود. پردازش بایستی در ضربالاجل درخواستی پایان یابد بدون توجه به بار پردازشهای روی سامانه. سامانههای بیدرنگ سخت و نرمسامانهٔ بیدرنگ به سامانهای گفته میشود که درستی اجرای یک عملیات در آن تنها به درست بودن عملیات از نظر منطقی بستگی نداشته باشد بلکه اجرای آن عملیات در یک بازهٔ زمانی مشخص نیز در درستی اجرای عملیات در نظر گرفته شود. در سامانههای بیدرنگ سخت (به انگلیسی: hard real-time) یا به عبارتی سامانههای بیدرنگ بدون وقفه (به انگلیسی: immediate real-time) پایان اجرای یک عملیات پس از ضربالاجل بیفایده تلقی میشود و چنین حالتی ممکن است یک خرابی بحرانی در کل سامانه به وجود آورد در حالیکه در سامانههای بیدرنگ نرم (به انگلیسی: soft real-time) چنین تأخیری تحمل میشود و ممکن است با کیفیت پایینتر سرویسدهی شود. (همانند حذف برخی فریمها در حین پخش یک ویدئو) سامانههای بیدرنگ سخت زمانی مورد استفاده قرار میگیرند که پاسخدهی به یک رویداد در یک بازهٔ زمانی بسیار ضروری باشد. چنین تضمینی در سامانههایی مورد نیاز است که عدم پاسخدهی به یک رویداد در ضربالاجل تعیین شده باعث خسارتهای سنگینی شود، بخصوص خسارتهای فیزیکی به اطراف یا تهدید جان انسانها. در بحث سامانههای چندوظیفگی[۲] (به انگلیسی: multi tasking) سیاست زمانبندی، معمولاً براساس اولویت (به انگلیسی: priority driven) است. سایر الگوریتمها همچون «اول اولین ضربالاجل» (به انگلیسی: Earliest Deadline First) که بدون در نظر نگرفتن بار تعویض پردازش (به انگلیسی: context switching) برای سامانههایی با بار کمتر از ۱۰۰٪ مناسب است. سامانههای جدید برنامهریزی همچون یک Adaptive Partition Scheduler میتوانند در مدیریت سامانههای بزرگ با ترکیبی از عملیات بیدرنگ سخت و سایر عملیاتها مفید باشند. سامانههای بیدرنگ نرم معمولاً زمانی استفاده میشود که نیاز به دسترسی همزمان و بروز نگهداری تعدادی از سامانهها وجود دارد. برای مثال نرمافزاری که برنامه پروازی یک شرکت هواپیمایی را نگهداری و بروزرسانی میکند، برنامه پروازی بایستی تا حد قابل قبولی همیشه بروز باشد ولی میتوان با چند لحظه تأخیر نیز کنار آمد. سامانههای پخش زنده صدا و تصویر نیز معمولاً سامانههای بیدرنگ سهل هستند که در صورت عدم پاسخگویی سامانه در ضربالاجل با پایین آوردن کیفیت وضعیت را مدیریت میکنند. تاریخچهاصطلاح real time از کاربرد آن در شبیهسازی ناشی میشود که در آن یک فرایند در دنیای واقعی با سرعتی شبیه به فرایند واقعی شبیهسازی میشود (که اکنون برای جلوگیری از ابهام از آن به عنوان شبیهسازی در زمان واقعی یاد میشود). رایانههای آنالوگ، اغلب قادر به شبیهسازی با سرعتی بسیار سریعتر از زمان واقعی هستند، وضعیتی که اگر شناسایی و حساب نشود، میتواند به همان اندازه شبیهسازی کند خطرناک باشد. کامپیوترهای کوچک، به ویژه در دهه ۱۹۷۰ به بعد، هنگامی که در سیستمهای تعبیهشده اختصاصی مانند اسکنرهای DOG (گرافیک دیجیتال روی صفحه) تعبیه شدهاند، نیاز به پاسخهای اولویت محور با تأخیر کم را برای تعاملات مهم با دادههای ورودی و سیستمهای عامل مانند Data افزایش میدهند. General RDOS (سیستم عامل دیسک در زمان واقعی) و RTOS با برنامهریزی پیشزمینه و پسزمینه و همچنین RT-11 شرکت تجهیزات دیجیتال از این دوران میگذرد. برنامهریزی پیش زمینه-پیش زمینه، زمان انجام CPU را برای انجام کارهای با اولویت پایین مجاز میداند، در حالی که برای انجام هیچ کاری از پیش زمینه، نیازی به انجام وظایف پیش زمینه نیست و به موضوعات/وظایف با بالاترین اولویت، اولویت مطلق را در پیش زمینه میدهد. همچنین از سیستمعاملهای زمان واقعی برای انجام وظایف چند کاربره به اشتراک گذاشته شده در زمان استفاده میشود. به عنوان مثال، Data General Business Basic میتواند در پیش زمینه یا پس زمینه RDOS اجرا شود و عناصر اضافی را به الگوریتم برنامهریزی معرفی کند تا مناسبتر برای افرادی که از طریق پایانههای گنگ تعامل دارند، باشد. زمانی که MOS Technology 6502 (در Commodore 64 و Apple II استفاده میشود) و بعداً هنگامی که Motorola 68000 (که در Macintosh , Atari ST و Commodore Amiga استفاده میشود) محبوب بودند، هرکسی میتوانست از رایانه خانگی خود به عنوان زمان واقعی استفاده کند سیستم. امکان غیرفعال کردن وقفههای دیگر برای حلقههای سخت کدگذاری شده با زمان مشخص شده امکانپذیر است و تأخیر کم وقفه امکان اجرای یک سیستم عامل در زمان واقعی را فراهم میکند، به رابط کاربر و درایوهای دیسک نسبت به موضوع زمان واقعی اولویت کمتری میدهد. معیارهای محاسبه در زمان واقعیگفته میشود که یک سیستم در زمان واقعی است در صورتی که صحت کل یک عملیات نه تنها به صحت منطقی آن بلکه به زمان انجام آن بستگی دارد. سیستمهای بیدرنگ و همچنین مهلتهای آنها، به دلیل از دست دادن یک مهلت طبقهبندی میشوند:
سیستمهای زمان واقعی سخت هنگامی مورد استفاده قرار میگیرند که ضروری است در یک مهلت دقیق به یک رویداد واکنش نشان دهند. چنین تضمینهای محکمی در مورد سیستمهایی مورد نیاز است که عدم واکنش آنها در یک بازه زمانی مشخص باعث نوعی خسارت بزرگ میشود، خصوصاً صدمه جسمی به محیط اطراف یا تهدید جان انسانها (اگرچه تعریف دقیق این است که از دست دادن مهلت مقرر به منزله خرابی سیستم است)) چند نمونه از سیستمهای سخت در زمان واقعی:
در زمینه multitasking systems، سیاست برنامهریزی معمولاً اولویت محور است (برنامهریزهای پیشگیرانه). در برخی شرایط، اینها میتوانند عملکرد سخت در زمان واقعی را تضمین کنند (به عنوان مثال اگر مجموعه وظایف و اولویتهای آنها از قبل مشخص باشد). برنامهریزهای زمان واقعی سخت دیگری نیز وجود دارد مانند نرخ یکنواخت که در سیستمهای عمومی کاربرد عادی ندارد، زیرا برای برنامهریزی یک کار به اطلاعات اضافی نیاز دارد: یعنی برآورد مقید یا بدترین حالت برای مدت زمان انجام کار. الگوریتمهای خاصی برای برنامهریزی چنین کارهای سخت در زمان واقعی وجود دارد، از جمله اولین مهلت اولیه، که بدون توجه به هزینه بالای سوئیچینگ زمینه، برای بارهای سیستم کمتر از ۱۰۰٪ کافی است. سیستمهای جدید زمانبندی همپوشانی، مانند برنامهریز پارتیشن تطبیقی، به مدیریت سیستمهای بزرگ با ترکیبی از برنامههای سخت در زمان واقعی و غیر واقعی کمک میکنند. پانویس
منابع
|