در نسل سوم کامپیوتر ها (80-1965) از مدارات مجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامه را می توان به دو دسته تقسیم کرد: یکی برنامه ها با تنگنای محاسباتی (CPU bound یا CPU Limited) مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات CPU می شود و دیگری برنامه ها با تنگنای (I/O Limited) I/O مانند برنامه های تجاری که بیشتر زمان کامپیوتر صرف ورود داده ها و خروج اطلاعات می شود.
یک اشکال مهم سیستم های دسته ای این است که وقتی کار جاری برای تکمیل عملیات I/O مثلاًٌ بر روی نوار گردان منتظر می شود، در این حال CPU بیکار می ماند مجبور است صبر کند تا عملیات I/O به اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/OLimited ممکن است حدود 80 تا 90 درصد وقت CPU به هدر برود.
برای رفع این مشکل از تکنیک multiprogramming استفاده می شود. بدین ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده می شود. وقتی که یک کار برای تکمیل عملیات I/O منتظر می ماند، پردازنده به کار دیگری داده می شود. اگر تعداد کارهای موجود در حافظه کافی باشد می توان CPU را تقریباً صد درصد مشغول نگه داشت. البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامه ها بر همدیگر اثر سوء نداشته باشند. لذا مدیریت حافظه بحث مهمی در سیستم عالم می باشد.
پس سیستم های چند برنامگی فقط یک پردازنده دارند و به کمک مکانیزم وقفه بین کارهای I/OLimited , CPU-limited سوئیچ می شود و به ظاهر اجرای این برنامه ها به صورت موازی و همزمان صورت می گیرد و بدین ترتیب بهره وری از سیستم افزایش می یابد.
یک شیوه برای بالا بردن راندمان CPU آن است که تعداد کار CPU – Limited را با I/OLimited مخلوط کنیم. ولی در عمل امکان تقسیم بندی کارها قبل از اجراء شدنشان وجود ندارد. از طرف دیگر برنامه ای ممکن است در ابتدا CPU – Limited باشد ولی در حین اجراء تبدیل به I/OLimited گردد.
سیستم های اشتراک زمانی Time –Sharing
این سیستم ها از اویل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است.
در سیستم های چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامه ها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردن متعدد را نمی داد. در سیستم اشتراک زمانی کاربر به کمک ترمینال (Terminal) که شامل کی بورد (برای ورودی) و مونیتور (برای خروجی) است با کامپیوتر به صورت محاوره ای (interactive) رابطه برقرار می سازد. کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مونیتور دریافت می کند. در این سیستم ها چندین کاربر به کمک ترمینالهائی که به کامپیوتر وصل است همزمان می توانند از آن استفاده کنند. در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامه های مختلف کابرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ می شود و بنابراین هر کاربر تصور می کند کل کامپیوتر در اختیار اوست. در اینجا تاکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربر می باشد و نه بالا بردن میزان کاربرد منابع ماشین. کاربر می تواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدائی (debug) کند. سیستم های دسته ای برای اجرای برنامه های بزرگ که نیاز محاوره ای کمی دارند مناسب است ولی سیستم های اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است، استفاده می شوند. در زمانی که کاربری در حال تایپ برنامه اش یا فکر کردن روی خطاهای برنامه اش می باشد CPU به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند.
در سیستم های محاوره ای دستورات به دو صورت پیش زمینه (foreground) و پس زمینه (Backgruond) اجرا می شوند. در نوع پیش زمینه با وارد کردن، دستور تا هنگامی که دستور اجرا و تمام نشود اعلان سیستم ظاهر نمی گردد ولی در نوع پس زمینه، پس از ورود دستور، بلافاصله اعلان سیستم ظاهر می شود تا دستور بعدی وارد گردد ولی در همین حین دستور قبلی در پشت زمینه حال اجرا میباشد.
در این سیستم اشتراک زمانی هنگامی که چند کاربر همگی یگ برناممه (مثل کامپایلر C) را احضار می کنند هر یک دارای کپی هایی از ثباتها، فضای داده ای، فشای پشته (stack) مخصوص به خود هستند ولی قسمت کد همگی یکسان و مشترک می باشد. در سیستم اشتراک زمانی وجود یک سیستم فایل ضروری است زیرا نمی توان در هر بار اجرای کار مدارک بزرگی را توسط ترمینالها وارد کامپیوتر کرد. لذا داده ها و برنامه های کاربر می بایست در دیسک ذخیره گردند. لذا بخش مدیریت فایلها یکی از بخش های اصلی سیستم عامل می باشد. هر چند که می توان وظایف مدیر فایل (File Manager) و مدیر دیسک (Disk Mannager) را در هم آمیخت ولی منطقاً این دو کاملاً متفاومت هستند. مدیر دیسک مسئول توزیع فضای خالی روی دیسک و نقل و انتقالات است، حال آنکه کارهای مدیر فایل بیشتر مربوط به مدیریت فهرستها، فایلها، امنیت و کارهای مربوط به حسابداری (Accouning) است. یکی دیگر از بخشهای مهم در سیستم اشتراک زمانی ترمینال است که وظیفه تعیین هویت کاربران و پذیرش آنها را بر عهده دارد.
چند برنامگی و اشتراک زمانی مباحث اصلی سیستم عاملهای امروزی می باشد. از جمله سیستم عاملهای سنتی و مشهور که شامل این ویژگیها می باشد سیستم عامل UNIX است. موسسه IEEE یک استاندارد به نام POSIX برای UNIX بنا نهاد. POSIX حداقل واسط فراخوان سیستمی را تعریف می کند که سیستم های UNIX سازگار باید آن را پشتیبانی نمایند.
سیستم های توزیع شده Loosly coupled
سیستم عامل توزیع شده در یک محیط شبکه ای اجراء می شود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود می توانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهائی به کامپوتر اصلی کاربر برگردند. کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در می آید و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هر چیز را با نام آن فراخوانی کند و کاری به آدرس نداشته باشد.
با توجه به توضیحات فوق سیستم عامل های توزیع شده به مراتب پیچیده تر از سیستم عاملهای شبکه هستند. یکی از مزایای مهم سیستم های توزیع شده سرعت بالای اجرای برنامه هاست چرا که یک برنامه همزمان می تواند از چندین کامپیوتر برای اجرا شدنش استفاده کند. همچنین به علت توزیع شدن اطلاعات، بانکهای اطلاعاتی حجیم می توانند روی یکسری کامپیوترهای شبکه شده قرار بگیرند و لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود (که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر می رود).
در سیستم توزیع شده اگر یکی از کامپیوترهائی که وظیفه اصلی برنامه جاری را بر عهده دارد خراب شود کل عمل سیستم مختل خواهد شد. از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد و یکی از کامپیوتر ها خراب شود، داده ها را می توان از کامپیوترهای دگیر بازیابی کرد و از این نظر امنیت افزایش می یابد.
تذکر: به سیستم های توزیع شده گاهی اوقات سیستم های Loosely Coupled با ارتباط ضعیف نیز می گویند، چرا که هر پردازنده کلاک و حافظه مستقلی دارد. پردازنده ها از طریق خطوط مخابراتی مختلفی مثل گذرگاه های سریع یا خطوط تلفن با همدیگر ارتباط دارند.
چند دلیل برای استفاده از سیستم های گسترده عبارتند از:
1 – اشتراک منابع
2 – تسریع محاسبات
3 – قابلیت اعتماد: اگر در سیستم ها توزیع شده، کامپیوتری خراب شود، کامپیوترهای دیگر (در صورت طراحی سیستم برای این منظور) می توانند کار را ادامه دهند. ولی همانظور که قبلاً گفتیم اگر سیستم نتواند خطا را تشخیص داده و آن کار را به کامپیوتر دیگر بسپارد برعکس امنیت کاهش می یابد.
4 – ارتباطات (مثلا پست الکترونیک و انتقال فایلها)