ما هي نواة النظام Kernel؟ ولماذا هي مهمة؟
عناصر المقال
هل تقضي الكثير من الوقت في يومك على هاتف اندرويد وجهاز كمبيوتر بنظام ويندوز؟ إذًا لابد أنّك رأيت عبارة Linux Kernel مرة على الأقل. حيث أن Kernel هي نواة النظام التي لا يمكنه العمل من غيرها.
من السهل فهم الجزء الخاص بنظام لينكس، جميعنا نعلم أنّه نظام مفتوح المصدر سهل التعديل ويستخدمه المهووسين بالبرمجيات المفتوحة عمومًا. لكن ما هي النواة Kernel؟ ولماذا توجد في أجهزة الكمبيوتر والموبايل؟ وما هي نواة لينكس؟
التعريف المُختصر
باختصار، نواة النظام Kernel هي البرنامج الأساسي الذي يدير مجموعة موارد وحدة المعالجة المركزية للهاتف وذاكرة النظام ومكونات النظام الداخلية، بما في ذلك أنظمة الملفات والشبكات.
كما أنّها مسؤولة عن إدارة جميع العمليات أو المهام التي يتم تشغيلها على هاتفك الذكي أو الكمبيوتر الشخصي. بمعنى أنّك إذا فتحت أحد التطبيقات، تقوم النواة بتحميل التطبيق في الذاكرة وإنشاء العمليات المطلوبة، وبدء تشغيل التطبيق.
وعندما يحتاج التطبيق إلى الذاكرة، تعمل النواة على تخصيص الذاكرة المناسبة. وعند الحاجة إلى الاتصال بالشبكات، تقوم نواة Kernel بجميع عمليات المعالجة منخفضة المستوى.
نواة النظام هي البرنامج الأساسي الذي يدير موارد المعالج والذاكرة ومكونات الجهاز الداخلية.
توجد أيضًا تعريفات الأجهزة مثل البلوتوث في النواة. وعندما يريد التطبيق تنفيذ مهمة في الخلفية، تتعامل النواة مع مؤشرات الترابط في الخلفية. وعند إغلاق التطبيق، تعمل النواة على تنظيف كل الذاكرة والموارد الأخرى التي استخدمها التطبيق. وكما ترى، تُعد النواة (Kernel) جزءًا أساسيًا يضمن أن هاتف اندرويد سيفعل ما تتوقع منه.
ما هي نواة النظام Kernel؟
تحتوي جميع نُظم التشغيل متعددة المهام على نواة بشكل أو بآخر. في ويندوز مثلًا توجد نواة للنظام، وكذلك في macOS و iOS، وبالطبع اندرويد. لكن من بينهما جميعًا، يستخدم اندرويد نواة لينكس فقط.
أمّا نظام ويندوز فيحتوي على نواة خاصة به يُشار إليها غالبًا بـ NT Kernel. ويستخدم كلًا من macOS و iOS نواة تُعرف باسم Darwin.
جميع نُظم التشغيل متعددة المهام تحتوي على نواة بشكل أو بآخر
نواة لينكس عبارة عن برنامج مُعقد. يحتوي على ملايين الأسطر من الأكواد البرمجية. ويتضمن ذلك جميع برامج التشغيل بالإضافة إلى دعم بُنى النظام المختلفة (مثل ARM / x86 / RISC-V / PowerPC) وغيرها. عندما يتم إنشاء نواة لجهاز معين – للموبايل مثلًا – لا يتم استخدام كل هذه الأكواد البرمجية، ويتم تنزيل ما هو ضروري فقط لاستخدام الهاتف الذكي. ومع ذلك يظل الكود معقدًا.
Monolithic أم microkernel
كما هو الحال في أي نظام مُعقّد، هناك طرق مختلفة يمكن استخدامها في تصميم النواة.
نواة لينكس هي ما يُعرف بالنواة المتجانسة أو Monolithic Kernel. ويعني هذا أن النواة عبارة عن برنامج واحد يستخدم مساحة ذاكرة واحدة.
والبديل الرئيسي لها هو microkernel، وباستخدامه يتم وضع أساسيات النواة في أصغر برنامج ممكن ويتفاعل مع البرامج الأخرى على مستوى النواة، والتي تعمل كخوادم أو خدمات منفصلة.
في عام 1992، عندما كان نظام لينكس في أيامه الأولى، أجرى لينوس تورفالدس والبروفيسور أندرو تانينباوم مناقشة عبر الإنترنت حول المزايا المختلفة لتصميمات monolithic في مقابل microkernels.
وقتها فضّل أندرو تانينباوم microkernels بينما كان لينوس يكتب نواة متجانسة monolithic.
وبذلك استمر لينكس في استخدام نواة متجانسة monolithic وكذلك تبعه نظام اندرويد. أمّا إذا كنت مهتمًا بنظام تشغيل microkernels عليك التحقق من Minix 3.
نظرًا لأن لينكس يعتمد على نواة متجانسة، يجب أن تكون هناك طريقة لتمكين وتعطيل أجزاء معينة من النواة وفقًا لاحتياجاتك. يتم ذلك في وقت الترجمة باستخدام نظام يسمح بضبط النواة وتهيئتها وتكوينها حسب الحاجة. وتقوم بعض التكوينات بخصائص أكثر من (التنشيط / إلغاء التنشيط) في وظائف معينة، فهي في الواقع تغيّر سلوك النواة. وهذا الأمر مفيد عند بناء أو تغيير مميزات نظام الهاتف الذكي.
ونظرًا لأن لينكس نظام مفتوح المصدر وجوهر اندرويد كذلك، هناك مجتمع من المطورين والمتحمسين الذين يقدمون نواة بديلة لهواتف اندرويد. ومع ذلك، تعتمد شعبيتها وتوافرها على طراز جهازك.
كيف يستخدم اندرويد نواة لينكس
ظاهريًا، يبدو نظام تشغيل اندرويد رائعًا، وبعض التطبيقات مثل متصفح كروم أو تطبيقات التواصل الاجتماعي، وربما بعض الألعاب. ولكن هناك أشياء تتم في الخلفية لا تراها بعينك المجردة. أسفل واجهة المستخدم تلك توجد الكثير من الأنظمة الفرعية والمكتبات والإطارات البرمجية.
لكي تعمل التطبيقات – محليًا أو في Java Virtual Machine – يوفّر اندرويد الكثير من المكتبات والإطارات لأشياء مثل الإشعارات وخدمات الموقع والخطوط وعرض الويب وSSL وإدارة النوافذ وما إلى ذلك. توجد أيضًا خدمة خاصة باسم SurfaceFlinger مسؤولة عن تكوين جميع الأشياء المختلفة التي تحتاج إلى سحبها من مُخزّن مؤقت واحد يتم عرضها بعد ذلك على الشاشة.
إن قسمنا النظام إلى مستويات، تقع نواة لينكس Kernel أسفل المكتبات والإطارات الخاصة بنظام اندرويد. وإلى جانب إدارة العمليات والذاكرة والطاقة، تحتوي النواة على أكواد لجميع هياكل الشرائح وبرامج تشغيل الأجهزة المختلفة التي تدعمها. وتتضمن الأكواد تعريفات الكاميرات والبلوتوث والواي فاي والذاكرة وUSB والصوت.
ويضيف اندرويد بعض الميزات الخاصة إلى Linux kernel لجعله أكثر ملاءمة للهواتف الذكية. يتضمن ذلك Low Memory Killer، وهي عملية تراقب حالة الذاكرة وتتفاعل مع متطلبات الذاكرة العالية عن طريق قتل العمليات الأقل أهمية وبالتالي تحافظ على تشغيل النظام. وأقفال التنبيه، وهي طريقة للتطبيقات لإخبار النواة بأن الجهاز يحتاج إلى ابقي مركزًا.
قدّم اندرويد 8 مشروع Project Treble وهو عبارة عن إعادة تصميم لنظام اندرويد مع واجهة محددة جيدًا بين إطار عمل نظام التشغيل والبرامج منخفضة المستوى الخاصة بالجهاز.
باستخدام وحدات نواة لينكس، تم فصل SoC وبرامج التشغيل الخاصة باللوحة بعيدًا عن النواة الرئيسية، ما يعني أن صنّاع الهواتف الذكية يمكنهم العمل على ميزات معينة لجهاز ما دون الحاجة إلى تغيير النواة الأساسية.
وتم تصميم Treble ليسهّل على الشركات تحديث هواتفها الذكية دون القلق من كود المستوى المنخفض.
كيف تقوم الشركات بتعديل النواة
نظرًا للتنوع الهائل في أجهزة اندرويد، فإن النواة ستكون مختلفة قليلًا من طراز لآخر. ستكون هناك برامج تشغيل محددة لـ SoC، بالإضافة إلى وحدات أخرى مثل GPS والصوت وما إلى ذلك.
ويعمل كل صانع للهواتف الذكية مع مزود SoC (كوالكوم وميدياتك وما إلى ذلك) لتهيئة النواة بأفضل طريقة لأي نموذج معين. ويعني هذا أن صانعي الهواتف الذكية يعملون غالبًا على ميزات خاصة بالجهاز، ويتجاوزون تكوينات kernel الشائعة، ويضيفون برامج تشغيل جديدة إلى Linux kernel.
مثال جيد على التعديلات هو جدولة وحدة المعالجة المركزية. عندما تحتاج النواة إلى تحديد المهمة التي يجب تشغيلها بعد ذلك، وعلى أي نواة من وحدة المعالجة المركزية، فإنها تستخدم برنامج جدولة.
معظم الهواتف الذكية التي تعمل بنظام اندرويد هي أنظمة متعددة المعالجات (HMP) غير متجانسة. هذا يعني أنه ليست كل النوى في المعالج متساوية. بعضها عالي الأداء، بينما يوفر البعض الآخر كفاءة أكبر في استخدام الطاقة.
باستخدام برنامج جدولة الطاقة (EAS)، يمكن للنواة التنبؤ بتأثير قراراتها على الطاقة التي تستهلكها وحدات المعالجة المركزية (CPU)، بالإضافة إلى مستوى الأداء المتاح.
يمكن تعديل معلمات EAS بواسطة صنّاع الهواتف الذكية لتفضيل الأداء القوي أثناء استخدام المزيد من الطاقة، أو أداء أقل مع توفير البطارية. لدى صنّاع الأجهزة أيضًا خيار استبدال المجدول بواحد من ابتكاراتهم.
ويسعى كل صانع للهواتف الذكية إلى تكوين النواة بأفضل طريقة لتمكين جميع الميزات المطلوبة مع تقديم أفضل أداء بأعلى كفاءة ممكنة. جنبًا إلى جنب مع صانع SoC، هناك مهندسون يعملون على ضبط البرمجيات لتحقيق أقصى استفادة من الأجهزة.
ومع ذلك، قد تحدث أخطاء أو يتم اتخاذ قرارات خاطئة حول طريقة تكوين نواة لينكس. من المعروف أن صنّاع الهواتف يستخدمون إعدادات شديدة القوة في السعي للحصول على عمر بطارية جيد. على سبيل المثال، تم اكتشاف أن ون بلس تخنق أداء OnePlus 9 Pro للحفاظ على عمر البطارية، بينما عُرف عن الآخرين أنهم يغشون ويعززون أداء وحدة المعالجة المركزية بشكل مصطنع عند تشغيل تطبيقات قياس الأداء.