مفاهیم کلی
به طورکلی نرم افزارهای کامپیوتر به دو گروه تقسیم میشوند:
یکیبرنامه های سیستم عامل که عملیات کامپیوتر رامدیریت میکنند و دیگری برنامههای کاربردی .سیستم عامل (operating system=os) اصلیترین برنامه سیستمی است که به عنوان رابط بین کاربر وسخت افزار کامپیوتر عمل میکند .
سیستمعامل دو وظیفه (یا هدف) اصلی دارد:
سیستمعامل استفاده از کامپیوتر را ساده میسازد. این بدان معناست که مثلاًکاربر یابرنامه نویسبدون درگیر شدن با مسائل سختافزاریدیسکها به راحتیفایلی را بر روی دیسکذخیره و حذف کند . این کار در واقع با به کاربردن دستورات سادهای کهفراخوانهی سیستمی (System Calls) را صدامیزنند انجام پذیرد .
درصورت عدم وجود سیستم عامل کاربرو یا برنامه نویس میبایست آشنایی کاملی با سختافزارهای مختلف کامپیوتر (مثل مانیتور ,فلاپی , کیبورد و غیره) داشته باشدوروتینهایی برای خواندن و یا نوشتن آنها بهزبانهای سطح پائینبنویسد. از این جنبه بهسیستم عامل با عنوان ماشین توسعه یافته(Extended machine) یاماشین مجازی (Virtual machine) یاد میشودکه واقعیت سخت افزار را از دید برنامه نویسان مخفی میسازد.
وظیفهدوم سیستم عاملمدیریت منابع(Resource Management) میباشد, یعنی سیستم عامل باعث استفاده بهینه و سودمند (اقتصادی) از منابع سیستم میگردد. منظور از منابع پردازندهها ,حافظهها ,دیسکها,موس ها , چاپگرها , فایلها , پورتها و غیره هستند. یک سیستم کامپیوتریمنابع نرم افزاری و سخت افزاری بسیار دارد که ممکن است در حین اجراء برنامه لازمباشند , سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز بهبرنامههای مشخصی تخصیص میدهد.
سیستمعامل معمولا اولین برنامههای است که پس ازبوتشدن در حافظه بار میشود. پس از بار شدنقسمتی از سیستم عامل بطور دائم درحافظهباقی (Resident)میماند. قسمتهای دیگربا توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده میشود.
بهقسمت اصلی سیستم عامل که وظایف مهم آن را انجام میدهد هسته یا Kernel گفته میشود. هسته سیستم عامل برنامهای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست.
سیستمعامل ومعماری کامپیوتراثر زیادی بر روی یکدیگرداشتهاند. یعنی جهت سهولت کار با سخت افزارهای جدید, سیستم عاملها توسعه یافتندوهمچنین در اثنای طراحی سیستم عاملها , مشخص شد که تغییراتی در طراحی سخت افزارمیتواند سیستم عاملها را ساده تر و کارآمدتر سازد .
هر چندکه تطبیق نسلهای کامپیوتر با نسلهای سیستم عامل کار درستی نیست ولی این تطبیق که درادامه انجام میدهیم علت ایجاد سیستم عاملهای جدید را مشخص میسازد.
تطابق تکنیکهای سیستم عامل با نسل های کامپیوتر:
در نسلاول کامپیوترها (55-1945) که ازلامپ خلأبرای ساخت آنها استفادهمیشد,زبانهای برنامه نویسی (حتیاسمبلی )ابداع نشده بودند و سیستم عامل نیزاصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصلهزمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند.
آنهابرنامههای خود را توسط تخته مدار سوراخدار (و بعدها توسط کارتهایپانچ) و به زبان ماشین به کامپیوترمیدادند. اکثر برنامههای محاسبات عددی معمولی مانند جداولسینوسوکسینوسبود.
ساختار سیستم عامل
o مدیریت ورودی- خروجی در سیستم عامل
انوع سیستم عامل از نظر ساختار
o زبانهای پیاده سازی سیستم عامل
پردازش و زمابندی
معیارهای زمانبندی در سیستم عامل
انواع زمانبندی ها
اولویتها میتوانند بصورت اتوماتیک توسط سیستم نسبتداده شوند و یا از خارج سیستم تعیین گردند, مثلاً ممکن است یک کاربر کار فوری داشتهباشدو حاضر باشد به خاطر بدست آوردن سرویس بالاتر هزینه بیشتری بپردازد , یعنیاولویت را بخرد . یک اولویت ممکن استاستاتیکباشد یادینامیک . اولویت استاتیک تغییر نمیکندوبنابراین پیاده سازی آن ساده است.
ولی این نوع اولویت در مقابل تغییرات محیطیعکس العملی نشان نمیدهد . برعکس اولویت دینامیک بر اثر تغییرات محیطی تغییر میکندمثلا ً ممکن است در آغاز یک برنامه اولویت پائینی داشته باشد ولی به تدریج اولویتآن بهبود یابد.
o کوتاه ترین زمان باقی مانده
o دادن اولویت به پردازش
o تضمین شده در زمان مقرر
o زمان بندی شانسی
o LPT
سیستم های دسته ایBatch system
Portable Batch System
در نسلدوم , کامپیوترها (65-1955) ازترانزیستورساخته شدند.
طریقهکار با این کامپیوترهای نسل دوم از طریق یککنسول (Console) بود که تنها اپراتور مخصوصکامپیوتر با آن کار میکرد و کاربران به طور مستقیم با این کامپیوترهامحاوره(interaction)نداشتند. کاربر ابتدا برنامه خود را به زبانفرترنیااسمبلیبر روی کاغذ مینوشت سپس توسط دستگاه Card punch,برنامه را روی کارت های سوراخدارمنتقل ساخت . بعد این دسته کارت تهیه شده که شامل برنامه, دادهها و کارتهای کنترلبود به صورت کار (Job) تحویلاپراتور داده میشد . اپراتور بعد از اتمام کار قبلی , دسته کارت جدید را به کامپیوترمیداد تا برنامه را اجراء کند در انتها خروجی برنامه (که غالباً چاپی بود) را بهکاربر تحویل میداد سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آنانتقال کنترل اتوماتیک از یک کار به کار دیگری بود . سیستم عامل همواره مقیم درحافظه بود و در هر لحظه فقط یک برنامه اجراء میشد.هنگامی که اپراتور مشغول گذاشتننوارها یا برداشتن کاغذهای چاپ شده بود وقتزیادی از این کامپیوترهای گران قیمت به هدر میرفت .
برایرفع مشکل فوق سیستمهای دستهای (Batch System) ابداع شد . یعنی ابتدا یک سبد پر ازدسته کارتها در اتاق ورودی جمع آوری میشد , سپس کلیه آنها به وسیله دستگاهکارتخوان یک کامپیوتر کوچک و نسبتاً ارزان (مثل IBM 1401) خوانده شده و بر روی یکنوار ذخیره میگردید. سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گرانقیمت که محاسبات را انجام میداد (مثل IBM7094 ) نصب میکرد . بعد از آن برنامهایرا اجراء میکرد (یعنی سیستم عامل ) تا اولین کار را از روی نوار برداشته و اجراءکند, خروجی بر روی نوار دیگری نوشته میشد. پس از اتمام هر کار سیستم عمل به صورتخودکار کار بعدی را از نوار میخواند. پس از اجراء همه برنامهها ,اپراتور نوارخروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل میساخت تا عملیات چاپخروجی ها به صورت off line انجام شود. به این روش کار offline spooling نیز گفتهمیشود. بیشتر برنامههای نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی وعلمی مثل مشتقات جزئی به کار میرفت.
یکی ازمعایب روش offline- spooling زیاد بودن زمان برگشت (گردش) (turnaround time) است ,یعنی تأخیر زمانی مابین تحویل کار و تکمیل کار. همچنین در این سیستم اولویت بندیبه معنای واقعی وجود ندارد. تنها روش بدست آوردن اولویت این بود که نوار کارهای مهمرا ابتدا در ماشین اصلی قرار دهند. حتی در این صورت هم باید چندین ساعت صبرمیکردند تا خروجی ها ظاهر شوند. همچنین نیاز بهسختافزار اضافی(مثل کامپیوترهای1401) از دیگر معایب این روش بود.
سیستم های چند برنامه ای Multi programming
در نسلسوم کامپیوترها (80-1965) ازمداراتمجتمع (Integrated Circuit=IC) برای ساخت کامپیوترها استفاده شد. به طور کلیبرنامهها را میتوان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی CPU boundیا CPU Limiter ( مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرفمحاسبات Cpu میشود ودیگری برنامه های تنگنای( I/O Limited)I/O مانند برنامههایتجاری که بیشتر زمان کامپیوتر صرف ورود دادهها و خروج اطلاعات میشود.
یکاشکال مهمسیستم های دستهایاین است که وقتی کار جاریبرای تکمیل یک عملیات I/O مثلاً بر روینوار گردانمنتظر میشود. در این حال CPU بیکار میماند و مجبور است صبر کند تاعملیات I/Oبه اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی دربرنامه های I/O Limited ممکن است حدود 80تا90 درصد وقت CPU به هدر برود.
برایرفع این مشکل از تکنیک multiprogramming استفاده میشود. بدنی ترتیب که حافظه بهچند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده میشود. وقتی که یک کاربرای تکمیل عملیات I/O منتظر میماند, پردازنده به کار دیگری داده میشود. اگرتعداد کارهای موجود در حافظه کافی باشد میتوان CPU را تقریباً صد در صد مشغول نگهداشت .
البتهنگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامهها برهمدیگر اثر سوء نداشته باشند . لذا مدیریت حافظه بحث مهمی در سیستم عاملمیباشد.
سیستم spooling
یکیدیگر از ویژگیهای سیستم عامل نسل سوم Spooling(یاOn Line Spooling)است که معمولاًهمراه چند برنامه گی استفاده میشود. این کلمه مخفف عبارت (Simultaneous Peripheral OperationonLine) میباشد. در این سیستم به جای آنکه کارتها از دستگاهکارت خوانمستقیماً وارد حافظه گردند و توسط CPU پردازش شوند ابتدا کاراکتر به کاراکتردر بافری در حافظه قرار گرفته و سپس به صورتبلوکی بر رویدیسک نوشتهمیشود.
وقتیکهبرنامه کاربر اجراء میشود و از سیستم عامل تقاضای ورودی میکند, اطلاعات ورودی بهصورت بلوکی و با سرعت زیاد از دیسک خوانده میشوند. به طور مشابه هنگامی که برنامهبرای خروجیچاپگررا احضار میکند, خط خروجی در یکبافرکپی شده و سپس در دیسک نوشته میشود. پس اطلاعات خروجی از دیسک بر اساس ترتیب و اولویت در چاپگر چاپ میشوند.
درواقع اسپولینگ عمل IO یک کار را با عمل محاسباتی کار دیگر روی هم میاندازد (overlap) . در سیستم اسپولینگ د رحالیکه ورودی یک کار از دستگاه ورودی خواندهمیشود,کار دیگری در حال چاپ شدن است , در همین بین حتی کار دیگری میتواند در حالپردازش و اجراء باشد . در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب باسرعت دیسک (که سریع است) انجام میدهد و نه متناسب با سرعت کارتخوان یا چاپگر (کهخیلی کند هستند.(
بنابراینسیستم مذکور باعث استفاده بهینه از CPU و سایل IO میشود و سرعت عمل را بالامیبرد. در این سیستم دیگر نیازی به کامپیوترهای 1401,نوار گردانهای اضافی و حملنوارها (مانند سیستمهای دستهای ) نداریم.
بلوکدیاگرام یک سیستم اسپولینگ میتواند به صورت زیر باشد:
1 - سیستمورودی کاراکترهایی که توسط کارتخوان وارد میشود را در بلوکهایی جمع آوری کرده وبهکمک مدیر دیسک این بلوکها را بر روی دیسک مینویسد . درانتهای هر مدرک ورودیاطلاعاتی راجع به آن مدرک (مانند محل آن بر روی دیسک , اولویت ,اسم استفاده کننده( به قسمت زمانبند کار فرستاده میشود.
2 - زمانبندکار (Job scheduler) این زمانبند یک لیست از کارهای موجود در ماشین و اطلاعات لازمدر مورد مدارک ورودی مورد نیاز هر یک را نگه میدارد. به این لیست انبار کار یا Jobpoolیا ـJoblist نیز گفته میشود. زمانبند کار به پردازنده کار میگوید که کدامکار بعدی را اجرا کند. برای این منظور اطلاعاتی در مورد محل کار و مدارک ورودی آنبر روی دیسک را به پردازنده کار میدهد . همچنین اگر کارهای متعددی منتظر ورود بهحافظه باشند و فضای کافی برای همگی در دسترس نباشد , زمانبند کار تعدادی از آنها راانتخاب کرده و به حافظه میآورد.
3-پردازنده (Job processor) کار داده شده را اجراء میکند. این پردازنده محل کامپایلرها وسایر نرم افزارهای سیستم را بر روی دیسک میداند. هنگام اجراء پردازنده کار خروجیهای خود را به صورت بلوکی بر روی دیسک مینویسد و مدارک خروجی را تشکیل میدهد . پردازنده کار اطلاعاتی راجع به محل و اولیت مدارک خروجی به زمانبند خروجی میدهد.
4-زمانبندخروجی(output scheduler) لیستی از مدارکی که باید چاپ شود را نگه میدارد. وقتی کهچاپگر آزاد شد , این زمانبند مدرک بعدی را برای چاپ انتخاب کرده و محل مدرک بر رویدیسک را به سیستم خروجی میگوید.
5-سیستمخروجی بلاکهای خروجی را از روی دیسک خوانده و کاراکتر به کاراکتر (یا خط به خط)آنهارا به چاپگر میفرستد.
6-مدیردیسک (Disk Manager) که وظایف خواندن و نوشتن یک بلاک بر دیسک , تخصیص یک بلاک خالیروی دیسک و برگرداندن یک بلاک به مجموعه فضای آزاد دیسک را بر عهده دارد. درخواستهای مربوطه به دیسک در یک صف به نام (Disk Transfer Queue)DTQ ذخیرهمیگردد.
البتههر سیستم اسپولینگ یک هماهنگ کننده(Coordinator) دارد که مسئول زمانبندی پردازش هایسیستم و فراهم کردن عملیاتی که جهت همگام کردن بکار میآیند میباشد. این عملیاتتوسط دو روال انجام میپذیرد:
Wait : پردازش جاری را متوقف کرده و دوباره وارد زمانبند میگردد.
Free : یک پردازش ویژه را جهت زمانبندی, آماده میکند.
بافرکردن امکان میدهد که عمل IOیک کار با عمل پردازش همان کار همزمان گردد در حالیکه spooling امکان میدهد عملیات IO و پردازش چندین کار با هم همزمان گردند.
سیستم اشتراک زمانی
اینسیستمها از اوایل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراکزمانی در واقع تعمیمسیستم چند برنامگیاست .
درسیستمهای چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامهها مشکلبود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردنهای متعدد را نمیداد. درسیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل) کی بردبرای ورودی) و) مونیتوربرای خروجی ) است با کامپیوتر بهصورت محاورهای (interactive) رابطه بر قرار میسازد .کاربر مستقیماً دستوراتی راوارد کرده و پاسخ سریع آن را روی مونیتور دریافت میکند. در این سیستمها چندینکاربر به کمک ترمینالهایی که به کامپیوتر وصل است همزمان میتوانند از آن استفادهکنند . در سیستم اشتراک زمانی فقط یکپردازندهوجود دارد که توسط مکانیزمهایزمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ میشودو بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست .در اینجاتأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولیدساده نرم افزار و راحتی کاربرد میباشد و نه بالا بردن میزان کاربرد منابع ماشین . کاربر میتواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه رابه صورت قدم به قدم اجراء و اشکال زدایی (debug) کند . سیستمهای دستهای برایاجرای برنامههای بزرگ که نیاز محاورهای کمی دارند مناسب است ولی سیستمهای اشتراکزمانی برای مواردی که زمان پاسخ کوتاه لازم است , استفاده میشوند.
درزمانی که کاربری در حال تایپ برنامهاش یا فکر کردن روی خطاهای برنامه اشمیباشدCPU به برنامه کاربر دیگری اختصاص یافته تاآن را اجراء کند .
سیستم های توزیع شدهDistributed system
سیستمعامل توزیع شده در یک محیطشبکهای اجراء میشود. در این سیستم قسمتهایمختلف برنامه کاربر بدون آنکه خود او متوجه شود میتوانند همزمان در چند کامپیوترمجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بر گردند.
کاربراننباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در میآید و یافایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورتخودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیز رابا نام آنفراخوانیکند و کاری به آدرس آن نداشتهباشد.
یکی ازمزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامههاست چرا که یک برنامههمزمان میتواند از چندین کامپیوتر برای اجراء شدنش استفاده کند.
همچنینبه علت توزیع شدن اطلاعات, بانکهای اطلاعاتیحجیم میتوانند روی یکسریکامپیوترهای شبکه شده قرار بگیرند. و لازم نیست که همه اطلاعات به یک کامپیوترمرکزی فرستاده شود(که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدرمیرود.(
به علتتأخیرهای انتقال در شبکه ونویزهای احتمالی در خطوط انتقالی قابلیتاعتماد اجرای یک برنامه دریک سیستم تنها,بیشتر از قابلیت اجرای آن دریک سیستم توزیعشده است .
همچنیندرسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهدهدارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان درچند کامپیوتر به صورت یکسان ذخیره گردد ویکی از کامپیوترها خراب شود, دادهها را میتوان از کامپیوترهای دیگربازیابی کرد از این نظر امنیت افزایش مییابد.
بهسیستم های توزیع شده گاهی اوقات سیستمهای Loosely Coupled یا ارتباط ضعیف نیزمیگویند,چرا که هرپردازندهکلاکوحافظهمستقلی دارد . پردازندهها از طریقخطوطمخابراتی مختلفی مثل گذرگاههای سریع یاخطوط تلفن ارتباط دارند.
سیستم های چند پردازندهای Multi processing
کامپیوترهامیتوانند به جای یک CPU چندین CPU داشته باشند که در اینصورتبه آنها سیستم multiprocessing میگویند.جهت استفاده از این سیستمهای نیاز به یکسیستم عامل خاص میباشد که بتواند چندین برنامه یانخهای یکفرآیند ) را به صورت موازی واقعی روی آنهااجراء کند .
سیستمعامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی چند CPU به کار میروند.
درسیستم چند پردازندهای , CPUها باید بتواند ازحافظه , امکانات ورودی و خروجی وگذرگاه Bus سیستم به صورت اشتراکی استفادهکنند .مزایای این سیستمهای عبارتند از :
1- زیادشدن توان عملیاتی (throughput): منظور از throughput تعداد کارهایی است که در یکواحد زمانی تمام میشوند. بدیهی است هر چقدر تعداد پردازندهها بیشتر باشد تعدادکارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست , مثلا اگر تعدادپردازندهها n باشد سرعت اجراء برنامهها nبرابر نمیشود چرا که بخشی از وقت پردازندهها جهت مسائل کنترلی و امنیتی وسوئیچکردنها به هدر میرود.
*صرفهجویی در هزینهها : از آنجا که پردازندهها منابع تغذیه , دیسکها , حافظهها و ادوات جانبی را به صورت مشترک استفاده میکنند در هزینههایسختافزاری صرفهجویی میشود.
2-تحملپذیری در برابر خطا(fault-tolerant): سیستم های مالتی پروسسور قابلیت اعتماد راافزایش میدهند چرا که خرابی یک CPU سبب توقف سیستم نمیشود بلکه تنها سبب کند شدنآن خواهدشد .استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابیجستوجو شده , تشخیص داده شده و در صورت امکان اصلاح شود (یا کنار گذاشته شود). اینتوانایی به ادامه سرویس , متناسب با سطح بقای سخت افزار ,تنزل مطبوع یا graceful degradation نامیده میشود.
سیستمهایعاملهای چند پردازندهای به دو دسته کلی متقارن و نامتقارن تقسیممیشوند
درسیستم چند پردازندهای نامتقارن(Asymmetric Multi Processing = ASMP) یک پردازندهجهت اجراء سیستم عامل و پردازندههای دیگر جهت اجرای برنامههای کاربران استفادهمیشود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء میشود, ساخت این نوعسیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازندهای به دستمیآید.
ایننوع سیستم عاملها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمکپردازنده و پردازندهای که به هم متصل هستند یا دو پردازندهای که از تمامحافظهموجود مشترکا" استفاده نمیکنند . یکی از معایب سیستم عامل نامتقارن غیر قابلحمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهایمختلفی نوشته شود چرا که نامتقارنی میتواند حالات مختلف داشته باشد.
درسیستم چند پردازندهای متقارن(symmetric Multi Processing = ASMP) سیستم عاملمیتواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازندهها همزمان اجراء شود. در این حالت حافظه بین تمام آنها مشترک میباشد. تمام پردازندهها اعمال یکسانی رامیتوانند انجام دهند. سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتریدارد:
1-ازآنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یک CPU ها اجراء شود باعثمیگردد که آن پردازنده همواره بار سنگینی داشته باشد, در حالیکه احتمالاًپردازندههای دیگر بی کار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادلشدن (balancing) بار سیستم میشود.
2-درسیستم نامتقارن اگر پردازنده اجراءکننده سیستم عامل خراب شود کل سیستم خراب میشودولی در سیستم متقارن از این نظر امینت بیشتر است چرا که اگر یک پردازنده از کاربیفتد سیستم عامل میتواند روی پردازندههای دیگر اجراء شود.
3-برعکس سیستم عامل نامتقارن , سیستم عامل قابل حمل( portable) بر روی سیستم های سختافزاری مختلف است .
سیستمعامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 ورژن و همچنین windows NTاز نوعمتقارن میباشند.
وجودپردازندههای متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread) یا فرآیندها (process) روی هر یک از پردازندهها به عهده سیستم عامل است .
گرچه multithreadingو multiprocessingامکانات مستقلی هستند ولیمعمولاً با هم پیاده سازی میشوند. حتی در یک ماشین تک پردازندهای , چند نخیکارایی را افزایش میدهد. همچنین ماشین چند پردازندهای حتی برای فرآیندهای غیر نخیهم کارآمد است .
شکلزیر تفاوت سیستم نامتقارن و متقارن را نشان میدهد :
گاهیاوقات به سیستمهای چند پردازندهای ,سیستمهای Tightly Coupled یا ارتباط محکم نیزگفته میشود. چرا که پردازندههاکلاک (Clock), گذرگاه و همچنین حافظه مشترکیدارند.
سیستم های بی درنگReal Time
سیستمهای بیدرنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند. سیستم دراین حالت میبایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد .
سیستمهایکنترلصنعتی, پزشکی , کنترلموشک و غیره از این دستهاند.
درسیستمهای بی درنگ زمان پاسخ باید سریع و تضمین شده باشد ولی در سیستم اشتراک زمانیمطلوبست که زمان پاسخ سریع باشند (ولی اجباری نیست). درسیستم دستهایهیچ محدودیت زمانی در نظرگرفته نمیشود.
درسیستمهای بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظههای ROM استفاده میشود. سیستم عاملهای پیشرفتهنیز در این سیستمها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدامیکند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی میشود.
سیستمهای بیدرنگ با سیتسمهای اشتراک زمانی تناقض دارند لذا نمیتوانند هر دو توأماً وجود داشتهباشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستمهای بلادرنگ از حافظهمجازی و اشتراک زمانی استفاده نمیکنند.
به اینسیستمها «بی درنگ سخت» نیز گفته میشود.
درسیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی, نسبت به سایر وظایف اولیت دارد وتا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستمها مهلتزمانی(deadline) را پشتیبانی نمیکنند استفاده آنها در کنترل صنعتی ریسک آور است . هر چند که این سیستمهای بی درنگ نرم میبایست پاسخی سریع داشته باشند ولی مسالهپاسخ دهی به حادی سیستمهای بی درنگ سخت نمیباشد.
ازکاربردهای سیستم بی درنگ نرم میتوان رزرواسیون شرکتهای هواپیمایی ,چند رسانهای (multimedia) واقعیت مجازی (Virtual reality) را نام برد. این سیستمها به ویژگیهای سیستم عاملهای پیشرفته (که توسط بیدرنگ سخت حمایتنمیشوند)نیازمندند . بعضی از نسخههای UNIX مانند solaris 2 خاصیت بیدرنگ نرم را دارامیباشند.
دربرخی کاربردها (مثل کنترل صنعتی)در کامپیوترها از سیستم عامل استفاده نمیشود. ازآنجا که در سیستمهای کنترل صنعتی برنامه میبایست در اسرع وقت در مقابل یک اتفاق , از خود عکس العمل نشان دهد , وجود واسطه سیستم عامل باعث کند شدن مراحلمیگردد.
یک برنامه حاوی دستورالعملهایی است که توسط CPU اجراء میشوند و حاوی دادههایی است کههنگام اجرای دستورات از آنها استفاده میشود. برنامه در واقع یک موجودیتpassive است مانند محتوای یک فایل بر رویدیسک ولیپردازشدر سیستم عامل یک برنامه در حال اجراء میباشد که موجودیتی active دارد. یکبرنامه کاربر که درسیستم اشتراک زمانیدر حال اجرا است یکپروسس)فرایند) میباشد, به همین ترتیب یکوظیفه سیستم مثلاسپولینگخروجی بهچاپگرنیز یک پروسس است .یک فرایند منابعمشخصی را نیاز دارد مثل CPU, حافظه , وسایل I/O وفایلها . پردازش در سیستم عامل واحد کار در سیستم است . یعنی یک سیستم مجموعهایاز پردازشهای گوناگون است . سیستم عامل در رابطه بامدیریتپردازش وظایف زیر را بر عهده دارد: ایجاد و حذف پردازش در سیستم عاملهای کاربر و سیستم – زمانبندی پردازشها واینکه در هر زمان کدام پردازش در سیستمعامل CPU را در اختیار داشته باشد – مدیریت همزمانی پردازشها و ارتباط بین آنها وجلوگیری از بن بست (deadlock) بن بست حالتی است که پردازشها در یک حلقهبسته منتظر تمام شدن وظایف همدیگر هستندو بنابراین هیچیک نمیتوانند اجراء گردند وسیستم قفل میشود.
Cpuبه طور مستقیم تنها باحافظهاصلی (Main Memory) سرو کار دارد و برنامهها جهت اجراء میبایست در حافظه اصلیقرار گیرند.
سیستم عامل در یک سیستم برنامهای باید مشخص کندهر بخش از حافظهتوسط چهپروسسی استفاده شود. تخصیص و باز پس گیریفضاهایحافظهو نیز محافظت از تداخل فرایندها بریکدیگر از دیگر وظایف سیستم عامل است.
از آنجا که حافظه اصلی برای جادادن تمام برنامههای در حال اجراء غالباً کوچک است سیستم عامل بایستی ازحافظه ثانویه(Secondary Memory) عموماًهارددیسک) جهت پشتیبانی حافظه اصلی استفاده کند). به این مفهومحافظه مجازیگفته میشد ومدیریت حافظه مجازی , تخصیص و رهاسازی اینحافظه و حفاظت آن از دیگر بحثهای سیستم عامل است .
جهت استفاده ساده از اطلاعات کامپیوتر,سیستم عامل دید منطقی یکسانی از اطلاعاتذخیره شده روی انواع وسایل ذخیره سازی مثلهارددیسک ,فلاپی,نواریادیسکهای نوریپدید میآورد.
سیستم عاملخواص فیزیکی وسایل را از دید کاربر مخفی کرده و یک واحد ذخیره منطقی به نام فایلارائه میکند. سیستم عامل دررابطه با فایل وظایف زیر را انجام میدهد :
مفسر فرمان
یکی از مهمترین برنامههای سیستم عامل مفسر فرمان استکه در واقع واسط بین کاربردو سیستم عامل میباشد
بعضی از سیستم عاملها مفسرفرمان را در هسته خود (kernel) قرار دادهاند و بعضی دیگر مثل DOS و UNIX مفسر فرمان را ( که پوسته یا Shell نیزمعروف است )مانند یک برنامه خاص که در اولین برقراری ارتباط اجراء میشود در نظرمیگیرند.
مفسر فرمان دستورات کاربر را گرفته و آنهارا اجراء میکند. در پوسته DOS و UNIX فرمانها از طریقصفحهکلید وارد شده و رویصفحهنمایش رایانه به صورت متنی نشان داده میشود ولی در سیستم عامل ویندوز یامکینتاشپوسته به صورت محیطی گرافیکی ومبتنی بر پنجرههاست که با زدن کلیدموس به راحتی میتوان دستوراترا وارد کرد.
وقفهها جزء مهمی ازمعماری کامپیوتر هستندو نحوه عملکرد آنها از ماشینی به ماشین دیگر ممکن است متفاوتباشد. وقفه راهکاری را فراهم میسازد تا اجرای دستورالعملهای جاری پردازنده موقتاًمتوقف شده و دستورات سرویس دهی دیگری اجراء گردد و سپس از آن کنترل دوباره بهبرنامه وقفه داده شده باز گردد.
انواع وقفهها را میتوان به صورت زیر دستهبندی کرد:
در یک تقسیم بندی کلی میتوان وقفههای را سه دستهکرد:
با اجرای مجدد برنامه , وقفههای داخلی به همان صورتقبلی دوباره رخ میدهند ولی وقفههای خارجی مستقل از دستورات برنامه و ناهمگام بابرنامه میباشند.
اگر چند منبع همزمان تقاضاهایشان را از طریق یک خط وقفه به CPU اعلام کنند , آنگاه CPU با روش همه پرسی یا سرکشی(polling) منبع وقفه دهنده راتشخیص خواهد داد.
فراخوانی سیستمی
فراخوان های سیستمی رابط ما بین سیستم عامل وبرنامههای کاربردی میباشند. در زبان سطح بالایC)) و پاسکال))مستقیماً میتوان اینفراخوانهای سیستمی را به کار برد. از فراخوانهای سیستمی عبارتنداز:
مدیریت پردازشها: مانند ایجاد و اتمامپردازش , بارگذاری و اجرای پردازش در سیستمعامل , تخصیص و آزاد کردنحافظهو غیره.
اکثر سیستم عامل مثل( UNIX,DOS) به وسایل I/O مشابه فایلها نگاه میکنند و ابزارهای I/Oبا نامهای فایلهای ویژه شناخته میشوند. در این حال برای کار با وسایل I/O میتوان از همان دستورات readو write فایلها استفاده کرد.
اگر چند منبع دریک لحظه همزمان سیگنالوقفهرا ارسال کنند,CPUبا تکنیکهایی آنها رااولویت بندی کرده و سپس بر اساس اولویت سرویس میدهد.
CPU به جای تکنیک وقفهدر سيستم عامل میتواند با تکنیک سرکشی (polling) متوجه شودکه کدام وسیله به سرویسدهی نیاز دارد. دراینحالت ثباتهای کنترلی دستگاههای جانبی مرتباً چک میشود تا نیازسرویس دهی آنها مشخص گردد. این روش باعث اتلاف وقت CPU میگردد.
سیستمهای تجاری زیادی وجود دارند که ساختار خوش تعریقی ندارند. اغلب این سیستمعاملهابه عنوان سیستم های کوچک و محدودی شروع شدهاند وسپس به تدریج ورای دید اولیهطراحان گسترش یافتهاند .
سیستم عامل DOS از این دسته میباشد.
سیستم عامل بهصورت یک مجموعه از رویهها نوشته شده است که هر یک از آنها میتوانند دیگری را بههنگام نیاز فراخوانی کنند . برای مخفی کردن اطلاعات امکاناتی وجود ندارد و هر رویهبرای دیگر رویهها کاملا قابل مشاهده است .
مثلاً در MS-DOS واسطهها وسطوح عملیاتی به خوبی مجزا نشدهاند و مطابق شکل زیر برنامههای کاربردی میتوانندمستقیماً به توابع ROM BIOS ویا حتیپورتدستگاههای مختلف (مثلهارددیسک( دسترسی پیدا کنند, لذا به راحتی میتوان برنامههای مخرب زیادی تحت DOS پدید آورد.
اکثر CPU ها دارای دو مد کاری هستند مد هسته کهمخصوص سیستم عامل است و در آن تمامی دستورالعملها مجاز میباشد و دیگری مد کاربراست که مخصوص برنامههای کاربران بوده ودر آن دستورات I/O و دستورالعملهای معین دیگری مجازنمیباشند.
سیستم عامل DOS توسطسختافزارزمان خود پردازنده( 8088) محدود بوده است چرا که اینپردازنده فقط در یک مد کار میکند و تمام دستورات در آن مجاز میباشد ولیپردازنده386 دارای مدهای مختلفی است که سیستم عامل ویندوز از آن به خوبی استفادهمیکند.
برنامهای کاربردی یکی از فراخوانهای سیستمی (توابع سیستم عامل) راصدا میزند . در این حال ماشین از مد کاربر (user mode)به مد هسته (kernel mode) تغییر حالت میدهد و کنترل به سیستم عامل سپرده میشود .سیستم عامل با توجه بهپارامترهای تابع مذکور تعیین میکند کدام فراخوان سیستمی باید اجراء شود سپس سیستمعامل به جدولی رجوع میکند که در ردیف k ام آن جدول یک اشارهگر به رویه اجراءکننده فراخوان سیستمی وجود دارد..سپس آن روتین اجراء شده و در انتها کنترل بهبرنامه کاربر بر میگردد.
تکنیک سیستم لایه ای
در روش لایهای سیستم عامل به تعدادی سطح یا لایه تقسیممیشود که هر کدام در بالای لایه پائین تر قرار میگیرند. مزیت مهم این روشپیمانهای (modularity) بودن آن است . یعنی لایهها به گونهای تقسیم بندی میشوندکه هر لایه فقطتوابعو سرویس های لایه پائین تر را استفادهمیکند. بدین ترتیب هر لایه را میتوان مستقل از لایههای دیگر طراحی کرد , بسطداد و خطایابی کرد.
هر سطح با استفاده از اعمال لایههای پایین تر پیادهسازی میشود ولی آن سطح نمیداند که اعمال سطح پایین چگونه پیاده شدهاند و فقطباید بداند که آن اعمال چه میکنند. بدین ترتیب هر لایه مسائلی را از لایههایبالاتر مخفی میسازد.
اولین سیستم لایهای , سیستم THE با 6 لایه بود: لایه صفر مسائل زمانبندی(scheduling) پردازندهرا انجام میدهد یعنی اینکه در هرلحظه CPU در اختیار کدام برنامه باشد . لایه یکمدیریت) حافظه اصلی و جانبی) را بر عهده دارد . لایه دو ارتباط بین هرپروسسوکنسولاپراتور را برقرارمیسازد.
لایه سه مدیریت دستگاههای I/O وبافرکردن اطلاعات را برعهده دارد . دربالای این لایه هرپروسسبه جای دستگاههای I/O حقیقی و پیچیدهبا دستگاههای ساده و مجازی I/O سرو کار دارد . در لایه چهار برنامههای کاربراناجراء میشوند که هیچ نگرانی در مورد مدیریت پروسس ,حافظه, کنسول و I/O ندارند. درلایه پنجم پروسس اپراتور سیستم قرار میگیرد.
مشکل اصلی در روشلایهلایه, تعریف مناسب لایههای مناسب است . از آنجا که یک لایه فقط میتواندلایههای پایین تر را به کار برد برای طراحی آن باید دقت زیادی به خرج داد. مشکلدیگر این ساختار این است که نسبت به انواع دیگربازدهی کمتری دارند .
هنگامیکه دستورات از لایه بالا به سمت پایین حرکت میکنند, در هر لایه پارامترهای دستورممکن است , از نظر صحت بررسی شده و یا تغییر یابند .لذا هر لایه قدری بار سر (overhead)به سیستم اضافه میکند و در نتیجه فراخوانی سیستمی نسبت به سیستم غیرلایهای بیشتر طول میکشد. لذا در سالهای اخیر سعی شده است لایههای کمتری باقابلیت عمل بیشتری طراحی شود .
به عنوان مثال محصول اولیه windows NT با لایههای زیاد, کارایی کمترینسبت به ویندوز 95 داشت . در NT4.0 سعی شد لایه ها به همدیگر نزدیکتر و مجتمع ترشوند تا کارایی بیشتر گردد.
سیستم MULTICS به جای لایهها به صورت یکسریحلقهها متحدالمرکز سازماندهی شده است بطوریکه هر حلقه داخلی از امتیاز