موتور جستجوی پیشرفته مقالات و تحقیقات و ...

تحویل در محیط ورد : word
عنوان :

عنوان سفارش :
تعداد صفحه :
قیمت :
تومان

سیستم های چند برنامگی 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 را تقریباً صد درصد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عالم می باشد.

مدیریت پردازنده

مدیریت پردازنده دو وظیفه مهم اولیه زیر را دارد:
ایجاد اطمینان که هر پردازه و یا برنامه به میزان مورد نیاز پردازنده را برای تحقق عملیات خود، اختیار خواهد کرد. استفاده از بیشترین سیکل های پردازنده برای انجام عملیات ساده ترین واحد نرم افزاری که سیستم عامل یه منظور زمانبندی پردازنده با آن درگیر خواهد شد، یک پردازه و یا یک Thread خواهد بود. موقتا" می توان یک پردازه را مشابه یک برنامه در نظر گرفت، در چنین حالتی مفهوم فوق ( پردازه )، بیانگر یک تصویر واقعی از نحوه پردازش های مرتبط با سیستم عامل و سخت افزار نخواهد بود. برنامه های کامپیوتری ( نظیر واژه پردازها ، بازیهای کامپیوتری و ...) در حقیقت خود یک پردازه می باشند، ولی برنامه های فوق ممکن است از خدمات چندین پردازه دیگر استفاده نمایند. مثلا" ممکن است یک برنامه از پردازه ای یه منظور برقراری ارتباط با سایر دستگاههای موجود در کامپیوتر استفاده نماید. پردازه های فراوان دیگری نیز وجود دارد که با توجه به ماهیت عملیات مربوطه، بدون نیاز به محرک خارجی ( نظیر یک برنامه ) فعالیت های خود را انجام می دهند. یک پردازه، نرم افزاری است که عملیات خاص و کنترل شده ای را انجام می دهد. کنترل یک پردازه ممکن است توسط کاربر، سایر برنامه های کاربردی و یا سیستم عامل صورت پذیرد.
سیستم عامل با کنترل و زمانبندی مناسب پردازه ها زمینه استفاده از پردازنده را برای آنان، فراهم می نماید. در سیستم های " تک - کاره "، سیستم زمانبندی بسیار روشن و مشخص است. در چنین مواردی، سیستم عامل امکان اجرای برنامه را فراهم و صرفا" در زمانیکه کاربر اطلاعاتی را وارد و یا سیستم با وقفه ای برخورد نماید، روند اجراء متوقف خواهد شد. وقفه، سیگنال های خاص ارسالی توسط نرم افزار و یا سخت افزار برای پردازنده می باشند. در چنین مواردی منابع صادر کننده وقفه درخواست برقراری یک ارتباط زنده با پردازنده برای اخذ سرویس و یا سایر مسائل بوجود آمده، را می نمایند. در برخی حالات سیستم عامل پردازه ها را با یک اولویت خاص زمانبندی می نماید. در چنین حالتی هر یک از پردازه ها با توجه به اولویت نسبت داده شده به آنان، قادر به استفاده از زمان پردازنده خواهند بود. در اینچنین موارد، در صورت بروز وقفه، پردازنده آنها را نادیده گرفته و تا زمان عدم تکمیل عملیات مورد نظر توسط پردازنده، فرصت پرداختن به وقفه ها وجود نخواهد داشت. بدیهی است با توجه به نحوه برخورد پردازنده ( عدم توجه به وقفه ها )، در سریعترین زمان ممکن عملیات و فعالیت جاری پردازنده به اتمام خواهد رسید. برخی از وقفه ها با توجه به اهمیت خود ( نظیر بروز اشکال در حافظه و یا سایر موارد مشابه )، قابل اغماص توسط پردازنده نبوده و می بایست صرفنظر از نوع و اهمیت فعالیت جاری، سریعا" به وقفه ارسالی پاسخ مناسب را ارائه گردد.

پردازنده، با توجه به سیاست های اعمال شده سیستم عامل و بر اساس یک الگوریتم خاص، در اختیار پردازه های متفاوت قرار خواهد گرفت . در چنین مواردی پردازنده مشغول بوده و برای اجراء، پردازه ای را در اختیار دارد. در زمانیکه پردازنده درگیر یک پردازه است، ممکن است وقفه هائی از منابع متفاوت نرم افزاری و یا سخت افزاری محقق گردد. در چنین وضعیتی با توجه به اهمیت و جایگاه یک وقفه، پردازنده برخی از آنها را نادیده گرفته و همچنان به فعالیت جاری خود ادامه داده و در برخی موارد با توجه به اهمیت وقفه، فعالیت جاری متوقف و سرویس دهی به وقفه آغاز خواهد شد.
در سیستم های عامل " تک - کاره "، وجود وقفه ها و نحوه مدیریت آنها در روند اجرای پردازه ها تاثیر و پیچیدگی های خاص خود را از بعد مدیریتی بدنبال خواهد داشت. در سیستم های عامل |"چند - کاره " عملیات بمراتب پیچیده تر خواهد بود. در چنین مواردی می بایست این اعتقاد بوجود آید که چندین فعالیت بطور همزمان در حال انجام است. عملا" پردازنده در هر لحظه قادر به انجام یک فعالیت است و بدیهی است رسیدن به مرز اعتقادی فوق ( چندین فعالیت بطور همزمان ) مستلزم یک مدیریت قوی و طی مراحل پیچیده ای خواهد بود. در چنین حالتی لازم است که پردازنده در مدت زمان یک ثانیه هزاران مرتبه از یک پردازه به پردازه ه دیگر سوئیچ تا امکان استفاده چندین پردازه از پردازنده را فراهم نماید. در ادامه نحوه انجام عملیات فوق، تشریح می گردد: یک پردازه بخشی از حافظه RAM را اشغال خواهد کرد پس از استفرار بیش از یک پردازه در حافظه، پردازنده بر اساس یک زمانبندی خاص، فرصت اجراء را به یکی از پردازه ها خواهد داد.

پردازنده، بر اساس تعداد سیکل های خاصی پردازه را اجراء خواهد کرد. پس ازاتمام تعداد سیکل های مربوطه ، پردازنده وضعیت پردازه ( مقایر ریجسترها و ...) را ذخیره و به پردازه اتمام زمان مربوطه را اعلام می نماید. پردازنده در ادامه اطلاعات ذخیره شده در رابطه با پردازه دیگر را فعال ( ریجسترها و ...) و زمینه اجرای پردازه دوم فراهم می گردد. پس ازاتمام تعداد سیکل های مربوطه ، پردازنده وضعیت پردازه ( مقایر ریجسترها و ...) را ذخیره و به پردازه اتمام زمان مربوطه را اعلام و مجددا" پردازه اول جهت اجراء فعال خواهد گردید. تمام اطلاعات مورد نیاز یه منظور مدیریت یک پردازه در ساختمان داده ای خاص با نام PCB)Process Control Block) ، نگهداری می گردد. پردازنده در زمان سوئیچ بین پردازه ها، از آخرین وضعیت هر پردازه با استفاده از اطلاعات ذخیره شده در PCB آگاهی پیدا کرده و در ادامه زمینه اجرای پردازه مورد نظر بر اساس تعداد سیکل های در نظر گرفته شده فراهم خواهد شد. برای هر پردازه یک PCB ایجاد و اطلاعات زیر در آن ذخیره خواهد گردید:
یک مشخصه عددی (ID) که نمایانگر پردازه خواهد بود. اشاره گری که نشاندهنده آخرین محل اجرای پردازه است محتویات ریجستر ها وضعیت سوئیچ ها و متغیرهای مربوطه اشاره گره هائی که حد بالا و پایین حافظه مورد نیاز پردازه را مشخص خواهد کرد. اولویت پردازه وضعیت دستگاههای ورودی و خروجی مورد نیاز پردازه هر زمان که اطلاعات مربوط به پردازه ای تغییر یابد، ( پردازه از حالت "آماده " تبدیل به حالت "اجراء " و یا از حالت " اجراء " به حالت "انتظار" و یا "آماده " سوئیچ نماید ) اطلاعات ذخیره شده در PCB استفاده و بهنگام خواهند شد.

عملیات جایگزینی پردازها، بدون نظارت و ارتباط مستقیم کاربر انجام و هر پردازه به میزان کافی از زمان پردازنده برای اتمام عملیات خود استفاده خواهد کرد. در این راستا ممکن است، کاربری قصد اجرای تعداد بسیار زیادی از پردازه ها را بسورت همزمان داشته باشد. در چنین مواردی است، پردازنده خود نیازمند استفاده از چندین سیکل زمانی برای ذخیره و بازیابی اطلاعات مربوط به هر یک از پردازه ها خواهد بود .در صورتی که سیستم عامل با دقت طراحی نشده باشد و یا پردازه های زیادی فعالیت خود را آغاز کرده باشند، مدت زمان زیادی از پردازنده صرف انجام عملیات سوئیچینگ بین پردازها شده و عملا" در روند اجرای پردازها اختلال ایجاد می گردد. وضعیت بوجود آمده فوق را Thrashing می گویند. در چنین مواردی کاربر می بایست نسبت به غیرفعال نمودن برخی از پردازه ها اقدام تا سیستم مجددا" در وضعیت طبیعی قرار گیرد.
یکی از روش هائی که طراحان سیستم عامل از آن استفاده تا امکان ( شانس) تحقق Thrashing را کاهش دهند، کاهش نیاز به پردازه های جدید برای انجام فعالیت های متفاوت است. برخی از سیستم های عامل ازیک " پردازه -lite " با نام Thread استفاده می نمایند. Thread از لحاظ کارآئی همانند یک پردازه معمولی رفتار نموده ولی نیازمند عملیات متفاوت ورودی و خروجی و یا ایجاد ساختمان داده PCB مشابه یک پردازه عادی نخواهد بود. یک پردازه ممکن است باعث اجرای چندین Threads و یا سایر پردازه های دیگر گردد. یک Thread نمی تواند باعث اجرای یک پردازه گردد.
تمام موارد اشاره شده در رابطه با زمانبندی با فرض وجود یک پردازنده مطرح گردیده است. در سیستم هائی که دارای دو و یا بیش از دو پردازنده می باشند، سیستم عامل حجم عملیات مربوط به هر گردازنده را تنظیم و مناسب ترین روش اجراء برای یک پردازه در نظر گرفته شود. سیستم های عامل نامتقارن ، از یک پردازنده برای انجام عملیات مربوط به سیستم عامل استفاده و پردازه های مربوط به برنامه های کاربردی را بین سایر پردازه ها تقسیم می نمایند. سیستم های عامل متقارن، عملیات مربوط به خود و عملیات مربوط به سایر پردازه ها را بین پردازه های موجود تقسیم می نمایند. در این راستا سعی می گردد که توزیع عملیات برای هر یک از پردازه ها بصورت متعادل انجام گردد.

سیستم های چند برنامگی 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) است. یکی دیگر از بخشهای مهم در سیستم اشتراک زمانی ترمینال است که وظیفه تعیین هویت کاربران و پذیرش آنها را بر عهده دارد.

  • مجری کارهای پژوهشی عمومی، علمی پژوهشی و مروری
  • کارهای آماری و تجزیه و تحلیل داده
  • تحلیل کمی و کیفی
  • انجام کلیه خدمات نگارش، ترجمه تخصصی ، ویرایش مقاله ها و پایان نامه ها
  • انجام رفرنس نویسی استاندارد با نرم افزار EndNote
  • آماده سازی پاورپوینت مربوط به ارائه در جلسات و همایشها
  • Tel : 09385735506 - 09118370377
    Email : tahghighnet@yahoo.com
    Telegram : @tahghighnet
    Instagram : tahghighnetinsta
    www.tahghigh.net
    2024 - 2007