- ارسال ها
- 1
- لایک ها
- 1
- امتیاز
- 0
در نسل اول کامپیوترها (19۵۵تا ۱۹۴۵) که از لامپ خلأ برای ساخت آن ها استفاده میشد ، زبان های برنامه نویسی (حتی اسمبلی ) ابداع نشده بودند و سیستم عامل نیز اصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند .
آنها برنامههای خود را توسط تخته مدار سوراخ دار ( و بعدها توسط کارت های پانچ ) و به زبان ماشین به کامپیوتر میدادند . اکثر برنامههای محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود .
• سیستم های دسته ای Batch system
• سیستم های چند برنامه ای Multi programming
• سیستم spooling
• سیستم اشتراک زمانی Time sharing
• سیستم عامل های کامپیوترهای شخصی و شبکه
• سیستم های توزیع شده Distributed system
• سیستم ها ی چند وظیفه ای Multi tasking
• سیستم های چند پردازنده ای Multi processing
• سیستم های بی درنگ Real Time
سیستم های دسته ای Batch system
در نسل دوم , کامپیوترها ( 19۶۵تا ۱۹۵۵) از ترانزیستور ساخته شدند.
طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار میکرد و کاربران به طور مستقیم با این کامپیوترها محاوره (interaction) نداشتند . کاربر ابتدا برنامه خود را به زبان فرتون یا اسمبلی بر روی کاغذ مینوشت سپس توسط دستگاه Card punch ، برنامه را روی کارت های سوراخ دار منتقل ساخت .
بعد این دسته کارت تهیه شده که شامل برنامه ، دادهها و کارت های کنترل بود به صورت کار (Job) تحویل اپراتور داده میشد . اپراتور بعد از اتمام کار قبلی ، دسته کارت جدید را به کامپیوتر میداد تا برنامه را اجرا کند در انتها خروجی برنامه(که غالباً چاپی بود) را به کاربر تحویل میداد سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال کنترل اتوماتیک از یک کار به کار دیگری بود . سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یک برنامه اجرا میشد .
هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این کامپیوترهای گران قیمت به هدر میرفت .
برای رفع مشکل فوق سیستم های دستهای (Batch System) ابداع شد . یعنی ابتدا یک سبد پر از دسته کارت ها در اتاق ورودی جمع آوری میشد ، سپس کلیه آنها به وسیله دستگاه کارت خوان یک کامپیوتر کوچک و نسبتاً ارزان (مثل( IBM 1401 خوانده شده و بر روی یک نوار ذخیره میگردید . سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام میداد (مانند(IBM7094: نصب میکرد . بعد از آن برنامهای را اجراء میکرد ( یعنی سیستم عامل ) تا اولین کار را از روی نوار برداشته و اجراء کند ، خروجی بر روی نوار دیگری نوشته میشد .
پس از اتمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار میخواند . پس از اجراء همه برنامهها ، اپراتور نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل میساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود. به این روش کار offline spooling نیز گفته میشود. بیشتر برنامههای نسل دوم به زبان فورتون و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزیی به کار می رفت .
یکی از معایب روش offline spooling زیاد بودن زمان برگشت گردش (turnaround time) است ، یعنی تأخیر زمانی ما بین تحویل کار و تکمیل کار. هم چنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد . تنها روش بدست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در ماشین اصلی قرار دهند . حتی در این صورت هم باید چندین ساعت صبر میکردند تا خروجی ها ظاهر شوند . همچنین نیاز به سخت افزار اضافی (مثل کامپیوترهای۱۴۰۱) از دیگر معایب این روش بود .
سیستم های چند برنامه ای Multi programming
در نسل سوم کامپیوترها (19۸۰ تا ۱۹۶۵) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد . به طور کلی برنامهها را میتوان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی CPU boundیا CPU Limiter مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات Cup میشود ودیگری برنامه های تنگنای I/O Limited(I/O) مانند برنامههای تجاری که بیشتر زمان کامپیوتر صرف ورود دادهها و خروج اطلاعات میشود .
یک اشکال مهم سیستم های دستهای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان منتظر میشود . در این حال CPU بیکار میماند و مجبور است صبر کند تا عملیات I/Oبه اتمام برسد . در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود ۸۰ تا ۹۰ درصد وقت CPU به هدر برود .
سیستم spooling
یکی دیگر از ویژگی های سیستم عامل نسل سوم SpoolingیاOn Line Spooling) ) است که معمولاً همراه چند برنامه استفاده میشود. این کلمه مخفف عبارت ( Simultaneous Peripheral Operation online) می باشد . در این سیستم به جای آن که کارت ها از دستگاه کارت خوان مستقیما وارد حافظه گردند و توسط CPU پردازش شوند ابتدا کاراکتر به کاراکتر در بافری در حافظه قرار گرفته و سپس به صورت بلوکی بر روی دسیک نوشته می شود .
وقتی که برنامه کاربر اجراء میشود و از سیستم عامل تقاضای ورودی میکند ، اطلاعات ورودی به صورت بلوکی و با سرعت زیاد از دیسک خوانده میشوند . به طور مشابه هنگامی که برنامه برای خروجی چاپگر را احضار میکند ، خط خروجی در یک بافر کپی شده و سپس در دیسک نوشته میشود. پس اطلاعات خروجی از دیسک بر اساس ترتیب و اولویت در چاپگر چاپ میشوند .
در واقع اسپولینگ عمل I\O یک کار را با عمل محاسباتی کار دیگر روی هم میاندازد (overlap) . در سیستم اسپولینگ درحالی که ورودی یک کار از دستگاه ورودی خوانده میشود ، کار دیگری در حال چاپ شدن است ، در همین بین حتی کار دیگری میتواند در حال پردازش و اجراء باشد . در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسک (که سریع است) انجام میدهد و نه متناسب با سرعت کارت خوان یا چاپگر (که خیلی کند هستند .)
بنابراین سیستم مذکور باعث استفاده بهینه از CPU و سایل I\O میشود و سرعت عمل را بالا میبرد. در این سیستم دیگر نیازی به کامپیوترهای ۱۴۰۱، نوار گردان های اضافی و حمل نوارها (مانند سیستمهای دستهای ) نداریم .
سیستم اشتراک زمانی Time sharing
این سیستمها از اوایل سالهای ۱۹۷۰ در نسل سوم کامپیوترها معمول شدند . سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است .
در سیستمهای چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامهها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردن های متعدد را نمیداد . در سیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل کی برد(برای ورودی) و مانیتور (برای خروجی ) است با کامپیوتر به صورت محاورهای (interactive) رابطه بر قرار میسازد .کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مانیتور دریافت میکند . در این سیستمها چندین کاربر به کمک ترمینال هایی که به کامپیوتر وصل است همزمان میتوانند از آن استفاده کنند .
در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزم های زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ میشود و بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست . در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد میباشد و نه بالا بردن میزان کاربرد منابع ماشین . کاربر میتواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجرا و اشکال زدایی (debug) کند . سیستمهای دستهای برای اجرای برنامههای بزرگ که نیاز محاورهای کمی دارند مناسب است ولی سیستمهای اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است ، استفاده میشوند .
سیستم عامل های کامپیوتر های شخصی و شبکه
سال ۱۹۸۰ تاکنون که مدارات مجتمع با مقیاس بزرگ (Large Scale Integrated Circuit) ابداع شدند ، به عنوان نسل چهارم کامپیوترها شناخته میشود . در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاورهای بسیار خوب به سرعت گسترش یافتند . سیستم عامل های اولیه بر روی PCهامانند DOS فقط تک کاربره و تک برنامهای بودند .
ولی سیستم عامل های امروزی آن مانند Windows NT خاصیت های چند برنامگی ، چند کاربره (multiuse) و شبکهای را دارا هستند . با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده است و برای PCها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی، سیستم به سمت راحتی کاربر پیش میرود .
به تدریج ویژگیهای مهم سیستم عامل های قدیمی در کامپیوترهای بزرگ (مانند حفاظت حافظه ، حافظه مجازی، محافظت فایلها ، همزمانی پردازشهاو…) بر روی سیستم های PC نیز پیاده سازی شده است .
هنگامی که کامپیوترها از طریق شبکه به هم وصل شوند . به آنها ایستگاه های کاری
(Work stations) میگویند . در یک سیستم عامل شبکه ، کاربران از وجود ماشین های مختلف در شبکه با خبرند. آنها میتوانند از دور وارد یک ماشین شوند و همچنین فایل های یک ماشین را روی ماشین دیگر کپی کنند.
سیستم های توزیع شده Distributed system
سیستم عامل توزیع شده در یک محیط شبکهای اجرا میشود . در این سیستم قسمت های مختلف برنامه کاربر بدون آنکه خود او متوجه شود میتوانند همزمان در چند کامپیوتر مجزا اجرا شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر برگردند .
کاربران نباید از این موضوع باخبر شوند که برنامه آن ها در کجا به اجرا در میآید و یا فایل های آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد . به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیزرا با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد .
یکی از مزایای مهم سیستم های توزیع شده سرعت بالای اجرای برنامههاست چرا که یک برنامه همزمان میتواند از چندین کامپیوتر برای اجراء شدنش استفاده کند .
همچنین به علت توزیع شدن اطلاعات ، بانک های اطلاعاتی حجیم میتوانند روی یک سری کامپیوترهای شبکه شده قرار بگیرند و لازم نیست که همه اطلاعات به یک کامپیوترمرکزی فرستاده شود که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر میرود.
به علت تأخیرهای انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه در یک سیستم تنها ، بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .
همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد و یکی از کامپیوترها خراب شود ، دادهها را میتوان از کامپیوترهای دیگر بازیابی کرد از این نظر امنیت افزایش مییابد .
سیستم ها ی چند وظیفه ای Multi tasking
در تکنیک چند نخی (multitasking) یک فرایند (process) که برنامهای در حال اجراست ، میتواند به بخش ها یا نخ هایی (بندهایی) تقسیم شود که میتوانند به صورت همزمان اجرا شوند .
برنامههایی که چند وظیفه مستقل از هم را انجام میدهند می توانند به صورت چند نخی نوشته شوند . گاهی اوقات به سیستم های multithreading سیستم های چند تکلیفی یا چند وظیفه ای (multitasking)هم گفته میشود .
فرآیند (process)یا پردازش ، اساس یک برنامه در حال اجراست که منابعی از سیستم به آن تخصیص داده شده است (شامل رجیسترها ، حافظه ، فایل ها و دستگاه ها) . فرآیند میتواند مجموعهای از یک یا چند نخ باشد .
به نخ ، رشته یا بند هم گفته میشود . کلیه اطلاعات مربوط به هر پروسس ، در یکی از جداول سیستم عامل به نام جداول process Control Block=PCB ذخیره میشود . این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسسهاست که در حال حاضر موجودیت دارد .
اطلاعات موجود در PCB عبارتند از :
• حالت جاری پردازش
• شماره شناسایی پردازش
• اولویت پردازش
• نشانی حافظه پردازش
• نشانی محل برنامه پردازش بر روی دیسک
• نشانی سایر منابع پردازش
• محلی برای حفظ ثبات ها .
سیستم های چند پردازنده ای Multi processing
کامپیوترها میتوانند به جای یک CPU چندین CPU داشته باشند که در این صورت به آنها سیستم multiprocessing می گویند . جهت استفاده از این سیستم ها نیاز به یک سیستم عامل خاص میباشد که بتواند چندین برنامه یا نخ های یک فرآیند را به صورت موازی واقعی روی آنها اجرا کند .
در سیستم چند پردازندهای CPUها باید بتواند از حافظه ، امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند . مزایای این سیستم ها عبارتند از :
1.زیاد شدن توان عملیاتی throughput
2.تحمل پذیری در برابر خطا fault-tolerant
سیستم عامل های چند پردازندهای به دو دسته کلی متقارن و نامتقارن تقسیم میشوند :
در سیستم چند پردازندهای نامتقارن : (Asymmetric Multi Processing = ASMP) یک پردازنده جهت اجرا سیستم عامل و پردازندههای دیگر جهت اجرای برنامههای کاربران استفاده میشود . از آنجا که کد سیستم عامل تنها روی یک پروسسور اجرا میشود ، ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازندهای به دست میآید .
در سیستم چند پردازندهای متقارن(symmetric Multi Processing = SMP) : سیستم عامل میتواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازندهها همزمان اجرا شود . در این حالت حافظه بین تمام آنها مشترک میباشد . تمام پردازندهها اعمال یکسانی را میتوانند انجام دهند .
سیستم های بی درنگ Real Time
سیستم های بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند . سیستم در این حالت میبایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد . سیستم های کنترل صنعتی ، پزشکی ، کنترل موشک و غیره از این دستهاند .
در سیستم های بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه های ROM استفاده میشود . سیستم عامل های پیشرفته نیز در این سیستم ها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدا میکند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی میشود .
سیستم های بی درنگ با سیستم های اشتراک زمانی تناقض دارند لذا نمیتوانند هر دو تواما وجود داشته باشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستمهای بلادرنگ از حافظه مجازی و اشتراک زمانی استفاده نمیکنند . به این سیستمها «بی درنگ سخت» نیز گفته میشود .
در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی ، نسبت به سایر وظایف اولویت دارد و تا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستم ها مهلت زمانی (deadline) را پشتیبانی نمیکنند استفاده آن ها در کنترل صنعتی ریسک آور است . هر چند که این سیستم های بی درنگ نرم میبایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستم های بی درنگ سخت نمیباشد .
آنها برنامههای خود را توسط تخته مدار سوراخ دار ( و بعدها توسط کارت های پانچ ) و به زبان ماشین به کامپیوتر میدادند . اکثر برنامههای محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود .
• سیستم های دسته ای Batch system
• سیستم های چند برنامه ای Multi programming
• سیستم spooling
• سیستم اشتراک زمانی Time sharing
• سیستم عامل های کامپیوترهای شخصی و شبکه
• سیستم های توزیع شده Distributed system
• سیستم ها ی چند وظیفه ای Multi tasking
• سیستم های چند پردازنده ای Multi processing
• سیستم های بی درنگ Real Time
سیستم های دسته ای Batch system
در نسل دوم , کامپیوترها ( 19۶۵تا ۱۹۵۵) از ترانزیستور ساخته شدند.
طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار میکرد و کاربران به طور مستقیم با این کامپیوترها محاوره (interaction) نداشتند . کاربر ابتدا برنامه خود را به زبان فرتون یا اسمبلی بر روی کاغذ مینوشت سپس توسط دستگاه Card punch ، برنامه را روی کارت های سوراخ دار منتقل ساخت .
بعد این دسته کارت تهیه شده که شامل برنامه ، دادهها و کارت های کنترل بود به صورت کار (Job) تحویل اپراتور داده میشد . اپراتور بعد از اتمام کار قبلی ، دسته کارت جدید را به کامپیوتر میداد تا برنامه را اجرا کند در انتها خروجی برنامه(که غالباً چاپی بود) را به کاربر تحویل میداد سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال کنترل اتوماتیک از یک کار به کار دیگری بود . سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یک برنامه اجرا میشد .
هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این کامپیوترهای گران قیمت به هدر میرفت .
برای رفع مشکل فوق سیستم های دستهای (Batch System) ابداع شد . یعنی ابتدا یک سبد پر از دسته کارت ها در اتاق ورودی جمع آوری میشد ، سپس کلیه آنها به وسیله دستگاه کارت خوان یک کامپیوتر کوچک و نسبتاً ارزان (مثل( IBM 1401 خوانده شده و بر روی یک نوار ذخیره میگردید . سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام میداد (مانند(IBM7094: نصب میکرد . بعد از آن برنامهای را اجراء میکرد ( یعنی سیستم عامل ) تا اولین کار را از روی نوار برداشته و اجراء کند ، خروجی بر روی نوار دیگری نوشته میشد .
پس از اتمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار میخواند . پس از اجراء همه برنامهها ، اپراتور نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل میساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود. به این روش کار offline spooling نیز گفته میشود. بیشتر برنامههای نسل دوم به زبان فورتون و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزیی به کار می رفت .
یکی از معایب روش offline spooling زیاد بودن زمان برگشت گردش (turnaround time) است ، یعنی تأخیر زمانی ما بین تحویل کار و تکمیل کار. هم چنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد . تنها روش بدست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در ماشین اصلی قرار دهند . حتی در این صورت هم باید چندین ساعت صبر میکردند تا خروجی ها ظاهر شوند . همچنین نیاز به سخت افزار اضافی (مثل کامپیوترهای۱۴۰۱) از دیگر معایب این روش بود .
سیستم های چند برنامه ای Multi programming
در نسل سوم کامپیوترها (19۸۰ تا ۱۹۶۵) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد . به طور کلی برنامهها را میتوان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی CPU boundیا CPU Limiter مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات Cup میشود ودیگری برنامه های تنگنای I/O Limited(I/O) مانند برنامههای تجاری که بیشتر زمان کامپیوتر صرف ورود دادهها و خروج اطلاعات میشود .
یک اشکال مهم سیستم های دستهای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان منتظر میشود . در این حال CPU بیکار میماند و مجبور است صبر کند تا عملیات I/Oبه اتمام برسد . در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود ۸۰ تا ۹۰ درصد وقت CPU به هدر برود .
سیستم spooling
یکی دیگر از ویژگی های سیستم عامل نسل سوم SpoolingیاOn Line Spooling) ) است که معمولاً همراه چند برنامه استفاده میشود. این کلمه مخفف عبارت ( Simultaneous Peripheral Operation online) می باشد . در این سیستم به جای آن که کارت ها از دستگاه کارت خوان مستقیما وارد حافظه گردند و توسط CPU پردازش شوند ابتدا کاراکتر به کاراکتر در بافری در حافظه قرار گرفته و سپس به صورت بلوکی بر روی دسیک نوشته می شود .
وقتی که برنامه کاربر اجراء میشود و از سیستم عامل تقاضای ورودی میکند ، اطلاعات ورودی به صورت بلوکی و با سرعت زیاد از دیسک خوانده میشوند . به طور مشابه هنگامی که برنامه برای خروجی چاپگر را احضار میکند ، خط خروجی در یک بافر کپی شده و سپس در دیسک نوشته میشود. پس اطلاعات خروجی از دیسک بر اساس ترتیب و اولویت در چاپگر چاپ میشوند .
در واقع اسپولینگ عمل I\O یک کار را با عمل محاسباتی کار دیگر روی هم میاندازد (overlap) . در سیستم اسپولینگ درحالی که ورودی یک کار از دستگاه ورودی خوانده میشود ، کار دیگری در حال چاپ شدن است ، در همین بین حتی کار دیگری میتواند در حال پردازش و اجراء باشد . در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسک (که سریع است) انجام میدهد و نه متناسب با سرعت کارت خوان یا چاپگر (که خیلی کند هستند .)
بنابراین سیستم مذکور باعث استفاده بهینه از CPU و سایل I\O میشود و سرعت عمل را بالا میبرد. در این سیستم دیگر نیازی به کامپیوترهای ۱۴۰۱، نوار گردان های اضافی و حمل نوارها (مانند سیستمهای دستهای ) نداریم .
سیستم اشتراک زمانی Time sharing
این سیستمها از اوایل سالهای ۱۹۷۰ در نسل سوم کامپیوترها معمول شدند . سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است .
در سیستمهای چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامهها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردن های متعدد را نمیداد . در سیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل کی برد(برای ورودی) و مانیتور (برای خروجی ) است با کامپیوتر به صورت محاورهای (interactive) رابطه بر قرار میسازد .کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مانیتور دریافت میکند . در این سیستمها چندین کاربر به کمک ترمینال هایی که به کامپیوتر وصل است همزمان میتوانند از آن استفاده کنند .
در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزم های زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ میشود و بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست . در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد میباشد و نه بالا بردن میزان کاربرد منابع ماشین . کاربر میتواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجرا و اشکال زدایی (debug) کند . سیستمهای دستهای برای اجرای برنامههای بزرگ که نیاز محاورهای کمی دارند مناسب است ولی سیستمهای اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است ، استفاده میشوند .
سیستم عامل های کامپیوتر های شخصی و شبکه
سال ۱۹۸۰ تاکنون که مدارات مجتمع با مقیاس بزرگ (Large Scale Integrated Circuit) ابداع شدند ، به عنوان نسل چهارم کامپیوترها شناخته میشود . در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاورهای بسیار خوب به سرعت گسترش یافتند . سیستم عامل های اولیه بر روی PCهامانند DOS فقط تک کاربره و تک برنامهای بودند .
ولی سیستم عامل های امروزی آن مانند Windows NT خاصیت های چند برنامگی ، چند کاربره (multiuse) و شبکهای را دارا هستند . با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده است و برای PCها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی، سیستم به سمت راحتی کاربر پیش میرود .
به تدریج ویژگیهای مهم سیستم عامل های قدیمی در کامپیوترهای بزرگ (مانند حفاظت حافظه ، حافظه مجازی، محافظت فایلها ، همزمانی پردازشهاو…) بر روی سیستم های PC نیز پیاده سازی شده است .
هنگامی که کامپیوترها از طریق شبکه به هم وصل شوند . به آنها ایستگاه های کاری
(Work stations) میگویند . در یک سیستم عامل شبکه ، کاربران از وجود ماشین های مختلف در شبکه با خبرند. آنها میتوانند از دور وارد یک ماشین شوند و همچنین فایل های یک ماشین را روی ماشین دیگر کپی کنند.
سیستم های توزیع شده Distributed system
سیستم عامل توزیع شده در یک محیط شبکهای اجرا میشود . در این سیستم قسمت های مختلف برنامه کاربر بدون آنکه خود او متوجه شود میتوانند همزمان در چند کامپیوتر مجزا اجرا شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر برگردند .
کاربران نباید از این موضوع باخبر شوند که برنامه آن ها در کجا به اجرا در میآید و یا فایل های آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد . به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیزرا با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد .
یکی از مزایای مهم سیستم های توزیع شده سرعت بالای اجرای برنامههاست چرا که یک برنامه همزمان میتواند از چندین کامپیوتر برای اجراء شدنش استفاده کند .
همچنین به علت توزیع شدن اطلاعات ، بانک های اطلاعاتی حجیم میتوانند روی یک سری کامپیوترهای شبکه شده قرار بگیرند و لازم نیست که همه اطلاعات به یک کامپیوترمرکزی فرستاده شود که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر میرود.
به علت تأخیرهای انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه در یک سیستم تنها ، بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .
همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد و یکی از کامپیوترها خراب شود ، دادهها را میتوان از کامپیوترهای دیگر بازیابی کرد از این نظر امنیت افزایش مییابد .
سیستم ها ی چند وظیفه ای Multi tasking
در تکنیک چند نخی (multitasking) یک فرایند (process) که برنامهای در حال اجراست ، میتواند به بخش ها یا نخ هایی (بندهایی) تقسیم شود که میتوانند به صورت همزمان اجرا شوند .
برنامههایی که چند وظیفه مستقل از هم را انجام میدهند می توانند به صورت چند نخی نوشته شوند . گاهی اوقات به سیستم های multithreading سیستم های چند تکلیفی یا چند وظیفه ای (multitasking)هم گفته میشود .
فرآیند (process)یا پردازش ، اساس یک برنامه در حال اجراست که منابعی از سیستم به آن تخصیص داده شده است (شامل رجیسترها ، حافظه ، فایل ها و دستگاه ها) . فرآیند میتواند مجموعهای از یک یا چند نخ باشد .
به نخ ، رشته یا بند هم گفته میشود . کلیه اطلاعات مربوط به هر پروسس ، در یکی از جداول سیستم عامل به نام جداول process Control Block=PCB ذخیره میشود . این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسسهاست که در حال حاضر موجودیت دارد .
اطلاعات موجود در PCB عبارتند از :
• حالت جاری پردازش
• شماره شناسایی پردازش
• اولویت پردازش
• نشانی حافظه پردازش
• نشانی محل برنامه پردازش بر روی دیسک
• نشانی سایر منابع پردازش
• محلی برای حفظ ثبات ها .
سیستم های چند پردازنده ای Multi processing
کامپیوترها میتوانند به جای یک CPU چندین CPU داشته باشند که در این صورت به آنها سیستم multiprocessing می گویند . جهت استفاده از این سیستم ها نیاز به یک سیستم عامل خاص میباشد که بتواند چندین برنامه یا نخ های یک فرآیند را به صورت موازی واقعی روی آنها اجرا کند .
در سیستم چند پردازندهای CPUها باید بتواند از حافظه ، امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند . مزایای این سیستم ها عبارتند از :
1.زیاد شدن توان عملیاتی throughput
2.تحمل پذیری در برابر خطا fault-tolerant
سیستم عامل های چند پردازندهای به دو دسته کلی متقارن و نامتقارن تقسیم میشوند :
در سیستم چند پردازندهای نامتقارن : (Asymmetric Multi Processing = ASMP) یک پردازنده جهت اجرا سیستم عامل و پردازندههای دیگر جهت اجرای برنامههای کاربران استفاده میشود . از آنجا که کد سیستم عامل تنها روی یک پروسسور اجرا میشود ، ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازندهای به دست میآید .
در سیستم چند پردازندهای متقارن(symmetric Multi Processing = SMP) : سیستم عامل میتواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازندهها همزمان اجرا شود . در این حالت حافظه بین تمام آنها مشترک میباشد . تمام پردازندهها اعمال یکسانی را میتوانند انجام دهند .
سیستم های بی درنگ Real Time
سیستم های بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند . سیستم در این حالت میبایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد . سیستم های کنترل صنعتی ، پزشکی ، کنترل موشک و غیره از این دستهاند .
در سیستم های بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه های ROM استفاده میشود . سیستم عامل های پیشرفته نیز در این سیستم ها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدا میکند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی میشود .
سیستم های بی درنگ با سیستم های اشتراک زمانی تناقض دارند لذا نمیتوانند هر دو تواما وجود داشته باشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستمهای بلادرنگ از حافظه مجازی و اشتراک زمانی استفاده نمیکنند . به این سیستمها «بی درنگ سخت» نیز گفته میشود .
در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی ، نسبت به سایر وظایف اولویت دارد و تا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستم ها مهلت زمانی (deadline) را پشتیبانی نمیکنند استفاده آن ها در کنترل صنعتی ریسک آور است . هر چند که این سیستم های بی درنگ نرم میبایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستم های بی درنگ سخت نمیباشد .
آخرین ویرایش توسط مدیر