الصفحة الرئيسية » howto » ما هو Linux Kernel وماذا يفعل؟

    ما هو Linux Kernel وماذا يفعل؟


    مع أكثر من 13 مليون سطر من الكود ، تعتبر نواة لينكس واحدة من أكبر مشاريع المصادر المفتوحة في العالم ، لكن ما هي النواة وما هي المستخدمة?

    إذن ما هو النواة?

    النواة هي أدنى مستوى من البرامج القابلة للاستبدال بسهولة والتي تتعامل مع الأجهزة في جهاز الكمبيوتر الخاص بك. وهي مسؤولة عن التفاعل بين جميع تطبيقاتك التي تعمل في "وضع المستخدم" وصولاً إلى الأجهزة المادية ، والسماح للعمليات ، المعروفة باسم الخوادم ، بالحصول على المعلومات من بعضها البعض باستخدام الاتصالات بين العمليات (IPC).

    أنواع مختلفة من الألباب

    هناك ، بالطبع ، طرق مختلفة لبناء الاعتبارات النواة والهندسية عند بناء واحدة من الصفر. بشكل عام ، تقع معظم الألباب في واحد من ثلاثة أنواع: monolithic ، microkernel ، و hybrid. Linux هو نواة متجانسة في حين يستخدم OS X (XNU) و Windows 7 حبات هجينة. لنأخذ جولة سريعة للفئات الثلاث حتى نتمكن من الدخول إلى مزيد من التفاصيل في وقت لاحق.


    الصورة بواسطة أبتاون الفشار

    النوية
    يأخذ microkernel نهج إدارة ما يجب عليه فقط: وحدة المعالجة المركزية (CPU) والذاكرة و IPC. يمكن النظر إلى كل شيء آخر في الكمبيوتر على أنه ملحق ويمكن التعامل معه في وضع المستخدم. تتميز Microkernels بميزة قابلية الحمل لأنها لا تقلق إذا قمت بتغيير بطاقة الفيديو أو حتى نظام التشغيل الخاص بك طالما أن نظام التشغيل لا يزال يحاول الوصول إلى الجهاز بنفس الطريقة. كما تتميز Microkernels ببصمة صغيرة جدًا لكل من الذاكرة ومساحة التثبيت ، كما أنها تميل إلى أن تكون أكثر أمانًا لأن عمليات محددة فقط تعمل في وضع المستخدم والتي لا تتمتع بأذونات عالية كوضع المشرف.

    الايجابيات

    • قابلية التنقل
    • بصمة تثبيت صغيرة
    • بصمة ذاكرة صغيرة
    • الأمان

    سلبيات

    • الأجهزة هي أكثر تجريدية من خلال السائقين
    • قد تتفاعل الأجهزة أبطأ لأن برامج التشغيل في وضع المستخدم
    • يجب أن تنتظر العمليات في قائمة انتظار للحصول على معلومات
    • لا يمكن العمليات الوصول إلى العمليات الأخرى دون انتظار

    نواة متجانسة
    النواة الأحادية هي عكس الميكرويديات لأنها لا تشمل فقط وحدة المعالجة المركزية والذاكرة و IPC ، ولكنها تتضمن أيضًا أشياء مثل برامج تشغيل الأجهزة وإدارة نظام الملفات ومكالمات خادم النظام. تميل حبات Monolithic إلى أن تكون أفضل في الوصول إلى الأجهزة وتعدد المهام لأنه إذا كان البرنامج يحتاج إلى الحصول على المعلومات من الذاكرة أو عملية أخرى تشغيلها لديه خط مباشر أكثر للوصول إليه وليس من الضروري الانتظار في طابور لإنجاز الأمور. ومع ذلك ، يمكن أن يسبب ذلك مشاكل لأن المزيد من الأشياء التي تعمل في وضع المشرف ، كلما زادت الأشياء التي يمكن أن تسقط النظام الخاص بك إذا لم يتصرف المرء بشكل صحيح.

    الايجابيات

    • مزيد من الوصول المباشر إلى الأجهزة للبرامج
    • أسهل للعمليات للتواصل بين بعضنا البعض
    • إذا كان جهازك مدعومًا ، فيجب أن يعمل بدون تثبيتات إضافية
    • تتفاعل العمليات بشكل أسرع بسبب عدم وجود قائمة انتظار لوقت المعالج

    سلبيات

    • بصمة تثبيت كبيرة
    • بصمة ذاكرة كبيرة
    • أقل أمانًا لأن كل شيء يعمل في وضع المشرف


    صورة عبر schoschie على Flickr

    نواة هجينة
    لدى النواة المختلطة القدرة على اختيار ما تريد تشغيله في وضع المستخدم وما تريد تشغيله في وضع المشرف واختيار ما تريد تشغيله. في كثير من الأحيان ، يتم تشغيل أشياء مثل برامج تشغيل الأجهزة ونظام الإدخال / الإخراج في وضع المستخدم بينما يتم الاحتفاظ بمكالمات IPC والخادم في وضع المشرف. هذا يعطي أفضل ما في العالمين ولكن في كثير من الأحيان يتطلب المزيد من العمل من الشركة المصنعة للجهاز لأن كل مسؤولية السائق متروك لهم. يمكن أن يكون أيضا بعض المشاكل الكمون المتأصلة في microkernels.

    الايجابيات

    • يمكن للمطور اختيار ما يتم تشغيله في وضع المستخدم وما يتم تشغيله في وضع المشرف
    • تثبيت اصغر حجما من النواة المتجانسة
    • أكثر مرونة من الموديلات الأخرى

    سلبيات

    • يمكن أن تعاني من تأخر العملية نفسها كما microkernel
    • تحتاج برامج تشغيل الأجهزة إلى إدارتها بواسطة المستخدم (عادة)

    أين ملفات Linux Kernel?

    يتم تخزين ملف kernel ، في Ubuntu ، في مجلد التمهيد الخاص بك / ويسمى vmlinuz-الإصدار. يأتي اسم vmlinuz من عالم unix حيث اعتادوا على استدعاء حباتهم ببساطة "unix" مرة أخرى في الستينيات حتى بدأ لينكس يدعو "لينكس" النواة عندما تم تطويرها لأول مرة في 90.

    عندما تم تطوير الذاكرة الظاهرية لتسهيل قدرات تعدد المهام ، تم وضع "vm" في مقدمة الملف لإظهار أن النواة تدعم الذاكرة الظاهرية. لفترة من الوقت ، تم استدعاء نواة لينكس vmlinux ، ولكن النواة نمت بشكل كبير بحيث لا تتناسب مع ذاكرة التمهيد المتوفرة ، لذلك تم ضغط صورة النواة وتم تغيير x إلى z لإظهار أنه تم ضغطه باستخدام ضغط zlib. لا يتم استخدام هذا الضغط نفسه دائمًا ، ويتم استبداله غالبًا بـ LZMA أو BZIP2 ، وتسمى بعض الحبات ببساطة zImage.

    سيكون ترقيم الإصدار بالتنسيق A.B.C.D حيث من المحتمل أن يكون A.B 2.6 ، C هو الإصدار الخاص بك ، ويشير D إلى رقعتك أو إصلاحاتك.

    في المجلد / boot سيكون هناك أيضًا ملفات مهمة أخرى تسمى initrd.img-version و system.map-version و config-version. يتم استخدام الملف initrd كقرص RAM صغير يستخرج وينفذ ملف kernel الفعلي. يتم استخدام ملف system.map لإدارة الذاكرة قبل تحميل kernel بشكل كامل ، ويخبر ملف التهيئة النواة بالخيارات والوحدات التي سيتم تحميلها في صورة kernel عند تجميعها.

    Linux Kernel Architecture

    ولأن نواة لينكس هي متجانسة ، فإنها تمتلك أكبر بصمة وأكثر تعقيدًا على الأنواع الأخرى من الألباب. كانت هذه ميزة تصميم كانت تحت جدل كبير في الأيام الأولى من لينكس وما زالت تحمل بعض عيوب التصميم نفسها التي تكون حبات متجانسة متأصلة في.

    الشيء الوحيد الذي فعله مطورو نواة لينكس للتغلب على هذه العيوب هو إنشاء وحدات kernel التي يمكن تحميلها وتفريغها في وقت التشغيل ، مما يعني أنه يمكنك إضافة أو إزالة ميزات النواة الخاصة بك على الطاير. هذا يمكن أن يتجاوز مجرد إضافة وظائف الأجهزة إلى kernel ، من خلال تضمين الوحدات التي تقوم بتشغيل عمليات الخادم ، مثل الظاهرية منخفضة المستوى ، ولكن يمكن أيضًا السماح باستبدال النواة بأكملها دون الحاجة إلى إعادة تشغيل الكمبيوتر في بعض الحالات.

    تخيل ما إذا كان بإمكانك الترقية إلى حزمة خدمة Windows دون الحاجة إلى إعادة التشغيل ...

    وحدات النواة

    ماذا لو كان Windows قد تم تثبيت كل برنامج التشغيل بالفعل وكان عليك فقط تشغيل برامج التشغيل التي تحتاجها؟ هذا هو أساسا ما تفعله وحدات النواة للينكس. وحدات النواة ، المعروفة أيضًا باسم وحدة النواة القابلة للتحميل (LKM) ، ضرورية للحفاظ على أداء النواة مع جميع الأجهزة دون استهلاك كل الذاكرة المتوفرة لديك.

    تقوم الوحدة النمطية عادة بإضافة وظائف إلى kernel الأساسي لأشياء مثل الأجهزة وأنظمة الملفات ومكالمات النظام. تحتوي LKMs على امتداد الملف .ko ويتم تخزينها عادةً في الدليل / lib / modules. وبسبب طبيعتها النمطية ، يمكنك بسهولة تخصيص النواة الخاصة بك عن طريق إعداد وحدات نمطية للتحميل ، أو عدم التحميل ، أثناء بدء التشغيل باستخدام الأمر menuconfig أو عن طريق تحرير ملف / boot / config الخاص بك ، أو يمكنك تحميل وحدات تفريغ وتحريكها على الطاير باستخدام modprobe أمر.

    تتوفر الوحدات النمطية للجهات الخارجية والمغلقة في بعض التوزيعات ، مثل Ubuntu ، وقد لا يتم تثبيتها افتراضيًا نظرًا لعدم توفر شفرة المصدر الخاصة بالوحدات النمطية. لا يوفر مطور البرامج (أي nVidia و ATI وغيره) رمز المصدر ، بل ينشئ الوحدات النمطية الخاصة به ويقوم بتجميع ملفات .ko اللازمة للتوزيع. في حين أن هذه الوحدات هي حرة كما في البيرة ، فهي ليست حرة كما في الكلام ، وبالتالي لا يتم تضمينها من قبل بعض التوزيعات لأن صانعي الصيانة يشعرون أنه "يلهم" النواة من خلال توفير برامج غير حرة.

    النواة ليست سحرًا ، ولكنها ضرورية تمامًا لأي جهاز كمبيوتر يعمل بشكل صحيح. نواة Linux تختلف عن OS X و Windows لأنها تتضمن برامج تشغيل على مستوى kernel وتدعم العديد من الأشياء "خارج الصندوق". نأمل أن تعرف أكثر عن كيفية عمل البرامج والأجهزة الخاصة بك معًا وما هي الملفات التي تحتاجها لتشغيل الكمبيوتر.

    Kernel.org
    الصورة بواسطة ingridtaylar