PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مقاله طراحی سیستم عامل



آبجی
4th November 2009, 12:24 PM
مقدمه

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

سيستم عامل با سازماندهی ، مديريت و کنترل منابع سخت افزاری امکان استفاده بهينه و هدفمند آنها را فراهم می آورد. سيتم عامل فلسفه بودن سخت افزار را بدرستی تفسير و در اين راستا امکانات متعدد و ضروری جهت حيات ساير برنامه های کامپيوتری را فراهم می آورد

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

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


به طور کلی نرم افزارهای کامپیوتر به دو گروه تقسیم می‌شوند

یکی برنامه های سیستمی که عملیات کامپیوتر را مدیریت می‌کنند و دیگری برنامه‌های کاربردی
سیستم عامل (operatino system = os) اصلی ترین برنامه سیستمی است که به عنوان رابط بین کاربر و سخت افزار کامپیوتر عمل می‌کند

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



به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام می‌دهد هسته یا Kernelگفته می‌شود. هسته سیستم عامل برنامه‌ای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست



سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر داشته‌اند. یعنی جهت سهولت کار با سخت افزارهای جدید, سیستم عامل‌ها توسعه یافتندو همچنین در اثنای طراحی سیستم عامل‌ها , مشخص شد که تغییراتی در طراحی سخت افزار می‌تواند سیستم عاملها را ساده تر و کارآمدتر سازد

آبجی
4th November 2009, 12:25 PM
اهداف سیستم عامل

سیستم عامل سه هدف اصلی دارد :



- سهولت

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



- کارآمدی

هدف دوم سیستم عامل مدیریت منابع (Resource Management) می‌باشد, یعنی سیستم عامل باعث استفاده بهینه و سودمند از منابع سیستم می‌گردد. منظور از منابع: پردازنده‌ها ,حافظه‌ها ,دیسکها, ماوس ها چاپگر ها , فایلها , پورتها و غیره هستند. یک سیستم کامپیوتری منابع نرم افزاری و سخت افزاری بسیار دارد که ممکن است در حین اجراء برنامه لازم باشند , سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز به برنامه‌های مشخصی تخصیص می‌دهد



- قابلیت رشد

سیستم عامل باید به نحوی ساخته شده باشد که به طور موثر توسعه, آزمایش و معرفی قابلیتهای جدید سیستمی را بدون ایجاد مزاحمت در خدمات جاری , میسر سازد

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

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


سيستم های عامل را از بعد نوع کامپيوترهائی که قادر به کنترل آنها بوده و نوع برنامه های کاربردی که قادر به حمايت از آنها می باشند به چهار گروه عمده تقسيم می نمایند

- سيستم عامل بلادرنگ (RTOS ):
از اين نوع سيستم های عامل برای کنترل ماشين آلات صنعتی ، تجهيزات علمی و سيستم های صنعتی استفاده می گردد. يک سيستم عامل بلادرنگ دارای امکانات محدود در رابطه با بخش رابط کاربر و برنامه های کاربردی مختص کاربران می باشند. يکی از بخش های مهم اين نوع سيستم های عامل ، مديريت منابع موجود کامپيوتری بگونه ای است که يک عمليات خاص در زمانی که می بايست ، اجراء خواهند شد



- تک کاربره - تک کاره:
همانگونه که از عنوان اين نوع سيستم های عامل مشخص است، آنها بگونه ای طراحی شده اند که قادر به مديريت کامپيوتر بصورتی باشند که يک کاربر در هر لحظه قادر به انجام يک کار باشد. سيستم عامل Palm OS برای کامپيوترهای PDA نمونه ای مناسب از يک سيستم عامل مدرن تک کاربره و تک کاره است



- تک کاربره – چندکاره:
اکثر سيستم های عامل استفاده شده در کامپيوترهای شخصی از اين نوع می باشند. ويندوز و MacOS نمونه هائی در اين زمينه بوده که امکان اجرای چندين برنامه بطور همزمان را برای يک کاربر فراهم می نمايند. مثلا" يک کاربر ويندوز قادر به تايپ يک نامه با استفاده از يک واژه پرداز بوده و در همان زمان يک فايل از اينترنت گرفته و در همان وضعيت محتويات نامه الکترونيکی خود را برای چاپ بر روی چاپگر ارسال کرده باشد


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

در ادامه با توجه به شناخت مناسب بوجود آمده در دررابطه با انواع سيستم های عامل به عمليات و وظايف سيستم عامل اشاره خواهد شد.

آبجی
4th November 2009, 12:26 PM
وظايف سيستم عامل پس از روشن نمودن کامپيوتر، اولین برنامه ای که اجراء می گردد ، مجموعه دستوراتی می باشند که در ROM ذخيره و مسئول بررسی صحت عملکرد امکانات سخت افزاری موجود می باشند. برنامه فوق (POST) ، پردازنده ، حافظه و ساير عناصر سخت افزاری را بررسی خواهد کرد . پس از بررسی موفقيت آمیز برنامه POST، در ادامه درايوهای ( هارد ، فلاپی ) سيستم فعال خواهند شد. در اکثر کامپيوترها پس از فعال شدن هارد ديسک ، اولين بخش سيستم عامل با نام Bootstrap Loader فعال خواهد شد. برنامه فوق صرفا" دارای يک وظيفه اساسی است : انتقال ( استقرار ) سيستم عامل در حافظه اصلی و امکان اجرای آن . برنامه فوق عمليات متفاوتی را بمنظور استقرار سيستم عامل در حافظه انجام خواهد داد. سيستم عامل دارای وظايف زير است:

- مديريت پردازنده
- مديريت حافظه
- مديريت دستگاههای ورودی و خروجی
- مدیریت حافظه جانبی
- اينترفيس برنامه های کاربردی
- رابط کاربر

وظايف شش گانه فوق ، هسته عمليات در اکثر سيستم های عامل است . در ادامه به تشريح وظايف فوق اشاره می گردد .

آبجی
4th November 2009, 12:26 PM
مديريت پردازنده مديريت پردازنده دو وظيفه مهم اوليه زير را دارد:
- ايجاد اطمينان که هر پردازه و يا برنامه به ميزان مورد نياز پردازنده را برای تحقق عمليات خود ، اختيار خواهد کرد.
- استفاده از بيشترين سيکل های پردازنده برای انجام عمليات.

ساده ترين واحد نرم افزاری که سيستم عامل بمنظور زمانبندی پردازنده با آن درگير خواهد شد ، يک پردازه و يا يک Thread خواهد بود. موقتا" می توان يک پردازه را مشابه يک برنامه در نظر گرفت ، در چنين حالتی مفهوم فوق ( پردازه ) ، بيانگر يک تصوير واقعی از نحوه پردازش های مرتبط با سيستم عامل و سخت افزار نخواهد بود. برنامه های کامپيوتری ( نظير واژه پردازها بازيهای کامپيوتری و ...) در حقيقت خود يک پردازه می باشند ، ولی برنامه های فوق ممکن است از خدمات چندين پردازه ديگر استفاده نمايند.

مثلا" ممکن است يک برنامه از پردازه ایی بمنظور برقراری ارتباط با ساير دستگاههای موجود در کامپيوتر استفاده نمايد. پردازه های فراوان ديگری نيز وجود دارد که با توجه به ماهيت عمليات مربوطه ، بدون نياز به محرک خارجی (نظير يک برنامه) فعاليت های خود را انجام می دهند. يک پردازه ، نرم افزاری است که عمليات خاص و کنترل شده ای را انجام می دهد کنترل يک پردازه ممکن است توسط کاربر ، ساير برنامه های کاربردی و يا سيستم عامل صورت پذيرد.

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

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

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

در ادامه نحوه انجام عمليات فوق ، تشريح می گردد:

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

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

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

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


يکی از روش هائی که طراحان سيستم عامل از آن استفاده تا امکان ( شانس) تحقق Thrashingرا کاهش دهند ، کاهش نياز به پردازه جديد برای انجام فعاليت های متفاوت است . برخی از سيستم های عامل ازيک پردازه " - lite "به نام Thread استفاده می نمايند.

Thread از لحاظ کارآئی همانند يک پردازه معمولی رفتار نموده ولی نيازمند عمليات متفاوت ورودی و خروجی و يا ايجاد ساختمان داده PCB مشابه يک پردازه عادی نخواهد بود. يک پردازه ممکن است باعث اجرای چندين Thread و يا ساير پردازه های ديگر گردد. يک Thread نمی تواند باعث اجرای يک پردازه گردد.

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

آبجی
4th November 2009, 12:27 PM
مديريت حافظه و فضای ذخيره سازی سيستم عامل در رابطه با مديريت حافظه دو عمليات اساسی را انجام خواهد داد :

1- هر پردازه بمنظور اجراء می بايست دارای حافظه مورد نياز و اختصاصی خود باشد.

2- از انواع متفاوتی حافظه در سيستم استفاده تا هر پردازه قادر به اجراء با بالاترين سطح کارآئی باشد.

سیستم های عامل در ابتدا می بايست محدوده های حافظه مورد نياز هر نوع نرم افزار و برنامه های خاص را فراهم نمايند. مثلاً فرض کنید،سيستمی دارای يک مگابايت حافظه اصلی باشد. سيستم عامل کامپيوتر فرضی، نيازمند 300 کيلو بايت حافظه است سيستم عامل در بخش انتهائی حافظه مستقر و به همراه خود درايورهای مورد نياز بمنظور کنترل سخت افزار را نيز مستقر خواهد کرد درايورهای مورد نظر به 200 کيلو بايت حافظه نياز خواهند داشت. بنابراين پس از استقرار سيستم عامل بطور کامل در حافظه، 500 کيلو بايت حافظه باقيمانده و از آن برای پردازش برنامه های کاربردی استفاده خواهد شد.

آبجی
4th November 2009, 12:28 PM
ادامه مديريت حافظه و فضای ذخيره سازی زماني که برنامه های کاربردی در حافظه مستقر می گردند، سازماندهی آنها در حافظه بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سيستم عامل مشخص خواهد شد. در صورتيکه اندازه هر بلاک 2 کيلوبايت باشد، هر يک ازبرنامه های کاربردی که در حافظه مستقر می گردنند، تعداد زيادی از بلاک های فوق را (مضربی از دو خواهد بود)،بخود اختصاص خواهند داد. برنامه ها در بلاک هائی با طول ثابت مستقر می گردند.هر بلاک دارای محدوده های خاص خود بوده که توسط کلمات چهار و يا هشت بايت ايجاد خواهند شد. بلاک ها ومحدوده های فوق اين اطمينان را بوجود خواهند آورد که برنامه ها در محدوده های متداخل مستقر نخواهند شد.
پس از پر شدن فضای 500 کيلوبايت اختصاصی برای برنامه های کاربردی، وضعيت سيستم به چه صورت تبديل خواهد گردید؟در اغلب کامپيوترها،میتوان ظرفيت حافظه را ارتقاء و افزايش داد. مثلاً RAM موجود را از يک مگابايت می توان ميزان حافظه به دو مگابايت ارتقاء داد. روش فوق يک راهکار فيزيکی برای افزايش حافظه بوده که در برخی موارد دارای چالش های خاص خود می باشد.

در اين زمينه می بايست راهکارهای ديگر نيز مورد بررسی قرار گيرند. اغلب اطلاعات ذخيره شده توسط برنامه ها در حافظه، در تمام لحظات مورد نياز نخواهد بود. پردازنده در هر لحظه قادر به دستيابی به يک محل خاص از حافظه است.بنابراين اکثر حجم حافظه در اغلب اوقات غير قابل استفاده است. از طرف ديگر با توجه به اينکه فضای ذخيره سازی حافظه ها ی جانبی نظير ديسک ها بمراتب ارزانتر نسبت به حافظه اصلی است،می توان با استفاده از مکانيزم هائی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتاً بر روی هارد ديسک ذخيره نمود. بدين ترتيب فضای حافظه اصلی آزاد و در زماني که به اطلاعات ذخيره شده بر روی هارد ديسک نياز باشد، مجدداً آنها را در حافظه مستقر کرد. روش فوق " مديريت حافظه مجازی " ناميده می شود. حافطه های ذخيره سازی ديسکی، يکی از انواع متفاوت حافظه موجود بوده که می بايست توسط سيستم عامل مديريت گردد.حافطه های با سرعت بالایCache، حافظه اصلی و حافظه های جانبی نمونه های ديگر ازحافظه بوده که توسط سيستم عامل مديريت می گردند.

آبجی
4th November 2009, 12:28 PM
مديريت دستگاههای جانبی دستيابی سيستم عامل به سخت افزارهای موجود ازطریق برنامه های خاصی با نام "درايور" انجام می گيرد. درايور مسئوليت ترجمه بين سيگنال های الکترونيکی زير سيستم های سخت افزاری و زبانهای برنامه نويسی سطح بالاو سيستم عامل و برنامه های کاربردی را را برعهده خواهد داشت.
مثلاً درايورها اطلاعاتی را که سيستم عامل بصورت يک فايل تعريف و در نظر می گيرد را اخذ و آنها را به مجموعه ای از بيتها برای ذخيره سازی بر روی حافظه های جانبی و يا مجموعه ای از پالسها برای ارسال بر روی چاپگر ترجمه خواهد کرد.

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

يکی از دلايلی که درايورها از سيستم عامل تفکيک شده اند، ضرورت افزودن عمليات و خواسته ای جدید برای درايورها است. در چنين حالتی ضرورتی بر اصلاح و يا تغيير سيستم عامل نبوده و با اعمال تغييرات لازم در درايورها می توان همچنان از قابليتهای آنها در کنار سيستم عامل موجود استفاده کرد. مديريت عمليات ورودی و خروجی در کامپيوتر مستلزم استفاده و مديريت " صف ها "و" بافرها " است.

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

آبجی
4th November 2009, 12:29 PM
ارتباط سيستم با دنيای خارج اينترفيس برنامه ها

سيستم عامل در رابطه با اجرای برنامه های کامپيوتری خدمات فراوانی را ارائه می نمايد. برنامه نويسان و پياده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سيستم های عامل استفاده و بدون اينکه نگران و يا درگير جزئيات عمليات در سيستم باشند ، از خدمات مربوطه استفاده نمايند. برنامه نويسان با استفاده از API ( Application program interface) قادر به استفاده از خدمات ارائه شده توسط ، سيستم های عامل در رابطه با طراحی و پياده سازی نرم افزار می باشند. در ادامه بمنظور بررسی جايگاه API به بررسی مثالی پرداخته خواهد شد که هدف ايجاد يک فايل بر روی هارد ديسک برای ذخيره سازی اطلاعات است .

برنامه نويس ، برنامه ای را نوشته که بکمک آن قادر به ذخيره سازی داده های ارسالی توسط يک دستگاه کنترل علمی است .سيستم عامل يک تابع API با نام MakeFile را بمنظور ايجاد فايل در اختيار برنامه نويس قرار می دهد. برنامه نويس در زمان نوشتن برنامه از دستوری مشابه زير استفاده می نمايد:

کد:
MakeFile [1,%Name,2]



دستورالعمل فوق به سيستم عامل خواهد گفت که فايلی را ايجاد کند که شيوه دستيابی به داده های آن بصورت تصادفی دارای نام مشخص شده توسط کاربر و دارای طولی متغير است سيستم عامل دستور فوق را بصورت زير انجام خواهد داد:

- سيستم عامل درخواستی برای هارد ارسال تا اولين مکان آزاد قابل استفاده مشخص گردد.
- با توجه به اطلاعات ارسالی ، سيستم عامل يک - entry ،در سيستم فايل مربوطه ايجاد و ابتدا و انتهای فايل نام فايل ، نوع فايل ، تاريخ و زمان ايجاد فايل و ساير اطلاعات ضروری را ذخيره خواهد کرد.

- سيستم عامل اطلاعاتی را در ابتدای فايل بمنظور مشخص کردن فايل ، تنظيمات مربوط به شيوه دستيابی به فايل و ساير اطلاعات مورد نياز را خواهد نوشت.

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

امکانات ارائه شده توسط سيستم های عامل در قالب مجموعه ای از توابع و امکانات API يکی از موارد بسيار مهم استفاده از سيستم عامل از ديدگاه طراحان و پياده کنندگان نرم افزار است .

آبجی
4th November 2009, 12:29 PM
اينترفيس کاربر api يک روش يکسان برای برنامه های کامپيوتری بمنظور استفاده از منابع موجود در يک سيستم کامپيوتری را فراهم می نمايد. بخش رابط کاربر (ui ) يک ساختار مناسب ارتباطی بين کاربر و کامپيوتر را فراهم ،می آورد. اکثر سيستم های عامل از رابط های گرافيکی در اين زمينه استفاده می نمايند. بخش رابط کاربر هر سيستم عامل شامل يک و يا مجموعه ای از برنامه های کامپيوتری است که بصورت يک لايه در بالاترين سطح يک سيستم عامل و در ارتباط با کاربر مستقر می گردند. برخی از سيستم های عامل از رابط های گرافيکی ( نظير ويندوز ) و برخی ديگر از رابط های مبتنی بر متن نظير سيستم عامل dos استفاده می نمایند.

آبجی
4th November 2009, 12:30 PM
تطابق تکنیکهای سیستم عامل با نسل های کامپیوتر در نسل اول کامپیوترها (55-1945) که از لامپ خلا برای ساخت آنها استفاده می‌شد,زبانهای برنامه نویسی حتی اسمبلی ابداع نشده بودند و سیستم عامل نیز اصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند.

آنها برنامه‌های خود را توسط تخته مدار سوراخدار (و بعدها توسط کارتهای پانچ ) و به زبان ماشین به کامپیوتر می‌دادند. اکثر برنامه ها محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود.

- Batch system سیستم های دسته ای

Multi programming- سیستم های چند برنامه ای

Spooling- سیستم

Time sharing- سیستم اشتراک زمانی

-سیستم عاملهای کامپیوترهای شخصی و شبکه

Distributed system- سیستم های توزیع شده

Multi tasking- سیستم های چند وظیفه ای

Multi processing- سیستم های چند پردازنده ای

Real Time- سیستم های بلادرنگ

آبجی
4th November 2009, 12:31 PM
سیستم های دسته ای در نسل دوم , کامپیوترها (65-1955) از ترانزیستور ساخته شدند. طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار می‌کرد و کاربران به طور مستقیم با این کامپیوترها محاوره (interaction) نداشتند. کاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی کاغذ می‌نوشت سپس توسط دستگاه card punch برنامه را ,روی کارت های سوراخدار منتقل ساخت.

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

هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این کامپیوترهای گران قیمت به هدر می‌رفت . برای رفع مشکل فوق سیستمهای دسته‌ای ابداع شد . یعنی ابتدا یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری می‌شد , سپس کلیه آنها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و نسبتاً ارزان مثل IBM 1401 خوانده شده و بر روی یک نوار ذخیره می‌گردید. سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام می‌داد مثل IBM7094 نصب می‌کرد . بعد از آن برنامه‌ای را اجراء می‌کرد (یعنی سیستم عامل) . تا اولین کار را از روی نوار برداشته و اجراء کند, خروجی بر روی نوار دیگری نوشته می شد. پس از اتمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار می‌خواند. پس از اجراء همه برنامه‌ها ,اپراتور نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل می‌ساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود. به این روش کار offline spooling نیز گفته می‌شود. بیشتر برنامه‌های نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزئی به کار می‌رفت.

یکی از معایب روش offline- spooling زیاد بودن زمان برگشت( گردش ) ,(turnaround time)است یعنی تأخیر زمانی مابین تحویل کار و تکمیل کار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد.

تنها روش بدست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در ماشین اصلی قرار دهند. حتی در اینصورت هم باید چندین ساعت صبر می‌کردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزار اضافی (مثل کامپیوترهای1401) از دیگر معایب این روش بود.

آبجی
4th November 2009, 12:31 PM
سیستم های چند برنامه ای در نسل سوم کامپیوترها (80-1965) از مدارات مجتمع (Integrated Circuit=IC ) برای ساخت کامپیوترها استفاده شد.

به طور کلی برنامه‌ها را می‌توان به دو دسته تقسیم کرد:
یکی برنامه ها با تنگنای محاسبات CPU bound یا CPU Limiter مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات cpu می‌شود و دیگری برنامه های تنگنای (I/O Limited I/O) مانند برنامه‌های تجاری که بیشتر زمان کامپیوتر صرف ورود داده‌ها و خروج اطلاعات می‌شود.
یک اشکال مهم سیستم های دسته ای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان به اتمام نرسیده ، cpu مجبور است صبر کند تا عملیات cpu نوار گردان تمام شود. در این مدت cpu بیکار می ماند (مجبور است صبر کند تا عملیات I/O به اتمام برسد.) در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود 80تا90 درصد وقت CPU به هدر برود.

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

البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه‌ها بر همدیگر اثر سوء نداشته باشند . لذا مدیریت حافظه بحث مهمی در سیستم عامل می‌باشد.

آبجی
4th November 2009, 12:32 PM
spooling سیستم در این سیستم به جای آنکه کارتها از دستگاه کارت خوان مستقیماً وارد حافظه گردند و توسط CPUپردازش شوند ابتدا کاراکتر به کاراکتر در بافری در حافظه قرار گرفته و سپس به صورت بلوکی بر روی دیسک نوشته می‌شود .

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

بنابراین سیستم مذکور باعث استفاده بهینه از I\O و cpu می‌شود و سرعت عمل را بالا می‌برد. در این سیستم دیگر نیازی به کامپیوترهای 1401,نوار گردانهای اضافی و حمل نوارها (مانند سیستم‌های دسته‌ای ) نداریم.

آبجی
4th November 2009, 12:33 PM
spooling سیستم (ادامه) - سیستم ورودی کاراکترهایی که توسط کارتخوان وارد می‌شود را در بلوکهایی جمع آوری کرده وبه کمک مدیر دیسک این بلوکها را بر روی دیسک می‌نویسد . درانتهای هر مدرک ورودی اطلاعاتی راجع به آن مدرک مانند محل آن بر روی دیسک , اولویت ,اسم استفاده کننده به قسمت زمانبند کار فرستاده می‌شود.

- زمانبند کار(Job scheduler) این زمانبند یک لیست از کارهای موجود در ماشین و اطلاعات لازم در مورد مدارک ورودی مورد نیاز هر یک را نگه می‌دارد. به این لیست انبار کار یا Jobpoolیا Joblistنیز گفته می‌شود. زمانبند کار به پردازنده کار می‌گوید که کدام کار بعدی را اجرا کند. برای این منظور اطلاعاتی در مورد محل کار و مدارک ورودی آن بر روی دیسک را به پردازنده کار می‌دهد . همچنین اگر کارهای متعددی منتظر ورود به حافظه باشند و فضای کافی برای همگی در دسترس نباشد , زمانبند کار تعدادی از آنها را انتخاب کرده و به حافظه می‌آورد.

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

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


- سیستم خروجی بلاکهای خروجی را از روی دیسک خوانده و کاراکتر به کاراکتر (یا خط به خط)آنها را به چاپگر می‌فرستد.


- مدیر دیسک (Disk Manager) که وظایف خواندن و نوشتن یک بلاک بر دیسک , تخصیص یک بلاک خالی روی دیسک و برگرداندن یک بلاک به مجموعه فضای آزاد دیسک را بر عهده دارد. در خواستهای مربوطه به دیسک در یک صف به نامDTQ = Disk Transfer Queue ذخیره می‌گردد.

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

Wait : پردازش جاری را متوقف کرده و دوباره وارد زمانبند می‌گردد.

Free : یک پردازش ویژه را جهت زمانبندی, آماده می‌کند.


بافر کردن امکان می‌دهد که عمل I\Oیک کار با عمل پردازش همان کار همزمان گردد در حالیکهspooling امکان می‌دهد عملیات I\O و پردازش چندین کار با هم همزمان گردند.

آبجی
4th November 2009, 12:33 PM
سیستم اشتراک زمانی این سیستم‌ها از اوایل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است. در سیستم‌های چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامه‌ها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردنهای متعدد را نمی‌داد. در سیستم اشتراک زمانی کاربر به کمک دوترمینال (Terminal) که شامل کی بورد (برای ورودی) و مانیتور (برای خروجی ) است با کامپیوتر به صورت محاوره‌ای (interactive) رابطه بر قرار می‌سازد.
کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مونیتور دریافت می‌کند. در این سیستم‌ها چندین کاربر به کمک ترمینالهایی که به کامپیوتر وصل است همزمان می‌توانند از آن استفاده کنند.

آبجی
4th November 2009, 12:33 PM
سیستم اشتراک زمانی (ادامه) در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامه‌های مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ می‌شودو بنابراین هر کاربر تصور می‌کند کل کامپیوتر در اختیار اوست .در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد می‌باشد و نه بالابردن میزان کاربرد منابع ماشین. کاربر می‌تواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدایی (debug) کند . سیستم‌های دسته‌ای برای اجرای برنامه‌های بزرگ که نیاز محاوره‌ای کمی دارند مناسب است ولی سیستم‌های اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است, استفاده می‌شوند.

در زمانیکه کاربری در حال تایپ برنامه‌اش یا فکر کردن روی خطاهای برنامه اش‌ می‌باشد cpu به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند.

آبجی
4th November 2009, 12:34 PM
سیستم عاملهای کامپیوترهای شخصی و شبکه ابداع (Large Scale Integrated Circuit) از سال 1980 تا کنون که مدارات مجتمع با مقیاس بزرگ شدند، به عنوان نسل چهارم کامپیوترها شناخته می‌شود. در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاوره‌ای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی PCها مانند DOS فقط تک کاره و تک برنامه‌ای بودند.

ولی سیستم عاملهای امروزی آن مانند windows NT خاصیتهای چند برنامگی، چند کاربره (multiuser) و شبکه ای را دارا هستند. با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده و برای PCها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی ، سیستم به سمت راحتی کاربر پیش می‌رود.

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


هنگامی که کامپیوترها از طریق شبکه به هم وصل شوند. به آنها ایستگاههای کاری (Work stations) می‌گویند . در یک سیستم عامل شبکه , کاربران از وجود ماشین های مختلف در شبکه با خبرند. آنها می‌توانند از دور وارد یک ماشین شوند و همچنین فایلهای یک ماشین را روی ماشین دیگر کپی کنند .

هر کامپیوتر سیستم عامل محلی خودش را اجراء می‌کند و کاربر یا کاربران محلی مخصوص به خود را دارد.

آبجی
4th November 2009, 12:34 PM
سیستم های توزیع شده سیستم عامل توزیع شده در یک محیط شبکه ای اجراء می‌شود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود می‌توانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بر گردند.

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

یکی از مزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامه‌هاست چرا که یک برنامه همزمان می‌تواند از چندین کامپیوتر برای اجراء شدنش استفاده کند .

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

به علت تأخیر‌های انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه دریک سیستم تنها ، بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .

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


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

پردازنده‌ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه‌های سریع یا خطوط تلفن ارتباط دارند.

آبجی
4th November 2009, 12:34 PM
سیستم های چند وظیفه ای
در تکنیک چند نخی (multitasking) یک فرایند (process) که برنامه‌ای در حال اجراست , می‌تواند به بخشها یا نخهایی (بندهایی ) تقسیم شود که می‌توانند به صورت همزمان اجراء شوند .

برنامه‌هایی که چند وظیفه مستقل از هم را انجام می‌دهند می‌توانند به صورت چند نخی نوشته شوند. گاهی اوقات به سیستمهای multithreading سیستمهای چند تکلیفی یا چند وظیفه ای (multitasking) هم گفته می شود.

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

به نخ, رشته یا بند هم گفته می‌شود . کلیه اطلاعات مربوط به هر پروسس , در یکی از جداول سیستم عامل به نام جداولprocess Control Block=PCBذخیره می‌شود. این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسس‌هاست که در حال حاضر موجودیت دارد.

اطلاعات موجود درPCBعبارتند از:

- حالت جاری پردازش

- شماره شناسایی پردازش

- اولویت پردازش

- نشانی حافظه پردازش

- نشانی محل برنامه پردازش بر روی دیسک

- نشانی سایر منابع پردازش

- محلی برای حفظ ثباتها

آبجی
4th November 2009, 12:35 PM
سیستم های چند پردازنده ای
کامپیوترها می‌توانند به جای یک CPU چندین CPU داشته باشند که در اینصورت به آنها سیستم Multiprocessing میگویند.جهت استفاده از این سیستمها نیاز به یک سیستم عامل خاص می‌باشد که بتواند چندین برنامه (یانخهای یک فرایند ) را به صورت موازی واقعی روی آنها اجراء کند.

سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی چند CPU به کار می‌روند. در سیستم چند پردازنده‌ای CPU ها باید بتوانند از حافظه , امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند .مزایای این سیتمها عبارتند از:

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

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

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

آبجی
4th November 2009, 12:36 PM
سیستم های چند پردازنده ای تقسیم بندی سیستم عاملهای چند پردازنده‌ای

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


سیستم عامل سیستم چند پردازنده‌ای نامتقارن
- در سیستم چند پردازنده‌ای نامتقارن ( (Asymmetric Multi Processing = ASMP یک پردازنده جهت اجراء سیستم عامل و پردازنده‌های دیگر جهت اجرای برنامه‌های کاربران استفاده می‌شود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء می‌شود, ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازنده‌‌ای به دست می‌آید.

این نوع سیستم عامل‌ها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمک پردازنده‌ و پردازنده‌ای که به هم متصل هستند یا دو پردازنده‌ای که از تمام حافظه‌موجود مشترکا" استفاده نمی‌کنند.
یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی می‌تواند حالات مختلف داشته باشد.

آبجی
4th November 2009, 12:36 PM
سیستم های چند پردازنده ای ویژگی ها و تفاوتها

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


سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:

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

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

*بر عکس سیستم عامل نامتقارن , سیستم عامل قابل حمل ( portable) بر روی سیستم های سخت افزاری مختلف است.

سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 و همچنین windows NT از نوع متقارن می‌باشند.

وجود پردازنده‌های متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread) یا فرآیندها (process) رویهر یک از پردازنده‌ها به عهده سیستم عامل است . گرچه multithreading و multiprocessing امکانات مستقلی هستند ولی معمولاً با هم پیاده سازی می‌شوند. حتی در یک ماشین تک پردازنده‌ای , چند نخی کارایی را افزایش می‌دهد. همچنین ماشین چند پردازنده‌ای حتی برای فرآیندهای غیر نخی هم کارآمد است.

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

آبجی
4th November 2009, 12:36 PM
سیستم های بلادرنگ سیستمهای بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده می‌شوند. سیستم در این حالت می‌بایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد .
سیستمهای کنترل صنعتی ، پزشکی ،کنترل موشک و غیره از این دسته‌اند.
در سیستمهای بی درنگ زمان پاسخ باید سریع و تضمین شده باشد ولی در سیستم اشتراک زمانی مطلوبست که زمان پاسخ سریع باشند (ولی اجباری نیست).در سیستم دسته ای هیچ محدودیت زمانی در نظر گرفته نمی شود .

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

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


در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی, نسبت به سایر وظایف اولویت دارد و تا پایان تکمیل شدنش این ارجعیت را دارا خواهد بود. از آنجا که این سیستمها مهلت زمانی (deadline) را پشتیبانی نمی کنند استفاده از آنها در کنترل صنعتی ریسک آور است . هر چند که این سیستمهای بی درنگ نرم می‌بایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستمهای بی درنگ سخت نمی‌باشد .

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

در برخی کاربردها (مثل کنترل صنعتی)در کامپیوترها از سیستم عامل استفاده نمی‌شود. از آنجا که در سیستمهای کنترل صنعتی برنامه می‌بایست در اسرع وقت در مقابل یک اتفاق , از خود عکس العمل .نشان دهد , وجود واسطه سیستم عامل باعث کند شدن مراحل می‌گردد.

آبجی
4th November 2009, 12:36 PM
انواع سیستم عامل از نظر ساختار دسترسی به سخت افزار ممکن نیست مگر از طریق سیستم عامل

انواع سیستم عامل از لحاظ ساختار عبارتند از :

- تکنیک سیستم یکپارچه

- تکنیک سیستم لایه ای

- سیستم مجازی در سیستم عامل (ماشین مجازی)

سیستم مشتری – خدمتگزار (client / server )

آبجی
4th November 2009, 12:37 PM
تکنیک سیستم یکپارچه سیستمهای تجاری زیادی وجود دارند که ساختار خوش تعریفی ندارند. اغلب این سیستم عاملهابه عنوان سیستم های کوچک و محدودی شروع شده‌اند و سپس به تدریج ورای دید اولیه طراحان گسترش یافته‌اند
سیستم عامل dos از این دسته می باشد.


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

مثلاً در ms-dos واسطه‌ها و سطوح عملیاتی به خوبی مجزا نشده‌اند و برنامه‌های کاربردی می‌توانند مستقیماً به توابع rom bios و یا حتی پورت دستگاههای مختلف (مثل هارد دیسک ) دسترسی پیدا کنند لذا به راحتی می‌توان برنامه‌های مخرب زیادی تحت dos پدید آورد.

آبجی
4th November 2009, 12:37 PM
اکثر CPU ها دارای دو مد کاری هستند مد هسته که مخصوص سیستم عامل است و در آن تمامی دستورالعملها مجاز می‌باشد و دیگری مد کاربر است که مخصوص برنامه‌های کاربران بوده ودر آن دستورات I/Oو دستورالعملهای معین دیگری مجاز نمی‌باشند .

سیستم عامل DOS توسط سخت افزار زمان خود ( پردازنده 8088) محدود بوده است چرا که این پردازنده فقط در یک مد کار می‌کند و تمام دستورات در آن مجاز می‌باشد ولی پردازنده‌386 دارای مدهای مختلفی است که سیستم عامل ویندوز از آن به خوبی استفاده می‌کند .

برنامه ی کاربردی یکی از فراخوانهای سیستمی (توابع سیستم عامل) را صدا می‌زند . در این حال ماشین از مد کاربر (user mode) به مد هسته (kernel mode) تغییر حالت می‌دهد و کنترل به سیستم عامل سپرده می‌شود .سیستم عامل با توجه به پارامترهای تابع مذکور تعیین می‌کند کدام فراخوان سیستمی باید اجراء شود سپس سیستم عامل به جدولی رجوع می‌کند که در ردیف k ام آن جدول یک اشاره‌گر به رویه اجراء کننده فراخوان سیستمی وجود دارد..سپس آن روتین اجراء شده و در انتها کنترل به برنامه کاربر بر می گردد

آبجی
4th November 2009, 12:37 PM
تکنیک سیستم لایه ای در روش لایه‌ای سیستم عامل به تعدادی سطح یا لایه تقسیم می‌شود که هر کدام در بالای لایه پائین تر قرار می‌گیرند. مزیت مهم این روش پیمانه‌ای (modularity) بودن آن است. یعنی لایه‌ها به گونه‌ای تقسیم بندی می‌شوند که هر لایه فقط توابع و سرویس های لایه پائین تر را استفاده می‌کند. بدین ترتیب هر لایه را می‌توان مستقل از لایه‌های دیگر طراحی کرد، بسط داد و خطایابی کرد. هر سطح با استفاده از اعمال لایه‌های پایین تر پیاده سازی می‌شود ولی آن سطح نمی‌داند که اعمال سطح پایین چگونه پیاده شده‌اند وفقط باید بداند که آن اعمال چه می‌کنند. بدین ترتیب هر لایه مسائلی را از لایه‌های بالاتر مخفی می‌سازد.

آبجی
4th November 2009, 12:38 PM
اولین سیستم لایه‌ای، سیستم THE با 6 لایه بود:
لایه صفر مسائل زمانبندی (scheduling) پردازنده را انجام می‌دهد یعنی اینکه در هر لحظه CPU در اختیار کدام برنامه باشد.
لایه یک مدیریت حافظه (اصلی و جانبی) را بر عهده دارد.
لایه دو ارتباط بین هر پروسس و کنسول اپراتور را برقرار می‌سازد.
لایه سه مدیریت دستگاههای I/O و بافر کردن اطلاعات را برعهده دارد . در بالای این لایه هر پروسس به جای دستگاههای I/O حقیقی و پیچیده با دستگاههای ساده و مجازی I/O سرو کار دارد.
در لایه چهار برنامه‌های کاربران اجراء می‌شوند که هیچ نگرانی در مورد مدیریت پروسس ,حافظه, کنسول و I/Oندارند.
در لایه پنجم پروسس اپراتور سیستم قرار می‌گیرد.

آبجی
4th November 2009, 12:39 PM
مشکل اصلی در روش لایه‌لایه, تعریف مناسب لایه‌های مناسب است. از آنجا که یک لایه فقط می‌تواند لایه‌های پایین تر را به کار برد برای طراحی آن باید دقت زیادی به خرج داد. مشکل دیگر این ساختار این است که نسبت به انواع دیگربازدهی کمتری دارند. هنگامی که دستورات از لایه بالا به سمت پایین حرکت می‌کنند, در هر لایه پارامترهای دستور ممکن است، از نظر صحت بررسی شده و یا تغییر یابند .لذا هر لایه قدری سر بار (overhead) به سیستم اضافه می کند و در نتیجه فراخوانی سیستمی نسبت به سیستم غیر لایه‌ای بیشتر طول می‌کشد.
لذا در سالهای اخیر سعی شده است لایه‌های کمتری با قابلیت عمل بیشتری طراحی شود. به عنوان مثال محصول اولیه windows NT با لایه‌های زیاد, کارایی کمتری نسبت به ویندوز95داشت. درNT4.0 سعی شد لایه ها به همدیگر نزدیکتر و مجتمع تر شوند تا کارایی بیشتر گردد. سیستم MULTICS به جای لایه‌ها به صورت یکسری حلقه‌ها متحدالمرکز سازماندهی شده است بطوریکه هر حلقه داخلی از امتیازات بالاتری نسبت به حلقه خارجی خود بهره مند می‌باشد.اگر یک رویه از حلقه خارجی بخواهد یک رویه از حلقه داخلی را صدا بزند ، بایدیکی از فراخوان‌های سیستمی را اجراء کند و اعتبار پارامترهای این دستورالعمل قبل از اجراء به دقت بررسی می‌شود. مثلاً یک استاد برنامه گرفتن امتحان ونمره دادن را در حلقه n می‌نویسد و برنامه دانشجویانش در حلقه n+1 اجراء می‌شود, بدین ترتیب دانشجویان نمی‌توانند نمره خود را تغییر دهند.

آبجی
4th November 2009, 12:40 PM
سیستم مجازی در سیستم عامل سیستم عامل VM بر روی سیستمهای IBM بهترین مثال از مفهوم ماشین مجازی است . قلب سیستم که به مانیتور ماشین مجازی (Virual Machine Monitor) معروف است، بر روی سخت افزار عریانی اجراء شده و چند برنامگی را پدید می‌آورد, این مانیتور مجازی را در لایه بالاتر فراهم می‌سازد. این ماشین های مجازی برای کاربران مشابه یک نسخه ازسخت افزار عریان هستند که دارای مودهای کاربر و هسته، I/O، وقفه ها و چیزهای دیگر «ماشین حقیقی» می‌باشند. به هر کاربر ماشین مجازی خودش داده می‌شود و او می‌تواند هر یک از سیستم عامل‌ها یا بسته‌های نرم افزاری موجود را روی ماشین خودش اجراء کند.

آبجی
4th November 2009, 12:40 PM
هر کاربر یک برنامه (Conversational Monitor System) مخصوص به خود را دارد که یک سیستم عامل تک کاربره محاوره‌ای است.
مزایای این ماشین مجازی عبارتند از:
- در این سیستم دو وظیفه اصلی چند برنامگی و ایجاد واسطه راحت (مستقل از سخت افزار ) از یکدیگر مجزا شده‌اند. مانیتور ماشین مجازی وظیفه چند برنامگی را بر عهده داردو لایه‌ بالای آن وظیفه ایجاد واسطه کاربر با سخت افزار را بر عهده دارد. لذا هریک از این بخشها ساده‌تر شده و از قابلیت انعطاف بیشتری برخوردارند.
- هر ماشین مجازی از سایر ماشین ها کاملاً جداست . بنابراین هیچ مشکل امنیتی وجود نخواهد داشت و برنامه‌های کاربران تداخلی با همدیگر ندارند.
- از آنجا که هر ماشین مجازی کاملاً مشابه سخت افزار واقعی است، هر یک از آنها می‌توانند هر سیستم عاملی را مستقلاً اجراء کند. این امر همچنین باعث می‌شود مراحل تحقیق و توسعه سیستم عاملها راحت تر صورت بگیرد،چرا که دیگر سازندگان سیستم عامل برای تست کردن سیستم عامل تولیدی جدید لازم نیست کل کامپیوتر را در اختیار داشته باشند.
ایده ماشین‌های مجازی امروزه نیز جهت رفع مشکلات عدم سازگاری گسترش زیادی یافته است. به عنوان مثال شرکتهای میکروسیستم یا شرکت DEC که کامپیوترهای غیر intel را می‌سازند مایلند که مشتریهایشان بتوانند برنامه های DOS ( تحت intel) را نیز اجراء کنند. برای این کار یک ماشین مجازی اینتل بر روی پردازنده خودپدید می‌آورند. در این حال ماشین مجازی دستورات اینتل را به دستورات پردازنده جدید تبدیل می‌کند. یا مثلاً کامپیوتر power PC شامل ماشین مجازی Motorola 6800 می‌باشد.
مثال دیگر اجراء شدنDOS تحت محیط ویندوز است,پردازنده‌های 386 به بعد دارای یک مد مجازی هستند. که می‌توانند چندین برنامه تحت DOS تحت ویندوز نیز اجراء شوند البته به شرطی که دستورالعملهای عادی را اجراء کنندو مستقیماً با پورتهای مهم سر و کار نداشته باشند. مثال دیگر از این مفهوم ماشین مجازی زبان جاوا (Java ) می‌باشد. کامپایلر زبان جاوا توسط شرکت sun طراحی شده است یک خروجی بایت کد (byte code) تولید می‌کند. این بایت کدها دستوراتی هستند که بر روی ماشین مجازی جاوا (JVM) اجراء می‌شوند. جهت اجرای برنامه‌های جاوا در یک ماشین , آن کامپیوتر می‌بایست دارای یک JVM باشد. امروزه JVM بر روی بسیاری از انواع کامپیوترها از جمله PC، مکینتاش، SUN مینی کامپیوترها و . مین فریم ها (mainframe) وجود دارد. JVM همچنین در Microsoft Explorer ویندوز پیاده سازی شده است. بدین ترتیب برنامه‌هایی که به زبان Java نوشته شده‌اند به راحتی بر روی انواع کامپیوترها اجراء می‌شوند. فقط کافی است بایت کدها را روی آن، ماشین کامپایل کرد. بدیهی است به علت نیاز به کامپایل شدن بایت کدها برنامه های جاوا سرعت کمتری نسبت به برنامه‌هایی نظیرC دارد. برنامه هایC توسط کامپایلر بومی یک کامپیوتر، برای یک بار تبدیل به زبان ماشین آن کامپیوتر می‌گردد. پس خروجی زبان ماشین کامپایلر Cاز یک نوع کامپیوتر به کامپیوتر دیگر متفاوت است ولی بایت کدهای خروجی جاوا برای همه ماشین ها یکسان است.

آبجی
4th November 2009, 12:40 PM
سیستم مشتری - خدمتگزار ( client/ server ) سیستم عامل VM با جابجا کردن بخش زیادی از کد سیستم عامل به لایه بالاتر یعنی CMS باعث ساده شدن هسته اصلی یعنی مانیتور ماشین مجازیشد. با این همه هنوز هم VM یک برنامه پیچیده می‌باشد. روند طراحی سیستم عامل های جدید همواره با این ایده همراه بوده که تا جایی که ممکن است کدها به عامل را در سطح کاربر و مشابه پردازشهای کاربران پیاده سازی می‌کنند.

آبجی
4th November 2009, 12:41 PM
سیستم مشتری - خدمتگزار ( client/ server )
مثلاً برای خواندن یک بلوک از فایل پروسس کاربر (پروسس مشتری (client یک در خواست به پروسس خدمتگزار (server)ارسال می‌کند و از آن می‌خواهد که کارش را انجام داده و جواب برگرداند. در این مدل تنها کاری که هسته انجام می‌دهد این است که ارتباط بین مشتری ها و خدمتگزارها را از طریق پیام ها بر قرار می‌سازد.

آبجی
4th November 2009, 12:41 PM
مزایای این مدل عبارتند از:
- از آنجا که سیستم عامل به چند بخش تقسیم شده که هر یک فقط یکی از وظایف سیستم عامل را انجام، بنابراین سیستم عامل را می‌توان ساده تر طراحی و پیاده سازی کرد.
- به علت اجرای کلیه پروسس های خدمتگزار در مد کاربر (و نه مد هسته ) هیچکدام از آنها دسترسی مستقیم به سخت افزار ندارند. لذا اگر اشکالی مثلاُ در خدمتگزار فایل ایجاد شود فقط موجب اختلال در خدمات فایل خواهد شد و به ندرت موجب خراب شدن کل سیستم می‌شود.
- فایده دیگر این مدل سازگاری آن برای استفاده در سیستمهای توزیع شده است . از آنجا که یک مشتری به وسیله ارسال پیام‌هایش با یک خدمتگزارارتباط برقرار می کند مشتری نیاز ندارد که بداند آیا به پیغام وی به صورت ملیدر ماشین خودش رسیدگی می‌شود و یا اینکه پیغام از طریق یک شبکه به یک ماشین دور ارسال می‌شود.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد