هسته سیستم عامل (kernel) چیست و چه اهمیتی دارد؟
به گزارش تایمر سرگرمی، اگر به طور اندکی با مفاهیم مربوط به نرم افزار گوشی یا کامپیوتر آشنا باشید، احتمالا با اصطلاح Kernel یا هسته سیستم عامل لینوکس روبه رو شده اید. اندروید هم از جمله سیستم عامل هایی است که از هسته لینوکس استفاده می کند. در حقیقت، این بخشی جدایی ناپذیر از گوشی های هوشمند اندرویدی است اما هسته سیستم عامل دقیقا چیست و چرا اهمیت زیادی دارد؟
در رابطه با نام لینوکس باید بگوییم که خالق این سیستم عامل یعنی لینوس توروالدز با ترکیب لینوس و یونیکس کلمه لینوکس را برای سیستم عامل متعلق به خانواده شبه یونیکس انتخاب کرده است. اما درباره کرنل یا هسته سیستم عامل چه می توان گفت؟ این هسته در کامپیوترها و دیگر گجت ها چه نقشی دارد؟ در ادامه به این موضوع می پردازیم.
به زبان بسیار ساده، هسته سیستم عامل بخش های مهم و کلیدی مانند پردازنده، حافظه سیستم، شبکه و دیگر چیزهای این چنینی را کنترل می کند. همچنین مسؤولیت مدیریت تمام فرایندها و وظایفی که در گوشی هوشمند در حال اجرا هستند، بر عهده دارد. این یعنی وقتی یک اپلیکیشن را باز می کنید، هسته آن وظیفه بارگذاری آن در حافظه، ایجاد پردازش های لازم و اجرای آن را بر عهده دارد. زمانی که اپلیکیشن به حافظه نیاز دارد، هسته سیستم عامل میزان لازم حافظه را به آن اختصاص می دهد.
درایور بخش هایی مانند بلوتوث هم در هسته واقع شده است. هنگامی که اپلیکیشن بسته می شود، هسته سیستم عامل حافظه و سایر منابع استفاده شده به وسیله آن را آزاد می کند. همان طور که می بینید، هسته سیستم عامل یک بخش اساسی برای نرم افزار محسوب می شود و نقش مهمی برای عملکرد گوشی ایفا می کند.
نگاهی دقیق تر به هسته سیستم عامل
تمام سیستم عامل های پیشرفته از چیزی موسوم به هسته بهره می برند. به عنوان مثال می توانیم به ویندوز، macOS، iOS و البته اندروید اشاره کنیم. در میان این سیستم عامل ها، تنها اندروید است که از هسته لینوکس بهره می برد. ویندوز مبتنی بر یک هسته اختصاصی است و سیستم عامل های اپل مانند macOS و iOS هم از یک هسته اختصاصی موسوم به داروین استفاده می کنند.
در این میان، تعدادی هسته های شبه یونیکس از طرف پروژه هایی مانند FreeBSD، OpenBSD و NetBSD هم وجود دارد. حتی باید به یک هسته کم قدرت از طرف شرکت Arm هم اشاره کنیم که با نام mbed OS ارائه شده است.
هسته لینوکس یک نرم افزار بسیار پیچیده محسوب می شود و شامل میلیون ها خط کد است. در این هسته کدهای لازم برای پشتیبانی از درایورهای مختلف و همچنین معماری های گوناگون مانند ARM، x86، RISC-V و دیگر چیزها دیده می شود. زمانی که این هسته برای یک گجت خاص (مثلا گوشی) آماده می شود، بخش هایی از کدهای آن استفاده نمی شود اما در نهایت حتی اگر این بخش ها هم حذف شوند، باز هم با نرم افزار بسیار پیچیده ای روبه رو می شوید.
ریزهسته در برابر هسته یکپارچه
مانند تمام سیستم های نرم افزاری پیشرفته، در رابطه با طراحی هسته سیستم عامل هم می توان از رویکردهای مختلفی استفاده کرد. به عنوان مثال هسته لینوکس یک هسته یکپارچه محسوب می شود. این یعنی هسته فوق یک برنامه است که از یک فضای معین در حافظه استفاده می کند. در مقابل این رویکرد باید به ریزهسته اشاره کنیم که بخش های اساسی آن به عنوان سرویس های جداگانه اجرا می شوند و با یکدیگر تعامل دارند.
در سال 1992 که لینوکس تازه متولد شده بود، بین لینوس توروالدز و پروفسور اندرو تننبام (که چندین کتاب مشهور در زمینه طراحی سیستم عامل و شبکه نوشته)، بحث های متعددی درباره مزایا و معایب استفاده از هسته یکپارچه و ریزهسته ها شکل گرفت. آقای تننبام هسته یکپارچه را ترجیح می داد ولی در آن دوران توروالدز مشغول نوشتن کدهای هسته یکپارچه بود. در نهایت لینوکس هسته یکپارچه خود را حفظ کرد و اگر به استفاده از سیستم عامل های مبتنی بر ریزهسته ها علاقه دارید، می توانید به Minix 3 نگاهی بیندازید.
با توجه به اینکه لینوکس مبتنی بر یک هسته یکپارچه است، باید راهی برای فعال و غیرفعال کردن بخش های مختلف هسته بسته به نیاز کاربران ارائه دهد. این کار حین کامپایل به وسیله سیستمی که به کرنل اجازه تنظیم و پیکربندی را می دهد قابل انجام است. برخی از پیکربندی ها چیزی بیش از فعال یا غیرفعال کردن بخش خاصی را انجام می دهند در واقع آن ها می توانند رفتار هسته را هم تغییر دهند. این معینه هنگام توسعه و تغییر ویژگی های سخت افزاری گوشی های هوشمند اهمیت زیادی دارد.
اندروید چگونه از لینوکس استفاده می کند؟
از نظر ظاهری، اندروید یک لانچر خوب است که اپلیکیشن ها و بازی های مختلف را اجرا می کند. اما در پشت صحنه این رابط کاربری چندین سیستم پیچیده و فریم ورک واقع شده است. اپلیکیشن ها برای انجام کارهایی مانند ارسال نوتیفیکیشن، دسترسی به موقعیت مکانی، فونت، SSL و چندین کار دیگر باید از کتابخانه ها و فریم ورک های موجود در اندروید استفاده کنند.
زیر تمام این کتابخانه ها و فریم ورک های مختص اندروید، هسته سیستم عامل لینوکس واقع شده است. همان طور که گفتیم این هسته در کنار مدیریت فرایندها، حاوی کدهایی برای تمام معماری های مختلف تراشه ها و درایورهای سخت افزاری است. به عنوان مثال می توانیم به درایورهای مربوط به دوربین، بلوتوث، وای فای، فلش مموری، USB و صدا اشاره کنیم.
اندروید همچنین با افزودن برخی ویژگی های خاص به هسته لینوکس، آن را برای گوشی های هوشمند مناسب تر کرده است. گوگل با اندروید 8 از پروژه Treble رونمایی کرد که با ماژولار شدن بخش های مختلف اندروید، شرکت های سازنده بدون نیاز به دست زدن به هسته اصلی می توانند معینه های مختلفی را توسعه دهند. به لطف همین معینه، شرکت ها برای انتشار آپدیت های نرم افزاری با چالش های کمتری روبرو می شوند.
سازندگان گوشی ها چگونه هسته سیستم عامل را تغییر می دهند؟
با توجه به طیف وسیع گوشی های اندرویدی، هسته سیستم عامل در هر کدام از این گوشی ها تا حدی با یکدیگر فرق دارند. شرکت های سازنده گوشی ها باید با تولیدکنندگان تراشه ها همکاری کنند تا هسته سیستم عامل به بهینه ترین شکل ممکن برای گوشی ها آماده شود. به همین خاطر بیشتر اوقات بخشی از ویژگی های هسته اصلی کنار گذاشته می شود و در عوض درایورهای نوی به آن اضافه می کنند.
در همین زمینه می توانیم به نحوه استفاده از هسته های پردازنده اشاره کنیم. همان طور که احتمالا می دانید، تمام هسته های پردازنده عملکرد یکسانی ندارند و برخی برای انجام وظایف سنگین استفاده می شوند و برخی دیگر که کم مصرف هستند، وظایف سبک را انجام می دهند. اما در این میان، شرکت های سازنده گوشی های هوشمند با دستکاری پارامترهای هسته سیستم عامل می توانند کاری کنند که مثلا عملکرد بهتر در ازای مصرف انرژی بیشتر ارائه شود یا اینکه برای افزایش عمر باتری، تمام توان تراشه استفاده نشود.
با این حال، شرکت ها گاهی اوقات در این زمینه تصمیم های غلطی می گیرند. برخی از آن ها برای افزایش عمر باتری، تا حد زیادی توان تراشه را کاهش می دهند که این موضوع با اعتراض کاربران روبه رو می شود. مثلا وان پلاس 9 پرو برای افزایش طول عمر باتری از تمام توان تراشه خود استفاده نمی کند و همچنین طی سال های گذشته برخی شرکت ها به دلیل دستکاری عملکرد پردازنده برای تقلب در بنچمارک با حواشی زیادی روبه رو شده اند.
اندروید و آینده استفاده از هسته سیستم عامل لینوکس
یکی از جنبه های منفی موفقیت لینوکس، سرعت زیاد تغییرات آن است. به همین خاطر نسخه های خاصی از هسته لینوکس وجود دارد که به مدت چندین سال پشتیبانی می شود. اندروید با استفاده از این هسته ها، هسته های نو موسوم به ACK را آماده می کند که شامل بخش های مختص این سیستم عامل هستند.
با اندروید 11، فرایند یکپارچه کردن هسته اصلی اندروید و خارج کردن بخش های خاص مربوط به تراشه آغاز شد. با این کار، شرکت های سازنده گوشی ها دیگر لازم نیست برای گوشی های مختلف به هسته اصلی دست بزنند و همین موضوع فرایند آماده سازی نرم افزار آن ها را راحت تر می کند. تعدادی از گوشی های مبتنی بر اندروید 12 از این معینه بهره می برند.
به لطف این رویکرد، گوگل راحت تر از گذشته می تواند هسته اندروید را برای شرکت های مختلف به روزرسانی کند که همین موضوع منجر به افزایش امنیت می شود. از طرف دیگر، باید به پتانسیل این رویکرد برای افزایش تعداد سال هایی که این گوشی ها آپدیت دریافت می کنند، اشاره کنیم.
منبع: Android Authority
منبع: دیجیکالا مگ