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

2- دیگری برنامه‌های کاربردی .

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


سیستم عامل دو وظیفه (یا هدف) اصلی دارد:

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

نکته :ماشین مجازی ( Virtual machine ) یاد می‌شود که واقعیت سخت افزار را از دید برنامه نویسان مخفی می‌سازد.

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

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

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

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

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

 

سیستم عامل از دو بخش  مهم  تشکیل شده است

1-       هسته(Kernel)

2-       پوسته(Shell)

 

 

هسته سسیستم عامل : قلب سیستم عامل که کلیه وظایف مدیریتی سیستم عامل را بر عهده دارد و واسط بین پوسته (و سایر نرم افزار های سطح کاربر )، سخت افزار است.

 

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

 

پوسته های سیستم عامل

1-                                                   Command Driver    مثل DOS

2-                                                   Menu driver         مثلDOS SHELL

3-                                                   Icon Driver     مثل Windows

 

نکته :در واقع سیستم عامل خود  هسته است. پوسته تقریباٌ ارزش علمی ندارد. Interrupt  Handler    ها و Device Driver   ها همه در   Kernel   هستند.

.

 

فراخوان سیستمی (System Call )    چیست؟

هرگاه یک نرم افزار سطح کاربر  نیاز به دسترسی به منابع سیستم داشته باشد و سخت افزار یکی از Fuction   های درون سیستم را فراخوانی می کند. که به این عمل  فراخوان سیستمی (System Call )  می گویند.

 

 

فرق System cal l     با یک فراخوان Function   عادی چیست؟

  • همه در سطح  کاربرند ولی در حالت فراخوان سیستم  باید مد آن تغییر کند از مد کاربر به مد هسته برود .

چرا  مد آن عوض می شود ؟ برای امنیت ، حدود اختیارات برنامه های سطح کاربر خیلی کمتر از سطح هسته است .

 

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

 

به سطح هسته  ، سطح   راهبری ( Supervisor Mode  )  هم گفته می شود..

در Unix     فراخوان سیستمی () وجود دارد به نام :Fork()

Fork()  که یک فرآیند  فرزند می سازد و عین پدرش  به شماره فرزند بر می گردد و به فرزند شماره صفر .

و صفر شماره هیچ فرآیندی نیست یعنی فرزند است.

If    fork() !=0

پدر  

Else

  فرزند 

 

نکته :  Source     همه Function   ها در هسته است.

 

 

نکته مهم :

سیستم عامل،   نرم افزاری   است  که در مود هسته (Kernel mode  ) یا راهبری(Supervisor  mode )  کار می کند.   که این بخش توسط سخت افزار (CPU) در مقابل مداخله کاربران محافظت می شود.

 

مترجم ها و ویرایشگر ها در مود کاربر(User Mode)  اجرا می شوند.

 

کاربر حق ندارد  که اداره کننده وقفه (Interupt  handler )  دیسک را که بخشی از سیستم عامل است تغییر دهد. ولی  کاربر  آزاد است که برای خودش یک مترجم بنویسد.

 

اهداف سیستم عامل به عنوان مدیر منابع چیست؟

1-       استفاده بهینه از منابع

2-       تخصیص و آزاد سازی منابع

3-       زمانبندی فرآیند ها برای   استفاده از منابع

4-       به اشتراک گذاری منابع

5-       حفاظت و ایجاد  امنیت: جلوگیری از دسترس فرآیند ها به یکدیگر . ایجاد لیست ها و فهرست و طبقه بندی منابع و نام گذاری آنها مثل ایجاد فایل ها ، در خت و لیست های مختلف

6-        طبقه بندی منابع و نام گذاری آنها در درخت ها

7-       جلو گیری از بن بست ، قحطی ، تداخل

 

زبان های پیاده سازی سیستم عامل

 

 

 سیستم  عاملهای اولیه به زبان اسمبلی نوشته می‌شدند ولی امروز, اکثر سیستم عاملها به زبان   Cیا C++   نوشته می‌شوند . سیستم عامل UNIX ,OS/2 و   ویندوز   بیشتر به زبان C نوشته‌ شده‌اند و قسمت اندکی از آنها به زبان اسمبلی است.
مهمترین مزیت استفاده از زبان سطح بالا برای پیاده سازی سیستم عامل قابلیت حمل آن بر روی انواع کامپیوترها و سادگی پیاده سازی , تغییر و بسط دادن سیستم عامل می‌باشد.

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

لذا در عمل برنامه‌های بزرگ C کد اسمبلی بهینه تر و کمتری را تولید می‌کنند, نسبت به حالتی که برنامه‌نویس بخواهد همان کاری به زبان اسمبلی انجام دهد . از طرف دیگر در عمل کارایی اصلی نتیجه ساختمان داده و الگوریتم‌های بهتر است نه نتیجه نوشتن برنامه به زبان اسمبلی .
همچنین اگر چه سیستم عاملها برنامه‌های بزرگی هستند ولی تنها بخش کوچکی از کد آنها, نسبت به کارایی , بحرانی( Critical ) می‌باشد مثل مدیریت حافظه و زمانبندی CPU .

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

 

 

 

 



:: موضوعات مرتبط: سیستم عامل
ن : مهدی تقوی
ت : چهارشنبه نهم دی 1388
 
جهت اطلاع از تنظیمات و ویــــرایش این قالب اینجا را کلیک کنید.

.:: کلیک کنید ::.