سیستم عامل

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

مقالات چهارشنبه, 02 مهر 1399 محمدحسن خانی‌پور

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

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

چهار سیستم عامل مشهور


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

تاریخچه

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

اولین سیستم عامل‌ها در دهه 50 توسعه یافتند برای اینکه بتوانند وظایف متنوعی را به صورت متوالی انجام دهند و به این طریق روند انجام کار را سرعت ببخشند، اما سیستم عامل‌های بسیار ساده‌ای بودند که وظیفه‌ی از پیش مشخص شد‌ه‌ای را انجام می‌دادند، گروه تحقیقاتی شرکت جنرال موتورز اولین سیستم عامل را برای IBM 701 پیاده‌سازی کرد. سیستم عامل‌های مدرن در اوایل دهه 60 توسعه پیدا کردند و ویژگی‌های سخت‌افزاری، امکان استفاده از کتابخانه‌ها و وقفه‌ها نیز به آن‌ها اضافه شد. سیستم عامل‌ها به شکل امروزی برای بار نخست در سال 1985 با ترکیب یک رابط کاربری گرافیکی و MS-DOS به وجود آمدند.

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

فرمور (Firmware) چیست؟

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

مقایسه ی آرچ و دبیان

از طرف دیگر فرمور کدی کوچک و اغلب غیرقابل تغییر است که سخت‌افزار را کنترل می‌کند. فرمورها به تولید کنندگان این امکان را می‌دهند که از چیپ‌های چند منظوره و قابل برنامه‌ریزی به جای سخت‌افزارهایی با کاربرد مشخص، استفاده کنند که در کاهش هزینه‌ها کمک بسیاری خواهد کرد. فرمور به طور سنتی مستقیما در چیپ اسمبلی قابل برنامه‌ریزی، نوشته می‌شود ولی اغلب به زبان C نوشته شده و به زبان مناسب چیپ کامپایل می‌شود. فرمور معمولا در ROM جای دارد در حالی که سیستم عامل در حافظه دیسک سیستم (Hard Drive / SSD) قرار می‌گیرد.
فرمورها روز به روز پیشرفته‌تر شده و قابلیت‌های بیشتری از سیستم عامل را در بر می‌گیرند، برای مثال یک دوربین SLR امروزی را در نظر بگیرید. این دوربین‌ها از فرمور استفاده می‌کنند ولی وجود امکاناتی مثل رابط کاربری و حتی برنامه‌ریزی اولیه برای امکانات اضافی، فرمورها را به قلمرو سیستم عاملها نزدیک‌تر می‌کند.

آپدیت فرمور یک دوربین

کرنل

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

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

این جداسازی از دو اتفاق جلوگیری می‌کند، یکی تداخل داده‌های کاربر و داده‌های کرنل با یکدیگر و ایجاد بی‌ثباتی و دیگری از کار افتادن سیستم عامل در اثر خرابی برنامه‌ها.

کرنل

اجرای برنامه

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

  • ایجاد کردن یک پردازش جدید توسط کرنل که حافظه و دیگر منابع مورد نیاز را به برنامه اختصاص می‌دهد
  • نسبت دادن یک اولویت در سیستمهای چند وظیفه‌ای (multi-tasking)
  • بارگذاری کردن کد دودویی برنامه در حافظه

و سپس آغاز اجرای برنامه که بعد از آن برنامه با کاربر و منابع سخت‌افزاری تعامل می‌کند.

مدیریت حافظه

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

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

حافظه

حفاظت از حافظه به کرنل این قابلیت را می‌دهد که دسترسی به حافظه سیستم را محدود کند. روش‌های متفاوتی برای حفاظت از حافظه وجود دارند مانند تقسیم بندی حافظه (Memory Segmentation) و یا صفحه بندی (Paging) .
در هر دو این روش‌ها برای CPU مشخص می‌کنند که به چه برنامه در حال اجرایی باید اجازه‌ی استفاده از چه فضایی از حافظه داده شود.
هرگونه تلاش برای دستیابی به دیگر آدرس‌های حافظه باعث می‌شود که CPU سریعا کرنل را در راس امر کنترل حافظه قرار دهد. به این اتفاق نقض تقسیم‌بندی می‌گویند (Seg-V) و به دلیل اینکه این اتفاق غالبا نشان از این است که برنامه‌ای به درستی رفتار نمی‌کند، کرنل معمولا برنامه را خاتمه داده و مشکل را گزارش می‌کند.

حافظه مجازی

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

نگاهی به توزیع مانجارو (Manjaro)

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

در این صورت پروسسی که در روند اجرا شدن با مشکل مواجه شده و در حال حاضر در حال اجرا شدن نیست به صورت موقتی توسط کرنل از حافظه RAM به حافظه دیسک سیستم (Hard Drive / SSD) منتقل می‌شود و از این طریق حافظه مورد نیاز برای پروسس آماده اجرا فراهم می‌شود. به این عملیات "مبادله (Swapping)" گفته می‌شود.

حافظه مجازی برای برنامه‌نویس یا کاربر، حافظه‌ی RAM بسیار بیشتری نسبت به حافظه واقعی فراهم می‌کند.

Swapping

وقفه‌ها

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

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

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


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


ذخیره مقاله:

اشتراک گذاری:





مطالب پیشنهادی



              
                 انواع پردازنده
انواع پردازنده(CPU)

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


              
                 امنیت شبکه لایه بندی شده
امنیت شبکه لایه بندی شده (قسمت دوم)

پیش از این در مورد امنیت شبکه لایه بندی صحبت کردیم. در این مطلب موارد باقی مانده را ذکر میکنیم و با تکنولوژی‌های IDS و IPS آشنا خواهیم شد. اگر به شبکه علاقه مند هستید این مطلب را پیشنهاد می‌کنیم.


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

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


نظری برای نمایش وجود ندارد. شما اولین نظر باشید.


ارسال دیدگاه

برای ثبت دیدگاه باید ابتدا وارد شوید