بسیاری از کمپانی ها سعی می کنند Windowse NT را بعنوان یک سیستم عامل استاندارد (OS) در همه سطوح سلسله مراتب صنعتی استفاده کنند . استفاده بعنوان server واضح است ، اما بعضی از مردم می خواهند که از آن در سطح کارخانه استفاده کنند . این درخواستها از رفتار سیستم بی درنگ تقاضا می شوند .
آیا Windowse NT می تواند این نیازها را برآورده سازد ؟
در ابتدا ، ما یک سیستم بی درنگ و مشخصاتی که سیستم عامل برای تصویب شدن توسط توسعه دهنده نیاز دارد را تعریف می کنیم و همچنین برتری بین سیستم عامل نرم و سخت را تشریح می کنیم .
در قسمت دوم تشریح می کنیم که چگونه و چرا Windowse NT نمی تواند نیازهای یک سیستم بی درنگ سخت را برآورده سازد .
ما نشان می دهیم Windowse NT می تواند تحت شرایط خاصی درخواستهای یک سیستم عامل بی درنگ نرم و ساده را برآورده سازد .
مقدمه
Windowse NT با نیازهای یک سیستم عامل بی درنگ طراحی نشده است . آن بعنوان یک سیستم عامل همه منظوره ( GPOS ) طراحی شده است یا به طور مختصر ، بعنوان یک سیستم عامل وابسته به شبکه ( NOS ) .
به خاطر این که Windowse NT توسط توسعه دهنده های سیستم عامل VMS ساخته شده ، بعضی از مشخصات جهان بی درنگ معرفی شده است . بعنوان مثال Microsoft نظریه طبقه بندی پردازشهای بی درنگ را ارائه کرد . آنها به یک طریق زمانبندی می شوند که آن می تواند بعنوان یک RTOS باشد . دومین سرویس وقفه ( ISR ) با یک روش کارآمد طراحی شده است .
آیا این عناصر اجازه می دهند که Windowse NT بعنوان یک RTOS طبقه بندی شود ؟
یک سیستم بی درنگ چیست ؟
تعریف :
یک سیستم بی درنگ به ورودی های محرک غیر قابل پیش بینی با یک روش بهنگام قابل پیش بینی پاسخ می دهد .
برای انجام آن بعضی نیازهای اصلی لازم می شود :
1 یافتن ضرب العجل . بعد از رخ دادن رویداد یک اقدام در یک زمان محدود و از قبل تعیین شده باید انجام شود و از بین رفتن زمان ضرب الاجل باعث خطای نرم افزاری می شود .
واکنش در مقابل این فقدان بعنوان یک مشکل اجرایی مطرح می شود که می تواند به وسیله یک پردازنده سریع حل شود . اما اثبات می شود که استفاده از یک پردازنده سریع لزوماً مشکل ضرب الاجل را حل نمی کند .
2 پردازشهای همزمان : هر وقت بیشتر از یک رویداد به طور همزمان رخ می دهند ، همه ضرب الاجل ها باید پاسخ داده شوند . به این معنی است که یک سیستم بی درنگ مشابهت ذاتی نیاز دارد .
که به وسیله استفاده بیشتر از یک پردازنده سیستم بدست می آید . سیستم های بی درنگ سخت و نرم :
می توان سیستمها ی بی درنگ را از یک نظر به دو دسته سخت و نرم تقسیم بندی کرد .
خصوصیات سیستمهای بی درنگ سخت عبارتند از :
تحت هیچ شرایطی تاخیر پذیرفته نیست .
اگر تاخیر پیش آید ، نتایج بی فایده اند .
هزینه گذشتن از ضرب الاجل بی اندازه زیاد است .
یک مثال خوب برای سیستم بی درنگ سخت سیستم کنترل چرخهای هواپیماست .
خصوصیات یک سیستم بی درنگ نرم عبارتند از :
نتایج تاخیر ارزش بیشتری دارند .
کارآیی پایین تر پذیرش برای تاخیر .
بعنوان مثال ماشین Vending و یک زیر سیستم شبکه . بسته ای که توسط یکی از قانون های شبکه گم شده را می توان با درخواست برای دوباره فرستادن آن دوباره بدست آورد . البته با این کار اجرای سیستم کنترل می یابد .
نمونه های دیگر سیستم های بی درنگ کنترل کارخانه نیروی هسته ای ، کنترل ساخت صنعتی ، سیستم های تحویل اسلحه ، راهنمایی و هدایت فضایی ، سیستم های شناسایی ، کنترل آزمایشات ، آزمایشگاه ، کنترل وسایل ماشین ، روباتها ، سیستم های کنترل مسافت سنجی ، کنترل کننده های پرینتر ، شکستن ضد قفل ، آژیر دزدگیر و …
تفاوت بین سیستم های بی درنگ سخت و نرم وابسته است به نیازمندیهای سیستم .
یک سیستم « سخت است اگر » ضرب ا لعجل سیستم نباید از بین برود .
« و نرم است اگر » ضرب العجل سیستم ON بهتر است که از بین نرود .
بحثهای زیادی درباره ارزش دقیق و درست یک سیستم بی درنگ نرم و سخت مطرح است .
می توان مطرح کرد که یک سیستم بی درنگ نرم در واقع یک سیستم بی درنگ نیست ، بخاطر اولین نیاز : ضرب العجل ازدست رفته . حقیقتاً ، اصطلاح « realtime » اغلب برای اشاره به سیستم سریع ، به طور اشتباه استفاده می شود . برای یک سیستم سریع ضرب العجل می تواند تنظیم شود . پس هم معنی با سیستم بی درنگ نرم است . بنابر این ما می توانیم یک RTOS ( سیستم عامل بی درنگ ) را بعنوان یک OS ( سیستم عامل ) که می تواند برای ساختن یک سیستم بی درنگ سخت استفاده شود.
سیستم عامل بی درنگ سخت یا نرم موجود نیست !
مردم اغلب سیستمهای بی درنگ را با سیستم عامل های بی درنگ اشتباه می گیرند وحتی ازویژگیهای سیستمهای سخت و نرم بد استفاده می کنند . آنها می گویند فرضاً این سیستم Hard RTOS و دیگری Soft RTOS است . در حالیکه درواقع ایندو وجود ندارند . یک RTOS خاص فقط می تواند به شما اجازه دهد که یک سیستم بی درنگ سخت را توسعه دهید .
اما داشتن یک RTOS جلوی توسعه یک سیستمی که ضرب العجل رانگه نمی دارد را نمی گیرد .
اگر به طور مثال ، شما بخواهید یک سیستم بی درنگ بسازید به طوریکه به یک رابطه TCP \ IP واکنش نشان دهد ، آن هیچ وقت یک سیستم بی درنگ سخت نیست . البته اگر شما تصمیم بگیرید که یک درخواست روی سیستم عاملی مثل Windowse 3.11 بسازید ، سیستم شما هیچ وقت یک سیستم بی درنگ سخت نخواهد بود . همان طور که رفتار نرم افزار سیستم عامل به طور متوسط قابل پیشگویی نیست .
نیازمندیهای لازم سیستم عامل بی درنگ ( RTOS ) :
نیاز اول : یک RTOS باید قابل پیش گوئی و Molti thread باشد .
یک RTOS باید قابل پیشگویی باشد و به این معنی نیست که یک RTOS باید سریع باشد . اما بیشترین زمانی که کاری انجام می دهد باید سریع باشد و باید با نیازهای درخواست شده همساز باشد و Windows 3.11 حتی روی یک PeNTium Pro 200 MHZ برای یک سیستم بی درنگ بی فایده است ، چون یک درخواست می تواند به طور پیوسته کنترل را در دست بگیرد و بقیه سیستم را مسدود کند . اولین نیاز این است که سیستم عامل باید چند نخی ( Multi – threaded ) و قابل پس گرفتگی باشد . برای بدست آوردن این نیازها زمانبند باید بتواند هر thread را در سیستم قبضه کند و منبع را به آن thread بدهد که بیشترین نیاز را دارد .
سیستم عامل (و معماری سخت افزار ) همچنین باید وقفه های چند سطحی را بپذیرد تا در سطح وقفه انحصاراً اختیارداشته باشد .
نیاز دوم : مفهوم اولویت نخ ( thread ) باید وجود داشته باشد . مشکل پیدا کردن نخی است که بیشترین نیاز به یک منبع را دارد . در یک شرایط مطلوب ، یک RTOS منابع را به نخ یا درایوری می دهد که نزدیک ترین ضرب الاجل را دارد . برای این منظور ، اگرچه ، سیستم عامل باید بداند چه وقتی یک نخ باید کارش را تمام کند و چگونه هر نخ این زمان را لازم دارد .
ولی هیچ RTOS به این صورت وجود ندارد ، چون انجام دادن این کار خیلی سخت است . بنابر این توسعه دهندگان سیستم عامل نقطه نظر دیگری را گرفتند : آنها مفهوم سطوح اولویت برای نخها را مطرح کردند . طراح ، مسئول تبدیل نیازهای ضرب الاجل به اولویتهای نخهاست . با این فعالیت انسانی ، مستعد خطا می شود و یک سیستم بی درنگ می تواند براحتی منحرف شود . طراح می تواند در این فرآیند دگرگونی به وسیله مثلاً استفاده از تئوریهای زمانبندی سرعت یکنواخت و بعضی از نرم افزارهای شبیه سازی ، کمک کند و اما این می تواند اصلا مفید نباشد .
چون امروزه هیچ راه حل دیگری نیست ، نظریه اولویت نخ باید وجود داشته باشد .
نیاز سوم : سیستم عامل باید از مکانیزمهای همزمانی نخهای قابل پیش گویی ، پشتیبانی کند . چون که نخها ، داده ها را به اشتراک می گذارند ( منابع ) و نیاز به ارتباط دارند ، این منطقی است که مکانیزمهایی وجود داشته باشد ، به طور این که قفل شدنی باشند و ارتباط در بین نخها داشته باشند .