موضوع مقاله: سیستم‌عامل ابررایانه | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سیستم‌عامل ابررایانه | مقدمه: از اواخر قرن بیستم، به دلیل تغییرات اساسی در معماری ابر رایانه، سیستم‌های عامل ابر رایانه دچار تغییرات اساسی شده‌اند. | ## بخش 1: سیستم‌عامل ابررایانه | با وجود اینکه سیستم عامل‌های اولیه برای دستیابی به سرعت برای هر ابر رایانه به‌طور اختصاصی ایجاد می‌شدند، به مرور روند از سیستم عامل‌های داخلی خارج و به سمت نوعی از لینوکسنزدیک شده‌است که همه ابر رایانه‌های موجود در لیست TOP500 را در نوامبر ۲۰۱۷ اجرا کند. با توجه به اینکه ابررایانه‌های موازی و گسترده مدرن معمولاً با استفاده از چندین نوع گره، محاسبات را از سایر سرویس‌ها جدا می‌کنند، آنها معمولاً سیستم عامل‌های مختلفی را روی گره‌های مختلف اجرا می‌کنند. برای مثال از یک هسته سبک و کوچک و کارآمد مانند هسته گره محاسبه (CNK) یا گره محاسبات Linux (CNL) در گره‌های محاسبه، همچنین در یک سیستم بزرگتر مانند مشتقات لینوکس در سرور و گره‌های ورودی / خروجی (I / O) استفاده می‌کنند. اگرچه اکثر ابر رایانه‌های مدرن از سیستم عامل لینوکس استفاده می‌کنند، هر سازنده تغییرات خاص خود را در مشتقات لینوکس مورد استفاده خود ایجاد کرده‌است و هیچ استاندارد صنعتی وجود ندارد، بخشی به این دلیل است که تفاوت در ساختارهای سخت‌افزاری مستلزم تغییراتی برای بهینه‌سازی سیستم عامل به هر طراحی سخت‌افزاری می‌باشد. متن و مروری کلی در روزهای اولیه ابر رایانش، مفاهیم اساسی معماری به سرعت در حال پیشرفت بودند و نرم‌افزارهای سیستمی مجبور بودند نوآوری‌های سخت‌افزاری را دنبال کند چرا که معمولاً به سرعت تغییر می‌کردند. در سیستم‌های اولیه، سیستم عامل‌ها متناسب با هر ابر رایانه ای طراحی می‌شدند تا سرعت خود را بدست آورند، اما در توسعه آنها، چالش‌های کیفیت نرم‌افزار در بسیاری از موارد هزینه و پیچیدگی توسعه نرم‌افزاری سیستم به همان اندازه که مسئله سخت‌افزاری، جدی ظاهر شدند. اولین موج تغییرات سیستم عامل در اواسط دهه ۱۹۸۰ اتفاق افتاد، زیرا سیستم عامل‌های خاص فروشندگان به نفع یونیکس کنار گذاشته شدند. در اوایل دهه ۱۹۹۰، تغییرات عمده ای در نرم‌افزار سیستم ابر رایانه در حال رخ دادن بود.در این زمان، استفاده روزافزون از یونیکس تغییراتی در نحوه مشاهده نرم‌افزار سیستم ایجاد کرده بود. استفاده از یک زبان سطح بالا (C) برای پیاده‌سازی سیستم عامل، و اتکا به رابط‌های استاندارد در تضاد با رویکردهای زبان اسمبلی گذشته بود.همان‌طور که فروشندگان سخت‌افزار یونیکس را با سیستم‌های خود تطبیق می‌دادند، ویژگی‌های جدید و مفیدی نیز به یونیکس اضافه می‌شد، به عنوان مثال سیستم‌های فایلی سریع و برنامه‌ریزهای فرایند قابل تنظیم. با این حال، تمام شرکت‌هایی که یونیکس را اقتباس کردند، به جای همکاری در یک استاندارد صنعتی برای ایجاد «یونیکس برای ابر رایانه ها»، تغییرات منحصر به فردی در آن ایجاد کردند. | ## بخش 2: سیستم‌عامل ابررایانه | این امر تا حدی به این دلیل بود که تفاوت در معماری آنها این تغییرات را برای بهینه‌سازی یونیکس برای هر معماری ایجاب می‌کرد. بنابراین با پایدار شدن سیستم عامل‌های عمومی منظوره، ابررایانه‌ها شروع به قرض گرفتن و تطبیق کدهای سیستمی مهم از آنها کردند و به مجموعه ای از توابع ثانویه که همراه آنها بود، اعتماد کردند و نیازی به اختراع مجدد چرخ نبودند.با این حال، در همان زمان اندازه کد برای سیستم عامل‌های هدف عمومی به سرعت در حال رشد بود. زمانی که کد مبتنی بر یونیکس به ۵۰۰۰۰۰ خط رسیده بود، نگهداری و استفاده از آن یک چالش بود. این منجر به حرکت به استفاده از ریز هسته‌هایی شد که از حداقل عملکردهای سیستم عامل استفاده می‌کردند. هنگامی که ابر رایانه‌ها انواع مختلف گره را توسعه می‌دهند، به عنوان مثال محاسبه گره‌ها در مقابل گره‌های ورودی / خروجی، جداسازی سیستم عامل به اجزای جداگانه ضروری شد؛ بنابراین ابررایانه‌های مدرن معمولاً سیستم عامل‌های مختلفی را روی گره‌های مختلف اجرا می‌کنند، مثلاً از یک هسته کوچک و کارآمد مانند CNK یا CNL در گره‌های محاسباتی استفاده می‌کنند، اما یک سیستم بزرگتر مانند مشتقات لینوکس در سرورها و گره‌های ورودی / خروجی دارند. همان‌طور که از رشد هزینه برای توسعه نرم‌افزار در Cray تا برابری با هزینه سخت‌افزاری آن در دهه ۱۹۸۰ مشهود است، در توسعه ابر رایانه‌ها، به زودی افزایش هزینه‌های نرم‌افزار غالب شد. دروس آموخته شده از توسعه نرم‌افزار سیستم ETA شامل سطح بالایی از خطر مرتبط با توسعه یک سیستم عامل جدید فوق رایانه و مزایای استفاده از یونیکس با پایگاه گسترده کتابخانه‌های نرم‌افزار سیستم است. در اواسط دهه ۱۹۹۰، علی‌رغم سرمایه‌گذاری موجود در سیستم عامل‌های قدیمی، روند استفاده از سیستم‌های مبتنی بر یونیکس بود که استفاده از رابط‌های گرافیکی کاربر تعاملی (GUI) را برای محاسبات علمی در چندین سیستم عامل تسهیل کرد. حرکت به سمت سیستم عامل کالایی مخالفانی داشت که سرعت و تمرکز توسعه لینوکس را به عنوان مانع اصلی در برابر پذیرش دانستند. همان‌طور که یکی از نویسندگان نوشت: «به احتمال زیاد سرعت Linux گرفته خواهد شد، اما اکنون سیستم‌های مقیاس بزرگی داریم». | ## بخش 3: سیستم‌عامل ابررایانه | با این وجود، این روند همچنان در حال شتاب گرفتن بود و تا سال ۲۰۰۵، تقریباً همه ابر رایانه‌ها از برخی سیستم عامل‌های یونیکس مانند استفاده می‌کردند. با پایان قرن بیستم، برآورد می‌شد که لینوکس بالاترین سهم از حوزه ابر رایانه را داشته باشد. CNK یک هسته سبک است که روی هر گره اجرا می‌شود و از یک برنامه کاربردی برای یک کاربر در آن گره پشتیبانی می‌کند. بخاطر کارایی بهینه، طراحی CNK ساده و حداقلی حفظ شد، با حافظه فیزیکی به صورت ایستا نگاشت می‌شد و CNK به برنامه‌ریزی یا تغییر زمینه نه نیاز داشت و نه آن را فراهم سازی می‌کرد. CNK حتی فایل‌های ورودی / خروجی را بر روی گره محاسبه پیاده‌سازی نمی‌کند، بلکه این پرونده را به گره‌های اختصاصی ورودی / خروجی اختصاص می‌دهد. با این حال، با توجه به اینکه در گره‌های محاسبه چندگانه Blue-Gene یک گره ورودی / خروجی واحد به اشتراک گذاشته می‌شود، سیستم عامل گره ورودی/خروجی نیاز به چند وظیفه دارد، از این رو سیستم عامل مبتنی بر Linux انتخاب می‌شود. تنظیم برنامه‌ریزی کار و سیستم عامل در پیکربندی‌های مختلف یک ابر رایانه ضروری است. یک زمانبند کاری موازی معمولی دارای یک برنامه‌ریز اصلی است که به تعدادی از برنامه ریزان زیرمجموعه خود دستور می‌دهد که کارهای موازی را راه اندازی، نظارت و کنترل کنند، و به‌طور دوره ای گزارشاتی را دربارهٔ وضعیت پیشرفت شغل از آنها دریافت می‌کند. از سوی دیگر، برنامه‌ریز IBM در ابر رایانه‌های Blue Gene با اختصاص دادن وظایفی از همان برنامه به یک یا چند بخش میانی از یک گروه گره ۸*۸*۸، با بهره‌گیری از مکان و به حداقل رساندن مشاجره شبکه انجام می‌شود. | ## جمع‌بندی | Slurm منبع باز، مبتنی بر Linux، بسیار مقیاس پذیر است و می‌تواند هزاران گره را در یک خوشه رایانه با توان پایدار بیش از ۱۰۰۰۰۰ کار در ساعت مدیریت کند.