سیستم عامل چیست و چه وظایفی دارد؟
سیستم عامل (OS) برنامه ای است که پس از بارگذاری اولیه توسط یک برنامه دیگر به نام بوت، تمام برنامه های کاربردی دیگر را در رایانه مدیریت می کند. برنامه های کاربردی، با ارسال درخواست از طریق یک رابط کاربری تعریف شده (API) از سیستم عامل خدمات دریافت می کنند. علاوه بر این، کاربران می توانند به طور مستقیم با سیستم عامل از طریق یک رابط کاربری، مانند یک رابط خط فرمان (CLI) یا یک رابط گرافیکی (GUI) با سیستم عامل تعامل داشته باشند.
چرا از یک سیستم عامل استفاده می کنیم؟
یک سیستم عامل مزایای زیادی را برای نرم افزارهای دیگر روی کامپیوتر و همچنین برای برنامه نویسان و توسعه دهندگان نرم افزار به ارمغان می آورد. بدون سیستم عامل، هر برنامه کاربردی باید رابط کاربری خود و همچنین کد جامع مورد نیاز برای مدیریت تمام عملکردهای سطح پایین کامپیوتر را خود پیاده سازی کند، خدماتی مانند ذخیره سازی یا بازیابی فایل ها روی هارد دیسک، رابط های شبکه و غیره... با توجه به مجموعه وسیعی از سخت افزارهای زیربنایی موجود، ، سیستم عامل ها سبب می شوند به میزان زیادی اندازه هر برنامه کاربردی را کاهش یابد و توسعه نرم افزارها در مدت زمان بسیار کمتری فراهم شود.
در عوض، بسیاری از کارهای رایج، مانند ارسال یک بسته اطلاعات از طریق شبکه یا نمایش متن روی یک دستگاه خروجی استاندارد، مانند نمایشگر یا مانیتور، می توانند به نرم افزارهای سیستمی که به عنوان واسطه بین برنامه ها، سیستم عامل و سخت افزار عمل می کند، محول شوند. نرم افزار سیستم روشی ثابت و قابل تکرار برای برنامه ها برای تعامل با سخت افزار بدون نیاز به دانستن جزئیات در مورد سخت افزار را فراهم می کند.
تا زمانی که هر برنامه به منابع و خدمات یکسانی دسترسی داشته باشد، نرم افزار سیستم عامل می تواند تقریباً هر تعداد از برنامه ها را سرویس دهی کند. این امر زمان و کدنویسی مورد نیاز برای توسعه و اشکال زدایی از یک برنامه را کاهش چشمگیری خواهد داد، و تضمین می کند که برنامه ها می توانند سخت افزار سیستم را از طریق یک رابط مشترک و کاملاً امتحان شده و استاندارد، کنترل، پیکربندی و مدیریت کنند.
پس از نصب سیستم عامل، سیستم عامل به کتابخانه وسیعی از درایورهای دستگاه ها و سخت افزارهای شناسایی شده، اتکا خواهد کرد تا خدمات سیستم عاملی خود را با محیط سخت افزاری خاص تطبیق دهد. بنابراین، یک برنامه ممکن است بخواهد تا یک ارتباط مشترک با یک دستگاه ذخیره سازی برقرار کند، اما سیستم عامل آن ارتباط را ابتدا دریافت می کند و از طریق درایور مربوطه و تبدیل درخواست خدمات به زبان قابل فهم و دستوری سخت افزار، با سخت افزار مربوطه ارتباط برقرار می کند. امروزه، سیستم عامل ها، بستر جامعی را فراهم می کند که طیف وسیعی از سخت افزارها، از جمله پردازنده ها را شناسایی، پیکربندی و مدیریت می کند. دستگاه های حافظه و مدیریت حافظه؛ چیپست ها؛ ذخیره سازی؛ شبکه سازی؛ اتصالات پورت ها، نظیر آرایه گرافیک ویدیویی (VGA)، رابط چند رسانه ای با وضوح بالا (HDMI) و گذرگاه سریال جهانی (USB). و واسط های زیرسیستم، مانند Peripheral Component Interconnect Express (PCIe).
عملکردهای یک سیستم عامل
یک سیستم عامل سه قابلیت ضروری را ارائه می دهد: یک رابط کاربری از طریق CLI یا GUI ارائه می دهد. برنامه ها را راه اندازی و مدیریت می کند. و منابع سخت افزاری سیستم را شناسایی و در معرض آن برنامه ها قرار می دهد.
UI. هر سیستم عاملی به یک رابط کاربری نیاز دارد که کاربران و مدیران را قادر می سازد تا با سیستم عامل به منظور راه اندازی، پیکربندی و حتی عیب یابی سیستم عامل و سخت افزار زیربنایی آن تعامل داشته باشند. دو نوع اصلی رابط کاربری موجود است: CLI و GUI.
پنجره CLI یا حالت ترمینال، یک رابط مبتنی بر متن را فراهم میکند که در آن کاربران برای وارد کردن دستورات، پارامترها و آرگومانهای خاص مربوط به وظایف خاص، به صفحهکلید سنتی تکیه میکنند. رابط کاربری گرافیکی یا دسکتاپ، یک رابط بصری مبتنی بر نمادها را ارائه میکند که در آن کاربران به حرکاتی که توسط دستگاههای رابط انسانی، مانند پد لمسی، صفحهنمایش لمسی و دستگاههای ماوس ارائه میشوند، تکیه میکنند.
رابط کاربری گرافیکی اغلب توسط کاربران معمولی یا نهایی استفاده می شود که عمدتاً علاقه مند به دستکاری فایل ها و برنامه ها هستند، مانند دوبار کلیک کردن روی آیکون فایل ها برای باز کردن فایل در برنامه پیش فرض آن. CLI در بین کاربران پیشرفته و مدیران سیستم که باید یک سری دستورات بسیار دقیق و تکراری را به طور منظم انجام دهند، محبوب تر است، دستوراتی مانند ایجاد و اجرای اسکریپتها برای راهاندازی رایانههای شخصی جدید (PC) برای کاربران و پرسنل.
مدیریت برنامه ها
یک سیستم عامل راه اندازی و مدیریت هر برنامه را مدیریت می کند. سیستم عامل ها معمولا از اجرای همزمان چندین وظیفه به طور همزمان پشتیبانی می کنند، که مستلزم پشتیبانی از اشتراکگذاری زمانی چندین فرآیند (Process)، یا رشتهها (Thread)، پشتیبانی است تا وظایف مختلف بتوانند همزمان با هم در یک پردازنده اجرا شوند حتی در زمانی که تنها یک پروسسور در رایانه وجود دارد. مدیریت وقفههایی که برنامهها برای جلب توجه فوری پردازنده ایجاد میکنند، حصول اطمینان از وجود حافظه کافی برای اجرای برنامه ها و دادههای مربوط به آن بدون تداخل با سایر فرآیندها از جمله وظایف مدیریتی سیستم های عامل می باشد. انجام رسیدگی به خطاها بر برخی از موارد می تواند فرآیندهای یک برنامه را به پایان برساند و سبب شود تا سیستم عامل، برنامه مورد نظر را از حافظه اجرایی حذف کند. مدیریت حافظه نیز بدون ایجاد اختلال در سایر برنامه ها نیز از دیگر وظایف مهم سیستم عامل ها می باشد.
یک سیستم عامل همچنین میتواند از APIهایی پشتیبانی کند که برنامهها را قادر میسازد تا از عملکردهای سیستمعاملی و سختافزاری بدون نیاز به دانش برنامه نویسی در سطح سخت افزاری، استفاده کنند. به عنوان مثال، یک API ویندوز می تواند برنامه ها را قادر سازد که ورودی را از صفحه کلید یا ماوس دریافت کنند. ایجاد عناصر رابط کاربری گرافیکی، مانند پنجره ها و دکمه های محاوره ای. خواندن و نوشتن فایل ها در یک دستگاه ذخیره سازی و دیگر موارد نیز می تواند توسط استفاده از سیستم عامل ها فراهم شود. برنامه ها تقریباً همیشه برای استفاده از سیستم عاملی طراحی شده اند که برنامه در نظر دارد روی آن اجرا شود.
علاوه بر این، یک سیستم عامل می تواند خدمات زیر را برای برنامه های کاربردی ارائه دهد:
- در یک سیستم عامل چند وظیفهای، که در آن چندین برنامه میتوانند همزمان اجرا شوند، سیستم عامل تعیین میکند که کدام برنامهها باید به چه ترتیبی اجرا شوند و قبل از دادن نوبت به برنامه دیگر، چه مدت زمان باید برای هر برنامه در نظر گرفته شود.
- کنترل دستگاه های ورودی خروجی نظیر پورت های سریال، دستگاه های چاپ، صفحه نمایشگر، دیسک ذخیره سازی اطلاعات و غیره...
- دریافت پیام ها از برنامه ها یا سخت افزارها و همچنین ارسال پیام ها در صورت نیاز به برنامه ها و سخت افزارها
- میتواند مدیریت کارهای دستهای نظیر ارسال فرامین به دستگاه های چاپ نظیر تخلیه صف پرینتر یا موارد دیگر را انجام دهد تا برنامه های شروع کننده استفاده از این خدمات، از انجام این کارها آزاد شوند.
- در رایانههایی که میتوانند پردازش موازی ارائه دهند، یک سیستم عامل میتواند نحوه تقسیم برنامه را طوری مدیریت کند که همزمان روی بیش از یک پردازنده اجرا شود.
همه پلتفرمهای اصلی کامپیوتر (سختافزار و نرمافزار) به یک سیستم عامل نیاز دارند، و سیستم عامل ها باید با ویژگیهای مختلف توسعه داده شوند تا نیازهای خاص مختلف و مورد نیاز را برآورده کنند.
مدیریت دستگاه ها
یک سیستم عامل مسئول شناسایی، پیکربندی و ارائه برنامه های کاربردی با دسترسی مشترک به دستگاه های سخت افزاری کامپیوتری است. همانطور که سیستم عامل سخت افزار را تشخیص می دهد و شناسایی می کند، سیستم عامل درایورهای دستگاه مربوطه را نصب می کند که سیستم عامل و برنامه های در حال اجرا بر روی سیستم عامل را قادر می سازد بدون هیچ دانش خاصی از سخت افزار یا دستگاه ها، از آن دستگاه ها استفاده کنند.
یک سیستم عامل مسئول شناسایی چاپگر صحیح و نصب درایورهای مناسب برای چاپگر است، به طوری که یک برنامه کاربردی فقط نیاز به تماس با چاپگر داشته باشند بدون آنکه نیازی به استفاده از کدها یا دستورات خاص آن چاپگر باشد. این نیز از وظایف سیستم های عامل است. همین موضوع برای دستگاه های دیگر مانند پورت های USB نیز صدق می کند. پورت های شبکه؛ دستگاه های گرافیکی، مانند واحدهای پردازش گرافیکی (GPU)؛ چیپست های مادربرد؛ و دستگاه های ذخیره سازی، مانند آداپتورهای دیسک SCSI (SAS) و دیسک هایی که با یک سیستم فایل مناسب فرمت شده اند نیز توسط سیستم عامل، خلاصه و ساده سازی می شوند به طوری که نیازی به دانستن اطلاعات سخت افزاری، برای ارتباط با آن ها نمی باشد و این تسهیلات ، از طریق سیستم عامل ها فراهم می شود.
سیستم عامل دستگاه های فیزیکی و منطقی را برای سرویس شناسایی و پیکربندی می کند و معمولاً آنها را در یک ساختار استاندارد مانند رجیستری ویندوز ثبت می کند. سازندگان دستگاهها بهطور دورهای درایورها را وصله و بهروزرسانی میکنند، و سیستمعامل باید آنها را به طور دور ای به روز رسانی کند تا بهترین عملکرد و امنیت دستگاه را تضمین کند. هنگامی که دستگاه ها جایگزین می شوند، سیستم عامل همچنین درایورهای جدید را نصب و پیکربندی می کند.
انواع و نمونه های سیستم عامل
سیستم عامل ها در همه جا وجود دارند و طیف وسیعی از سخت افزار و نیازهای کاربران را برآورده می کنند.
سیستم عامل همه منظوره
یک سیستم عامل همه منظوره برای اجرای برنامههای متعدد بر روی مجموعهای از سختافزارها، طراحی شده است و کاربران را قادر میسازد تا یک یا چند برنامه یا کار را به طور همزمان اجرا کنند. یک سیستم عامل همه منظوره را می توان بر روی بسیاری از مدل های مختلف دسکتاپ و لپ تاپ نصب کرد و برنامه ها را از سیستم های حسابداری گرفته تا پایگاه های داده، مرورگرهای وب و بازی ها اجرا کرد. سیستم عامل های همه منظوره معمولاً بر روی فرآیند (رشته) و مدیریت سخت افزار تمرکز میکنند تا اطمینان حاصل کنند که برنامهها میتوانند به طور قابل اعتمادی، همزمان بر روی سخت افزار اجرا شوند و سخت افزار موجود میان آن ها به خوبی به اشتراک گذاشته شود.
سیستم عامل های معمول دسکتاپ شامل موارد زیر هستند:
- ویندوز سیستم عامل پرچمدار شرکت مایکروسافت است که به یک استاندارد واقعی برای رایانه های خانگی و تجاری تبدیل شده است. سیستم عامل مبتنی بر رابط کاربری گرافیکی که در سال 1985 به وجود آمد، و از آن زمان تاکنون در نسخه های بسیاری منتشر شده است. ویندوز 95 اولین نسخه کاربر پسند از این سیستم عامل بود که استقبال فراوانی از آن شد.
- سیستم عامل مک سیستم عامل رایانه های شخصی و ایستگاه های کاری مکینتاش اپل است.
- یونیکس یک سیستم عامل چند کاربره است که برای انعطاف پذیری و سازگاری طراحی شده است. یونیکس که در ابتدا در دهه 1970 توسعه یافت، یکی از اولین سیستم عامل هایی بود که به زبان C نوشته شد.
- لینوکس یک سیستم عامل شبیه به یونیکس است که برای ارائه یک جایگزین رایگان یا کم هزینه به کاربران رایانه شخصی طراحی شده است. لینوکس به عنوان یک سیستم کارآمد و سریع شهرت دارد.
سیستم عامل های تلفن همراه
سیستم عامل های موبایل برای پاسخگویی به نیازهای منحصر به فرد دستگاه های سیار و ارتباط محور، مانند گوشی های هوشمند و تبلت ها طراحی شده اند. دستگاههای تلفن همراه معمولاً منابع محاسباتی محدودی را در مقایسه با رایانههای شخصی سنتی ارائه میدهند، و سیستم عامل باید از نظر اندازه و پیچیدگی کاهش یابد تا استفاده از منابع خود را بتواند به حداقل برساند، تا از منابع کافی برای یک یا چند برنامه در حال اجرا بر روی دستگاه اطمینان حاصل شود. سیستم عامل های موبایل نیاز دارند تا بر عملکرد صحیح، پاسخگویی به کاربر و توجه دقیق به وظایف مدیریت دادهها، مانند پشتیبانی از فایل های چند رسانه ای و مالتی مدیا تأکید کنند. اپل iOS و گوگل اندروید نمونه هایی از سیستم عامل های موبایل هستند.
سیستم عامل جاسازی شده
همه دستگاه های رایانه ای، همه منظوره نیستند. مجموعه عظیمی از دستگاههای اختصاصی - از جمله کنسول های بازی های دیجیتال خانگی، دستگاههای خودپردازها (ATM)، سیستمهای هواپیمایی، دستگاه های خودپرداز بانکی پوز (POS) و دستگاههای اینترنت اشیا (IoT) - شامل رایانههایی هستند که به یک سیستم عامل نیاز دارند. تفاوت اصلی در این است که این دستگاه های محاسباتی، تنها یک کار اصلی را انجام می دهند، بنابراین این سیستم عامل ها بسیار ضعیف هستند و تنها به عملکرد و انعطاف پذیری اختصاص داده شده بسنده می کنند.
این نوع از سیستم عامل ها باید به سرعت اجرا شوند، و تحت هیچ شرایطی نباید از کار بیفتند، و همه خطاها را با ظرافت مدیریت کنند تا در هر شرایطی به کار خود ادامه دهند. در بیشتر موارد، این سیستم عامل ها بر روی تراشه ای ارائه می شوند که در دستگاه واقعی گنجانده شده اند. برای مثال، یک دستگاه پزشکی که در تجهیزات پشتیبانی از زندگی بیمار استفاده می شود، از یک سیستم عامل تعبیه شده استفاده می کند که برای زنده نگه داشتن بیمار باید به طور قابل اعتمادی کار کند. لینوکس جاسازی شده ممکن است یکی از نمونه سیستم عامل هایی باشد که در این دستگاه ها جاسازی شده است.
سیستم عامل های شبکه
سیستم عامل شبکه (NOS) یکی دیگر از سیستم عامل های تخصصی است که برای تسهیل ارتباط بین دستگاه های فعال در یک شبکه محلی (LAN) طراحی شده است. یک NOS پشته ارتباطی مورد نیاز برای درک پروتکل های شبکه به منظور ایجاد، تبادل و تجزیه بسته های شبکه را فراهم می کند. امروزه، مفهوم NOS تخصصی تا حد زیادی منسوخ شده است زیرا سایر انواع سیستم عامل ها عمدتاً ارتباطات شبکه را اداره می کنند. به عنوان مثال، ویندوز 10 و ویندوز سرور 2019 دارای قابلیت های شبکه ای جامعی هستند. مفهوم NOS هنوز برای برخی از دستگاههای شبکه مانند روترها، سوئیچها و فایروالها استفاده میشود و سازندگان ممکن است از NOS های اختصاصی از جمله سیستم عامل Cisco Internetwork (IOS)، RouterOS و ZyNOS استفاده کنند.
سیستم عامل ریل تایم Real Time
هنگامی که دستگاهی باید با دنیای واقعی به طور دائم و ثابت و قابل تکرار تعامل داشته باشد، سازنده دستگاه ممکن است از یک سیستم عامل ریل تایم (RTOS) استفاده کند. به عنوان مثال، یک سیستم کنترل صنعتی ممکن است عملیات یک کارخانه یا نیروگاه گسترده را هدایت کند. چنین سیستم عامل هایی، سیگنالهایی را از حسگرهای بیشمار خط تولید یا کارخانه دریافت میکنند و همچنین سیگنالهایی را برای کارکرد دریچهها، محرکها، موتورها و دستگاههای بیشمار دیگر ارسال میکند. در این شرایط، سیستم کنترل صنعتی باید به سرعت و به طور قابل پیش بینی به تغییر شرایط دنیای واقعی واکنش نشان دهد - در غیر این صورت، ممکن است فاجعه رخ دهد. یک RTOS باید بدون بافر کردن، تأخیرهای پردازشی و سایر تأخیرها کار کند که در انواع دیگر سیستم عامل ها کاملاً قابل قبول است. دو نمونه از RTOS ها عبارتند از FreeRTOS و VxWorks.
تفاوت بین انواع سیستم عامل مطلق نیست و برخی از سیستم عامل ها می توانند ویژگی های سایرین را نیز داشته باشند. به عنوان مثال، سیستم عامل های همه منظوره به طور معمول شامل قابلیت های شبکه ای هستند که در یک NOS سنتی وجود دارد. به طور مشابه، یک سیستم عامل تعبیه شده معمولاً شامل ویژگی های یک RTOS است، در حالی که یک سیستم عامل تلفن همراه معمولاً می تواند برنامه های متعددی را به طور همزمان مانند سایر سیستم عامل های همه منظوره اجرا کند.