هسته‌ی سیستم‌عامل چیست و چرا اهمیت زیادی دارد؟

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

خبر را برای من بخوان

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

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

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

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

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

تمام سیستم‌عامل‌های پیشرفته از چیزی موسوم به هسته بهره می‌برند. به عنوان مثال می‌توانیم به ویندوز، macOS، iOS و البته اندروید اشاره کنیم. در میان این سیستم‌عامل‌ها، تنها اندروید است که از هسته‌ی لینوکس بهره می‌برد. ویندوز مبتنی بر یک هسته‌ی اختصاصی است و سیستم‌عامل‌های اپل مانند macOS و iOS هم از یک هسته‌ی اختصاصی موسوم به داروین استفاده می‌کنند.

در این میان، تعدادی هسته‌های شبه یونیکس از طرف پروژه‌هایی مانند FreeBSD، OpenBSD و NetBSD هم وجود دارد. حتی باید به یک هسته‌ی کم‌قدرت از طرف شرکت Arm هم اشاره کنیم که با نام mbed OS ارائه شده است.

هسته‌ی لینوکس یک نرم‌افزار بسیار پیچیده محسوب می‌شود و شامل میلیون‌ها خط کد است. در این هسته کدهای لازم برای پشتیبانی از درایورهای مختلف و همچنین معماری‌های گوناگون مانند ARM، x86، RISC-V و دیگر موارد دیده می‌شود. زمانی که این هسته برای یک گجت خاص (مثلا گوشی) اماده می‌شود، بخش‌هایی از کدهای آن مورد استفاده قرار نمی‌گیرد اما در نهایت حتی اگر این بخش‌ها هم حذف شوند، باز هم با نرم‌افزار بسیار پیچیده‌ای روبرو می‌شوید.

ریزهسته در برابر هسته‌ی یکپارچه

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

در سال ۱۹۹۲ که لینوکس تازه متولد شده بود، بین لینوس توروالدز و پروفسور اندرو تننبام (که چندین کتاب مشهور در زمینه‌ی طراحی سیستم‌عامل و شبکه نوشته)، بحث‌های متعددی در مورد مزایا و معایب استفاده از هسته‌ی یکپارچه و ریزهسته‌ها شکل گرفت. آقای «تننبام» هسته‌ی یکپارچه را ترجیح می‌داد ولی در آن دوران «توروالدز» مشغول نوشتن کدهای هسته‌ی یکپارچه بود. در نهایت لینوکس هسته‌ی یکپارچه‌ی خود را حفظ کرد و اگر به استفاده از سیستم‌عامل‌های مبتنی بر ریزهسته‌ها علاقه دارید، می‌توانید به Minix 3 نگاهی بیندازید.

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

اندروید چگونه از لینوکس استفاده می‌کند؟

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

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

اندروید همچنین با افزودن برخی ویژگی‌های خاص به هسته‌ی لینوکس، آن را برای گوشی‌های هوشمند مناسب‌تر کرده است. گوگل با اندروید ۸ از پروژه‌ی Treble رونمایی کرد که با ماژولار شدن بخش‌های مختلف اندروید، شرکت‌های سازنده بدون نیاز به دست زدن به هسته‌ی اصلی می‌توانند مشخصه‌های مختلفی را توسعه دهند. به لطف همین مشخصه، شرکت‌ها برای انتشار آپدیت‌های نرم‌افزاری با چالش‌های کمتری روبرو می‌شوند.

سازندگان گوشی‌ها چگونه هسته‌ی سیستم‌عامل را تغییر می‌دهند؟

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

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

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

اندروید و آینده‌ی استفاده از هسته‌ی سیستم‌عامل لینوکس

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

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

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