سیستم‌عامل

سیستم‌عامل یا سامانهٔ عامل (به انگلیسی: Operating System)‏ نرم‌افزاری است که مدیریّت منابع رایانه را به عهده گرفته و بستری را فراهم می‌سازد که نرم‌افزار کاربردی اجرا شده و از خدمات آن استفاده کنند. سیستم‌عامل خدماتی به برنامه‌های کاربردی و کاربر ارائه می‌دهد. برنامه‌های کاربردی یا از طریق واسط‌های برنامه نویسی کاربردی (Application User Interface-APIs) و یا از طرق فراخوانی‌های سیستم (system call) به این خدمات دسترسی دارند. با فراخوانی این واسط‌ها، برنامه‌های کاربردی می‌توانند سرویسی را از سیستم‌عامل درخواست کنند، پارامترها را انتقال دهند، و پاسخ عملیات را دریافت کنند. ممکن است کاربران با بعضی انواع واسط کاربری نرم‌افزار مثل واسط خط فرمان (Command Line Interface-CLI) یا یک واسط گرافیکی کاربر (Graphical User Interface-GUI) با سیستم‌عامل تعامل کنند. برای کامپیوترهای دستی و رومیزی، عموما واسط کاربری به عنوان بخشی از سیستم‌عامل در نظر گرفته می‌شود. در سیستم‌های بزرگ و چند کاربره مثل یونیکس و سیستم‌های شبیه یونیکس، واسط کاربری معمولاً به عنوان یک برنامه کاربردی که خارج از سیستم‌عامل اجرا می‌شود پیاده سازی می‌شود.

دلایل ایجاد سیستم‌عامل

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

وظایف سیستم‌عامل

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

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

به طور کلی، وظایف سیستم‌عامل شامل موارد زیر است:

  • استفاده بهینه تر از منابع و جلوگیری از به هدر رفتن آنها
  • تخصیص و آزاد سازی منابع
  • اداره صف‌ها و زمان بندی استفاده از منابع
  • حساب داری میزان استفاده از منابع
  • ایجاد امنیت
  • ایجاد، حذف و اداره فرایندها
  • ایجاد مکانیسم‌های ارتباط بین فرایندها و همگام سازی آن‌ها
  • مدیریت فایلها و پوشهها
  • مدیریت حافظههای اصلی و جانبی
  • برقراری امکان دسترسی چندتایی (Multiaccess) و اجرای هم روند (Concurrent) فرایندها
  • به اشتراک گذاری منابع (Resource Sharing)
  • تعیین راهکارهایی برای اداره بن بست (deadlock)ها
  • جلوگیری از شرایط رقابتی (Race Condition) و تداخل یا در هم قفل شدن (Interlock) فرایندها
  • جلوگیری از گرسنگی (Starvation)

سیستم‌عامل‌های فعلی

در سالهای اخیر رقابت بیشتر بین سیستم‌عامل‌های مایکروسافت ویندوز، اپل مک اواس و لینوکس جریان دارد که آماری که در ماه ژوییه ۲۰۱۱ توسط وب‌گاه W3Schools به ثبت رسیده حاکی از آن است که هم اکنون بیش از ۸۰ درصد کاربران اینترنت از سیستم‌عامل ویندوز استفاده می‌کنند.

آمار موجود که مربوط به اوت ۲۰۱۰ می‌باشد به شرح زیر است:

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

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

تاریخچه

در آغاز اولین کامپیوترها فاقد سیستم‌عامل بودند. در اوایل سال ۱۹۶۴ فروشندگان کامپیوترهای تجاری ابزار کاملا گسترده‌ای را برای تسهیل توسعه، زمانبندی، و اجرای کارها روی یک سیستم پردازش دسته‌ای فراهم می‌کردند. برای مثال کامپیوتر تولید شده توسط UNI VAC.

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

مین فریم‌ها

میکرو کامپیوترها

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

انواع سیستم‌عامل

سیستم‌عامل تک پردازنده

این نوع سیستم‌عامل‌ها، سیستم‌عامل‌های نسل چهارم (نسل فعلی) هستند که بر روی یک پردازنده اجرا می‌شوند.از قبیل XP,Vista,۹۸,Me که بیشتر محصول شرکت مایکرو سافت می‌باشند.

سیستم‌عامل شبکه‌ای

سیستم عاملهایی مثل ناول نت که بیشترین استفاده و ا مکانات این سیستم عامل برای شبکه می باشد

سیستم‌عامل توزیع شده

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

سیستم‌عامل بی‌درنگ

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

 

 

وقفه‌ها

دسته‌بندی وقفه‌ها

  • برنامه وقفه‌هایی که به دلیل بعضی شرایظ حاصل از یک دستورالعمل بروز می‌کند. شامل سریز شدن محاسباتی، تقسیم بر صفر، تلاش برای اجرای یک دستورالعمل ماشین غیر مجاز و مراجعه به آدرسی خارج از فضای مجاز کاربر.
  • زمان‌سنج وقفه‌ای که توسط زمان‌سنج داخلی تولید می‌شود. این وقفه به سیستم‌عامل اجازه می‌دهد، بعضی اعمال را به طور مرتب انجام دهد.
  • ورودی/خروجیوقفه‌هایی که به وسیله کنترل کننده ورودی/خروجی تولید می‌شود، تا کامل شدن طبیعی یک عمل یا شرایط خطا را اعلام نماید.
  • نقص سخت‌افزار وقفه‌هایی که با نقص سخت‌افزاری تولید می‌شود، مثل نقص برق یا خطای توازن حافظه.

مدیریت حافظه

سیستم عامل در رابطه با مدیریت حافظه دو عملیات اساسی را انجام خواهد داد:

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

سیستم عامل در ابتدا می‌بایست محدوده‌های حافظه مورد نیاز هر نوع نرم‌افزار و برنامه‌های خاص را فراهم نمایند. مثلاً فرض کنید سیستمی دارای یک مگابایت حافظه اصلی باشد. سیستم عامل کامپیوتر فرضی، نیازمند ۳۰۰ کیلو بایت حافظه است. سیستم عامل در بخش انتهائی حافظه مستقر و به همراه خود درایورهای مورد نیاز یه منظور کنترل سخت‌افزار را نیز مستقر خواهد کرد. درایورهای مورد نظر به ۲۰۰ کیلو بایت حافظه نیاز خواهند داشت. بنابراین پس از استقرار سیستم عامل بطور کامل در حافظه، ۵۰۰ کیلو بایت حافظه باقیمانده و از آن برای پردازش برنامه‌های کاربردی استفاده خواهد شد. زمانیکه برنامه‌های کاربردی در حافظه مستقر می‌گردند، سازماندهی آنها در حافظ بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سیستم عامل مشخص خواهد شد. در صورتی که اندازه هر بلاک ۲ کیلوبایت باشد، هر یک از برنامه‌های کاربردی که در حافظه مستقر می‌گردنند، تعداد زیادی از بلاک‌های فوق را (مضربی از دو خواهد بود)، بخود اختصاص خواهند داد. برنامه‌ها در بلاک هائی با طول ثابت مستقر می‌گردند. هر بلاک دارای محدوده‌های خاص خود بوده که توسط کلمات چهار و یا هشت بایت ایجاد خواهند شد. بلاک‌ها و محدو ده‌های فوق این اطمینان را بوجود خواهند آورد که برنامه‌ها در محدوده‌های متداخل مستقر نخواهند شد.

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

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

چند وظیفه‌ای

چندکارگی یا چندوظیفگی یا (به انگلیسی: multitasking)‏، انجام هم‌زمان دو یا چند کار و وظیفهٔ رایانه‌ای از سوی واحد پردازش مرکزی است.

مراحل کار بصورت زیر میباشد: ۱- پردازنده یک سیگنال وقفه دریافت مینماید. ۲- پس از دریافت سیگنال وقفه توسط پردازنده، پردازنده کاری را که در حال انجامش است را متوقف نموده و تا آن نقطه‌ای که آن کار را انجام داده ذخیره مینماید تا در زمان مقتضی به ادامه کار قبلی از همان نقطه توقف یافته بازگردد. ۳- پردازنده به سراغ دستگاه یا برنامه درخواست کننده وقفه رفته و دستور را برای پردازش فراخوانی مینماید. ۴- بعد از پردازش یک دستور از مرحله قبل، وقفه برای زمان‌بندی فراخوان میدهد. ۵-