إكس أن يو

XNU هي نواة نظام تشغيل الكمبيوتر التي تم تطويرها في ابل منذ ديسمبر 1996 لأنضمة الماك ، وافرج عنه كبرنامج مجاني مفتوح المصدر كجزئ من نظام تشغيل داروين ، كما يستخدم كنواة لانظمة ابل تي في وiOS وووتش أو إس .
XNU اختصار X و ليس Unix .
تم تطوير XNU في الأصل بواسطة NeXT لنظام التشغيل NeXTSTEP ، حيث تم دمج الإصدار 2.5 من نواة Mach في جامعة كارنيجي ميلون مع مكونات من 4.3BSD وObjective-C API لكتابة برامج التشغيل تسمى Driver Kit
بعد أن حصلت Apple على NeXT ، تمت ترقية عنصر Mach إلى OSFMK 7.3 من OSF ، وتمت ترقية مكونات BSD برمز من مشروع FreeBSD ، وتم استبدال مجموعة برامج التشغيل بواجهة برمجة C ++ لكتابة برامج التشغيل المسماة I / O Kit

## تصميم النواة

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

اعتبارا من عام 2007 ، تعمل XNU على معالجات ARM ، و IA-32 ، و x86-64 ، كل من المعالج ونماذج المعالجة المتعددة المتماثلة (SMP). تمت إزالة دعم PowerPC اعتبارًا من الإصدار 10 (على سبيل المثال، ماك أو إس).

### match
أساس نواة XNU هو نواة OSFMK 7.3 معدلة بشكل كبير (هجينة). على هذا النحو، فإنه قادر على تشغيل جوهر نظام التشغيل كعمليات منفصلة، مما يسمح بمرونة كبيرة (يمكنه تشغيل العديد من أنظمة التشغيل بشكل متواز فوق نواة match) ، ولكن هذا غالباً ما يقلل الأداء نظرًا لأن النواة / المستخدم يستغرق وقتًا طويلاً. تبديل السياق الوضع والنفقات العامة من تعيين أو نسخ الرسائل بين مساحات العناوين من kernel و من عفريت (برمجيات) الخدمة. مع نظام التشغيل ماك أو إس ، حاول المصممون تبسيط بعض المهام، وهكذا تم بناء وظيفة BSD في جوهرها مع match. والنتيجة هي نواة OSFMK 7.3 معدّلة بشكل كبير (هجينة) ، وأبل مرخصة OSFMK 7.3 ، وهي عبارة عن ميكرويكيلل، من OSF. (يتضمن OSFMK 7.3 التعليمات البرمجية المعمول بها من نواة جامعة يوتا match 4 والرمز الساري من العديد من المتغيرات الميك 3.0 التي انبثقت عن الجيل الأصلي من الميكروفون 3.0 في جامعة كارنيجي ميلون.)

### BSD
يوفر جزء Berkeley Software Distribution) BSD) من النواة واجهة برمجة تطبيقات POSIX (API ، مكالمات نظام BSD) ، نموذج عملية Unix فوق مهام Mach ، سياسات الأمان الأساسية، معرفات المستخدمين والمجموعات، الأذونات، بروتوكولات الشبكة، الظاهرية شفرة نظام الملفات (بما في ذلك طبقة دفتر يومية مستقلة لنظام الملفات) ، والعديد من أنظمة الملفات المحلية مثل HFS / HFS + ، وعميل وخادم نظام ملفات الشبكة (NFS) ، وإطار التشفير، و UNIX System V inter-process communication (IPC) ، والنظام الفرعي للتدقيق، التحكم في الوصول الإلزامي، وبعض الأوليات القفل. رمز BSD الموجود في XNU جاء من نواة FreeBSD. على الرغم من أن الكثير منها قد تم تعديله بشكل كبير، إلا أن المشاركة في الكود مازالت تحدث بين Apple ومشروع FreeBSD.

### K32 / K64
هذا القسم يحتاج إلى تحديث. على وجه الخصوص: لا يصف أي تغييرات منذ 10.6. الرجاء تحديث هذه المقالة لتعكس الأحداث الأخيرة أو المعلومات المتوفرة حديثًا. (ديسمبر 2017)

XNU في ماك أو إس إكس سنو ليوبارد، v10.6، (إصدار داروين 10) يأتي في نوعين، إصدار 32 بت يدعى K32 وإصدار 64 بت يدعى K64. يمكن لـ K32 تشغيل تطبيقات 64 بت في userland. كان الجديد في نظام التشغيل ماك أو إس إكس سنو ليوبارد هو القدرة على تشغيل XNU في مساحة kernel 64 بت. كانت K32 هي النواة الافتراضية لملقم 10.6 عند استخدامها على جميع الأجهزة باستثناء طرازات Mac Pro وXserve من عام 2008 فصاعدًا ويمكن تشغيل تطبيقات 64 بت. يتميز K64 بالعديد من الفوائد مقارنة بـ K32:

يمكن إدارة أكثر من 32 غيغابايت من ذاكرة الوصول العشوائي، حيث تستهلك خريطة الذاكرة مساحة كبيرة بشكل غير متناسب من مساحة kernel 32 بت.

يمكن أن تكون أحجام المخزن المؤقت المؤقت أكبر مما تسمح به مساحة kernel 32 بت، مما قد يؤدي إلى زيادة أداء الإدخال / الإخراج.

يتم زيادة الأداء عند استخدام أجهزة شبكة عالية الأداء أو وحدات معالجة رسومات متعددة (GPU) ، حيث يمكن أن يقوم kernel بتعيين كافة الأجهزة في مساحة 64 بت حتى إذا كان لدى العديد من المخازن المؤقتة (DMA) للذاكرة المباشرة الكبيرة جدًا.

يعمل التثبيت أثناء الضغط باستمرار على 6 و 4 على إجبار الجهاز على تشغيل K64 على الأجهزة التي تدعم نواة 64 بت. سيقوم K64 بتشغيل تطبيقات 32 بت ولكن لن يتم تشغيل ملحقات kernel 32 بت (KEXT) لذا يجب أن يتم نقلها إلى K64 لتتمكن من التحميل.

XNU في نظام التشغيل Mac OS X Lion ، الإصدار 10.7 ، والإصدارات الأحدث فقط توفر نواة 64 بت.

### مجموعة الإدخال / الإخراج
مجموعة الإدخال / الإخراج (I / O Kit) هو إطار عمل برنامج تشغيل الجهاز، المكتوب في مجموعة فرعية من C ++ تستند إلى Embedded C ++. باستخدام التصميم الموجه للكائنات، يتم توفير الميزات الشائعة لأي فئة من برامج التشغيل في إطار العمل، مما يساعد على كتابة برامج تشغيل الأجهزة في وقت أقل وتعليمات برمجية. إن وحدة الإدخال / الإخراج هي متعددة العمليات ومتعددة المعالجات متماثلة (SMP) ، وتسمح للأجهزة القابلة للتوصيل والتكوين التلقائي والديناميكي للجهاز.

يمكن كتابة العديد من برامج التشغيل للتشغيل من مساحة المستخدم، مما يزيد من ثبات النظام. في حالة تعطل برنامج تشغيل مستخدم الفضاء، فلن يؤدي ذلك إلى تعطل النواة. ومع ذلك، إذا تعطل سائق kernel-space فإنه سيعطل النواة. تتضمن أمثلة برامج تشغيل kernel-space مهايئ للأقراص ومهايئ محول الشبكة وبرامج تشغيل الرسومات وبرامج تشغيل الناقل التسلسلي العالمي (USB) ووحدات تحكم مضيف FireWire وبرامج تشغيل برامج الأجهزة الظاهرية مثل VirtualBox و وVMware Fusion.

## حماية الموارد المشتركة
للتشغيل بأمان في الأجهزة ذات المعالجات المتعددة، يجب إجراء تسلسل للوصول إلى الموارد المشتركة (الملفات وهياكل البيانات وما إلى ذلك) بحيث لا تحاول سلاسل العمليات أو العمليات تعديل نفس المورد في نفس الوقت. العمليات الذرية، spinlocks ، الأقسام الحرجة، الاستثناءات المتبادلة ("mutexes") ، والرموز التسلسلية هي كل الطرق الممكنة التي يمكن استخدامها لمنع الوصول المتزامن. مثل الإصدارات الحديثة من Linux وFreeBSD ، فإن XNU ، كما في نظام Mac OS X 10.4 و Darwin 8.0 ، تستخدم نموذج mutex دقيق الحبيبات لتحقيق أداء أعلى في الأنظمة متعددة المعالجات.

## مراجع

تصنيف:نويات متجانسة
تصنيف:آي أو إس
تصنيف:برمجة
تصنيف:برمجة آبل II
تصنيف:ماك أو إس