برنامه نویسی

درک مفاهیم سیستم عامل – جامعه dev

سلام فلیکس با “mutex” چه می فهمید؟

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

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

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

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

در این مقاله شفافیت چند مفهوم سیستم عامل را ارائه خواهیم داد:

  • پشته
  • انبوه
  • نخ
  • مایه
  • برنامه ریزی

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

پشته

پشته یک ساختار داده آخر و اول (LIFO) است که نقش مهمی در سیستم های عامل دارد. به آن فکر کنید مانند پشته صفحات – اضافه کردن یا حذف موارد فقط در بالا اتفاق می افتد. در برنامه نویسی ، پشته تماس ، تماس های عملکردی ، ذخیره آدرس های بازگشت و متغیرهای محلی را حفظ می کند. هنگامی که یک عملکرد را صدا می کنید ، سیستم عامل یک قاب جدید را روی پشته فشار می دهد. وقتی عملکرد باز می گردد ، آن قاب خاموش می شود. بیش از حافظه پشته اختصاص یافته – که اغلب به دلیل بازگرداندن نامحدود – در یک سرریز پشته وجود دارد. پشته ها تخصیص حافظه سریع و قابل پیش بینی را ارائه می دهند و آنها را برای اجرای عملکرد ضروری می کند.

انبوه

انبارها توسط مدیران حافظه سیستم عامل برای تخصیص حافظه پویا استفاده می شوند. بر خلاف پشته ها ، پشته ها امکان تخصیص انعطاف پذیر و جابجایی را فراهم می کنند ، هرچند با هزینه کارآیی. وقتی یک برنامه تماس می گیرد malloc() یا new، حافظه از پشته اختصاص می یابد. با گذشت زمان ، تخصیص مکرر و جابجایی می تواند منجر به تکه تکه شدن شود و باعث می شود استفاده از حافظه کارآمدتر شود. برای مقابله با این ، سیستم عامل های مدرن از استراتژی هایی مانند تخصیص بادی و تخصیص دال استفاده می کنند. یک مسئله مشترک در حافظه پشته نشت حافظه است – وقتی حافظه اختصاص داده شده آزاد نمی شود ، به آرامی منابع سیستم را مصرف می کند ، که به طور بالقوه منجر به تخریب عملکرد یا تصادفات می شود.

نخ

یک موضوع کوچکترین واحد اعدام است که یک برنامه ریز سیستم عامل آن را مدیریت می کند. اگر یک فرآیند یک برنامه در حال اجرا باشد ، موضوعات مسیرهای اعدام مستقل در آن فرآیند هستند. از آنجا که موضوعات همان فضای حافظه را به اشتراک می گذارند اما دارای پشته های اجرای جداگانه هستند ، آنها اجرای همزمان را بدون سربار ایجاد فرآیندهای جدید امکان پذیر می کنند. OSES از موضوعات هسته (مدیریت شده توسط سیستم عامل) و موضوعات کاربر پشتیبانی می کند (توسط کتابخانه هایی مانند Pthreads اداره می شود). MultitHreading برای استفاده از پردازنده های مدرن چند هسته ای ، بهبود پاسخگویی و موازی بسیار مهم است. از آنجا که سوئیچینگ زمینه موضوع سبک تر از سوئیچینگ فرآیند است ، موضوعات یک روش کارآمد برای انجام همزمان با چندین کار است.

مایه

Mutex (کوتاه برای محرومیت متقابل) یک مکانیسم هماهنگ سازی است که تضمین می کند که فقط یک موضوع به یک منبع مشترک در یک زمان دسترسی پیدا می کند. مانند کلید حمام به آن فکر کنید – فقط یک نفر می تواند آن را به طور همزمان نگه دارد و دیگران باید صبر کنند. Mutexes از شرایط مسابقه جلوگیری می کند ، جایی که چندین موضوع که داده های مشترک را به طور همزمان اصلاح می کنند می توانند منجر به نتایج غیرقابل پیش بینی شوند. با این حال ، آنها باید با دقت مورد استفاده قرار گیرند-استفاده از Improper می تواند منجر به بن بست (جایی شود که موضوعات در انتظار یکدیگر هستند) یا وارونگی اولویت (جایی که یک موضوع با اولویت پایین دارای اولویت بالایی است). طراحی متفکر Mutex برای نوشتن برنامه های همزمان با موضوع مهم است.

برنامه ریزی

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

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

با تشکر از وقت شما !!!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا