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

در این مقاله، به بررسی مفاهیم مختلف سیستم عامل، تاریخچه آن، انواع مختلف سیستم های چندپردازه ای، شبکه ای و توزیع شده، سیستم های عامل بلادرنگ و تعبیه شده، فرایندها، فایل ها، فراخوان های سیستمی و مانند آن خواهیم پرداخت.

سیستم عامل چیست؟

سیستم عامل نرم افزاری است که تمامی عملیات اساسی کامپیوتر را مدیریت می کند. این نرم افزار به کاربران امکان می دهد تا به شکلی کاربرپسند و مؤثر با سیستم تعامل کنند و بدون آن کاربران نمی توانند به راحتی از سخت افزار و نرم افزار سیستم استفاده کنند و برنامه ها نیز قادر به اجرا نخواهند بود. نرم افزارها در انواع مختلفی مانند دسکتاپ، سرور، موبایل و... وجود دارند.

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

در عوض نسخه های سرور مانند Windows Server و Linux Server به گونه ای طراحی شده اند که توانایی مدیریت بارهای کاری سنگین و ارائه خدمات شبکه ای و پایگاه داده ها را دارند. به طور کلی، نرم افزارهای مدیریتی نقش حیاتی در عملکرد و بهره وری کامپیوترها و دستگاه های الکترونیکی ایفا می کنند و بستری مناسب برای اجرای برنامه ها و مدیریت منابع فراهم می سازند.

تاریخچه ابداع و ساخت سیستم های عامل

تاریخچه سیستم های عامل به دهه های اولیه کامپیوترهای دیجیتال برمی گردد. اولین سیستم های عامل در دهه 1950 برای مدیریت وظایف پایه ای ماشین های بزرگ طراحی شدند. این سیستم ها بسیار ساده بودند و وظایفی مانند بارگذاری برنامه ها و مدیریت ورودی/خروجی را انجام می دادند. در این دوره، این سیستم ها عمدتاً به صورت دسته ای یا batch processing کار می کردند، به این معنا که برنامه ها به صورت نوبتی و بدون تعامل مستقیم با کاربر اجرا می شدند.

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

در دهه های 1980 و 1990، سیستم های عامل شخصی مانند MS-DOS و ویندوز برای کامپیوترهای خانگی توسعه یافتند. این دوره شاهد معرفی رابط های کاربری گرافیکی یا GUI بود که تعامل با کامپیوترها را برای کاربران آسان تر کرد. در همین زمان، سیستم های عامل شبکه ای و توزیع شده نیز توسعه یافتند که امکان ارتباط و اشتراک منابع بین کامپیوترهای مختلف را فراهم می کردند. با پیشرفت اینترنت و شبکه های کامپیوتری، سیستم های عامل نیز به سمت پشتیبانی بهتر از شبکه ها و ارتباطات توزیع شده حرکت کردند.

آشنایی با مفاهیم سیستم عامل

سیستم های چندپردازه ای

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

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

سیستم های شبکه ای

سیستم های عامل شبکه ای یا Network Operating Systems برای مدیریت و کنترل شبکه های کامپیوتری طراحی شده اند. این سیستم ها امکاناتی مانند اشتراک گذاری فایل، چاپگرها و منابع شبکه ای را فراهم می کنند و به کاربران امکان می دهند تا از طریق شبکه به منابع دسترسی داشته باشند.

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

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

سیستم های توزیع شده یا Distributed Systems نوع پیشرفته تری از سیستم های شبکه ای هستند که در آن ها منابع و پردازش ها به صورت توزیع شده در چندین کامپیوتر مستقل انجام می شود. این سیستم ها از طریق همکاری بین چندین کامپیوتر، کارایی و قابلیت اطمینان بالاتری را فراهم می کنند.

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

سیستم های بلادرنگ

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

به عنوان مثال، در سیستم های کنترلی هواپیما یا تجهیزات پزشکی، تأخیر در پاسخگویی می تواند نتایج فاجعه باری داشته باشد؛ بنابراین، این سیستم ها باید قادر باشند تا در زمان مشخص و با دقت بالا به وقایع پاسخ دهند.

سیستم های تعبیه شده

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

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

فرایندهای سیستم عامل

فرایند یا Process به برنامه ای در حال اجرا گفته می شود. هر فرایند شامل یک کد اجرایی، داده ها و منابع مورد نیاز خود است. سیستم وظیفه مدیریت فرایندها را برعهده دارد و از طریق زمان بندی پردازنده، حافظه و منابع دیگر، عملکرد بهینه سیستم را تضمین می کند.

زمانی که یک برنامه اجرا می شود، سیستم عامل آن را به یک یا چند فرایند تبدیل می کند که هر کدام دارای فضای آدرس مجزا و مجموعه ای از منابع مانند فایل ها و اتصالات شبکه است. این تفکیک کمک می کند تا سیستم بتواند به صورت مؤثرتر از منابع استفاده کرده و پایداری آن را حفظ کند.

مدیریت فرایندها

مدیریت فرایندها شامل ایجاد، پایان دادن، تعلیق و از سرگیری فرایندها می شود. همچنین، سیستم عامل باید به مسائل همزمانی و تداخل فرایندها رسیدگی کند تا از برخوردها و مشکلات احتمالی جلوگیری کند. برای این منظور، این ساختار از مکانیزم هایی مانند قفل ها یا Locks ، نشانگرها یا Semaphores و مانیتورها یا Monitors استفاده می کند.

این مکانیزم ها به سیستم امکان می دهند تا دسترسی همزمان به منابع مشترک را کنترل کند و از بروز شرایطی مانند بن بست یا Deadlock و رقابت یا Race Condition جلوگیری نماید. فرایندها می توانند در حالات مختلفی مانند در حال اجرا یا Running ، آماده یا Ready یا در انتظار یا Waiting باشند.

سیستم عامل از الگوریتم های زمان بندی مختلفی مانند زمان بندی نوبتی یا Round-Robin ، اولویت محور یا Priority Scheduling و چندسطحی صف ها یا Multilevel Queue Scheduling برای مدیریت اجرای فرایندها استفاده می کند. این الگوریتم ها تعیین می کنند که کدام فرایند در هر لحظه به پردازنده دسترسی داشته باشد.

هدف اصلی این الگوریتم ها افزایش بهره وری، کاهش زمان پاسخ دهی و بهبود تجربه کاربری است. به طور کلی، مدیریت فرایندها یکی از وظایف حیاتی سیستم است که تأثیر مستقیمی بر کارایی و پایداری سیستم دارد.

فایل ها در سیستم عامل

فایل ها ساختارهایی هستند که برای ذخیره و سازماندهی داده ها استفاده می شوند. سیستم عامل ها مسئول مدیریت فایل ها و سیستم فایل ها هستند. سیستم فایل ها مکانیزم هایی برای ذخیره، بازیابی و مدیریت داده ها بر روی دستگاه های ذخیره سازی فراهم می کنند.

هر فایل می تواند شامل اطلاعاتی مانند متن، تصویر، صوت یا برنامه های اجرایی باشد و سیستم به کاربران امکان می دهد تا این فایل ها را ایجاد، ویرایش و حذف کنند. علاوه بر این، ساختارهای دایرکتوری یا Directories را فراهم می کنند که به سازماندهی بهتر فایل ها کمک می کند و دسترسی به آن ها را آسان تر می سازد.

سیستم های عامل مختلف از سیستم فایل های مختلفی پشتیبانی می کنند. به عنوان مثال، ویندوز از سیستم فایل های FAT32 و NTFS استفاده می کند، در حالی که لینوکس از سیستم فایل های ext3، ext4 و Btrfs پشتیبانی می کند. هر یک از این سیستم فایل ها ویژگی ها و مزایای خاص خود را دارند.

مدیریت فایل ها شامل وظایفی مانند خواندن، نوشتن، باز کردن و بستن فایل ها است. سیستم عامل ها باید به نحوی این وظایف را مدیریت کنند که دسترسی به فایل ها سریع و مطمئن باشد. این امر شامل استفاده از روش های بافرینگ یا Buffering و کشینگ یا Caching برای بهبود عملکرد و کاهش زمان دسترسی به داده ها است.

همچنین، این نرم افزارهای مهم باید از امنیت فایل ها نیز محافظت کنند و امکاناتی مانند مجوزهای دسترسی یا Permissions و رمزگذاری یا Encryption را فراهم کنند تا تنها کاربران مجاز بتوانند به داده ها دسترسی داشته باشند. به طور کلی، مدیریت فایل ها یکی از مهم ترین وظایف این ساختار محسوب می شود و تأثیر مستقیمی بر کارایی و امنیت سیستم دارد.

فراخوان های سیستمی

فراخوان سیستمی یا System Call یک واسط برنامه نویسی است که از طریق آن برنامه های کاربردی می توانند خدماتی را از سیستم عامل درخواست کنند. از طریق فراخوان های سیستمی، برنامه های کاربردی می توانند به قدرت و امکانات سیستم دست پیدا کنند و کارایی و عملکرد خود را بهبود بخشند. فراخوان های سیستمی در واقع نقطه ای هستند که در آن برنامه های کاربردی به هسته سیستم عامل دسترسی پیدا می کنند.

این فراخوان ها معمولاً شامل گذر از حالت کاربر به حالت هسته و بالعکس هستند که نیاز به مدیریت دقیق برای حفظ امنیت و پایداری سیستم دارد. هر فراخوان سیستمی که توسط یک برنامه کاربردی انجام می شود، به دستورهای مناسبی ترجمه می شود که توسط هسته اجرا شده و عملیات مورد نیاز را انجام می دهد. این فراخوان ها از اهمیت بالایی برخوردارند و تأثیر زیادی بر عملکرد و کارایی دارند.

ساختار سیستم عامل

سیستم عامل ها متنوع ترین اجزای یک کامپیوتر هستند و می توانند ساختارهای مختلفی داشته باشند که هر یک از این ساختارها مزایا و معایب خاص خود را دارند. ساختارهای متداول شامل سیستم های تک پایه یا Monolithic ، سیستم های ریزهسته ای یا Microkernel و سیستم های لایه ای یا Layered هستند که در ادامه هرکدام از آنها را معرفی می کنیم.

سیستم های تک پایه

در سیستم های تک پایه، همه اجزا در یک فضای حافظه مشترک اجرا می شوند که این موضوع باعث عملکرد بالایی در کارکرد سیستم می شود، اما ممکن است امنیت و پایداری سیستم را به خطر بیندازد.

سیستم های ریزهسته ای

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

سیستم های لایه ای

در سیستم های لایه ای، سیستم عامل به لایه های مجزا تقسیم می شود و هر لایه وظایف مشخصی را برعهده دارد که به لایه های پایین تر خدمات ارائه می دهد. این ساختار باعث جداشدگی و راحتی در توسعه و تغییرات سیستم عامل می شود.

آشنایی با مفاهیم سیستم عامل

جمع بندی

سیستم عامل ها از ابتدای ظهورشان تا امروز تحولات مهمی را پشت سر گذاشته اند و نقش مهمی در کارایی و عملکرد کامپیوترها داشته اند. با پیشرفت روزافزون تکنولوژی و تغییرات نیازهای کاربران، توسعه و بهبود این نرم افزارها نیز امری حیاتی است.

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

برای خرید منابع کارشناسی ارشد کامپیوتر می توانید به کتاب نوین مراجعه کنید.

منابع

سیستم عامل با رویکرد حل مسائل پارس رسانه

کتاب نوین