النواة الصغيرة

بنية أنظمة التشغيل المتجانسة وأنظمة التشغيل القائمة على النواة المصغرة، على التوالي

في علم الحاسوب ، تُعرف النواة المصغرة (أو النواة μ ) بأنها الحد الأدنى من البرمجيات اللازمة لتوفير الآليات المطلوبة لتنفيذ نظام التشغيل . وتشمل هذه الآليات إدارة مساحة العناوين على مستوى منخفض ، وإدارة الخيوط ، والتواصل بين العمليات .

إذا كانت الأجهزة تدعم حلقات متعددة أو أوضاع معالجة مركزية متعددة ، فقد يكون النواة المصغرة هي البرنامج الوحيد الذي يعمل على أعلى مستوى من الامتيازات، والذي يُشار إليه عمومًا بوضع المشرف أو وضع النواة . عادةً ما تُزال وظائف نظام التشغيل التقليدية، مثل برامج تشغيل الأجهزة ومجموعات البروتوكولات وأنظمة الملفات ، من النواة المصغرة وتُشغَّل بدلاً من ذلك في مساحة المستخدم . [ 1 ]

غالباً ما تحتوي النوى المصغرة على شفرة مصدرية أقل من النوى المتجانسة . على سبيل المثال، تحتوي النواة المصغرة لنظام MINIX 3 على ما يقارب 12000 سطر من الشفرة فقط. [ 2 ]

تاريخ

تعود جذور أنظمة التشغيل المصغرة إلى رائد الحوسبة الدنماركي بير برينش هانسن وفترة عمله في شركة الحوسبة الدنماركية ريغنيسنتالن ، حيث قاد جهود تطوير البرمجيات لجهاز الكمبيوتر RC 4000. [ 3 ] في عام 1967، كانت ريغنيسنتالن بصدد تركيب نموذج أولي لجهاز RC 4000 في مصنع الأسمدة Zakłady Azotowe Puławy في بولندا. استخدم الكمبيوتر نظام تشغيل صغيرًا يعمل في الوقت الحقيقي، مصمم خصيصًا لتلبية احتياجات المصنع. شعر برينش هانسن وفريقه بالقلق إزاء افتقار نظام RC 4000 إلى العمومية وإمكانية إعادة الاستخدام. خشوا أن يتطلب كل تركيب نظام تشغيل مختلفًا، لذلك بحثوا عن طرق جديدة وأكثر عمومية لإنشاء برمجيات لجهاز RC 4000. [ 4 ] في عام 1969، أثمرت جهودهم عن إنجاز نظام البرمجة المتعددة RC 4000 . وفرت نواته اتصالاً بين العمليات قائماً على تبادل الرسائل لما يصل إلى 23 عملية غير مميزة، منها 8 عمليات محمية من بعضها البعض في كل مرة. كما نفذ جدولة فترات زمنية للبرامج المنفذة بالتوازي، وبدء تنفيذ البرامج والتحكم فيه بناءً على طلب برامج أخرى قيد التشغيل، وبدء نقل البيانات من وإلى الأجهزة الطرفية. إلى جانب هذه الآليات الأساسية، لم يكن لديه استراتيجية مدمجة لتنفيذ البرامج وتخصيص الموارد. كان من المفترض أن تُنفذ هذه الاستراتيجية من خلال تسلسل هرمي للبرامج قيد التشغيل، حيث تتمتع العمليات الرئيسية بالتحكم الكامل في العمليات الفرعية وتعمل كأنظمة تشغيل لها. [ 5 ] [ 6 ]

بعد أعمال برينش هانسن، بدأ تطوير النوى المصغرة منذ سبعينيات القرن العشرين. [ 7 ] وظهر مصطلح "النواة المصغرة" لأول مرة في عام 1981 على أبعد تقدير. [ 8 ] كانت النوى المصغرة بمثابة استجابة للتغيرات في عالم الحوسبة، وللتحديات العديدة التي واجهت تكييف " النوى الأحادية " الحالية مع هذه الأنظمة الجديدة. فقد كان يجري تطوير برامج تشغيل الأجهزة، ومجموعات البروتوكولات، وأنظمة الملفات، وغيرها من الأنظمة منخفضة المستوى باستمرار. وكان هذا الكود موجودًا عادةً في النواة الأحادية ، مما استلزم جهدًا كبيرًا وإدارة دقيقة للكود. وقد طُوّرت النوى المصغرة انطلاقًا من فكرة تنفيذ جميع هذه الخدمات كبرامج في مساحة المستخدم، مثل أي برنامج آخر، مما يسمح بالعمل عليها بشكل متكامل وتشغيلها وإيقافها كأي برنامج آخر. وهذا لا يُسهّل العمل على هذه الخدمات فحسب، بل يفصل أيضًا كود النواة ليسمح بضبطه بدقة دون القلق بشأن الآثار الجانبية غير المقصودة. علاوة على ذلك، سيسمح ذلك ببناء أنظمة تشغيل جديدة تمامًا على نواة مشتركة، مما يساعد في أبحاث أنظمة التشغيل.

كانت النوى المصغرة موضوعًا رائجًا في ثمانينيات القرن الماضي، بالتزامن مع ظهور أولى الشبكات المحلية العملية. [ 9 ] وكانت نواة AmigaOS Exec مثالًا مبكرًا، حيث طُرحت عام 1986 واستُخدمت في حاسوب شخصي وحققت نجاحًا تجاريًا نسبيًا. وقد سمح غياب حماية الذاكرة، الذي يُعتبر عيبًا في جوانب أخرى، لهذه النواة بتحقيق أداء عالٍ في نقل الرسائل، لأنها لم تكن بحاجة إلى نسخ البيانات أثناء تبادل الرسائل بين برامج مساحة المستخدم. [ 10 ]

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

بُذلت محاولات عديدة لتحسين أداء الأنظمة القائمة، إلا أن العبء الإضافي كان دائمًا كبيرًا، وتطلبت معظم هذه الجهود إعادة برامج مساحة المستخدم إلى نواة النظام. بحلول عام 2000، توقفت معظم الجهود المبذولة لتطوير نواة Mach واسعة النطاق، على الرغم من أن نظام macOS من Apple ، الذي صدر عام 2001، لا يزال يستخدم نواة هجينة تُسمى XNU ، تجمع بين نواة Mach المُعدّلة (الهجينة) لنظام OSF/1 ( نواة OSF MK 7.3) وشفرة من نظام BSD UNIX؛ [ 12 ] [ 13 ] تُستخدم هذه النواة أيضًا في أنظمة iOS و tvOS و watchOS . يستخدم نظام Windows NT ، بدءًا من الإصدار NT 3.1 وحتى Windows 11 ، تصميم نواة هجينة. اعتبارًا من عام 2012كما أن نظام GNU Hurd القائم على Mach يعمل بشكل فعال ومضمن في الإصدارات التجريبية من Arch Linux و Debian .

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

ترتبط النوى المصغرة ارتباطًا وثيقًا بالنوى الخارجية . [ 16 ] كما أنها تشترك في الكثير مع المشرفين الافتراضيين ، [ 17 ] لكن الأخير لا يدعي الحد الأدنى وهو متخصص في دعم الآلات الافتراضية ؛ غالبًا ما تجد النواة المصغرة L4 استخدامًا في قدرة المشرف الافتراضي.

مقدمة

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

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

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

التواصل بين العمليات

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

يمكن أن يكون الاتصال بين العمليات متزامنًا أو غير متزامن. يشبه الاتصال غير المتزامن الاتصال الشبكي: يرسل المُرسِل رسالةً ويستمر في التنفيذ. يتحقق المُستقبِل من توافر الرسالة ( بالاستقصاء )، أو يُنبّه إليها عبر آلية إشعار. يتطلب الاتصال غير المتزامن أن يحتفظ نظام التشغيل بمخازن مؤقتة وقوائم انتظار للرسائل، ويتعامل مع حالات تجاوز سعة المخزن المؤقت؛ كما يتطلب نسخ الرسائل مرتين (من المُرسِل إلى نظام التشغيل ومن نظام التشغيل إلى المُستقبِل). في الاتصال المتزامن، يتوقف الطرف الأول (المُرسِل أو المُستقبِل) حتى يكون الطرف الآخر جاهزًا لتنفيذ الاتصال. لا يتطلب هذا النوع من الاتصال التخزين المؤقت أو النسخ المتعددة، ولكن قد يُصعّب التزامن الضمني عملية البرمجة. يُفضّل معظم المبرمجين الإرسال غير المتزامن والاستقبال المتزامن.

كانت النوى المصغرة من الجيل الأول تدعم عادةً الاتصال بين العمليات المتزامن وغير المتزامن، إلا أنها عانت من ضعف أداء هذا الاتصال. افترض يوشين ليدتكه أن تصميم وتنفيذ آليات الاتصال بين العمليات هما السبب الرئيسي لهذا الأداء الضعيف. في نواة L4 المصغرة، ابتكر ليدتكه أساليبًا خفضت تكاليف الاتصال بين العمليات بمقدار عشرة أضعاف . [ 18 ] تشمل هذه الأساليب استدعاء نظام اتصال بين العمليات يدعم عمليتي الإرسال والاستقبال، مما يجعل جميع عمليات الاتصال بين العمليات متزامنة، وتمرير أكبر قدر ممكن من البيانات في المسجلات. علاوة على ذلك، قدم ليدتكه مفهوم تبديل العمليات المباشر ، حيث يتم أثناء تنفيذ الاتصال بين العمليات تبديل سياق (غير مكتمل) من المرسل مباشرةً إلى المستقبل. إذا تم تمرير جزء من الرسالة أو كلها في المسجلات، كما هو الحال في L4، فإن هذا ينقل الجزء الموجود في المسجلات من الرسالة دون أي نسخ على الإطلاق. بالإضافة إلى ذلك، يتم تجنب عبء استدعاء المجدول. يُعدّ هذا مفيدًا بشكل خاص في الحالة الشائعة التي يُستخدم فيها الاتصال بين العمليات (IPC ) بطريقة استدعاء الإجراءات عن بُعد (RPC) من قِبل عميل يستدعي خادمًا. وهناك تحسين آخر يُسمى الجدولة الكسولة ، حيث يتجنب اجتياز قوائم انتظار الجدولة أثناء الاتصال بين العمليات (IPC) عن طريق ترك الخيوط التي تتوقف أثناء الاتصال بين العمليات (IPC) في قائمة الانتظار الجاهزة. وبمجرد استدعاء المُجدوِل، ينقل هذه الخيوط إلى قائمة الانتظار المناسبة. وبما أن الخيط في كثير من الحالات يُصبح غير متوقف قبل استدعاء المُجدوِل التالي، فإن هذا الأسلوب يوفر جهدًا كبيرًا. وقد اعتمدت أنظمة QNX و MINIX 3 أساليب مماثلة منذ ذلك الحين .

في سلسلة من التجارب، قارن تشين وبيرشاد دورات الذاكرة لكل تعليمة (MCPI) في معالج Ultrix المتكامل مع تلك الخاصة بنواة Mach المصغرة، وذلك عند دمجها مع خادم Unix 4.3BSD يعمل في مساحة المستخدم . أوضحت نتائجهم ضعف أداء Mach بارتفاع دورات الذاكرة لكل تعليمة، وأظهرت أن عدد التعليمات لكل دورة (IPC) وحده لا يُفسر جزءًا كبيرًا من الحمل الزائد للنظام، مما يشير إلى أن التحسينات التي تركز حصريًا على عدد التعليمات لكل دورة ستكون ذات تأثير محدود. [ 19 ] لاحقًا، قام ليدتك بتحسين نتائج تشين وبيرشاد من خلال ملاحظة أن الجزء الأكبر من الفرق بين دورات الذاكرة لكل تعليمة في Ultrix وMach ناتج عن أخطاء في ذاكرة التخزين المؤقت ، وخلص إلى أن تقليل حجم مجموعة عمل ذاكرة التخزين المؤقت لنواة النظام المصغرة بشكل كبير سيحل المشكلة. [ 20 ]

في نظام العميل والخادم، يكون معظم الاتصال متزامنًا بشكل أساسي، حتى عند استخدام العمليات غير المتزامنة، حيث تتمثل العملية النموذجية في استدعاء العميل للخادم ثم انتظار الرد. ولأن هذا الأسلوب يُسهّل التنفيذ بكفاءة أكبر، فقد اتبعت معظم النوى المصغرة نهج L4 واكتفت بتوفير آلية اتصال بين العمليات متزامنة. يمكن تنفيذ الاتصال بين العمليات غير المتزامن باستخدام خيوط مساعدة. مع ذلك، أظهرت التجربة أن جدوى الاتصال بين العمليات المتزامن مشكوك فيها: فهو يفرض تصميمًا متعدد الخيوط على أنظمة بسيطة، مما يؤدي إلى تعقيدات في التزامن. علاوة على ذلك، فإن استدعاء الخادم، الشبيه بـ RPC، يُرتب العميل والخادم بشكل تسلسلي، وهو ما يجب تجنبه إذا كانا يعملان على نوى منفصلة. لذلك، وجدت إصدارات L4 المستخدمة في المنتجات التجارية ضرورة إضافة آلية إشعار غير متزامنة لدعم الاتصال غير المتزامن بشكل أفضل. هذه الآلية، الشبيهة بالإشارات ، لا تحمل بيانات، وبالتالي لا تتطلب تخزينًا مؤقتًا من قِبل النواة. بوجود شكلين من أشكال الاتصال بين العمليات، فقد انتهكوا مع ذلك مبدأ الحد الأدنى. وقد تحولت إصدارات أخرى من الطبقة الرابعة إلى الاتصال غير المتزامن بين العمليات بشكل كامل. [ 21 ]

بما أن الاتصال المتزامن بين العمليات (IPC) يحجب الطرف الأول حتى يصبح الطرف الآخر جاهزًا، فإن الاستخدام غير المقيد قد يؤدي بسهولة إلى حالات جمود . علاوة على ذلك، يمكن للعميل بسهولة شن هجوم حجب الخدمة على الخادم عن طريق إرسال طلب دون محاولة استقبال الرد. لذلك، يجب أن يوفر الاتصال المتزامن بين العمليات وسيلة لمنع الحجب غير المحدد. توفر العديد من النوى المصغرة مهلة زمنية لاستدعاءات الاتصال بين العمليات، مما يحد من وقت الحجب. عمليًا، يُعد اختيار قيم مهلة زمنية معقولة أمرًا صعبًا، وتستخدم الأنظمة حتمًا تقريبًا مهلات زمنية غير محدودة للعملاء ومهلات زمنية صفرية للخوادم. ونتيجة لذلك، يتجه التوجه نحو عدم توفير مهلات زمنية عشوائية، بل مجرد مؤشر يشير إلى أن الاتصال بين العمليات يجب أن يفشل فورًا إذا لم يكن الطرف الآخر جاهزًا. يوفر هذا النهج فعليًا خيارًا بين قيمتي مهلة زمنية: صفر أو غير محدودة. وقد سلكت الإصدارات الحديثة من L4 وMINIX هذا المسار (بينما استخدمت الإصدارات الأقدم من L4 مهلات زمنية). يتجنب QNX هذه المشكلة من خلال مطالبة العميل بتحديد مخزن الرد كجزء من استدعاء إرسال الرسالة. عندما يرد الخادم، تقوم النواة بنسخ البيانات إلى مخزن العميل المؤقت، دون الحاجة إلى انتظار العميل لتلقي الرد بشكل صريح. [ 22 ]

الخوادم

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

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

بالإضافة إلى ذلك، يمكن تصحيح العديد من حالات "التعطل" ببساطة عن طريق إيقاف الخادم وإعادة تشغيله ، وهو أمر غير عملي إذا تطلب الأمر إعادة تشغيل النواة بالكامل. مع ذلك، يُفقد جزء من حالة النظام عند تعطل الخادم، لذا يتطلب هذا الأسلوب من التطبيقات التعامل مع حالات التعطل. ومن الأمثلة الجيدة على ذلك الخادم المسؤول عن اتصالات TCP/IP : إذا أُعيد تشغيل هذا الخادم، ستواجه التطبيقات "انقطاعًا" في الاتصال، وهو أمر طبيعي في الأنظمة الشبكية. أما بالنسبة للخدمات الأخرى، فإن التعطل أقل توقعًا وقد يتطلب تغييرات في كود التطبيق. بالنسبة لنظام QNX، تُقدم إمكانية إعادة التشغيل ضمن مجموعة أدوات التوافر العالي QNX. [ 23 ]

برامج تشغيل الأجهزة

تُجري برامج تشغيل الأجهزة عادةً عمليات وصول مباشر إلى الذاكرة (DMA)، وبالتالي يمكنها الكتابة إلى مواقع عشوائية في الذاكرة الفعلية، بما في ذلك هياكل بيانات النواة المختلفة. لذلك، يجب الوثوق بهذه البرامج. ومن المفاهيم الخاطئة الشائعة أن هذا يعني بالضرورة أنها جزء من النواة. في الواقع، لا يُعدّ برنامج التشغيل أكثر أو أقل جدارة بالثقة لمجرد كونه جزءًا من النواة.

على الرغم من أن تشغيل برنامج تشغيل جهاز في مساحة المستخدم لا يقلل بالضرورة من الضرر الذي قد يسببه برنامج تشغيل معيب، إلا أنه عمليًا مفيد لاستقرار النظام في وجود برامج تشغيل بها أخطاء (وليست برامج ضارة): إذ يمكن لأجهزة إدارة الذاكرة رصد انتهاكات الوصول إلى الذاكرة من قِبل كود برنامج التشغيل (وليس الجهاز نفسه). علاوة على ذلك، لا تدعم العديد من الأجهزة الوصول المباشر إلى الذاكرة (DMA)؛ ويمكن جعل برامج تشغيلها غير موثوقة بتشغيلها في مساحة المستخدم. في الآونة الأخيرة، يتميز عدد متزايد من أجهزة الكمبيوتر بوحدات إدارة ذاكرة الإدخال/الإخراج (IOMMUs) ، والتي يمكن استخدام العديد منها لتقييد وصول الجهاز إلى الذاكرة الفعلية. [ 24 ] وهذا يسمح أيضًا بجعل برامج تشغيل وضع المستخدم غير موثوقة.

في الواقع، تسبق برامج تشغيل وضع المستخدم النواة المصغرة. ففي عام 1967، دعم نظام ميشيغان الطرفي (MTS) برامج تشغيل مساحة المستخدم (بما في ذلك دعم نظام الملفات)، وكان أول نظام تشغيل يُصمم بهذه الإمكانية. [ 25 ] تاريخيًا، لم تكن برامج التشغيل تُشكل مشكلة كبيرة، نظرًا لقلة عدد الأجهزة وموثوقيتها، لذا فإن وجودها في النواة بسّط التصميم وتجنب مشاكل الأداء المحتملة. أدى ذلك إلى النمط التقليدي لبرامج التشغيل في النواة في أنظمة يونكس، [ 26 ] ولينكس، وويندوز إن تي. مع انتشار أنواع مختلفة من الأجهزة الطرفية، ازداد حجم كود برامج التشغيل بشكل كبير، وفي أنظمة التشغيل الحديثة، يُهيمن على حجم الكود في النواة.

المكونات الأساسية والحد الأدنى

بما أن النواة المصغرة يجب أن تسمح ببناء خدمات نظام تشغيل متنوعة عليها، فيجب أن توفر بعض الوظائف الأساسية. وهذا يشمل على الأقل ما يلي:

تم ابتكار هذا التصميم البسيط من خلال برنامج Nucleus الخاص ببرينش هانسن وبرنامج إدارة الأجهزة الافتراضية (VM) الخاص بشركة IBM . وقد تم إضفاء الطابع الرسمي عليه منذ ذلك الحين في مبدأ ليدتك للبساطة .

لا يُسمح بمفهوم ما داخل النواة المصغرة إلا إذا كان نقله خارج النواة، أي السماح بتنفيذات منافسة، سيمنع تنفيذ الوظائف المطلوبة للنظام. [ 20 ]

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

يرتبط بمبدأ الحد الأدنى، وهو بنفس القدر من الأهمية لتصميم النواة المصغرة، فصل الآلية عن السياسة ، مما يُمكّن من بناء أنظمة متنوعة فوق نواة مصغرة. لا يمكن استبدال أي سياسة مُدمجة في النواة على مستوى المستخدم، وبالتالي يحد ذلك من عمومية النواة المصغرة. [ 16 ] يمكن تغيير السياسة المُطبقة في خوادم مستوى المستخدم عن طريق استبدال الخوادم (أو السماح للتطبيق بالاختيار بين خوادم متنافسة تُقدم خدمات مماثلة).

لتحقيق الكفاءة، تحتوي معظم النوى المصغرة على جدولة وتدير المؤقتات، مما ينتهك مبدأ الحد الأدنى ومبدأ فصل السياسة عن الآلية.

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

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

أداء

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

لذا، يُعدّ الأداء مشكلة محتملة في أنظمة النواة المصغّرة، وقد عانت أنظمة النواة المصغّرة من الجيل الأول، مثل Mach و ChorusOS، من ضعف الأداء. [ 19 ] مع ذلك، بيّن يوشين ليدتكه أن مشاكل أداء Mach كانت نتيجةً لسوء التصميم والتنفيذ، وتحديدًا حجم ذاكرة التخزين المؤقت الكبير في Mach . [ 20 ] أثبت ليدتكه، من خلال نواة L4 المصغّرة الخاصة به، أنه من خلال التصميم والتنفيذ الدقيقين، ولا سيما باتباع مبدأ الحد الأدنى، يمكن تقليل تكاليف IPC بأكثر من عشرة أضعاف مقارنةً بـ Mach. ولا يزال أداء IPC لـ L4 متفوقًا على مجموعة واسعة من البنى. [ 27 ] [ 28 ] [ 29 ]

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

توجد العديد من أنظمة الخوادم المتعددة التجارية، ولا سيما أنظمة الوقت الحقيقي QNX و Integrity . لم تُنشر أي مقارنة شاملة لأداء هذه الأنظمة مقارنةً بالأنظمة المتكاملة. علاوة على ذلك، لا يبدو أن الأداء هو الشغل الشاغل لهذه الأنظمة التجارية، التي تُركز بدلاً من ذلك على سرعة استجابة معالجة المقاطعات (QNX) والبساطة لضمان المتانة. وقد مثّل مشروع IBM Sawmill Linux محاولةً لبناء نظام تشغيل عالي الأداء للخوادم المتعددة. [ 31 ] إلا أن هذا المشروع لم يُستكمل.

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

حماية

لقد نوقشت فوائد النواة المصغرة الأمنية مرارًا وتكرارًا. [ 33 ] [ 34 ] في سياق الأمن، يرى البعض أن مبدأ الحد الأدنى للنواة المصغرة هو نتيجة مباشرة لمبدأ أقل الامتيازات ، الذي ينص على أن جميع التعليمات البرمجية يجب أن تقتصر على الامتيازات اللازمة لتوفير الوظائف المطلوبة. يتطلب الحد الأدنى الحفاظ على قاعدة الحوسبة الموثوقة (TCB) للنظام في حدها الأدنى. ولأن النواة (التعليمات البرمجية التي تُنفذ في وضع الامتيازات على الجهاز) لديها وصول غير مُدقق إلى أي بيانات، وبالتالي يمكنها انتهاك سلامتها أو سريتها، فإن النواة تُعد دائمًا جزءًا من قاعدة الحوسبة الموثوقة. لذا، يُعد تقليلها أمرًا طبيعيًا في التصميم المُوجه نحو الأمن.

ونتيجةً لذلك، استُخدمت تصميمات النواة المصغّرة في الأنظمة المصممة لتطبيقات عالية الأمان، بما في ذلك KeyKOS و EROS والأنظمة العسكرية. في الواقع، تتضمن المعايير المشتركة (CC) في أعلى مستوى ضمان ( مستوى ضمان التقييم (EAL) 7) شرطًا صريحًا بأن يكون هدف التقييم "بسيطًا"، وهو إقرارٌ بالاستحالة العملية لإثبات موثوقية نظام معقد بشكل كامل. مرة أخرى، يُعدّ مصطلح "بسيط" مُضللًا وغير مُحدد بدقة. على الأقل، قدّمت معايير تقييم أنظمة الحاسوب الموثوقة التابعة لوزارة الدفاع الأمريكية صياغةً أكثر دقةً في فئتي B3/A1.

"يجب أن يقوم مركز التحكم التقني بتنفيذ آليات حماية كاملة وبسيطة من الناحية المفاهيمية ذات دلالات محددة بدقة. ويجب توجيه هندسة النظام بشكل كبير نحو تقليل تعقيد مركز التحكم التقني، بالإضافة إلى استبعاد الوحدات غير الحرجة للحماية منه."

معايير تقييم أنظمة الحاسوب الموثوقة التابعة لوزارة الدفاع

في عام 2018، زعمت ورقة بحثية قُدّمت في مؤتمر أنظمة آسيا والمحيط الهادئ أن النوى المصغّرة أكثر أمانًا من النوى المتجانسة، وذلك من خلال دراسة جميع الثغرات الأمنية الحرجة المنشورة (CVEs) لنواة لينكس في ذلك الوقت. وخلصت الدراسة إلى أن 40% من المشكلات لا يمكن أن تحدث إطلاقًا في نواة مصغّرة تم التحقق منها رسميًا، وأن 4% فقط من المشكلات ستبقى دون معالجة في مثل هذا النظام. [ 35 ]

الجيل الثالث

ركزت الدراسات الحديثة حول النوى المصغرة على المواصفات الرسمية لواجهة برمجة تطبيقات النواة، والبراهين الرسمية لخصائص أمان هذه الواجهة وصحة تنفيذها. أول مثال على ذلك هو برهان رياضي لآليات الحصر في EROS، استنادًا إلى نموذج مبسط لواجهة برمجة تطبيقات EROS. [ 36 ] وفي وقت لاحق (عام 2007)، أُجريت مجموعة شاملة من البراهين التي تم التحقق منها آليًا لخصائص نموذج الحماية الخاص بـ seL4 ، وهو إصدار من L4. [ 37 ]

وقد أدى ذلك إلى ظهور ما يُعرف باسم الجيل الثالث من النوى المصغرة ، [ 38 ] والتي تتميز بواجهة برمجة تطبيقات (API) موجهة نحو الأمان مع تحكم في الوصول إلى الموارد من خلال الصلاحيات ، واعتبار المحاكاة الافتراضية أولوية قصوى، ونهج مبتكرة لإدارة موارد النواة، [ 39 ] وهدف تصميمي يتمثل في ملاءمتها للتحليل الرسمي ، إلى جانب الهدف المعتاد المتمثل في الأداء العالي. ومن الأمثلة على ذلك: Coyotos و seL4 وNova، [ 40 ] [ 41 ] و Redox وFiasco.OC. [ 40 ] [ 42 ]

في حالة seL4، تم تحقيق التحقق الرسمي الكامل من التنفيذ، [ 38 ] أي برهان رياضي على أن تنفيذ النواة متوافق مع مواصفاته الرسمية. وهذا يضمن أن الخصائص المثبتة حول واجهة برمجة التطبيقات (API) تنطبق بالفعل على النواة الحقيقية، وهو مستوى من التأكيد يتجاوز حتى معيار CC EAL7. تبع ذلك براهين على خصائص إنفاذ الأمان لواجهة برمجة التطبيقات، وبرهان يوضح أن الشفرة الثنائية القابلة للتنفيذ هي ترجمة صحيحة لتنفيذ لغة C، مما يُخرج المُصرّف من كتلة التحكم في الاختبار (TCB). تُشكّل هذه البراهين مجتمعةً برهانًا شاملاً لخصائص أمان النواة. [ 43 ]

أمثلة

بعض الأمثلة على النوى المصغرة هي:

النواة النانوية

يشير مصطلح "النانوكرنل" أو "البيكوكرنل" تاريخياً إلى:

  • نواةٌ يكون فيها إجمالي حجم كود النواة، أي الكود الذي يُنفَّذ في الوضع المميز للأجهزة، صغيرًا جدًا. وقد استُخدم مصطلح "النواة البيكو" أحيانًا للتأكيد على صغر الحجم. صاغ جوناثان س. شابيرو مصطلح "النواة النانوية" في بحثه "معمارية النواة النانوية لنظام KeyKOS" . كان هذا المصطلح ردًا ساخرًا على نظام Mach ، الذي ادّعى أنه نواةٌ ميكروية، بينما اعتبره شابيرو نظامًا متجانسًا، وغير مُهيكل أساسًا، وأبطأ من الأنظمة التي سعى إلى استبدالها. يشير الاستخدام المتكرر للمصطلح والردود عليه لاحقًا، بما في ذلك صياغة مصطلح "النواة البيكو"، إلى أن الفكرة الأساسية لم تُفهم جيدًا. وقد أصبح كل من "النواة النانوية" و "النواة البيكو" يُشيران فيما بعد إلى نفس معنى مصطلح "النواة الميكروية".
  • طبقة افتراضية تقع أسفل نظام التشغيل، والتي يُشار إليها بشكل أدق باسم برنامج إدارة الأجهزة الافتراضية (Hypervisor ).
  • طبقة تجريد الأجهزة التي تشكل الجزء الأدنى مستوى من النواة، وتستخدم أحيانًا لتوفير وظائف الوقت الحقيقي لأنظمة التشغيل العادية، مثل Adeos. [ 44 ]

وهناك حالة واحدة على الأقل لا يشير فيها مصطلح "النواة النانوية" إلى نواة صغيرة، بل إلى نواة تدعم دقة ساعة نانوثانية . [ 45 ]

انظر أيضاً

مراجع

  1. هيردر، جوريت ن. (23 فبراير 2005). "نحو نظام تشغيل حقيقي ذي نواة مصغرة" (ملف PDF) . minix3.org . تم الاطلاع عليه بتاريخ 22 يونيو 2015 .
  2. "اقرأ المزيد" . تم الاطلاع عليه بتاريخ 20 ديسمبر 2016 .
  3. ^ "لبير برينش هانسن" . جمعية IEEE للكمبيوتر . تم الاسترجاع في 13 سبتمبر 2016 .
  4. برينش هانسن، بير (2004). قصة مبرمج: حياة رائد في مجال الحاسوب . تم الاطلاع عليه بتاريخ 13 سبتمبر 2016 .
  5. برينش هانسن، بير (أبريل 1969). برنامج RC 4000: نظام متعدد البرامج (ملف PDF) (تقرير فني). ريغني سنترالين . تم الاطلاع عليه بتاريخ 13 سبتمبر 2016 .
  6. برينش هانسن، بير (1970). "نواة نظام تشغيل متعدد البرامج" (ملف PDF) . اتصالات ACM . 13 (4): 238-250 . CiteSeerX 10.1.1.105.4204 . doi : 10.1145/362258.362278 . S2CID 9414037 .  
  7. . وولف، ويليام؛ كوهين، إليس؛ كورين، ويليام؛ جونز، أنيتا؛ ليفين، روي؛ بيرسون، سي.؛ بولاك، فريد (يونيو 1974). "هيدرا: نواة نظام تشغيل متعدد المعالجات" . اتصالات رابطة مكائن ​​الحوسبة . 17 (6): 337-345 . doi : 10.1145/355616.364017 . S2CID 8011765 . 
  8. رشيد، ريتشارد؛ روبرتسون، جورج (ديسمبر 1981). "أكسنت: نواة نظام تشغيل شبكي موجه للاتصالات". وقائع ندوة ACM الثامنة حول مبادئ أنظمة التشغيل SOSP '81 . باسيفيك غروف، كاليفورنيا. الصفحات 64-75 . doi : 10.1145/800216.806593 . 
  9. ليدكه، يوشين (سبتمبر 1996). "نحو نوى مصغرة حقيقية" . اتصالات رابطة مكائن ​​الحوسبة . 39 (9): 70-71 .
  10. ساسنراث، كارل (1986). دليل مرجعي لنواة ذاكرة القراءة فقط (ROM) لجهاز أميغا . تنفيذي.{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  11. "الصفحة الرئيسية لمشروع Mach في قسم علوم الحاسوب بجامعة كارنيجي ميلون" . www.cs.cmu.edu . جامعة كارنيجي ميلون . تاريخ الاسترجاع: 8 أغسطس 2024 .
  12. ماجي، جيم. جلسة WWDC 2000 رقم 106 - نظام التشغيل ماك أو إس إكس: النواة . الدقيقة 14. مؤرشف من الأصل في 11 ديسمبر 2021.
  13. "نقل تطبيقات يونكس/لينكس إلى نظام التشغيل ماك أو إس إكس" . أبل . تم الاطلاع عليه بتاريخ 26 أبريل 2011 .
  14. "Redox - نظام التشغيل التالي (من الجيل التالي) - Redox - نظام التشغيل التالي (من الجيل التالي)" . www.redox-os.org .
  15. "هيليوس" . ares-os.org .
  16. 1 2 3 ليدتكي، يوخن (سبتمبر 1996). "نحو ميكروكيرنلز حقيقية" . اتصالات ACM . 39 (9): 70-77 . دوى : 10.1145 / 234215.234473 . S2CID 2867357 . 
  17. هايزر، جيرنوت ؛ أوليغ، فولكمار؛ ليفاسور، جوشوا (يناير 2006). "هل تُعدّ أنظمة مراقبة الآلات الافتراضية أنظمةً مصغّرةً مُصممةً بالشكل الأمثل؟" . مجلة ACM SIGOPS لأنظمة التشغيل . 40 (1). ACM: 95-99 . doi : 10.1145/1113361.1113363 . S2CID 7414062. مؤرشف من الأصل في 13 يناير 2014. تم الاطلاع عليه في 13 يناير 2014 . 
  18. ليدتك، يوشين (ديسمبر 1993). تحسين أداء الاتصال بين العمليات من خلال تصميم النواة . المؤتمر الرابع عشر لجمعية الحوسبة الآلية حول مبادئ أنظمة التشغيل. آشفيل، كارولاينا الشمالية. الصفحات 175-188 . CiteSeerX 10.1.1.40.1293 .  
  19. 1 2 تشين، ج. برادلي؛ بيرشاد، برايان ن. (ديسمبر 1993). "تأثير بنية نظام التشغيل على أداء نظام الذاكرة" (ملف PDF) . وقائع ندوة ACM الرابعة عشرة حول مبادئ أنظمة التشغيل SOSP '93 . آشفيل، كارولاينا الشمالية. الصفحات 120-133 . doi : 10.1145/168619.168629 . 
  20. ليدتك ، يوشين ( ديسمبر 1995). "حول بناء النواة المصغرة". وقائع ندوة ACM الخامسة عشرة حول مبادئ أنظمة التشغيل SOSP '95 . منتجع كوبر ماونتن ، كولورادو. الصفحات 237-250 . doi : 10.1145/224056.224075 . 
  21. إلفينستون، كيفن؛ هايزر، جيرنوت (نوفمبر 2013). "من L3 إلى seL4: ماذا تعلمنا خلال 20 عامًا من النوى المصغرة L4؟". وقائع ندوة ACM الرابعة والعشرين حول مبادئ أنظمة التشغيل SOSP '13 . فارمنجتون، بنسلفانيا. الصفحات 133-150 . doi : 10.1145/2517349.2522720 . 
  22. "تمرير الرسائل المتزامن" . تم الاطلاع عليه في 3 سبتمبر 2024 .
  23. "مجموعة أدوات التوافر العالي لنظام QNX" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 24 أغسطس 2005.
  24. وونغ، ويليام (27 أبريل 2007). "الإدخال/الإخراج، الإدخال/الإخراج، هيا بنا إلى العمل الافتراضي" . التصميم الإلكتروني . تم الاسترجاع في 8 يونيو 2009 .
  25. ألكسندر، مايكل ت. (1971). "تنظيم وخصائص نظام ميشيغان الطرفي". وقائع مؤتمر الحاسوب المشترك للخريف، 16-18 نوفمبر 1971. المجلد 40. الصفحات 589-591 . doi : 10.1145/1478873.1478951 . S2CID 14614148 .   
  26. ليونز، جون (1 أغسطس 1977). تعليق ليونز على نظام يونكس، الإصدار السادس، مع شفرة المصدر . اتصالات الند للند. ISBN 978-1-57398-013-5.
  27. ^ ليدتكي، يوخن ؛ إلفينستون، كيفن؛ شونبيرج، سيباستيان. هارتيج، هيرمان. الأماكن القريبة : إسلام، نعيم؛ جايجر ، ترينت (مايو 1997). تم تحقيق أداء IPC (لا يزال الأساس للتوسعة) . ورشة العمل السادسة حول المواضيع الساخنة في أنظمة التشغيل. كيب كود، ماساتشوستس: IEEE. الصفحات من 28 إلى 31. دوى : 10.1109/HOTOS.1997.595177 . اتش دي ال : 1959.4/39929 . 
  28. غراي، تشارلز؛ تشابمان، ماثيو؛ تشاب، بيتر؛ موسبرغر-تانغ، ديفيد؛ هايزر، غيرنوت (أبريل 2005). إيتانيوم - قصة مُنفِّذ نظام . المؤتمر التقني السنوي لـ USENIX. أناهايم، كاليفورنيا. الصفحات 264-278 . 
  29. فان شايك، كارل؛ هايزر، غيرنوت (يناير 2007). النوى المصغرة عالية الأداء والافتراضية على معمارية ARM والمعمارية المجزأة . ورشة العمل الدولية الأولى حول النوى المصغرة للأنظمة المدمجة. سيدني، أستراليا: NICTA. الصفحات 11-21 . مؤرشف من الأصل في 26 أبريل 2007. تم الاسترجاع في 1 أبريل 2007 . 
  30. هارتيغ، هيرمان؛ هوموث، مايكل؛ ليدتكه، يوشين ؛ شونبيرغ، سيباستيان (أكتوبر 1997). "أداء الأنظمة القائمة على النواة μ" . وقائع الندوة السادسة عشرة لجمعية ACM حول مبادئ أنظمة التشغيل - SOSP '97 . المجلد 31. الصفحات 66-77 . doi : 10.1145/268998.266660 . ISBN   0-89791-916-5. S2CID 1706253 . 
  31. ^ جيفلوت، آلان. جايجر، ترينت؛ بارك، يونهو؛ الأماكن القريبة : إلفينستون، كيفن ج. أوليج، فولكمار؛ تيدزويل، جوناثان E.؛ ديلر، لوك. وآخرون . (2000). نهج المنشرة multiserver . ورشة عمل ACM SIGOPS الأوروبية التاسعة. كولدينج، الدنمارك. ص 109 – 114. CiteSeerX 10.1.1.25.8376 .   
  32. ليزلي، بن؛ تشاب، بيتر؛ فيتزروي-ديل، نيكولاس؛ غوتز، ستيفان؛ غراي، تشارلز؛ ماكفيرسون، لوك؛ بوتس، دانيال؛ شين، يويتينغ؛ إلفينستون، كيفن؛ هايزر، غيرنوت (سبتمبر 2005). "برامج تشغيل الأجهزة على مستوى المستخدم: الأداء المُحقق". مجلة علوم وتكنولوجيا الحاسوب . 20 (5): 654-664 . doi : 10.1007/s11390-005-0654-4 . hdl : 1959.4/39966 . S2CID 1121537 . 
  33. تانينباوم، أندرو س. "مناظرة تانينباوم-تورفالدز، الجزء الثاني" .
  34. تانينباوم، أ.، هيردر، ج. وبوس، هـ. (مايو 2006).
  35. بيغز، سيمون؛ لي، دامون؛ هايزر، غيرنوت (2018). "صدر الحكم: تصميم نظام التشغيل المتجانس معيب: التصاميم القائمة على النواة المصغرة تُحسّن الأمان" . وقائع ورشة عمل آسيا والمحيط الهادئ التاسعة حول الأنظمة . جزيرة جيجو، جمهورية كوريا: جمعية آلات الحوسبة. الصفحات 1-7 . doi : 10.1145/3265723.3265733 . 
  36. شابيرو، جوناثان س.؛ ويبر، صموئيل. التحقق من آلية احتواء EROS . مؤتمر IEEE للأمن والخصوصية. مؤرشف من الأصل في 3 مارس 2016.
  37. إلكادوي، داميكا؛ كلاين، جيروين؛ إلفينستون، كيفن (2007). نموذج حماية مُدقَّق لنواة seL4 المصغّرة . مُقدَّم للنشر. مؤرشف من الأصل في 29 نوفمبر 2011. تم الاطلاع عليه في 10 أكتوبر 2007 .
  38. 1 2 كلاين، جيروين؛ إلفينستون، كيفن؛ هايزر، جيرنوت؛ أندرونيك، جون؛ كوك، ديفيد؛ ديرين، فيليب؛ إلكادوي، داميكا؛ إنجلهارت، كاي؛ كولانسكي، رافال؛ نورش، مايكل؛ سيويل، توماس؛ توش، هارفي؛ وينوود، سيمون (أكتوبر 2009). seL4: التحقق الرسمي من نواة نظام التشغيل (ملف PDF) . المؤتمر الثاني والعشرون لجمعية ACM حول مبادئ أنظمة التشغيل. بيج سكاي، مونتانا.
  39. إلكادوي، داميكا؛ ديرين، فيليب؛ إلفينستون، كيفن (أبريل 2008). تصميم النواة لعزل وضمان الذاكرة الفعلية . ورشة العمل الأولى حول العزل والتكامل في الأنظمة المدمجة. غلاسكو، المملكة المتحدة. doi : 10.1145/1435458 . مؤرشف من الأصل في 24 أبريل 2010. تم الاطلاع عليه في 17 أغسطس 2009 .
  40. ١ ٢ "الصفحة الرئيسية لجامعة دريسدن التقنية: أنظمة التشغيل: البحث: النواة المصغرة والمشرف" . كلية علوم الحاسوب . جامعة دريسدن التقنية. ١٢ أغسطس ٢٠١٠. مؤرشف من الأصل في ٦ أبريل ٢٠١٢. تم الاطلاع عليه في ٥ نوفمبر ٢٠١١ .
  41. شتاينبرغ، أودو؛ كاور، برنارد (أبريل 2010). نوفا: بنية افتراضية آمنة قائمة على المشرف المصغر . يوروسيس 2010. باريس، فرنسا. الصفحات 209-222 . doi : 10.1145/1755913.1755935 . 
  42. لاكورزينسكي، آدم؛ وارج، ألكسندر (مارس 2009). ترويض الأنظمة الفرعية - القدرات كتحكم شامل في الوصول إلى الموارد في الطبقة الرابعة . IIES'09: ورشة العمل الثانية حول العزل والتكامل في الأنظمة المدمجة. نورمبرغ ، ألمانيا. CiteSeerX 10.1.1.629.9845 . 
  43. كلاين، جيروين؛ أندرونيك، جون؛ إلفينستون، كيفن؛ موراي، توبي؛ سيويل، توماس؛ كولانسكي، رافال؛ هايزر، جيرنوت (فبراير 2014). "التحقق الرسمي الشامل من النواة المصغرة لنظام التشغيل". معاملات ACM لأنظمة الحاسوب . 32 (1): 2:1–2:70. doi : 10.1145/2560537 . S2CID 4474342 . 
  44. جيروم، فيليب (2005). "الحياة مع أديوس" (ملف PDF) . تم الاطلاع عليه بتاريخ 21 مايو 2026 .{{cite web}}: CS1 maint: url-status ( link )
  45. ^ ميلز، ديفيد ل. كامب ، بول هينينج (28 نوفمبر 2000). “النواة النانوية” (PDF) . تم الاسترجاع في 28 أغسطس 2017 .

للمزيد من القراءة