رایانش بیدرنگ
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/7/71/Cloud_Logo.png/220px-Cloud_Logo.png)
در علوم رایانه رایانش بیدرنگ[۱] یا محاسبه همزمان-با-وقوع (به انگلیسی: Real-time computing) به بررسی مسائل بیدرنگ بودن سامانههای رایانهای از جمله ضرب الاجل (سررسید)هایی (به انگلیسی: deadline) که برای یک پردازش وجود دارد میپردازد. در سامانههای غیر بیدرنگ هیچ ضربالاجلی برای پردازشها وجود ندارد حتی اگر پاسخ سریع یا عملکرد بالا مورد انتظار باشد.
نیاز به نرمافزارهای بیدرنگ معمولاً توسط سیستمعاملهای بیدرنگ و زبان برنامهنویسی بیدرنگ برطرف میشود که بستری را برای ایجاد نرمافزارهای بیدرنگ فراهم میسازند.
![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/8/86/Server_tower_icon.jpg/220px-Server_tower_icon.jpg)
کاربرد سامانههای بیدرنگ میتواند در زمینههایی باشد که مأموریت بحرانی باشد. ترمزهای ضد قفل وسیله نقلیه مثال سادهای از مورد استفاده سامانههای بیدرنگ است، محدودیت پردازش درخواست در یک بازه زمانی کوتاه که در آن بازه ترمزها بایستی آزاد شوند تا از قفل شدن چرخها جلوگیری کنند. درصورتی که پردازش بیدرنگ در ضربالاجل نتواند درخواست پردازش را پاسخ دهد پردازش شکست خورده تلقی میشود. پردازش بایستی در ضربالاجل درخواستی پایان یابد بدون توجه به بار پردازشهای روی سامانه.
سامانههای بیدرنگ سخت و نرم
[ویرایش]سامانهٔ بیدرنگ به سامانهای گفته میشود که درستی اجرای یک عملیات در آن تنها به درست بودن عملیات از نظر منطقی بستگی نداشته باشد بلکه اجرای آن عملیات در یک بازهٔ زمانی مشخص نیز در درستی اجرای عملیات در نظر گرفته شود. در سامانههای بیدرنگ سخت (به انگلیسی: 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 استفاده میشود) محبوب بودند، هرکسی میتوانست از رایانه خانگی خود به عنوان زمان واقعی استفاده کند سیستم. امکان غیرفعال کردن وقفههای دیگر برای حلقههای سخت کدگذاری شده با زمان مشخص شده امکانپذیر است و تأخیر کم وقفه امکان اجرای یک سیستم عامل در زمان واقعی را فراهم میکند، به رابط کاربر و درایوهای دیسک نسبت به موضوع زمان واقعی اولویت کمتری میدهد.
معیارهای محاسبه در زمان واقعی
[ویرایش]گفته میشود که یک سیستم در زمان واقعی است در صورتی که صحت کل یک عملیات نه تنها به صحت منطقی آن بلکه به زمان انجام آن بستگی دارد. سیستمهای بیدرنگ و همچنین مهلتهای آنها، به دلیل از دست دادن یک مهلت طبقهبندی میشوند:
- سخت - از دست دادن یک مهلت کاملاً خراب سیستم است.
- شرکت - قصور نادرست در مهلت قابل تحمل است، اما ممکن است کیفیت خدمات سیستم را پایین بیاورد. سودمندی یک نتیجه پس از پایان مهلت آن صفر است.
- نرم - سودمندی یک نتیجه پس از پایان مهلت آن کاهش یافته و در نتیجه کیفیت خدمات سیستم را پایین میآورد؛ بنابراین، هدف یک سیستم سخت در زمان واقعی اطمینان از رعایت تمام مهلتها است، اما برای سیستمهای نرم زمان واقعی، هدف دستیابی به زیرمجموعه خاصی از مهلتها به منظور بهینهسازی برخی از معیارهای خاص برنامه است. معیارهای خاص بهینهسازی شده به برنامه بستگی دارد، اما برخی از نمونههای معمول شامل به حداکثر رساندن تعداد مهلتهای تعیین شده، به حداقل رساندن تأخیر وظایف و به حداکثر رساندن تعداد وظایف با اولویت بالا که در مهلتهای تعیین شده خود هستند.
سیستمهای زمان واقعی سخت هنگامی مورد استفاده قرار میگیرند که ضروری است در یک مهلت دقیق به یک رویداد واکنش نشان دهند. چنین تضمینهای محکمی در مورد سیستمهایی مورد نیاز است که عدم واکنش آنها در یک بازه زمانی مشخص باعث نوعی خسارت بزرگ میشود، خصوصاً صدمه جسمی به محیط اطراف یا تهدید جان انسانها (اگرچه تعریف دقیق این است که از دست دادن مهلت مقرر به منزله خرابی سیستم است)) چند نمونه از سیستمهای سخت در زمان واقعی:
- سیستم کنترل موتور خودرو یک سیستم سخت در زمان واقعی است زیرا سیگنال تأخیری ممکن است باعث خرابی یا خرابی موتور شود.
- سیستمهای پزشکی مانند ضربانساز مصنوعی قلب حتی اگر کار یک ضربان ساز ساده است، اما به دلیل خطر احتمالی برای زندگی انسان، سیستمهای پزشکی مانند اینها معمولاً مورد آزمایش و صدور گواهینامه کامل قرار میگیرند، که به نوبه خود نیاز به محاسبات سختافزاری در زمان واقعی دارد تا بتواند تضمینهای اثبات پذیر بودن خرابی را ارائه دهد.
- کنترلکنندههای فرایند صنعتی، مانند دستگاه روی خط مونتاژ. اگر دستگاه به تأخیر بیفتد، مورد موجود در خط مونتاژ میتواند از حد امکان دستگاه عبور کند (محصول را دست نخورده باقی بگذارد)، یا با فعال کردن ربات در زمان نامناسب، دستگاه یا محصول آسیب ببیند. در صورت شناسایی خرابی، هر دو حالت منجر به توقف خط مونتاژ میشود که تولید را کند میکند. اگر خرابی شناسایی نشود، محصولی با نقص میتواند آن را از طریق تولید ایجاد کند یا در مراحل بعدی تولید آسیب ببیند.
- سیستمهای زمان واقعی سخت معمولاً در سیستمهای تعبیه شده در سطح پایین با سختافزار فیزیکی تعامل دارند. سیستمهای بازیهای ویدئویی اولیه مانند گرافیک برداری Atari 2600 و Cinematronics به دلیل ماهیت گرافیک و سختافزار زمانبندی، نیاز به زمان واقعی داشتند.
- سافت مودمها مودم سختافزاری را با نرمافزاری که روی پردازنده مرکزی رایانه کار میکند جایگزین میکنند. این نرمافزار باید هر چند میلی ثانیه اجرا شود تا دادههای صوتی بعدی برای تولید تولید شود. اگر این دادهها دیر شود، مودم دریافت کننده همگام سازی را از دست میدهد و باعث ایجاد وقفه طولانی میشود زیرا همگام سازی دوباره برقرار میشود یا باعث میشود اتصال بهطور کامل قطع شود.
- بسیاری از انواع چاپگرها نیاز به زمان واقعی دارند، مانند جوهر افشان (جوهر باید در زمان صحیح با عبور سر صفحه از صفحه ذخیره شود)، چاپگرهای لیزری (لیزر باید در زمان مناسب فعال شود زیرا پرتو در سراسر اسکن میشود درام چرخان)، و ماتریس نقطه و انواع مختلف چاپگرهای خطی (مکانیزم ضربه باید در زمان مناسب فعال شود زیرا مکانیسم چاپ با خروجی مورد نظر همسو میشود). عدم موفقیت در هر یک از اینها باعث از بین رفتن یا از بین رفتن نامناسب خروجی میشود.
در زمینه multitasking systems، سیاست برنامهریزی معمولاً اولویت محور است (برنامهریزهای پیشگیرانه). در برخی شرایط، اینها میتوانند عملکرد سخت در زمان واقعی را تضمین کنند (به عنوان مثال اگر مجموعه وظایف و اولویتهای آنها از قبل مشخص باشد). برنامهریزهای زمان واقعی سخت دیگری نیز وجود دارد مانند نرخ یکنواخت که در سیستمهای عمومی کاربرد عادی ندارد، زیرا برای برنامهریزی یک کار به اطلاعات اضافی نیاز دارد: یعنی برآورد مقید یا بدترین حالت برای مدت زمان انجام کار. الگوریتمهای خاصی برای برنامهریزی چنین کارهای سخت در زمان واقعی وجود دارد، از جمله اولین مهلت اولیه، که بدون توجه به هزینه بالای سوئیچینگ زمینه، برای بارهای سیستم کمتر از ۱۰۰٪ کافی است. سیستمهای جدید زمانبندی همپوشانی، مانند برنامهریز پارتیشن تطبیقی، به مدیریت سیستمهای بزرگ با ترکیبی از برنامههای سخت در زمان واقعی و غیر واقعی کمک میکنند.
پانویس
[ویرایش]- ↑ «بیدرنگ» [رایانه و فنّاوری اطلاعات] همارزِ «real-time»؛ منبع: گروه واژهگزینی. جواد میرشکاری، ویراستار. دفتر چهارم. فرهنگ واژههای مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۵۹-۱ (ذیل سرواژهٔ بیدرنگ)
- ↑ چندوظیفگی معادل فارسی multi tasking مصوب فرهنگستان زبان و ادب فارسی است.
منابع
[ویرایش]- مشارکتکنندگان ویکیپدیا. «Real-time computing». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۶ دسامبر ۲۰۰۹.