X بستن تبلیغات
X بستن تبلیغات
header
متن مورد نظر

سیستم های چند برنامگی Multiprogramming

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

در نسل سوم کامپیوترها (۸۰-۱۹۶۵) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه را می توان به دو دسته تقسیم کرد: یکی برنامه ها با تنگنای محاسباتی (CPU bound یا CPU Limited) مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات CPU می شود و دیگری برنامه ها با تنگنای (I/O Limited) I/O مانند برنامه های تجاری که بیشتر زمان کامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.

یک اشکال مهم سیستم های دسته ای این است که وقتی کار جاری برای تکمیل عملیات I/O مثلاًٌ بر روی نوار گردان منتظر می شود، در این حال CPU بیکار می ماند مجبور است صبر کند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/OLimited ممکن است حدود ۸۰ تا ۹۰ درصد وقت CPU به هدر برود.

برای رفع این مشکل از تکنیک multiprogramming استفاده می شود. بدین ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می ماند، پردازنده به کار دیگری داده می شود. اگر تعداد کارهای موجود در حافظه کافی باشد می توان CPU را تقریباً صد درصد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عالم می باشد.

سیستم های چند برنامگی Multiprogramming

در نسل سوم کامپیوترها (۸۰-۱۹۶۵) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه را می توان به دو دسته تقسیم کرد: یکی برنامه ها با تنگنای محاسباتی (CPU bound یا CPU Limited) مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات CPU می شود و دیگری برنامه ها با تنگنای (I/O Limited) I/O مانند برنامه های تجاری که بیشتر زمان کامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.

یک اشکال مهم سیستم های دسته ای این است که وقتی کار جاری برای تکمیل عملیات I/O مثلاًٌ بر روی نوار گردان منتظر می شود، در این حال CPU بیکار می ماند مجبور است صبر کند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/OLimited ممکن است حدود ۸۰ تا ۹۰ درصد وقت CPU به هدر برود.

برای رفع این مشکل از تکنیک multiprogramming استفاده می شود. بدین ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می ماند، پردازنده به کار دیگری داده می شود. اگر تعداد کارهای موجود در حافظه کافی باشد می توان CPU را تقریباً صد درصد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عالم می باشد.

پس سیستم های چند برنامگی فقط یک پردازنده دارند و به کمک مکانیزم وقفه بین کارهای I/OLimited , CPU-limited سوئیچ می شود و به ظاهر اجرای این برنامه ها به صورت موازی و همزمان صورت می گیرد و بدین ترتیب بهره وری از سیستم افزایش می یابد.

یک شیوه برای بالا بردن راندمان CPU آن است که تعداد کار CPU – Limited را با I/OLimited مخلوط کنیم. ولی در عمل امکان تقسیم بندی کارها قبل از اجراء شدنشان وجود ندارد. از طرف دیگر برنامه ای ممکن است در ابتدا CPU – Limited باشد ولی در حین اجراء تبدیل به I/OLimited گردد.

 

سیستم های اشتراک زمانی Time –Sharing

این سیستم ها از اویل سالهای ۱۹۷۰ در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است.

در سیستم های چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامه ها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردن متعدد را نمی داد. در سیستم اشتراک زمانی کاربر به کمک ترمینال (Terminal) که شامل کی بورد (برای ورودی) و مونیتور (برای خروجی) است با کامپیوتر به صورت محاوره ای (interactive) رابطه برقرار می سازد. کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مونیتور دریافت می کند. در این سیستم ها چندین کاربر به کمک ترمینالهائی که به کامپیوتر وصل است همزمان می توانند از آن استفاده کنند. در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامه های مختلف کابرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ می شود و بنابراین هر کاربر تصور می کند کل کامپیوتر در اختیار اوست. در اینجا تاکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربر می باشد و نه بالا بردن میزان کاربرد منابع ماشین. کاربر می تواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدائی (debug) کند. سیستم های دسته ای برای اجرای برنامه های بزرگ که نیاز محاوره ای کمی دارند مناسب است ولی سیستم های اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است، استفاده می شوند. در زمانی که کاربری در حال تایپ برنامه اش یا فکر کردن روی خطاهای برنامه اش می باشد CPU به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند.

در سیستم های محاوره ای دستورات به دو صورت پیش زمینه (foreground) و پس زمینه (Backgruond) اجرا می شوند. در نوع پیش زمینه با وارد کردن، دستور تا هنگامی که دستور اجرا و تمام نشود اعلان سیستم ظاهر نمی گردد ولی در نوع پس زمینه، پس از ورود دستور، بلافاصله اعلان سیستم ظاهر می شود تا دستور بعدی وارد گردد ولی در همین حین دستور قبلی در پشت زمینه حال اجرا می‌باشد.

در این سیستم اشتراک زمانی هنگامی که چند کاربر همگی یگ برناممه (مثل کامپایلر C) را احضار می کنند هر یک دارای کپی هایی از ثباتها، فضای داده ای، فشای پشته (stack) مخصوص به خود هستند ولی قسمت کد همگی یکسان و مشترک می باشد. در سیستم اشتراک زمانی وجود یک سیستم فایل ضروری است زیرا نمی توان در هر بار اجرای کار مدارک بزرگی را توسط ترمینالها وارد کامپیوتر کرد. لذا داده ها و برنامه های کاربر می بایست در دیسک ذخیره گردند. لذا بخش مدیریت فایلها یکی از بخش های اصلی سیستم عامل می باشد. هر چند که می توان وظایف مدیر فایل (File Manager) و مدیر دیسک (Disk Mannager) را در هم آمیخت ولی منطقاً این دو کاملاً متفاومت هستند. مدیر دیسک مسئول توزیع فضای خالی روی دیسک و نقل و انتقالات است، حال آنکه کارهای مدیر فایل بیشتر مربوط به مدیریت فهرستها، فایلها، امنیت و کارهای مربوط به حسابداری (Accouning) است. یکی دیگر از بخشهای مهم در سیستم اشتراک زمانی ترمینال است که وظیفه تعیین هویت کاربران و پذیرش آنها را بر عهده دارد.

چند برنامگی و اشتراک زمانی مباحث اصلی سیستم عاملهای امروزی می باشد. از جمله سیستم عاملهای سنتی و مشهور که شامل این ویژگیها می باشد سیستم عامل UNIX است. موسسه IEEE یک استاندارد به نام POSIX برای UNIX بنا نهاد. POSIX حداقل واسط فراخوان سیستمی را تعریف می کند که سیستم های UNIX سازگار باید آن را پشتیبانی نمایند.

 

سیستم های توزیع شده Loosly coupled

سیستم عامل توزیع شده در یک محیط شبکه ای اجراء می شود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود می توانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهائی به کامپوتر اصلی کاربر برگردند. کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در می آید و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هر چیز را با نام آن فراخوانی کند و کاری به آدرس نداشته باشد.

با توجه به توضیحات فوق سیستم عامل های توزیع شده به مراتب پیچیده تر از سیستم عاملهای شبکه هستند. یکی از مزایای مهم سیستم های توزیع شده سرعت بالای اجرای برنامه هاست چرا که یک برنامه همزمان می تواند از چندین کامپیوتر برای اجرا شدنش استفاده کند. همچنین به علت توزیع شدن اطلاعات، بانکهای اطلاعاتی حجیم می توانند روی یکسری کامپیوترهای شبکه شده قرار بگیرند و لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود (که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر می رود).

در سیستم توزیع شده اگر یکی از کامپیوترهائی که وظیفه اصلی برنامه جاری را بر عهده دارد خراب شود کل عمل سیستم مختل خواهد شد. از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد و یکی از کامپیوتر ها خراب شود، داده ها را می توان از کامپیوترهای دگیر بازیابی کرد و از این نظر امنیت افزایش می یابد.

تذکر: به سیستم های توزیع شده گاهی اوقات سیستم های Loosely Coupled با ارتباط ضعیف نیز می گویند، چرا که هر پردازنده کلاک و حافظه مستقلی دارد. پردازنده ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه های سریع یا خطوط تلفن با همدیگر ارتباط دارند.

چند دلیل برای استفاده از سیستم های گسترده عبارتند از:

۱ – اشتراک منابع

۲ – تسریع محاسبات

۳ – قابلیت اعتماد: اگر در سیستم ها توزیع شده، کامپیوتری خراب شود، کامپیوترهای دیگر (در صورت طراحی سیستم برای این منظور) می توانند کار را ادامه دهند. ولی همانظور که قبلاً گفتیم اگر سیستم نتواند خطا را تشخیص داده و آن کار را به کامپیوتر دیگر بسپارد برعکس امنیت کاهش می یابد.

۴ – ارتباطات (مثلا پست الکترونیک و انتقال فایلها)

 

سیستم های چند پردازنده ای (Tightly coupled)

کامپیوترها می توانند به جای یک CPU چندین CPU داشته باشند که در این صورت به آنها سیستم های multiprocessor می گویند. جهت استفاده از این سیستم ها نیاز به یک سیستم عامل خاص می باشد که بتواند چندین برنامه (یا نخهای یک فرآیند) را به صورت موازی واقعی روی آنها اجراء کند. سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessor برای اجرای چند نخ بر روی چند CPU به کار می روند. گاهی اوقات به سیستم multiprocessor، سیستم multiprocessing هم می گویند.

در سیستم چند پردازنده ای، CPU ها باید بتوانند از حافظه، امکانات ورودی و خروجی و گذرگاه bus سیستم به صورت اشتراکی استفاده کنند. مزایای این سیستم ها عبارتند از:

الف) زیاد شدن توان عملیاتی (throughput): منظور از throughput تعداد کارهائی است که در واحد زمانی تمام می شوند. بدیهی است هر چقدر تعداد پردازنده ها بیشتر باشد تعداد کارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست، مثلاً اگر تعداد پردازنده ها n باشد سرعت اجراء برنامه ها n برابر نمی شود.

چرا که بخشی از وقت پردازنده ها جهت مسائل کنترلی و امنیتی و سوئیچ کردن به هدر می رود.

ب) صرفه جوئی در هزینه ها: از آنجا که پردازنده ها منابع تغذیه، دیسکها، حافظه ها و ادوات جانبی را به صورت مشترک استفاده می کنند در هزینه های سخت افزاری صرفه جوئی می شود.

ج) تحمل پذیری در برابر خطا (fault tolerant). سیستم های مالتی پروسسسور قابلیت اعتماد را افزایش می دهند چرا که خرابی یک CPU سبب توقف سیستم نمی شود بلکه تنها سبب کند شدن آن خواهد شد. استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابی جست و جو شده، تشخیص داده شده و در صورت امکان اصلاح شود (یا کنار گذاشته شود) این توانایی به ادامه سرویس، متناسب با سطح بقای سخت افزار، تنزل مطبوع یا graceful degradation نامیده می شود.  

سیستم عاملهای چند پردازنده ای به دو دسته کلی متقارن و نامتقارن تقسیم می شوند.

در سیستم چند پردازنده ای نامتقارن (Asymmetric Multi Processing=ASMP) یک پردازنده جهت اجراء سیستم عامل و پرونده های دیگر جهت اجرای برنامه های کاربران استفاده می شود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء می شود، ساخت این نوع سیستم عامل نسبتاً ساده است و از تعمیم سیستم عامل تک پردازنده ای به دست می آید. این نوع سیستم عامل ها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند، مانند کمک پردازنده و پردازنده ای که به هم متصل هستند یا دو پردازنده ای که از تمام حافظه موجود مشترکاً استفاده نمی کنند. یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non – portable) آن است. یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی می تواند حالات مختلفی داشته باشد.

در سیستم چند پردازنده های متقارن (Symmetric Multi Processing = SMP) سیستم عامل می تواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازنده ها همزمان اجراء شود. در این حال حافظه بین تمام آنها مشترک می باشد. تمام پردازنده ها اعمال یکسانی را می توانند انجام دهند. سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:

۱ – از آنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یک CPU اجراء شود باعث می گردد که آن پردازنده همواره بار سنگینی داشته باشد، در حالیکه احتمالاً پردازنده های دیگر بی کار هستند اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن (balancing) بار سیستم می شود.

۲ – در سیستم نامتقارن اگر پردازنده اجراء کننده سیستم عامل خراب شود کل سیستم خراب می شود ولی در سیستم متقارن از این نظر امنیت بیشتر است چرا که اگر یک پردازنده از کار بیفتد سیستم عامل می تواند روی پردازنده های دیگر اجراء شود.

 3 – بر عکس سیستم عامل نامتقارن، سیستم عامل متقارن قابل حمل (protable) بر روی سیستم های سخت افزاری مختلف است.

سیستم عامل SUNOS ورژن ۴ از نوع نامتقارن و سیستم عامل Solaris2 ورژن ۵ و همچنین Windows NT از نوع متقارن می باشند.

زمابندی نخها (Thread) یا فرآیندها (process) روی هر یک از پردازنده ها به عهده سیستم عامل است.

گر چه Multiprocessing , multithreasding امکانات مستقلی هستند ولی معمولاً با هم پیاده سازی می شوند. حتی در یک ماشین تک پردازنده های، چند نخی کارایی را افزایش می دهد. همچنین ماشین چند پردازنده ای حتی برای فرایند های غیر نخی هم کارآمد است.

گاهی اوقات به سیستم های چند پردازنده ای، سیستم های Tightly Coupled یا ارتباط محکم نیز گفته می شود. چرا که پردازنده ها کلاک (Clock)، گذرگاه و همچنین حافظه مشترکی دارند.

بعضی از کتابها سیستم های توزیع شده را به صورت زیر به دو دسته تقسیم کرده اند:

۱ – سیستم های با ارتباط سست یا ضعیف (Loosly Coupled) که تعدادی پردازنده با خطوط ارتباطی بین آنها دارند و هر پردازنده کلاک و حافظه مستقلی دارد.

۲ – سیستم های با ارتباط محکم (Tightly Coupled) که پردازنده هایی با کلاک یکسان و حافظه مشترک دارند. با آنکه این سیستم پیچیده تر است ولی سرعت اجرای آن از نوع قبلی بیشتر می باشد.

سیستم های توزیع شده جهت افزایش سرعت اجراء، افزایش قابلیت اطمینان، اشتراک منابع و برقراری ارتباط بین سیستم های مختلف استفاده می گردند.

 

 منبع : پدیدا بزرگترین مرجع علمی ایرانیان

ارسال نظر