توضیحات

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

  مقاله بررسی کامل سیستم عامل در فایل ورد (word) دارای 262 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله بررسی کامل سیستم عامل در فایل ورد (word)  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

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


بخشی از متن مقاله بررسی کامل سیستم عامل در فایل ورد (word) :

فصل اول
مفاهیم و تعاریف سیستم عامل
اجزای مختلف كامپیوتر
همانطور كه می دانید كامپیوتر از دو بخش كلی سخت افزار و نرم افزار تشكیل شده است. به طور دقیق تر می توان یك سیستم كامپیوتری را به صورت زیر ترسیم كرد:

برنامه های كاربردی(حسابداری، مرورگر وب و;)
مفسر فرمان، مترجم ها، ادیتورها
سیستم عامل

زبان ماشین
ریز برنامه نویسی
دستگاه های فیزیكی

در بسیاری از سیستم ها هنگام اجرا دستورات ماشین، ابتدا این دستورات توسط یك ROM به یك سری دستورالعمل های ایتدایی تر به نام ریز دستور یا میكرو كد تبدیل شده و سپس توسط سخت افزار اجرا می گردند كه به این ماشین ها CISC(Complex Instruction Set Computer) گفته می شود. در بعشی از كامپیوترها به نام RISC(Reduced Instruction Set Computer) این سطح ریز برنامه نویسی وجود نداشته و دستورات زبان ماشین مستقیما توسط سخت افزار اجرا می گردند. تعداد دستورات ماشین های RISC كمتر از كامپیوترهای CISC می باشد.
سیستم عامل چیست؟
به طور كلی نرم افزارهای كامپیوتر به دو گروه تقسیم می شوند: یكی برنامه های سیستمی كه عملیات كامپیوتر را مدیریت می كنند و دیگری برنامه های كاربردی. سیستم عامل(Operation System= OS) اصلی ترین برنامه سیستمی است كه به عنوان رابط بین كاربر و سخت افزار كامپیوتر عمل می كند.
سیستم عامل دو دظیفه(یا هدف) اصلی دارد:

الف) سیستم عامل استفاده از كامپیوتر را ساده می سازد. این بدان معناست كه مثلا كاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسكها به راحتی فایلی را بر روی دیسك ذخیره و حذف كند. این كار در واقع با به كار بردن دستورات ساده ای كه فراخوان های سیستمی(System Calls) را صدا می زنند انجام می پذیرد. در صورت عدم وجود سیستم عامل كاربر و یا برنامه نویس می بایست آشنایی كاملی با سخت افزارهای مختلف كامپیوتر(مثل مونیتور، فلاپی، كی بورد و غیره) داشته باشد و روتین هائی برای خواندن و یا نوشتن آنها به زبانهای سطح پائین بنویسد. از این جنبه به سیستم عامل با عنوان

ماشین توسعه یافته(Extended machine) یا ماشین مجازی(Virtual machine) یاد می شود كه واقعیت سخت افزار را از دید برنامه نویسان مخفی می سازد.
ب) واقعیت وظیفه دوم سیستم عامل مدیریت منابع(Resource Management) می باشد، یعنی سیستم عامل باعث استفاده بهینه و سودمند(اقتصادی) از

منابع فیزیكی و منطقی سیستم می گردد. منظور از منابع فیزیكی پردازنده ها، حافظه ها، دیسكها، ماوس ها، چاپگرها، پورتها و غیره و منظور از منابع منطقی اطلاعات، فایلها و غیره هستند. یك سیستم كامپیوتری منابع نرم افزاری و سخت افزاری بسیاری دارد كه ممكن است در حین اجراء برنامه لازم باشند، سیستم عامل همانند مدیر منابع عمل كرده و آنها را بر حسب نیاز به برنامه مشخصی تخصیص می دهد. مثلا اگر دو برنامه همزمان بخواهند از چاپگر استفاده كنند،

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

به بیانی می توان گفت هدف سیستم عامل استفاده بهینه و حداكثر از ماشین و وظیفه سیستم عامل كنترل تمامی منابع و به تعادل رساندن درخواستها و منابع موجود است.

با توجه به توضیحات فوق می توان گفت سیستم عامل مشابه دولت است یعنی مانند دولت سیستم عامل محیطی را كه درون آن سایر برنامه های بتوانند كار مفید انجام دهند، ایجاد می كند و هسته سیستم عامل به خودی خود كاری مفید و نهائی را برای كاربر انجام نمی دهد. به عبارتی دیگر سیستم عامل برنامه كنترلی است كه اجرای برنامه های كاربر و استفاده از سخت افزار سیستم را كنترل می كند.

سیستم عامل معمولا اولین برنامه ای است كه پس از بوت شدن در حافظه بار می شود. پس از بار شدن، قسمتی از سیستم عامل بطور دائم در حافظه باقی(Resident) می ماند. قسمتهای دیگر با توجه به كاربرد كامپیوتر توسط كاربر از دیسك به حافظه آورده می شود.

به قسمت اصلی سیستم عامل كه وظایف مهم آن را انجام می دهد هسته یا kernel گفته می شود. هسته سیستم عامل و معماری كامپیوتر اثر زیادی یكدیگر داشته اند. یعنی جهت سهولت كار با سخت افزارهای جدید، سیستم عامل ها توسعه یافتند در اثنای طراحی سیستم عامل ها، مشخص شد كه تغییراتی در طراحی سخت افزار می تواند سیستم عاملها را ساده تر و كارآمدتر سازد. هذ چند كه تطبیق نسلهای كامپیوتر با نسلهای سیستم عامل كار درستی نیست ولی این تطبیق كه در ادامه انجام می دهیم علت ایجاد سیستم عاملهای جدید را مشخص می سازد.

در نسل اول كامپیوترها(55-1945) كه از لامپ خلا برای ساخت آنها استفاده می شد، زبانهای برنامه نویسی(حتی اسمبلی) ابداع نشده بودند و سیستم عامل نیز اصلا وجود نداشت. روند كار به این صورت بود كه برنامه نویسان در یك فاصله زمانی مشخص حق استفاده از كامپیوتر بزرگ و گران قیمت را داشتند. آنها برنامه های خود را توسط تخته مدار سوراخدار( و بعدها توسط كارتهای پانچ) و به زبان ماشین به كامپیوتر می دادند. اكثر برنامه های محاسبات عددی معمولی مانند جداول سینوس و كسینوس بود.

سیستم های دسته ای Batch Systems
در نسل دوم، كامپیوترها(65-1955) از ترانزیستور ساخته شدند.
طریقه كار با این كامپیوترهای نسل دوم از طریق یك كنسول(Console) بود كه تنها اپراتور مخصوص كامپیوتر با آن كار می كرد و كاربران به طور مستقیم با این كامپیوترها محاوره(interaction) نداشتند. كاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی كاغذ می نوشت سپس توسط دستگاه Card punch، برنامه را روی كارت های سورخدار منتقل می ساخت. بعد این دسته كارت تهیه شده كه شامل برنامه، داده ها و كارتهای كنترل بود به صورت یك كار(Job) تحویل اپراتور

داده می شد. اپراتور بعد از اتمام كار قبلی، دسته كارت جدید را به كامپیوتر می داد تا برنامه را اجراء كند در انتهل خروجی برنامه(كه غالبا چاپی بود) را به كاربر تحویل می داد. سیستم عامل در این كامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال كنترل اتوماتیك از یك كار به كار دیگری بود. سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یك برنامه اجراء می شد. هنگامی كه اپراتور مشغول گذاشتن نوارها یا برداشتن كاغذهای چاپ شده بود وقت زیادی از این كامپیوترهای گران قیمت به هدر می رفت.

برای رفع مشكل فوق سیستم های دسته ای(Batch System) ابداع شد. یعنی ابتدا یك سبد پر از دسته كارتها در اتاق ورودی جمع آوری می شد، سپس كلیه آنها به وسیله دستگاه كارتخوان یك كامپیوتر كوچك و نسبتا ارزان(مثل IBM 1401) خوانده شده و بر روی یك نوار ذخیره می گردید. سپس اپراتور نوار را برداشته بر روی كامپیوتر اصلی و گران قیمت كه محاسبات را انجام می داد(مثل IBM 7094) نصب می كرد. بعد از آن برنامه ای را اجراء می كرد(یعنی سیستم عامل) تا

اولین كار را از روی نوار برداشته و اجرا كند، خروجی بر روی نوار دیگری نوشته می شد. پس از اتمام هر كار سیستم عامل به صورت خودكار كار بعدی را از نوار می خواند. پس از اجراء همه برنامه ها، اپراتور نوار خروجی را برداشته و دوباره روی كامپیوتر IBM 1401 منتقل می ساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود. به این روش كار offline spooling نیز گفته می شود. بیشتر برنامه های نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزئی به كار می رفت.

یكی از معایب روش offline- spooling زیاد بودن زمان برگشت(گردش) (turnaround time) است، یعنی تاخیر مابین تحویل كار و تكمیل كار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد. تنها روش بدست آوردن اولویت این بود كه نوار كارهای مهم را ابتدا مهم را ابتدا در ماشین اصلی قرار دهند. حتی در اینصورت هم باید چندین ساعت صبر می كردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزار اضافی(مثل كامپیوترهای 1401) از دیگر معایب این روش بود.

پس از معایب این روش عبارت است از: 1- گردش طولانی تر كار 2- عدم وجود اولویت 3- نیاز به سخت افزار اضافی.
از مزایای سیستم offline spooling نسبت به سیستم های قبل از آن می توان موارد زیر را ذكر كرد:
1- راندمان بهتر 2- عملیات ساده تر 3- سهولت برای استفاده از راه دور
تذكر: در سیستم های اولیه CPU گرانترین جزء كامپیوتر بود و بدین جهت نیاز به بالا بردن درصد استفاده از CPU فاكتور اصلی در طراحی سیستم عاملها بود.
سیستم های چند برنامگی Multiprogramming

در نسل سوم كامپیوترها(80-1965) از مدارات مجتمع(Integrated Circuit= IC) برای ساخت كامپیوترها استفاده شد. به طور كلی برنامه ها را می توان به دو دسته تقسیم كرد: یكی برنامه ها با تنگنای محاسباتی(CPU bound یا CPU Limited) مانند محاسبات علمی سنگین كه بیشتر زمان كامپیوتر صرف محاسبات CPU می شود و دیگری برنامه ها با تنگنای I/O(I/O Limited) مانند برنامه های تجاری كه بیشتر زمان كامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.
یك اشكال مهم سیستم های دسته ای این است كه وقتی كار جاری برای تكمیل یك عملیات I/O مثلا بر روی نوار گردان منتظر می شود، در این حال CPU بیكار می ماند و مجبور است صبر كند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندك است ولی در برنامه های I/O Limited ممكن است حدود 80 تا 90 درصد وقت CPU به هدر برود.

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

 

پس سیستم های چند برنامگی فقط یك پردازنده دارند و به كمك مكانیزم وقفه بین كارهای CPU- limited و I/O Limited سوئیچ می شود و به ظاهر اجرای این برنامه ها به صورت موازی و همزمان صورت می گیرد و بدین ترتیب بهره وری از سیستم افزایش می یابد.
یك شیوه برای بالا بردن راندمان CPU آن است كه تعدادی كار CPU- Limited را با I/O- Limited مخلوط كنیم. ولی در عمل امكان تقسیم بندی كارها قبل از اجراء شدنشان وجود ندارد. از طرف دیگر برنامه های ممكن است در ابتدا CPU-Limited باشد ولی در حین اجراء تبدیل به I/O-Limited گردد.
سیستم های Spooling

یكی دیگر از ویژگیهای سیستم عاملهای نسل سوم Spooling(On Line Spooling) است كه معمولا همراه چند برنامگی استفاده می شود. این كلمه مخفف عبارات(Simultaneous Peripheral Operation) می باشد. در این سیستم به جای آنكه كارتها از دستگاه كارت خوان مستقیما وارد حافظه گردند و توسط CPU پردازش شوند ابتدا كاراكتر به كاراكتر در بافری در حافظه قرار گرفته و سپس به صورت بلوكی بر روی دیسك نوشته می شوند. وقتیكه برنامه كاربر اجراء می شود

و از سیستم عامل تقاضای ورودی می كند، اطلاعات ورودی به صورت بلوكی و با سرعت زیاد از دیسك خوانده می شوند. به طور مشابه هنگامی كه برنامه برای خروجی چاپگر را احضار می كند، خط خروجی در یك بافر كپی شده و سپس در دیسك نوشته می شود. پس اطلاعات خروجی از دیسك براساس ترتیب و اولویت در چاپگر چاپ می شوند. در واقع اسپولینگ عمل I/O یك كار را با عمل محاسباتی كار دیگر روی هم می اندازد(overlap). در سیستم اسپولینگ در حالیكه

ورودی یك كار از دستگاه ورودی خوانده می شود، كار دیگری در حال چاپ شدن است، در همین بین حتی كار دیگری می تواند در حال پردازش و اجراء باشد. در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسك(كه سریع است) انجام می دهد و نه متناسب با سرعت كارتخوان یا چاپگر( كه خیلی كند هستند).

بنابراین سیستم مذكور باعث استفاده بهینه از CPU و وسایل I/O می شود و سرعت عمل را بالا می برد. در این سیستم دیگر نیازی به كامپیوترهای 1401، نوارگردانهای اضافی و حمل نوارها( مانند سیستم های دسته ای) نداریم.

با توجه به توضیحات فوق مزایای سیستم اسپولینگ(نسبت به سیستم دسته ای) عبارتند از:
1- بالا بودن راندمان CPU و وسایل I/O 2- گردش سریعتر كار(turnaround time) در اینجا برعكس سیستم دسته ای لازم نیست برای كامل شدن نوارهای ورودی یا خروجی صبر كرد. 3- دسترسی با اولویت. هنگامی كه اطلاعات مستقیما از طریق كارت خوان یا نوار وارد می شوند چون دسترسی به صورت سریال است امكان ندارد كه اجرای آنها با ترتیب متفاوتی انجام گیرد، یعنی كارها الزاما به ترتیب ذخیره شدن روی نوار اجراء می شوند. اما با استفاده از دیسك، كه رسانه ای با دسترسی تصادفی و مستقیم(direct access) است می توان بین كارها زمانبندی كرده و كار با اولویت را ابتدا اجراء كرد هر چند كه قبل از همه وارد نشده باشد. 4- می توان همزمان چند مدرك ورودی یا خروجی داشت چون ورودیها و خروجیها در دیسك ذخیره می شوند.

بلوك دیاگرام یك سیستم اسپولینگ را می توان به صورت زیر ترسیم كرد:

1- سیستم ورودی: كاركترهایی كه توسط كارتخوان وارد می شود را در بلوكهائی جمع آوری كرده و راجع به آن مدارك ورودی اطلاعاتی راجع به آن مدارك(مانند محل آن بر روی دیسك، اولویت، اسم استفاده كننده) به قسمت زمانبند كار فرستاده می شود.

2- زمانبند كار(JS= Job Scheduler): این زمانبند یك لیست از كارهای موجود در ماشین و اطلاعات لازم در مورد مدارك ورودی مورد نیاز هر یك را نگه می دارد. به این لیست انبار كار یا Jobpool یا Joblist نیز گفته می شود. زمانبند كار به پردازنده كار می گوید كه كدام كار بعدی را اجرا كند. برای این منظور اطلاعاتی در مورد محل كار و مدارك ورودی آن بر روی دیسك را به پردازنده كار می دهد. همچنین اگر كارهای متعددی منتظر ورود به حافظه باشند و فضای كافی برای همگی در دسترس نباشد، زمانبند كار تعدادی از آنها را انتخاب كرده و به حافظه می آورد.

3- پردازنده كار(Job processor) كار داده شده را اجرا می كند. این پردازنده محل كامپایلرها و سایر نرم افزارهای سیستم را بر روی دیسك می داند. هنگام اجراء پردازنده كار خروجی های خود را به صورت بلوكی بر روی دیسك می نویسد و مدارك خروجی را تشكیل می دهد. پردازنده كار اطلاعاتی راجع به محل و اولویت مدارك و اولویت خروجی به زمانبند خروجی می دهد.

4- زمانبند خروجی(output scheduler) لیستی از مداركی كه باید چاپ شوند را نگه می دارد. وقتی كه چاپگر آزاد شد، این زمانبند مدرك بعدی را برای چاپ انتخاب كرده و محل مدرك بر روی دیسك را به سیستم خروجی می گوید.

5- سیستم خروجی: بلاكهای خروجی را از روی دیسك خوانده و كاراكتر به كاراكتر( یا خط به خط) آنها را به چاپگر می فرستد.
6- مدیر دیسك(Disk Manager) كه وظایف خواندن و نوشتن یك بلاك بر دیسك، تخصیص بلاك خالی روی دیسك و برگرداندن یك بلاك به مجموعه فضای آزاد دیسك را بر عهده دارد. درخواستهای مربوطه در یك صف به نام DTQ(Disk Transfer Queue) ذخیره می گردد.

7- هماهنگ كننده: البته هر سیستم اسپولینگ یك هماهنگ كننده(Coordinator) دارد كه مسئول زمانبندی پردازش های سیستم و فراهم كردن عملیاتی كه جهت همگام كردن بكار می آیند می باشد. (هماهنگ كننده در شكل نشان داده نشده است). این عملیات توسط دو روال انجام می پذیرد:
Wait: پردازش جاری را متوقف كرده و دوباره وارد زمانبند می گردد.

Free: یك پردازش ویژه را جهت زمانبندی، آماده می كند.
نكته: بافر كردن امكان می دهد كه عمل I/O یك كار با عمل پردازش همان كار همزمان گردد در حالیكه spooling امكان می دهد عملیات I/O و پردازش چندین كار با هم همزمان گردند.

در چند برنامگی اجرای یك برنامه تا هنگام عملیات I/O ادامه پیدا می كند، سپس عمل I/O آن شروع شده و همزمان CPU اجرای برنامه دیگری را آغاز می كند. ولی در Spooling می توان چند كار را همزمان اجرا كرد.
تذكر: در سیستم های On line پردازنده مستقیما به دستگاه های I/O در ارتباط است ولی در سیستم های Off line یا ارتباط غیرمستقیم، پردازنده با دستگاه های I/O به طور مستقیم در ارتباط نیست.

سیستم های اشتراك زمانی Time- Sharing
این سیستم ها از اوایل سالهای 1970 در نسل سوم كامپیوترها معمول شدند. سیستم اشتراك زمانی در واقع تعمیم سیستم چند برنامگی است.
در سیستم های چند برنامگی كاربر ارتباطی با كامپیوتر نداشت و خطایابی برنامه ها مشكل بود چرا كه زمان برگشت نسبتا طولانی اجازه آزمایش كردنهای متعدد را نمی داد. در سیستم اشتراك زمانی كاربر به كمك ترمینال(Terminal) كه شامل كی بورد(برای ورودی) و مونیتور(برای خروجی) است با كامپیوتر به

صورت محاوره ای(interactive) رابطه برقرار می سازد. كاربر مستقیما دستوراتی را وارد كرده و پاسخ سریع آن را روی مونیتور دریافت می كند. در این سیستم ها چندین كاربر به كمك ترمینالهائی كه به كامپیوتر وصل است همزمان می توانند از آن استفاده كنند. در سیستم اشتراك زمانی فقط یك پردازنده وجود دارد كه توسط مكانیزمهای زمانبندی بین برنامه های مختلف كاربرها با سرعت زیاد(مثلا در حد میلی ثانیه) سوئیچ می شود و بنابراین هر كاربر تصور می كند كل

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

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

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

یكی دیگر از بخشهای مهم در سیستم اشتراك زمانی، مدیر ترمینال است كه وظیفه تعیین هویت كاربران و پذیرش آنها را بر عهده دارد.
چند برنامگی و اشتراك زمانی مباحث اصلی سیستم عاملهای امروزی و در نتیجه مباحث اصلی این كتاب می باشند. اشتراك زمانی حالت ویژه ای از چند برنامگی است كه در آن تعویض یك برنامه نه بر مبنای لحظه نیاز برنامه به عمل I/O بلكه بر مبنای یك برش زمانی انجام می پذیرد. از جمله سیستم عاملهای سنتی و مشهور كه شامل این ویژگیها می باشد سیستم عامل UNIX است. موسسه IEEE یك استاندارد به نام POSIX برای UNIX بنا نهاد. POSIX حداقل واسط فراخوان سیستمی را تعریف می كند كه سیستم های UNIX سازگار باید آن را پشتیبانی نمایند.

سیستم عاملهای كامپیوترهای شخصی و شبكه
سال 1980 تاكنون ه مدارات مجتمع با مقیاس بزرگ LSI(Large Scale Integrated Circuit) ابداع شدند، به عنوان نسل چهارم كامپیوترها شناخته می شود. در این سالها كامپیوترهای شخصی با قیمتی ارزان و كارآئی بالا و محیط گرافیكی و محاوره ای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی PC(مانند DOS) فقط تك كاربره و تك برنامه ای بودند. ولی سیستم عاملهای امروزی آن مانند Windows NT خاصیتهای چند برنامگی، چند كاربره(multiuser) و شبكه ای را دارا هستند. با توجه به هزینه اندك سخت افزار اهداف سیستم عامل در طول زمان تغییر كرده است و برای PCها به جای ماكزیمم كردن درصد استفاده CPU و وسایل جانبی، سیستم به سمت راحتی كاربر پیش می رود. به تدریج ویژگی های مهم سیستم عاملهای قدیمی در كامپیوترهای بزرگ(مانند حفاظت حافظه، محافظت فایلها، همزمانی پردازشها و;) بر روی سیستم های PC نیز پیاده سازی شده است.

هنگامی كه كامپیوترها از طریق شبكه به هم وصل شوند به آنها ایستگاههای كاری(Workstations) می گویند. در یك سیستم عامل شبكه، كاربران از وجود ماشین های مختلف در شبكه باخبرند. آنها می توانند از دور وارد یك ماشین شوند و همچنین فایلهای یك ماشین را روی ماشین دیگر كپی كنند.
هر كامپیوتر سیستم عامل محلی خودش را اجراء می كند و كاربر یا كاربران محلی مخصوص به خود را دارد.
سیستم های توزیع شده Distributed Systems

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

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

در شبكه هر كامپیوتر می تواند سیستم عامل ویژه خود را داشته باشد و تنها یك نرم افزار مدیریت شبكه به سیستم عامل اضافه شده است ولی در سیستم عامل توزیع شده تنها یك سیستم عامل مجموعه ای از سیستم های متصل به هم را مدیریت می كند.

در شبكه هر كامپیوتر می تواند سیستم عامل ویژه خود را داشته باشد و تنها یك نرم افزار مدیریت شبكه به سیستم عامل اضافه شده است ولی در سیستم عامل توزیع شده تنها یك سیستم عامل مجموعه ای از سیستم های متصل به هم را مدیریت می كند.

در شبكه هر كامپیوتر می تواند سیستم عامل ویژه خود را داشته باشد و تنها یك نرم افزار مدیریت شبكه به سیستم عامل اضافه شده است ولی در سیستم عامل توزیع شده تنها تنها یك سیستم عامل مجموعه ای از سیستم های متصل به هم را مدیریت می كند.

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

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

2- تسریع محاسبات
3- قابلیت اعتماد: اگر در سیستم توزیع شده، كامپیوتری خراب شود، كامپیوترهای دیگر(در صورت طراحی سیستم برای این منظور) می توانند كار را ادامه دهند. ولی همانطور كه قبلا گفتیم اگر سیستم نتواند خطا را تشخیص داده و آن كار را به كامپیوتر دیگری بسپارد برعكس امنیت كاهش می یابد.
4- ارتباطات(مثل پست الكترونیكی و انتقال فایلها)
نخ(thread) و سیستم های multitasking

در تكنیك چند نخی(Multithreading) یك فرایند(process) كه برنامه ای در حال اجراست، می تواند به بخشها یا نخهائی(بندهائی) تقسیم شود كه می توانند به صورت همزمان اجراء شوند.

گاهی اوقات به سیستم های multithreading سیستم های چند تكلیفی یا چند وظیفه ای(multitasking) هم گفته می شود.
فرآیند(process) یا پردازش اساسا یك برنامه در حال اجراست كه منابعی از سیستم به آن تخصیص داده شده است( شامل رجیسترها، حافظه، فایلها و دستگاهها). فرآیند می تواند مجموعه ای از یك یا چند نخ باشد. به نخ، رشته یا بند هم گفته می شود. كلیه اطلاعات مربوط به هر پروسس، در یكی از جداول سیستم عامل به نام جدول Process Control Block=PCB ذخیره می شود. این جدول یك آرایه یا لیست پیوندی از ساختارهاست كه هر عضو آن مربوط به یكی از پروسس هاست كه در حال حاضر موجودیت دارد.

اطلاعات موجود در PCB عبارتند از: حالت جاری پردازش، شماره شناسایی پردازش، شماره شناسایی پردازش، اولویت پردازش، نشانی حافظه پردازش، نشانی محل برنامه پردازش بر روی دیسك، نشانی سایر منابع پردازش، محلی برای حفظ ثباتها. در فصل سوم PCB را كامل تر شرح می دهیم.
سیستم های چند پردازنده ای(multiprocessor)

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

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

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

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

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

1- از آنجا كه سیستم عامل خود یك پردازش سنگین است اگر فقط روی یك CPU اجراء شود باعث می گردد كه آن پردازنده همواره بار سنگینی داشته باشد، در حالیكه احتمالا پردازنده های دیگر بی كار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن(balancing) بار سیستم می شود.
2- در سیستم نامتقارن اگر پردازنده اجراء كننده سیستم عامل خراب شود كل سیستم خراب می شود ولی در سیستم متقارن از این نظر امنیت بیشتر است چرا كه اگر یك پردازنده از كار بیفتد سیستم عامل می تواند روی پردازنده های دیگر اجراء شود.

3- برعكس سیستم عامل نامتقارن، سیستم عامل متقارن قابل حمل(portable) بر روی سیستم های سخت افزاری مختلف است.
سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 ورژن 5 و همچنین Windows NT از نوع متقارن می باشند.
توجه كنید وجود پردازنده های متعدد از دید كاربر مخفی است و زمانبندی نخها(Thread) یا فرآیندها(process) روی هر یك از پردازنده ها به عهده سیستم عامل است.

گرچه multithreading و multiprocessing امكانات مستقلی هستند ولی معمولا با هم پیاده سازی می شوند. حتی در یك ماشین تك پردازنده ای، چند نخی كارایی را افزایش می دهد. همچنین ماشین چند پردازنده ای حتی برای فرایندهای غیرنخی هم كارآمد است.
شكل زیر تفاوت سیستم نامتقارن و متقارن را نشان می دهد:

 

تذكر 1: گاهی اوقات به سیستم های چند پرازنده ای، سیستم های Tightly Coupled یا ارتباط محكم نیز گفته می شود. چرا كه پردازنده ها كلاك(Clock)، گذرگاه و همچنین حافظه مشتركی دارند.
تذكر 2: بعضی از كتابها سیستم های توزیع شده را به صورت زیر به دو دسته تقسیم كرده اند:
1- سیستم های با ارتباط سست یا ضعیف(Loosely Coupled) كه تعدادی پردازنده با خطوط ارتباطی بین آنها دارند و هر پردازنده كلاك و حافظه مستقل دارد.
2- سیستم های با ارتباط محكم(Tightly Coupled) كه پردازنده هایی با كلاك یكسان و حافظه مشترك دارند. با آنكه این سیستم پیچیده تر است ولی سرعت اجرای آن از نوع قبلی بیشتر می باشد.

سیستم های توزیع شده جهت افزایش سرعت اجرا، افزایش قابلیت اطمینان، اشتراك منابع و برقراری ارتباط بین سیستم های مختلف استفاده می گردند.
سیستم های بی درنگ(Real Time)

سیستم های بی درنگ معمولا به عنوان یك كنترل كننده در یك كاربرد خاص استفاده می شوند. سیستم در این حالت می بایست در زمانی مشخص و معین حتما جواب مورد نظر را بدهد. سیستم كنترل صنعتی، كنترل موشك و غیره از این دسته اند.

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

در سیستم های بی درنگ معمولا وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه های ROM استفاده می شود. سیستم عامل های پیشرفته نیز در این سیستم ها وجود ندارند چرا كه سیستم عامل را از سخت افزار جدا می كند و این جداسازی باعث عدم قطعیت در زمان پاسخگوئی می شود.

سیستم های بی درنگ با سیستم های اشتراك زمانی تناقض دارند لذا نمی توانند هر دو تواما وجود داشته باشند. به دلیل نیاز به پاسخ دهی سریع و تضمین شده، سیستم های بلادرنگ از حافظه مجازی و اشتراك زمانی استفاده نمی كنند. به این سیستم ها«بی درنگ سخت» نیز گفته می شود. این موضوع در كتاب حاضر مورد بررسی قرار نمی گیرد. در سیستم های« بی درنگ نرم» یك وظیفه بی درنگ بحرانی، نسبت به سایر وظایف اولویت دارد و تا پایان تكمیل

شدنش این ارجحیت را دارا خواهد بود. از آنجا كه این سیستم ها مهلت زمانی(deadline) را پشتیبانی نمی كنند استفاده آنها در كنترل صنعتی ریسك آور است. هر چند كه این سیستم های بی درنگ نرم نیز می بایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستم های بی درنگ سخت نمی باشد. از كاربردهای بی درنگ نرم می توان رزواسیون شركتهای هواپیمائی، چند رسانه ای(multimedia)، واقعیت مجازی(Virtual reality) را نام برد. این سیستم ها به ویژگی های سیستم عاملهای پیشرفته(كه توسط بی درنگ سخت حمایت نمی شوند) نیازمندند. بعضی از نسخه های UNIX مانند solaris 2 خاصیت بی درنگ نرم را دارا می باشند.

برای دریافت اینجا کلیک کنید

سوالات و نظرات شما

برچسب ها

سایت پروژه word, دانلود پروژه word, سایت پروژه, پروژه دات کام,
Copyright © 2014 icbc.ir