نواة لينكس وأهميتها في تشغيل الأنظمة الحديثة
نواة لينكس تُعد القلب النابض للعديد من الأنظمة التشغيلية الحديثة، حيث تشكل الوسيط الأساسي بين الأجهزة والبرامج. بفضل تصميمها الفريد والمفتوح المصدر، أصبحت نواة لينكس الخيار الأمثل لتشغيل مجموعة متنوعة من الأجهزة، بدءًا من الهواتف الذكية وصولاً إلى الحواسيب العملاقة. إذا كنت تتساءل عن دورها وكيف تؤثر على أداء النظام، فهذا المقال سيمنحك نظرة واضحة على أهميتها وكيف تعمل خلف الكواليس لتوفير بيئة تشغيل مستقرة وآمنة.
أهم النقاط المستفادة
- تدير نواة نظام التشغيل الموارد، وتتعامل مع مكالمات النظام، وتتحكم في الوصول إلى الأجهزة، وتتحكم في العمليات.
- بدأت نواة لينكس كوسيلة للتغلب على قيود الترخيص في مينيكس، ولتمكين لينوس تورفالدس من تعلم برمجة وحدة المعالجة المركزية 80386.
- أنتج نواة لينكس، بمجرد إقرانها بأدوات GNU، نظام تشغيل يعمل مثل يونكس. إذا لم يكن هناك نواة، فلن يكون هناك لينكس كما نعرفه.
نواة لينكس هي القلب النابض لكل تثبيت لينكس. ننظر إلى من أين جاءت، وما هو هدفها ولماذا، بدون النواة، لن يكون هناك لينكس.
القصة وراء نواة لينكس
غضبًا من تبني يونكس لرخصة تجارية، بدأ مشروع جنو في كتابة نظام تشغيل خاص به يشبه يونكس في عام 1983.
في عام 1987، تم إصدار نظام التشغيل مينيكس. كان هذا نظام تشغيل بسيط يشبه يونكس، واستُخدم كمثال عملي في كتاب مدرسي لعلوم الكمبيوتر. تم ترخيص مينيكس للاستخدام غير التجاري فقط.
بحلول عام 1991، أنشأ مشروع جنو العديد من أدوات سطر الأوامر لنظام تشغيل يشبه يونكس، لكنه لم ينتج نواة. النواة هي المتحكم المركزي لنظام التشغيل. تقع بين الأجهزة وجميع البرامج الأخرى، وتدير الموارد والعديد من المهام الحرجة الأخرى.
تم تقديم لينوس تورفالدس إلى مينيكس كطالب علوم كمبيوتر. منزعجًا من نموذج ترخيص مينيكس، وراغبًا في تعلم برمجة وحدة المعالجة المركزية 80386 في جهاز الكمبيوتر الشخصي الخاص به، شرع في كتابة نواة خاصة به.
تم التطوير على مينيكس، باستخدام مُجمِّع جنو سي. بحلول سبتمبر 1991، عملت نواة تورفالدس، جنبًا إلى جنب مع أدوات جنو الأساسية، كنظام تشغيل عامل.
كان مشروع GNU ونواة Linux يتطلبان من بعضهما البعض تقديم شيء ذي معنى وظيفي، مما دفع إلى اقتراح الإشارة إلى Linux باسم GNU/Linux. واليوم، تحتوي توزيعات Linux على أكثر من مجرد أدوات GNU ونواة Linux، وسواء كان ذلك عادلاً أم لا، فإن مصطلح “Linux” هو الذي ظل ملتصقًا.
هياكل النواة المختلفة
نواة Linux عبارة عن نواة متجانسة. إنها في الأساس برنامج واحد كبير، لكنها تتفاعل بشكل وثيق مع برامج أخرى مميزة مثل برامج التشغيل ووحدات النواة. تعمل النواة وبرامج التشغيل والوحدات في مساحة النواة، وهي منطقة مخصصة ومقيدة من الذاكرة خارج حدود العمليات العادية الأخرى، والتي تعمل في مساحة المستخدم.
هناك نهج آخر لتصميم النواة، وهو النهج الذي يفضله مؤلف MINIX، Andrew S. Tanenbaum، وهو بنية النواة الصغيرة. النواة الصغيرة هي نواة صغيرة جدًا تعمل في مساحة النواة، مع تشغيل العمليات الداعمة لها في مساحة المستخدم. أثار انتقاد تانينباوم لتصميم نواة لينكس جدال تانينباوم-تورفالدس الشهير في عام 1992.
بالمقارنة بالحجم، تحتوي نواة MINIX 3 على حوالي 12000 سطر من التعليمات البرمجية. تحتوي نواة لينكس 6.12.1 على ما يقرب من 40 مليون سطر.
find ./linux-6.12.1/ -type f -exec wc -l {} \; | awk '{lines += $1} END {print lines}'
هذا رقم تقريبي، لأنه يشمل كل شيء في المستودع، مثل التراخيص، وملفات README، وملفات makefiles، وليس فقط الكود المصدر.
يحتوي النواة الهجينة على مجموعة مختارة بعناية من الميزات من كل من الهندسة المعمارية الأحادية والنواة الدقيقة. نواة macOS، XNU، هي نواة هجينة تجمع بين الميزات والرمز من نواتي Mach وFreeBSD.
ملفات نواة Linux
عادةً، تكون النواة عبارة عن ملف يسمى vmlinuz، يقع في دليل /boot.
أطلق على نواة Unix اسم “unix”. وعلى غرار ذلك، أطلق على نواة Linux اسم “linux”. تمت إضافة “vm” عند إضافة دعم الذاكرة الافتراضية، وتم استبدال “x” بـ “z” عند ضغط صورة النواة أو gzip.
في بعض الأحيان، يكون ملف vmlinuz رابطًا رمزيًا لملف النواة الفعلي. يمكن أن يكون هذا مفيدًا، لأن اسم الملف الكامل غالبًا ما يحتوي على معرفات الإصدار والبناء التي يتم فقدها عند إعادة تسميته إلى vmlinuz.
ls -hl
يمكنك أيضًا رؤية إصدار kernel باستخدام الأمر uname، مع الخيار -r (إصدار kernel).
uname -r
ls -hl /boot/vmlinuz
أو يمكنك إلقاء نظرة على محتويات الملف الوهمي /proc/version.
cat /proc/version
ماذا تفعل نواة لينكس؟
تدير نواة لينكس، مثل جميع النوى، موارد النظام بحيث تحصل العمليات على حصة من وقت وحدة المعالجة المركزية والذاكرة العشوائية. كما تتولى أيضًا معالجة مكالمات النظام، وتتحكم في الوصول إلى الأجهزة، مثل أجهزة التخزين الدائمة، وبطاقات الرسومات، ومجموعة الشبكات.
إدارة الموارد
مع الاحتياطيات المحدودة من ذاكرة الوصول العشوائي ووقت وحدة المعالجة المركزية، من المستحيل خدمة جميع طلبات جميع العمليات لجميع المستخدمين، طوال الوقت. يجب على النواة إدارة الطلبات بحيث يتم خدمة طلبات جميع العمليات. للمساعدة في ذلك، يتم إعطاء العمليات الأولوية، حيث تحصل المهام ذات الأولوية الأعلى على وقت وحدة معالجة مركزية أكثر من المهام ذات الأولوية الأقل. يمكنك استخدام الأمر renice لتغيير قيمة nice لعملية ما.
تحتوي النواة أيضًا على روتينات لإنشاء وإنهاء العمليات والمهام، والتبديل بين التنفيذ بين العمليات والخيوط.
الإدخال والإخراج
توفر نواة لينكس الوصول إلى التخزين الدائم وغير الدائم. بالإضافة إلى تجنب الصراعات وفرض الأمان من خلال الأذونات، يخفي النواة التنفيذ منخفض المستوى لجهاز التخزين وأنظمة الملفات عن العمليات. توفر النواة مجموعة من نداءات النظام التي تستخدمها التطبيقات لطلب الإجراءات والاستجابات من النواة.
نداءات النظام
نداءات النظام هي الطلبات التي تقدمها العمليات إلى النواة لإجراءات لا يمكن للنواة تنفيذها إلا. عادةً، تقوم العملية بإجراء نداء نظام من خلال وظيفة غلاف باللغة التي كتبت بها العملية. قد يكون الغلاف وظيفة في مكتبة مرتبطة أو بيئة وقت تشغيل.
إدارة الأجهزة
تسمح النواة للبرامج بالتفاعل مع مجموعة كبيرة ومتنوعة من الأجهزة التي يمكن توصيلها بجهاز كمبيوتر أو تركيبها داخله. يتضمن ذلك أجهزة مثل محركات الأقراص الصلبة وواجهات الشبكة وبطاقات الرسومات. وحدات نواة Linux (LKMs) هي الطريقة الأكثر شيوعًا لتنفيذ هذه الواجهات.
وحدات نواة Linux
وحدات نواة Linux (LKMs، والتي تسمى أيضًا وحدات نواة قابلة للتحميل) عبارة عن برامج صغيرة يمكن للنواة تحميلها في وقت التشغيل. وهي طريقة مثالية لتوفير برامج تشغيل للأجهزة والواجهات لأنظمة الملفات وميزات النظام الأخرى مثل ملحقات الأمان.
لرؤية وحدات LKM التي تستخدمها نواة النظام لديك، استخدم الأمر lsmod.
lsmod
يستخدم نواة الكمبيوتر الاختباري هذا 67 وحدة، وهو عدد قليل إلى حد ما. وفي جهاز آخر قمت بفحصه، كان الرقم 138.
lsmod | wc
يمكنك الحصول على عرض أكثر تفصيلاً لوحدة واحدة باستخدام الأمر modinfo وتقديم اسم الوحدة التي تهتم بها.
modinfo autofs4
لماذا تعد النواة مهمة؟
بدون النواة، لا يمكن لنظام التشغيل أن يعمل ببساطة. وبدون النواة التي بدأت كمشروع طلابي في هلسنكي، في عام 1991، لم نكن لنحصل على لينكس. ويُستخدم لينكس في جميع أنحاء العالم، بطرق عديدة ومدهشة.