النواة (نظام التشغيل)

النواة هي برنامج حاسوبي يُمثل جوهر نظام التشغيل ، ويتمتع بالتحكم الكامل في جميع مكونات النظام. كما أنها مسؤولة عن منع وتخفيف حدة التعارضات بين العمليات المختلفة. [ 1 ] وهي الجزء من نظام التشغيل الذي يبقى دائمًا في الذاكرة [ 2 ] ، وتُسهّل التفاعلات بين مكونات العتاد والبرمجيات. تتحكم النواة الكاملة في جميع موارد العتاد (مثل الإدخال/الإخراج ، والذاكرة، والتشفير) عبر برامج تشغيل الأجهزة ، وتُحَكّم في التعارضات بين العمليات المتعلقة بهذه الموارد، وتُحسّن استخدام الموارد المشتركة، مثل وحدة المعالجة المركزية ، والذاكرة المؤقتة ، وأنظمة الملفات، ومنافذ الشبكة. في معظم الأنظمة، تُعد النواة من أوائل البرامج التي يتم تحميلها عند بدء التشغيل (بعد مُحمّل الإقلاع ). وهي تُعالج باقي عمليات بدء التشغيل، بالإضافة إلى الذاكرة، والأجهزة الطرفية ، وطلبات الإدخال/الإخراج من البرمجيات ، وتُترجمها إلى تعليمات لمعالجة البيانات لوحدة المعالجة المركزية .
عادةً ما يتم تحميل الشيفرة الأساسية لنواة النظام في منطقة ذاكرة منفصلة، محمية من وصول برامج التطبيقات أو الأجزاء الأخرى الأقل أهمية في نظام التشغيل. وتؤدي النواة مهامها، مثل جدولة العمليات، وإدارة الأجهزة كالقرص الصلب ، ومعالجة المقاطعات ، في هذه المساحة المحمية . في المقابل، تستخدم برامج التطبيقات، مثل المتصفحات ومعالجات النصوص ومشغلات الصوت والفيديو، مساحة ذاكرة منفصلة تُسمى مساحة المستخدم . يمنع هذا تداخل بيانات المستخدم وبيانات النواة، مما قد يُسبب عدم استقرار النظام وبطئه، [ 1 ] كما يمنع التطبيقات المعطلة من التأثير على تطبيقات أخرى أو التسبب في انهيار نظام التشغيل بأكمله. حتى في الأنظمة التي تُضمّن فيها النواة ضمن مساحات عناوين التطبيقات ، تُستخدم حماية الذاكرة لمنع التطبيقات غير المصرح لها من تعديل النواة.
تُعد واجهة النواة طبقة تجريد منخفضة المستوى . عندما يطلب أحد العمليات خدمة من النواة، يجب عليه استدعاء استدعاء نظام ، عادةً من خلال دالة تغليف .
توجد تصاميم معمارية مختلفة لنواة النظام. تعمل النواة المتجانسة بالكامل في مساحة عنوان واحدة، حيث يعمل المعالج المركزي في وضع الإشراف ، وذلك أساسًا لتحسين السرعة. أما النواة المصغرة، فتشغل معظم خدماتها، وليس جميعها، في مساحة المستخدم، [ 3 ] كما تفعل عمليات المستخدم، وذلك أساسًا لتعزيز المرونة والنمطية . [ 4 ] يُعد نظام MINIX 3 مثالًا بارزًا على تصميم النواة المصغرة. بعض النوى، مثل نواة لينكس ، تجمع بين التجانس والنمطية، إذ يمكنها إضافة وحدات نواة قابلة للتحميل وإزالتها أثناء التشغيل.
يُعدّ هذا المكوّن المركزي في نظام الحاسوب مسؤولاً عن تنفيذ البرامج. ويتولّى النواة مسؤولية تحديد أيّ من البرامج العديدة قيد التشغيل يجب تخصيصها للمعالج أو المعالجات في أيّ وقت.
ذاكرة الوصول العشوائي
تُستخدم ذاكرة الوصول العشوائي (RAM) لتخزين كلٍ من تعليمات البرنامج والبيانات. [ أ ] عادةً، يجب أن يكون كلاهما موجودًا في الذاكرة لكي يتمكن البرنامج من التنفيذ. غالبًا ما تحتاج برامج متعددة إلى الوصول إلى الذاكرة، مما يتطلب في كثير من الأحيان ذاكرة أكبر مما هو متاح في الحاسوب. يتولى نظام التشغيل (Kernel) مسؤولية تحديد الذاكرة التي يمكن لكل عملية استخدامها، وتحديد الإجراء الواجب اتخاذه عند عدم كفاية الذاكرة المتاحة.
أجهزة الإدخال/الإخراج
تشمل أجهزة الإدخال/الإخراج، على سبيل المثال لا الحصر، الأجهزة الطرفية مثل لوحات المفاتيح، والفأرات، ومحركات الأقراص، والطابعات، وأجهزة USB ، ومحولات الشبكة، وأجهزة العرض . توفر نواة النظام طرقًا ملائمة للتطبيقات لاستخدام هذه الأجهزة، والتي عادةً ما تكون مُجرّدة بواسطة النواة بحيث لا تحتاج التطبيقات إلى معرفة تفاصيل تنفيذها.
إدارة الموارد
من الجوانب الأساسية لإدارة الموارد تحديد نطاق التنفيذ ( مساحة العناوين ) وآلية الحماية المستخدمة لتنظيم الوصول إلى الموارد داخل هذا النطاق. [ 5 ] كما توفر النواة طرقًا للمزامنة والتواصل بين العمليات (IPC). قد تكون هذه التطبيقات موجودة داخل النواة نفسها، أو قد تعتمد النواة على عمليات أخرى قيد التشغيل. ورغم أن النواة ملزمة بتوفير التواصل بين العمليات (IPC) لتوفير الوصول إلى الإمكانيات التي توفرها العمليات الأخرى، إلا أنه يجب عليها أيضًا تزويد البرامج قيد التشغيل بآلية لطلب الوصول إلى هذه الإمكانيات. كما أن النواة مسؤولة عن تبديل السياق بين العمليات أو الخيوط.
إدارة الذاكرة
يتمتع نظام التشغيل (النواة) بصلاحية كاملة للوصول إلى ذاكرة النظام، ويجب عليه السماح للعمليات بالوصول الآمن إلى هذه الذاكرة حسب حاجتها. غالبًا ما تكون الخطوة الأولى في ذلك هي العنونة الافتراضية ، والتي تُحقق عادةً عن طريق الترحيل و/أو التجزئة . تسمح العنونة الافتراضية للنواة بجعل عنوان فعلي معين يبدو كعنوان آخر، وهو العنوان الافتراضي. قد تختلف مساحات العناوين الافتراضية بين العمليات المختلفة؛ فالذاكرة التي تصل إليها عملية ما عند عنوان افتراضي معين قد تختلف عن الذاكرة التي تصل إليها عملية أخرى عند العنوان نفسه. هذا يسمح لكل برنامج بالتصرف كما لو كان البرنامج الوحيد قيد التشغيل (باستثناء النواة)، وبالتالي يمنع التطبيقات من التسبب في تعطل بعضها البعض. [ 6 ]
في العديد من الأنظمة، قد يشير العنوان الظاهري للبرنامج إلى بيانات غير موجودة حاليًا في الذاكرة. تسمح طبقة التوجيه غير المباشر التي يوفرها التوجيه الظاهري لنظام التشغيل باستخدام مخازن بيانات أخرى، مثل القرص الصلب ، لتخزين ما كان سيبقى في الذاكرة الرئيسية ( RAM ). ونتيجةً لذلك، يمكن لأنظمة التشغيل السماح للبرامج باستخدام ذاكرة أكبر مما هو متاح فعليًا في النظام. عندما يحتاج برنامج ما إلى بيانات غير موجودة في ذاكرة الوصول العشوائي (RAM)، يُرسل المعالج إشارةً إلى النواة تُفيد بذلك، فتستجيب النواة بكتابة محتويات كتلة ذاكرة غير نشطة إلى القرص (إذا لزم الأمر) واستبدالها بالبيانات التي طلبها البرنامج. بعد ذلك، يمكن استئناف البرنامج من النقطة التي توقف عندها. تُعرف هذه الآلية عمومًا باسم الترحيل عند الطلب .
تتيح المعالجة الافتراضية إنشاء أقسام افتراضية للذاكرة في منطقتين منفصلتين، إحداهما مخصصة لنواة النظام ( مساحة النواة ) والأخرى للتطبيقات ( مساحة المستخدم ). ولا يسمح المعالج للتطبيقات بالوصول إلى ذاكرة النواة، مما يمنعها من إتلاف النواة قيد التشغيل. وقد أسهم هذا التقسيم الأساسي لمساحة الذاكرة إسهامًا كبيرًا في التصميمات الحالية لأنظمة النواة العامة، وهو شبه مُعتمد في هذه الأنظمة، على الرغم من أن بعض أنظمة النواة البحثية (مثل Singularity ) تتبنى مناهج أخرى.
إدارة الأجهزة
لأداء وظائف مفيدة، تحتاج العمليات إلى الوصول إلى الأجهزة الطرفية المتصلة بالحاسوب، والتي يتحكم بها نظام التشغيل (النواة) عبر برامج تشغيل الأجهزة . برنامج تشغيل الجهاز هو برنامج حاسوبي يُغلف جهازًا ماديًا ويراقبه ويتحكم به (عبر واجهة الأجهزة/البرمجيات الخاصة به ) نيابةً عن نظام التشغيل. يوفر برنامج التشغيل لنظام التشغيل واجهة برمجة تطبيقات (API) وإجراءات ومعلومات حول كيفية التحكم في قطعة معينة من الأجهزة والتواصل معها. تُعد برامج تشغيل الأجهزة عنصرًا أساسيًا وحيويًا لجميع أنظمة التشغيل وتطبيقاتها. يهدف تصميم برنامج التشغيل إلى التجريد؛ وتتمثل وظيفته في ترجمة استدعاءات الدوال المجردة التي يفرضها نظام التشغيل (استدعاءات البرمجة) إلى استدعاءات خاصة بالجهاز. من الناحية النظرية، يجب أن يعمل الجهاز بشكل صحيح مع برنامج تشغيل مناسب. تُستخدم برامج تشغيل الأجهزة، على سبيل المثال، مع محولات المضيف ، وبطاقات الفيديو ، وبطاقات الصوت ، والطابعات ، والماسحات الضوئية ، وأجهزة المودم ، ووحدات تحكم واجهة الشبكة .
على مستوى الأجهزة، تشمل التجريدات الشائعة لبرامج تشغيل الأجهزة ما يلي:
- التفاعل المباشر
- باستخدام واجهة عالية المستوى، مثل نظام الإدخال والإخراج الأساسي للفيديو (Video BIOS) .
- استخدام برنامج تشغيل جهاز منخفض المستوى (برامج تشغيل نظام الملفات التي تستخدم برامج تشغيل الأقراص)
- محاكاة العمل مع الأجهزة، مع القيام بشيء مختلف تمامًا
وعلى مستوى البرمجيات، تشمل تجريدات برامج تشغيل الأجهزة ما يلي:
- السماح لنظام التشغيل بالوصول المباشر إلى موارد الأجهزة
- تنفيذ العناصر الأساسية فقط
- تنفيذ واجهة لبرامج غير برامج التشغيل مثل TWAIN
- تنفيذ لغة برمجة (غالباً لغة برمجة عالية المستوى مثل PostScript )
فعلى سبيل المثال، لعرض شيء ما للمستخدم على الشاشة، يقوم التطبيق بإرسال طلب إلى النواة، التي بدورها تقوم بإحالة الطلب إلى برنامج تشغيل الشاشة، المسؤول عن رسم الحرف/البكسل فعلياً. [ 6 ]
يجب أن يحتفظ نظام التشغيل بقائمة بالأجهزة المتاحة. قد تكون هذه القائمة معروفة مسبقًا (كما هو الحال في الأنظمة المدمجة حيث يُعاد كتابة نظام التشغيل في حال تغير الأجهزة المتاحة)، أو يُهيئها المستخدم (كما هو شائع في أجهزة الكمبيوتر القديمة والأنظمة غير المصممة للاستخدام الشخصي)، أو يكتشفها نظام التشغيل أثناء التشغيل (وهي عملية تُعرف عادةً باسم التوصيل والتشغيل ). في أنظمة التوصيل والتشغيل، يقوم مدير الأجهزة أولًا بإجراء مسح على ناقلات الأجهزة الطرفية المختلفة ، مثل ناقل المكونات الطرفية (PCI) أو ناقل التسلسل العالمي (USB)، لاكتشاف الأجهزة المثبتة، ثم يبحث عن برامج التشغيل المناسبة.
بما أن إدارة الأجهزة موضوعٌ خاصٌ بكل نظام تشغيل ، فإنّ كل تصميمٍ لنواة النظام يتعامل مع هذه التعريفات بطريقةٍ مختلفة، ولكن في جميع الأحوال، يجب على النواة توفير منافذ الإدخال/الإخراج لتمكين التعريفات من الوصول الفعلي إلى أجهزتها عبر منفذٍ أو موقعٍ في الذاكرة. يجب اتخاذ قراراتٍ مهمة عند تصميم نظام إدارة الأجهزة، إذ قد تتضمن بعض التصاميم عمليات وصولٍ تتضمن تبديل السياق ، مما يجعل العملية مُستهلكةً لموارد المعالج بشكلٍ كبير، ويُؤدي بسهولة إلى زيادةٍ ملحوظة في الأداء.
استدعاءات النظام
في مجال الحوسبة، يُقصد باستدعاء النظام الطريقة التي يطلب بها أحد العمليات خدمةً من نواة نظام التشغيل، وهي خدمة لا يملك عادةً صلاحية تشغيلها. توفر استدعاءات النظام واجهةً بين العملية ونظام التشغيل. تتطلب معظم العمليات التي تتفاعل مع النظام صلاحيات غير متاحة لعملية على مستوى المستخدم، على سبيل المثال، عمليات الإدخال/الإخراج التي تُجرى مع جهاز موجود على النظام، أو أي شكل من أشكال التواصل مع العمليات الأخرى، والتي تتطلب استخدام استدعاءات النظام.
استدعاء النظام هو آلية يستخدمها برنامج التطبيق لطلب خدمة من نظام التشغيل. يستخدم هذا الاستدعاء تعليمات بلغة الآلة لتغيير وضع المعالج، مثلاً من وضع الإشراف إلى الوضع المحمي. في هذا الوضع، يقوم نظام التشغيل بتنفيذ إجراءات مثل الوصول إلى أجهزة النظام أو وحدة إدارة الذاكرة . عادةً ما يوفر نظام التشغيل مكتبة وسيطة بينه وبين برامج المستخدم العادية، وغالبًا ما تكون مكتبة مكتوبة بلغة C مثل Glibc أو واجهة برمجة تطبيقات Windows. تتولى هذه المكتبة معالجة التفاصيل التقنية المتعلقة بتمرير المعلومات إلى النواة والتحويل إلى وضع الإشراف. تشمل استدعاءات النظام: الإغلاق، والفتح، والقراءة، والانتظار، والكتابة.
لكي يقوم أي برنامج بعمل مفيد، يجب أن يكون قادراً على الوصول إلى الخدمات التي توفرها نواة النظام. ويختلف تنفيذ ذلك من نواة لأخرى، لكن معظمها يوفر مكتبة C أو واجهة برمجة تطبيقات (API) ، والتي بدورها تستدعي وظائف النواة ذات الصلة. [ 7 ]
تختلف طريقة استدعاء وظيفة النواة من نواة إلى أخرى. في حال استخدام عزل الذاكرة، يستحيل على أي عملية مستخدم استدعاء النواة مباشرةً، لأن ذلك يُعد انتهاكًا لقواعد التحكم في الوصول الخاصة بالمعالج. ومن بين الاحتمالات:
- استخدام المقاطعة . [ هـ ] هذه الطريقة متاحة في معظم الأجهزة، وبالتالي فهي شائعة جدًا.
- استخدام بوابة استدعاء . بوابة الاستدعاء هي عنوان خاص يخزنه نظام التشغيل في قائمة ضمن ذاكرة النظام في موقع معروف للمعالج. عندما يكتشف المعالج استدعاءً لهذا العنوان، فإنه يُعيد توجيهه إلى الموقع المستهدف دون التسبب في انتهاك الوصول. يتطلب هذا دعمًا من الأجهزة، ولكن الأجهزة اللازمة لذلك شائعة جدًا.
- باستخدام تعليمات استدعاء نظام خاصة . تتطلب هذه التقنية دعمًا خاصًا من الأجهزة قد تفتقر إليه البنى الشائعة (وخاصةً x86 )؛ في هذه البنى، تُستخدم المقاطعات أو بوابات الاستدعاء. مع ذلك، أُضيفت تعليمات استدعاء النظام إلى الطرازات الحديثة من معالجات x86، وتستخدمها بعض أنظمة تشغيل الحواسيب الشخصية عند توفرها.
- باستخدام قائمة انتظار قائمة على الذاكرة. يمكن لتطبيق يقوم بإجراء عدد كبير من الطلبات ولكنه لا يحتاج إلى انتظار نتيجة كل منها أن يضيف تفاصيل الطلبات إلى منطقة من الذاكرة يقوم نظام التشغيل بفحصها دوريًا للعثور على الطلبات.
قرارات تصميم النواة
حماية
من الاعتبارات المهمة في تصميم نواة النظام الدعم الذي توفره للحماية من الأعطال ( تحمل الأعطال ) ومن السلوكيات الخبيثة ( الأمان ). عادةً ما لا يتم التمييز بوضوح بين هذين الجانبين، ويؤدي اعتماد هذا التمييز في تصميم النواة إلى رفض بنية هرمية للحماية . [ 5 ]
يمكن تصنيف الآليات أو السياسات التي توفرها النواة وفقًا لعدة معايير، بما في ذلك:
- سواء كانت ثابتة (يتم فرضها في وقت الترجمة ) أو ديناميكية (يتم فرضها في وقت التشغيل )؛
- سواء كانت وقائية أو لاحقة للكشف؛
- سواء كانت مدعومة بالأجهزة أو تعتمد على اللغة؛
- سواء كانت آلية مفتوحة أم سياسة ملزمة؛
- وفقًا لمبادئ الحماية التي تستوفيها (على سبيل المثال، دينينج [ 11 ] [ 12 ] )؛
- وغيرها الكثير.
يتم عادةً تنفيذ دعم مجالات الحماية الهرمية [ 13 ] باستخدام أوضاع وحدة المعالجة المركزية .
تُطبّق العديد من أنظمة التشغيل "القدرات"، أي الكائنات المُقدّمة لبرامج المستخدم والتي تسمح بوصول محدود إلى كائن أساسي تُديره النواة. ومن الأمثلة الشائعة على ذلك معالجة الملفات: فالملف هو تمثيل للمعلومات المخزنة على جهاز تخزين دائم. قد تتمكن النواة من تنفيذ العديد من العمليات المختلفة، بما في ذلك القراءة والكتابة والحذف والتنفيذ، ولكن قد يُسمح لتطبيق على مستوى المستخدم بتنفيذ بعض هذه العمليات فقط (على سبيل المثال، قد يُسمح له بقراءة الملف فقط). يتمثل أحد التطبيقات الشائعة لذلك في أن تُقدّم النواة كائنًا للتطبيق (يُسمى عادةً "مؤشر ملف") والذي يمكن للتطبيق بعد ذلك استدعاء العمليات عليه، وتتحقق النواة من صحة هذا المؤشر عند طلب العملية. يمكن توسيع هذا النظام ليشمل جميع الكائنات التي تُديرها النواة، بل وحتى الكائنات التي تُقدّمها تطبيقات المستخدم الأخرى.
تتمثل إحدى الطرق الفعالة والبسيطة لتوفير دعم الأجهزة للقدرات في تفويض وحدة إدارة الذاكرة (MMU) مسؤولية التحقق من حقوق الوصول لكل عملية وصول إلى الذاكرة، وهي آلية تُعرف باسم العنونة القائمة على القدرات . [ 14 ] تفتقر معظم بنى الحواسيب التجارية إلى هذا الدعم من وحدة إدارة الذاكرة للقدرات؛ ويعمل مشروع تعليمات RISC المحسّنة للأجهزة ذات القدرات (CHERI) على تطوير آليات قائمة على القدرات لعدة بنى.
يتمثل أحد الأساليب البديلة في محاكاة القدرات باستخدام نطاقات هرمية مدعومة بشكل شائع. في هذا الأسلوب، يجب أن يوجد كل كائن محمي في مساحة عناوين لا يمكن للتطبيق الوصول إليها؛ كما يحتفظ نظام التشغيل بقائمة بالقدرات في هذه الذاكرة. عندما يحتاج تطبيق ما إلى الوصول إلى كائن محمي بواسطة قدرة معينة، فإنه يُجري استدعاءً للنظام، ثم يتحقق نظام التشغيل مما إذا كانت قدرة التطبيق تمنحه الإذن بتنفيذ الإجراء المطلوب، وإذا كان مسموحًا له، فإنه يُجري الوصول نيابةً عنه (إما مباشرةً، أو عن طريق تفويض الطلب إلى عملية أخرى على مستوى المستخدم). تُحدّ تكلفة الأداء الناتجة عن تبديل مساحة العناوين من جدوى هذا الأسلوب في الأنظمة ذات التفاعلات المعقدة بين الكائنات، ولكنه يُستخدم في أنظمة التشغيل الحالية للكائنات التي لا يتم الوصول إليها بشكل متكرر أو التي لا يُتوقع منها الأداء بسرعة. [ 15 ] [ 16 ]
إذا لم يدعم البرنامج الثابت آليات الحماية، فمن الممكن محاكاة الحماية على مستوى أعلى، على سبيل المثال عن طريق محاكاة الإمكانيات من خلال التلاعب بجداول الصفحات ، ولكن لذلك آثار على الأداء. [ 17 ] مع ذلك، قد لا يمثل نقص دعم الأجهزة مشكلةً بالنسبة للأنظمة التي تختار استخدام الحماية القائمة على اللغة. [ 18 ]
يُعدّ اختيار مستويات التجريد التي ينبغي تطبيق آليات وسياسات الأمان فيها قرارًا هامًا في تصميم نواة النظام. وتلعب آليات أمان النواة دورًا حاسمًا في دعم الأمان على المستويات العليا. [ 14 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]
يتمثل أحد الأساليب في استخدام دعم البرامج الثابتة ونواة النظام لتحمل الأعطال (انظر أعلاه)، وبناء سياسة الأمان للسلوكيات الخبيثة فوق ذلك (بإضافة ميزات مثل آليات التشفير عند الضرورة)، مع تفويض بعض المسؤولية إلى المُصرّف . تُسمى الأساليب التي تُفوّض تطبيق سياسة الأمان إلى المُصرّف و/أو مستوى التطبيق غالبًا بالأمان القائم على اللغة .
يُعيق غياب العديد من آليات الأمان الأساسية في أنظمة التشغيل السائدة حاليًا تطبيق سياسات أمان كافية على مستوى تجريد التطبيق . [ 19 ] في الواقع، من المفاهيم الخاطئة الشائعة في أمن الحاسوب الاعتقاد بإمكانية تطبيق أي سياسة أمان في أي تطبيق بغض النظر عن دعم النواة. [ 19 ]
بحسب مطوري مجموعة أبحاث مارس، يُعدّ غياب العزل أحد العوامل الرئيسية التي تُضعف أمان نواة النظام. [ 23 ] ويقترحون إطار عمل لعزل برامج التشغيل للحماية، وخاصةً في نواة لينكس. [ 24 ] [ 25 ]
الحماية القائمة على الأجهزة أو اللغة
تستخدم أنظمة الحاسوب النموذجية اليوم قواعد مفروضة بواسطة الأجهزة لتحديد البرامج المسموح لها بالوصول إلى البيانات. يراقب المعالج التنفيذ ويوقف أي برنامج يخالف قاعدة ما، مثل عملية مستخدم تحاول الكتابة إلى ذاكرة النواة. في الأنظمة التي تفتقر إلى دعم هذه الإمكانيات، تُعزل العمليات عن بعضها باستخدام مساحات عناوين منفصلة. [ 26 ] تُنظَّم استدعاءات عمليات المستخدم إلى النواة من خلال إلزامها باستخدام إحدى طرق استدعاء النظام المذكورة أعلاه.
يتمثل أحد البدائل في استخدام الحماية القائمة على اللغة. في نظام الحماية القائم على اللغة ، لا تسمح نواة النظام بتنفيذ إلا التعليمات البرمجية التي تم إنتاجها بواسطة مترجم لغة موثوق . ويمكن حينها تصميم اللغة بحيث يستحيل على المبرمج توجيهها للقيام بأي شيء ينتهك متطلبات الأمان. [ 18 ]
تشمل مزايا هذا النهج ما يلي:
- لا حاجة لمساحات عناوين منفصلة. يُعدّ التبديل بين مساحات العناوين عملية بطيئة تُسبّب عبئًا كبيرًا، ويجري حاليًا بذل جهود كبيرة لتحسين الأداء لمنع عمليات التبديل غير الضرورية في أنظمة التشغيل الحالية. التبديل غير ضروري تمامًا في نظام حماية قائم على اللغة، حيث يمكن لجميع التعليمات البرمجية العمل بأمان في مساحة العنوان نفسها.
- المرونة. يمكن تطبيق أي نظام حماية مصمم ليتم التعبير عنه بلغة برمجة باستخدام هذه الطريقة. ولا تتطلب التغييرات في نظام الحماية (مثل الانتقال من نظام هرمي إلى نظام قائم على القدرات) أجهزة جديدة.
تشمل العيوب ما يلي:
- وقت بدء تشغيل التطبيق أطول. يجب التحقق من التطبيقات عند بدء تشغيلها للتأكد من أنها قد تم تجميعها بواسطة المترجم الصحيح، أو قد تحتاج إلى إعادة تجميع إما من الكود المصدري أو من الكود الوسيط .
- أنظمة الأنواع غير المرنة . في الأنظمة التقليدية، غالبًا ما تُجري التطبيقات عمليات غير آمنة من ناحية الأنواع . لا يُسمح بمثل هذه العمليات في نظام حماية قائم على اللغة، مما يعني أن التطبيقات قد تحتاج إلى إعادة كتابة، وقد تفقد في بعض الحالات بعضًا من أدائها.
ومن أمثلة الأنظمة التي تعتمد على الحماية اللغوية نظام JX ونظام Singularity من مايكروسوفت .
التعاون في العمليات
أثبت إدسكار ديكسترا ، من وجهة نظر منطقية، أن عمليات القفل والفتح الذرية التي تعمل على الإشارات الثنائية كافية للتعبير عن أي وظيفة من وظائف تعاون العمليات. [ 27 ] ومع ذلك، يُعتبر هذا النهج عمومًا قاصرًا من حيث الأمان والكفاءة، في حين أن نهج تمرير الرسائل أكثر مرونة. [ 28 ] كما تتوفر أيضًا عدة مناهج أخرى (سواء على مستوى أدنى أو أعلى)، حيث توفر العديد من نواة الأنظمة الحديثة دعمًا لأنظمة مثل الذاكرة المشتركة واستدعاءات الإجراءات عن بُعد .
إدارة أجهزة الإدخال/الإخراج
طُرحت فكرة النواة التي تُعالج فيها أجهزة الإدخال/الإخراج بشكل موحد مع العمليات الأخرى، كعمليات متوازية متعاونة، لأول مرة ونفذها برينش هانسن (على الرغم من وجود أفكار مشابهة في عام 1967 [ 29 ] [ 30 ] ). في وصف هانسن لهذا، تُسمى العمليات "المشتركة" بالعمليات الداخلية ، بينما تُسمى أجهزة الإدخال/الإخراج بالعمليات الخارجية . [ 28 ]
على غرار الذاكرة الفعلية، قد يؤدي السماح للتطبيقات بالوصول المباشر إلى منافذ ومسجلات وحدة التحكم إلى خلل في وحدة التحكم أو تعطل النظام. وبناءً على ذلك، قد تصبح بعض الأجهزة معقدة للغاية في البرمجة، وتستخدم عدة وحدات تحكم مختلفة، وذلك تبعًا لتعقيدها. لذا، يُعد توفير واجهة أكثر تجريدًا لإدارة الجهاز أمرًا بالغ الأهمية. عادةً ما يتم توفير هذه الواجهة بواسطة برنامج تشغيل الجهاز أو طبقة تجريد الأجهزة. غالبًا ما تحتاج التطبيقات إلى الوصول إلى هذه الأجهزة. يجب على النواة الاحتفاظ بقائمة هذه الأجهزة من خلال الاستعلام عنها من النظام بطريقة ما. يمكن القيام بذلك من خلال نظام الإدخال والإخراج الأساسي (BIOS)، أو من خلال أحد ناقلات النظام المختلفة (مثل PCI/PCIE أو USB). على سبيل المثال، عند طلب تطبيق ما إجراء عملية على جهاز، مثل عرض حرف، تحتاج النواة إلى إرسال هذا الطلب إلى برنامج تشغيل الفيديو النشط حاليًا. بدوره، يحتاج برنامج تشغيل الفيديو إلى تنفيذ هذا الطلب. هذا مثال على الاتصال بين العمليات (IPC).
أساليب التصميم على مستوى النواة
يمكن توفير المهام والميزات المذكورة أعلاه بطرق عديدة تختلف عن بعضها البعض في التصميم والتنفيذ.
يُعدّ مبدأ فصل الآلية عن السياسة الفرق الجوهري بين الفلسفتين الرئيسيتين للنوى المصغرة والنوى المتجانسة . [ 31 ] [ 32 ] فالآلية هنا هي الدعم الذي يسمح بتنفيذ العديد من السياسات المختلفة، بينما السياسة هي "نمط تشغيل" محدد. مثال:
- الآلية: يتم توجيه محاولات تسجيل دخول المستخدم إلى خادم المصادقة
- السياسة: يتطلب خادم المصادقة كلمة مرور يتم التحقق منها مقابل كلمات المرور المخزنة في قاعدة البيانات.
نظراً لأن الآلية والسياسة منفصلتان، يمكن تغيير السياسة بسهولة، على سبيل المثال، لتتطلب استخدام رمز أمان .
في النواة المصغرة، تُضمَّن بعض السياسات الأساسية فقط، [ 32 ] وتسمح آلياتها لما يعمل فوق النواة (الجزء المتبقي من نظام التشغيل والتطبيقات الأخرى) بتحديد السياسات التي يجب اعتمادها (مثل إدارة الذاكرة ، وجدولة العمليات عالية المستوى ، وإدارة نظام الملفات ، وما إلى ذلك). [ 5 ] [ 28 ] أما النواة المتجانسة، فتميل إلى تضمين العديد من السياسات، مما يُقيِّد اعتماد بقية النظام عليها.
جادل عالم الحاسوب بير برينش هانسن لصالح فصل الآلية عن السياسة. [ 5 ] [ 28 ] ويُعدّ عدم الالتزام بهذا الفصل أحد الأسباب الرئيسية لقلة الابتكار الجوهري في أنظمة التشغيل الحالية، [ 5 ] وهي مشكلة شائعة في هندسة الحاسوب . [ 33 ] [ 34 ] [ 35 ] وينتج التصميم المتجانس عن نهج الحماية المعماري "وضع النواة" / "وضع المستخدم" (المعروف تقنيًا باسم مجالات الحماية الهرمية )، وهو شائع في الأنظمة التجارية التقليدية؛ [ 36 ] في الواقع، يُفضّل تضمين كل وحدة تحتاج إلى حماية في النواة. [ 36 ] ويمكن ربط هذا الترابط بين التصميم المتجانس و"الوضع المميز" بالمسألة الأساسية المتمثلة في فصل الآلية عن السياسة. [ 5 ] في الواقع، يدمج النهج المعماري "للوضع المميز" آلية الحماية مع سياسات الأمان، بينما يميز النهج المعماري البديل الرئيسي، وهو العنونة القائمة على القدرات ، بوضوح بين الاثنين، مما يؤدي بشكل طبيعي إلى تصميم النواة المصغرة. [ 5 ]
بينما تُنفّذ النوى المتجانسة جميع تعليماتها البرمجية في نفس حيز العناوين ( حيز النواة )، تحاول النوى المصغّرة تشغيل معظم خدماتها في حيز المستخدم، بهدف تحسين قابلية الصيانة ونمطية قاعدة التعليمات البرمجية. [ 4 ] لا تندرج معظم النوى تمامًا ضمن أي من هاتين الفئتين، بل تقع بينهما. تُسمى هذه النوى بالنوى الهجينة . تتوفر تصميمات أكثر تعقيدًا مثل النوى النانوية والنوى الخارجية ، لكنها نادرًا ما تُستخدم في أنظمة الإنتاج. على سبيل المثال، يُعدّ برنامج Xen Hypervisor نواة خارجية.
نوى متجانسة

في النواة المتجانسة، تُعدّ جميع خدمات نظام التشغيل جزءًا من النواة وتعمل في وضع النواة، وبالتالي تتواجد في نفس منطقة الذاكرة. يوفر هذا النهج وصولًا غنيًا وقويًا إلى مكونات الجهاز. صرّح مطوّر أنظمة يونكس، كين تومسون، بأنه "من وجهة نظري، من الأسهل تنفيذ نواة متجانسة". [ 37 ] تتمثل العيوب الرئيسية للنوى المتجانسة في التبعيات بين مكونات النظام - فقد يؤدي خطأ في برنامج تشغيل جهاز ما ، على سبيل المثال، إلى تعطل النظام بأكمله - وحقيقة أن النوى الكبيرة قد تصبح صعبة الصيانة للغاية. كما ذكر تومسون أيضًا أنه "من السهل أيضًا أن تتحول [النواة المتجانسة] إلى فوضى عارمة بسرعة عند تعديلها". [ 37 ]
تحتوي النواة المتجانسة، التي تُستخدم تقليديًا في أنظمة التشغيل الشبيهة بنظام يونكس ، على جميع وظائف نظام التشغيل الأساسية وبرامج تشغيل الأجهزة . النواة المتجانسة هي برنامج واحد يحتوي على جميع التعليمات البرمجية اللازمة لأداء كل مهمة متعلقة بالنواة. كل جزء يمكن للبرنامج الوصول إليه ولا يمكن وضعه في مكتبة موجود في مساحة النواة، بما في ذلك برامج التشغيل، وجدولة المهام ، وإدارة الذاكرة ، وأنظمة الملفات ، ومكدسات الشبكة . يتم توفير العديد من استدعاءات النظام للتطبيقات، لتمكينها من الوصول إلى جميع هذه الخدمات. على الرغم من أن النواة المتجانسة تُحمّل في البداية بأنظمة فرعية قد لا تكون ضرورية، إلا أنه يمكن ضبطها لتصبح بنفس سرعة أو أسرع من نواة مصممة خصيصًا للأجهزة، على الرغم من أنها أكثر ملاءمة بشكل عام.
تدعم النوى المتجانسة الحديثة، مثل نواة لينكس ، ونواة فري بي إس دي ، ونواة إيه آي إكس ، ونواة إتش بي-يو إكس ، ونواة سولاريس ، والتي تندرج جميعها ضمن فئة أنظمة التشغيل الشبيهة بنظام يونكس، وحدات النواة القابلة للتحميل ، مما يسمح بتحميل الوحدات في النواة في وقت التشغيل، مما يتيح توسيع قدرات النواة بسهولة حسب الحاجة، مع المساعدة في تقليل كمية التعليمات البرمجية التي تعمل في مساحة النواة.
تُنجز معظم العمليات في نواة لينكس المتجانسة عبر استدعاءات النظام . هذه الاستدعاءات عبارة عن واجهات، تُحفظ عادةً في بنية جدولية، للوصول إلى بعض الأنظمة الفرعية داخل النواة، مثل عمليات القرص. ببساطة، تُجرى الاستدعاءات داخل البرامج، وتُمرر نسخة مُدققة من الطلب عبر استدعاء النظام. لذا، فالعملية لا تتطلب جهدًا كبيرًا. يمكن تصغير حجم نواة لينكس المتجانسة بشكل كبير، ليس فقط لقدرتها على تحميل الوحدات النمطية ديناميكيًا، بل أيضًا لسهولة تخصيصها. في الواقع، توجد بعض الإصدارات صغيرة بما يكفي لتضمين عدد كبير من الأدوات والبرامج الأخرى على قرص مرن واحد ، مع توفير نظام تشغيل كامل الوظائف (أحد أشهرها muLinux ). وقد أدت هذه القدرة على تصغير حجم النواة إلى نمو سريع في استخدام لينكس في الأنظمة المدمجة .
تتألف هذه الأنواع من النواة من الوظائف الأساسية لنظام التشغيل وبرامج تشغيل الأجهزة، مع إمكانية تحميل الوحدات النمطية أثناء التشغيل. وهي توفر تجريدات غنية وقوية للأجهزة الأساسية. كما توفر مجموعة صغيرة من تجريدات الأجهزة البسيطة، وتستخدم تطبيقات تُسمى الخوادم لتوفير المزيد من الوظائف. يُعرّف هذا النهج واجهة افتراضية عالية المستوى فوق الأجهزة، مع مجموعة من استدعاءات النظام لتنفيذ خدمات نظام التشغيل، مثل إدارة العمليات والتزامن وإدارة الذاكرة، في عدة وحدات نمطية تعمل في وضع الإشراف. يُعاني هذا التصميم من عدة عيوب وقيود.
- قد يكون البرمجة في نواة النظام أمرًا صعبًا، ويرجع ذلك جزئيًا إلى عدم إمكانية استخدام المكتبات الشائعة (مثل مكتبة libc كاملة الميزات )، وإلى الحاجة إلى استخدام مصحح أخطاء على مستوى الكود المصدري مثل gdb . وغالبًا ما يتطلب الأمر إعادة تشغيل الحاسوب. ولا تقتصر هذه المشكلة على كونها مسألة راحة للمطورين فحسب، بل كلما زادت صعوبة تصحيح الأخطاء، وازدادت حدة الصعوبات، زادت احتمالية احتواء الكود على المزيد من الأخطاء.
- الأخطاء في جزء واحد من النواة لها آثار جانبية قوية؛ نظرًا لأن كل وظيفة في النواة لديها جميع الامتيازات، فإن خطأ في وظيفة واحدة يمكن أن يفسد هياكل البيانات لجزء آخر غير ذي صلة تمامًا من النواة، أو لأي برنامج قيد التشغيل.
- غالباً ما تصبح الحبوب كبيرة جداً ويصعب الحفاظ عليها.
- حتى لو كانت الوحدات التي تخدم هذه العمليات منفصلة عن الكل، فإن تكامل الكود يكون محكمًا ويصعب القيام به بشكل صحيح.
- بما أن الوحدات تعمل في نفس مساحة العناوين ، فإن وجود خطأ برمجي يمكن أن يؤدي إلى انهيار النظام بأكمله.

النوى الصغيرة
النواة المصغرة (أو اختصارًا μK أو uK) مصطلح يصف منهجًا لتصميم أنظمة التشغيل، حيث تُنقل وظائف النظام من النواة التقليدية إلى مجموعة من "الخوادم" التي تتواصل عبر نواة "مُصغّرة"، مما يُقلل من مساحة النظام ويُبقي على مساحة المستخدم قدر الإمكان. النواة المصغرة المصممة لمنصة أو جهاز مُحدد لا تحتوي إلا على ما يلزم لتشغيله. يعتمد منهج النواة المصغرة على تعريف تجريد بسيط للأجهزة، مع مجموعة من الدوال الأساسية أو استدعاءات النظام لتنفيذ خدمات نظام التشغيل الأساسية، مثل إدارة الذاكرة ، وتعدد المهام ، والتواصل بين العمليات . أما الخدمات الأخرى، بما فيها تلك التي تُوفرها النواة عادةً، مثل الشبكات ، فتُنفذ في برامج مساحة المستخدم، والتي تُسمى الخوادم . تُعد النواة المصغرة أسهل صيانةً من النواة المتجانسة، ولكن كثرة استدعاءات النظام وتبديلات السياق قد تُبطئ النظام، لأنها تُولد عادةً عبئًا إضافيًا أكبر من استدعاءات الدوال العادية.
تقتصر وظائف نواة النظام على الأجزاء التي تتطلب وضعًا مميزًا ، مثل الاتصال بين العمليات (IPC)، وجدول المهام الأساسي ، وإدارة الذاكرة الأساسية، ووظائف الإدخال/الإخراج الأساسية. أما العديد من الأجزاء الحيوية الأخرى، فتُشغَّل الآن في مساحة المستخدم، بما في ذلك جدول المهام الكامل، وإدارة الذاكرة، وأنظمة الملفات ، وبروتوكولات الشبكة . وقد طُوِّرت النوى المصغرة كرد فعل على تصميم النواة "المتجانسة" التقليدية، حيث كانت جميع وظائف النظام تُجمَع في برنامج ثابت واحد يعمل في وضع "النظام" الخاص بالمعالج. في النواة المصغرة، تُنفَّذ المهام الأساسية فقط على هذا المستوى، مثل الوصول إلى بعض (وليس بالضرورة كل) مكونات الجهاز، وإدارة الذاكرة، وتنسيق تبادل الرسائل بين العمليات. من الأنظمة التي تستخدم النوى المصغرة QNX و GNU Hurd . في QNX وGNU Hurd، يمكن أن تكون جلسات المستخدم لقطات كاملة للنظام نفسه، أو "مشاهد" كما يُشار إليها. إن جوهر بنية النواة المصغرة يوضح بعض مزاياها:
- أسهل في الصيانة
- يمكن اختبار التصحيحات في نسخة منفصلة، ثم استبدالها لتولي زمام الأمور في نسخة الإنتاج.
- يمكن اختبار البرامج الجديدة بسرعة ودون الحاجة إلى إعادة تشغيل النواة.
- المزيد من المثابرة بشكل عام: إذا تعطلت إحدى النسخ، فغالباً ما يكون من الممكن استبدالها بنسخة احتياطية عاملة.
تستخدم معظم النوى المصغرة نظام تمرير الرسائل لمعالجة الطلبات بين الخوادم. ويعمل هذا النظام عادةً على أساس المنافذ داخل النواة المصغرة. فعلى سبيل المثال، عند إرسال طلب لزيادة الذاكرة، يُفتح منفذ داخل النواة المصغرة ويُرسل الطلب من خلاله. وبمجرد وصول الطلب إلى النواة المصغرة، تُصبح الخطوات مشابهةً لاستدعاءات النظام. والهدف من ذلك هو تحقيق نمطية في بنية النظام، مما يُؤدي إلى نظام أكثر سلاسةً وأسهل في تصحيح الأخطاء والتعديل الديناميكي، وقابل للتخصيص وفقًا لاحتياجات المستخدمين، وأعلى أداءً. وتُعد النوى المصغرة جزءًا من أنظمة تشغيل مثل GNU Hurd و MINIX و MkLinux و QNX و Redox OS .
على الرغم من صغر حجم النواة المصغرة بحد ذاتها، إلا أنها، عند دمجها مع جميع التعليمات البرمجية المساعدة اللازمة، غالبًا ما تكون أكبر من النواة المتجانسة. ويشير مؤيدو النواة المتجانسة إلى أن البنية ثنائية الطبقات لأنظمة النواة المصغرة، حيث لا يتفاعل معظم نظام التشغيل مباشرةً مع المكونات المادية، تُؤدي إلى انخفاض ملحوظ في كفاءة النظام. عادةً ما تُوفر هذه الأنواع من النواة الحد الأدنى من الخدمات، مثل تحديد مساحات عناوين الذاكرة ، والتواصل بين العمليات ، وإدارة العمليات . أما الوظائف الأخرى، مثل تشغيل عمليات المكونات المادية، فلا تُعالج مباشرةً بواسطة النواة المصغرة. ويُشير مؤيدو النواة المصغرة إلى أن النواة المتجانسة تعاني من عيب يتمثل في أن أي خطأ في النواة قد يُؤدي إلى انهيار النظام بأكمله. أما مع النواة المصغرة، فإذا تعطلت إحدى عمليات النواة، فإنه لا يزال من الممكن منع انهيار النظام ككل بمجرد إعادة تشغيل الخدمة التي تسببت في الخطأ.
تُنفَّذ الخدمات الأخرى التي يوفرها النواة، مثل الشبكات، في برامج تعمل في مساحة المستخدم تُعرف بالخوادم . تسمح الخوادم بتعديل نظام التشغيل ببساطة عن طريق تشغيل البرامج وإيقافها. فعلى سبيل المثال، في جهاز لا يدعم الشبكات، لا يتم تشغيل خادم الشبكات. وتُؤدي عملية نقل البيانات من وإلى النواة بين التطبيقات والخوادم المختلفة إلى زيادة العبء، مما يُؤثر سلبًا على كفاءة النوى المصغرة مقارنةً بالنوى المتجانسة.
مع ذلك، توجد بعض العيوب في النواة المصغرة. بعضها كالتالي:
- مساحة ذاكرة تشغيل أكبر
- هناك حاجة إلى المزيد من البرامج للتفاعل، لذا هناك احتمال لانخفاض الأداء.
- قد يكون إصلاح أخطاء المراسلة أكثر صعوبة بسبب الرحلة الأطول التي يتعين عليها القيام بها، مقارنة بالنسخة لمرة واحدة في نواة متجانسة.
- إدارة العمليات بشكل عام يمكن أن تكون معقدة للغاية.
تعتمد عيوب النوى المصغرة بشكل كبير على السياق. فعلى سبيل المثال، تُعدّ مناسبة للأنظمة الصغيرة ذات الغرض الواحد (والحساسة) لأنه إذا لم تكن هناك حاجة لتشغيل العديد من العمليات، فإن تعقيدات إدارة العمليات تُخفف بشكل فعال.
تتيح النواة المصغرة تنفيذ الجزء المتبقي من نظام التشغيل كبرامج تعمل في وضع المستخدم، واستخدام أنظمة تشغيل مختلفة فوق نفس النواة دون تغيير. كما يُمكن التبديل ديناميكيًا بين أنظمة التشغيل، وتشغيل أكثر من نظام في وقت واحد. [ 28 ]
الحبوب المتجانسة مقابل الحبوب الصغيرة
مع نمو نواة الحاسوب، يزداد حجم قاعدة الحوسبة الموثوقة فيها، وتزداد معها قابليتها للاختراق ، بالإضافة إلى حجم استهلاكها للذاكرة . ويُخفف من هذا الأمر إلى حد ما من خلال تطوير نظام ذاكرة افتراضية ، ولكن لا تدعم جميع بنى الحواسيب الذاكرة الافتراضية. [ و ] ولتقليل حجم النواة، يجب إجراء تعديلات مكثفة لإزالة التعليمات البرمجية غير الضرورية بعناية، وهو ما قد يكون بالغ الصعوبة نظرًا للترابطات غير الواضحة بين أجزاء النواة التي تحتوي على ملايين الأسطر من التعليمات البرمجية.
بحلول أوائل التسعينيات، ونظرًا للعيوب المتعددة التي اتسمت بها النواة المتجانسة مقارنةً بالنواة المصغرة، اعتبر جميع باحثي أنظمة التشغيل تقريبًا النواة المتجانسة قديمة الطراز. ونتيجةً لذلك، كان تصميم لينكس كنواة متجانسة بدلًا من نواة مصغرة موضوع نقاش شهير بين لينوس تورفالدز وأندرو تانينباوم . [ 38 ] ويحمل كلا جانبي النقاش الذي دار بين تانينباوم وتورفالدز وجاهةً .
أداء
صُممت النوى المتجانسة بحيث يكون جميع كودها في نفس حيز العناوين ( حيز النواة )، وهو ما يرى بعض المطورين أنه ضروري لزيادة أداء النظام. [ 39 ] كما يؤكد بعض المطورين أن الأنظمة المتجانسة تتمتع بكفاءة عالية للغاية إذا كُتبت بشكل جيد. [ 39 ] يميل النموذج المتجانس إلى أن يكون أكثر كفاءة [ 40 ] من خلال استخدام ذاكرة النواة المشتركة، بدلاً من نظام الاتصال بين العمليات الأبطأ في تصميمات النوى المصغرة، والذي يعتمد عادةً على تمرير الرسائل .
كان أداء النوى المصغرة ضعيفًا في كل من ثمانينيات القرن العشرين وأوائل تسعينياته. [ 41 ] [ 42 ] لم تُحلل الدراسات التي قاست أداء هذه النوى المصغرة تجريبيًا أسباب هذا القصور. [ 41 ] تُركت تفسيرات هذه البيانات للتفسيرات الشائعة ، بافتراض أنها تعود إلى زيادة وتيرة الانتقال من "وضع النواة" إلى "وضع المستخدم"، وزيادة وتيرة التواصل بين العمليات ، وزيادة وتيرة تبديل السياق . [ 41 ]
في الواقع، وكما تم التكهن به عام 1995، قد تكون أسباب ضعف أداء النوى المصغرة هي: (1) عدم كفاءة منهجية النوى المصغرة ككل ، (2) المفاهيم المحددة المُطبقة في تلك النوى المصغرة، و(3) طريقة تطبيق تلك المفاهيم. لذلك، بقي من الضروري دراسة ما إذا كان الحل لبناء نواة مصغرة فعالة، على عكس المحاولات السابقة، يكمن في تطبيق تقنيات البناء الصحيحة. [ 41 ]
من جهة أخرى، فإن بنية نطاقات الحماية الهرمية التي تؤدي إلى تصميم نواة متجانسة [ 36 ] تعاني من عيب كبير في الأداء في كل مرة يحدث فيها تفاعل بين مستويات الحماية المختلفة (أي عندما يتعين على عملية ما معالجة بنية بيانات في كل من "وضع المستخدم" و"وضع المشرف")، لأن هذا يتطلب نسخ الرسائل بالقيمة . [ 43 ]

النواة الهجينة (أو المعيارية)
تُستخدم النوى الهجينة في بعض أنظمة التشغيل التجارية، بما في ذلك معظم إصدارات مايكروسوفت ويندوز حتى الآن ( NT 3.1 ، NT 3.5 ، NT 3.51 ، NT 4.0 ، 2000 ، XP ، Vista ، 7 ، 8 ، 8.1 ، 10 ، و 11 ). يستخدم نظام macOS من آبل نواة هجينة تُسمى XNU ، وهي مبنية على شفرة من نواة Mach الخاصة بنظام OSF/1 (OSFMK 7.3) [ 44 ] ونواة FreeBSD المتجانسة . تُشبه النوى الهجينة النوى المصغرة، إلا أنها تتضمن شفرة إضافية في مساحة النواة لتحسين الأداء. تُمثل هذه النوى حلاً وسطاً نفذه بعض المطورين للاستفادة من المزايا الرئيسية لكل من النوى المتجانسة والمصغرة. تُعد هذه الأنواع من النوى امتداداً للنوى المصغرة مع بعض خصائص النوى المتجانسة. على عكس النواة المتجانسة، لا تستطيع هذه الأنواع من النواة تحميل الوحدات النمطية أثناء التشغيل بشكل مستقل. وهذا يعني تشغيل بعض الخدمات (مثل حزمة الشبكة أو نظام الملفات ) في مساحة النواة لتقليل العبء على الأداء الناتج عن النواة المصغرة التقليدية، مع الاستمرار في تشغيل كود النواة (مثل برامج تشغيل الأجهزة ) كخوادم في مساحة المستخدم.
تدعم العديد من أنوية أنظمة التشغيل التقليدية المتجانسة وحدات نواة قابلة للتحميل . وأشهر هذه الأنوية هي نواة لينكس . يمكن أن تحتوي النواة المعيارية أساسًا على أجزاء مدمجة في ملف النواة الأساسي أو ملفات ثنائية تُحمّل في الذاكرة عند الطلب. قد تؤدي وحدة نمطية ملوثة برمجيًا إلى زعزعة استقرار النواة قيد التشغيل. في المقابل، من الممكن كتابة برنامج تشغيل لنواة مصغرة في مساحة ذاكرة منفصلة تمامًا واختباره قبل إطلاقه رسميًا. عند تحميل وحدة نمطية، فإنها تصل إلى مساحة ذاكرة الجزء المتجانس بإضافة ما تحتاجه، مما يفتح المجال أمام احتمالية التلوث البرمجي. من مزايا النواة المعيارية (أو) الهجينة ما يلي:
- تسريع وقت تطوير برامج التشغيل التي يمكنها العمل من داخل الوحدات. لا حاجة لإعادة التشغيل للاختبار (شريطة ألا يكون نظام التشغيل غير مستقر).
- القدرة عند الطلب مقابل قضاء الوقت في إعادة تجميع نواة كاملة لأشياء مثل برامج التشغيل الجديدة أو الأنظمة الفرعية.
- تكامل أسرع لتقنيات الطرف الثالث (مرتبط بالتطوير ولكنه ذو صلة في حد ذاته مع ذلك).
تتواصل الوحدات البرمجية، عمومًا، مع نواة النظام باستخدام واجهة خاصة بها. هذه الواجهة عامة (وإن كانت خاصة بنظام تشغيل معين)، لذا لا يُمكن دائمًا استخدام الوحدات البرمجية. غالبًا ما تحتاج برامج تشغيل الأجهزة إلى مرونة أكبر مما توفره واجهة الوحدة البرمجية. في جوهر الأمر، يتطلب الأمر استدعاءين للنظام، وغالبًا ما تُجرى فحوصات الأمان التي تُجرى مرة واحدة فقط في النواة المتجانسة مرتين. من عيوب النهج المعياري ما يلي:
- مع وجود المزيد من الواجهات التي يجب المرور من خلالها، تزداد احتمالية وجود أخطاء برمجية (مما يعني وجود المزيد من الثغرات الأمنية).
- قد يكون الحفاظ على الوحدات النمطية أمراً مربكاً لبعض المسؤولين عند التعامل مع مشاكل مثل اختلافات الرموز.
الجسيمات النانوية
تقوم النواة النانوية بتفويض جميع الخدمات تقريبًا - بما في ذلك الخدمات الأساسية مثل وحدات التحكم في المقاطعات أو المؤقت - إلى برامج تشغيل الأجهزة لجعل متطلبات ذاكرة النواة أصغر من متطلبات النواة المصغرة التقليدية. [ 45 ]
إكسوكيرنلز
تُعدّ النوى الخارجية نهجًا تجريبيًا لتصميم أنظمة التشغيل. وهي تختلف عن أنواع النوى الأخرى في اقتصار وظائفها على حماية المكونات المادية الأساسية وتعدد استخداماتها، دون توفير أي تجريدات برمجية لتطوير التطبيقات. يُمكّن هذا الفصل بين حماية المكونات المادية وإدارتها مطوري التطبيقات من تحديد كيفية الاستخدام الأمثل للمكونات المادية المتاحة لكل برنامج على حدة.
تتميز النوى الخارجية بصغر حجمها الشديد. ومع ذلك، فهي مزودة بأنظمة تشغيل مكتبية (انظر أيضًا النواة الأحادية )، مما يوفر لمطوري التطبيقات وظائف نظام التشغيل التقليدي. ومن أهم مزايا الأنظمة القائمة على النوى الخارجية قدرتها على دمج أنظمة تشغيل مكتبية متعددة، كل منها يُصدّر واجهة برمجة تطبيقات مختلفة ، على سبيل المثال، واجهة لتطوير واجهات المستخدم عالية المستوى ، وأخرى للتحكم في الوقت الفعلي .
النوى المتعددة
يتعامل نظام التشغيل متعدد النوى مع الجهاز متعدد النوى كشبكة من النوى المستقلة، كما لو كان نظامًا موزعًا . وهو لا يفترض وجود ذاكرة مشتركة، بل يُنفذ الاتصالات بين العمليات عن طريق تمرير الرسائل . [ 46 ] [ 47 ] وكان نظام التشغيل Barrelfish أول نظام تشغيل يُوصف بأنه متعدد النوى.
تاريخ تطور الحبوب
نواة أنظمة التشغيل المبكرة
بالمعنى الدقيق، لا يُشترط وجود نظام تشغيل (وبالتالي نواة) لتشغيل الحاسوب. يمكن تحميل البرامج وتنفيذها مباشرةً على الجهاز "المعدني" ، شريطة أن يكون مطورو هذه البرامج على استعداد للعمل دون أي تجريد للأجهزة أو دعم من نظام التشغيل. عملت معظم الحواسيب المبكرة بهذه الطريقة خلال الخمسينيات وأوائل الستينيات، حيث كانت تُعاد تهيئتها وتحميلها بين تنفيذ البرامج المختلفة. لاحقًا، كانت تُترك برامج مساعدة صغيرة، مثل مُحمّلات البرامج ومصححات الأخطاء ، في الذاكرة بين عمليات التشغيل، أو تُحمّل من ذاكرة القراءة فقط (ROM) . ومع تطور هذه البرامج، شكّلت أساس ما أصبح يُعرف بنوى أنظمة التشغيل المبكرة. لا يزال نهج "المعدني" مُستخدمًا حتى اليوم في بعض أجهزة ألعاب الفيديو والأنظمة المُدمجة ، [ 48 ] ولكن بشكل عام، تستخدم الحواسيب الأحدث أنظمة تشغيل ونوى حديثة.
في عام 1969، قدم نظام البرمجة المتعددة RC 4000 فلسفة تصميم النظام لنواة صغيرة "يمكن بناء أنظمة التشغيل لأغراض مختلفة عليها بطريقة منظمة"، [ 49 ] وهو ما يسمى نهج النواة المصغرة.
أنظمة التشغيل ذات المشاركة الزمنية
في العقد الذي سبق نظام يونكس ، شهدت الحواسيب نموًا هائلاً في قوتها ، لدرجة أن مشغلي الحواسيب كانوا يبحثون عن طرق جديدة لحث المستخدمين على استغلال أوقات فراغهم على أجهزتهم. وكان من أبرز التطورات خلال تلك الحقبة نظام المشاركة الزمنية ، حيث يحصل عدد من المستخدمين على فترات قصيرة من وقت استخدام الحاسوب، بمعدل يوحي بأن كل مستخدم متصل بجهازه الخاص الأبطأ. [ 50 ]
أدى تطوير أنظمة المشاركة الزمنية إلى ظهور عدد من المشكلات. تمثلت إحداها في رغبة المستخدمين، لا سيما في الجامعات التي طُوّرت فيها هذه الأنظمة، في اختراق النظام للحصول على مزيد من وقت المعالجة . ولهذا السبب، أصبح الأمن والتحكم في الوصول محورًا رئيسيًا لمشروع Multics عام 1965. [ 51 ] ومن المشكلات المستمرة الأخرى إدارة موارد الحوسبة بكفاءة: إذ كان المستخدمون يقضون معظم وقتهم محدقين في شاشة الحاسوب يفكرون فيما سيدخلونه بدلًا من استخدام موارد الحاسوب فعليًا، وكان من المفترض أن يمنح نظام المشاركة الزمنية وقت المعالجة للمستخدم النشط خلال هذه الفترات. أخيرًا، كانت هذه الأنظمة توفر عادةً تسلسلًا هرميًا للذاكرة متعدد الطبقات، وقد أدى تقسيم هذا المورد المكلف إلى تطورات كبيرة في أنظمة الذاكرة الافتراضية .
أميغا
صدر جهاز كومودور أميغا عام ١٩٨٥، وكان من أوائل أجهزة الكمبيوتر المنزلية - وأكثرها نجاحًا بلا شك - التي تميزت ببنية نواة متطورة. يستخدم المكون التنفيذي لنواة نظام التشغيل أميغا، exec.library ، تصميمًا يعتمد على تمرير الرسائل في النواة المصغرة، ولكن توجد مكونات أخرى في النواة، مثل graphics.library ، تتمتع بوصول مباشر إلى المكونات المادية. لا توجد حماية للذاكرة، وتعمل النواة دائمًا تقريبًا في وضع المستخدم. تُنفذ الإجراءات الخاصة فقط في وضع النواة، ويمكن لتطبيقات وضع المستخدم أن تطلب من نظام التشغيل تنفيذ تعليماتها البرمجية في وضع النواة.
يونكس

خلال مرحلة تصميم نظام يونكس ، قرر المبرمجون نمذجة كل جهاز عالي المستوى كملف ، لأنهم اعتقدوا أن الغرض من الحوسبة هو تحويل البيانات . [ 52 ]
على سبيل المثال، كانت الطابعات تُمثَّل كملف في موقع معروف ، فعند نسخ البيانات إلى هذا الملف، كانت تُطبع. أما الأنظمة الأخرى، التي توفر وظائف مماثلة، فكانت تميل إلى محاكاة الأجهزة على مستوى أدنى ، أي أن كلاً من الأجهزة والملفات تُعتبر نماذج لمفهوم أدنى . وقد أتاحت محاكاة النظام على مستوى الملف للمستخدمين التحكم في النظام بأكمله باستخدام أدوات ومفاهيم إدارة الملفات الموجودة لديهم ، مما بسّط العمليات بشكل كبير. وامتدادًا لهذا النموذج، يسمح نظام يونكس للمبرمجين بالتعامل مع الملفات باستخدام سلسلة من البرامج الصغيرة، وذلك باستخدام مفهوم الأنابيب ، مما يسمح للمستخدمين بإكمال العمليات على مراحل، من خلال تمرير الملف عبر سلسلة من الأدوات المتخصصة. ورغم أن النتيجة النهائية واحدة، إلا أن استخدام برامج أصغر بهذه الطريقة زاد بشكل كبير من المرونة وسهولة التطوير والاستخدام، مما يسمح للمستخدم بتعديل سير عمله عن طريق إضافة برنامج أو إزالته من السلسلة.
في نموذج يونكس، يتكون نظام التشغيل من جزأين: أولهما، مجموعة ضخمة من برامج الأدوات المساعدة التي تُشغّل معظم العمليات؛ وثانيهما، النواة التي تُشغّل هذه البرامج. [ 52 ] في يونكس، من وجهة نظر البرمجة، يكون التمييز بين الجزأين دقيقًا للغاية؛ فالنواة برنامج يعمل في وضع الإشراف، [ g ] ويعمل كمُحمّل برامج ومُشرف على برامج الأدوات المساعدة الصغيرة التي تُشكّل بقية النظام، ويُوفّر خدمات التأمين والإدخال / الإخراج لهذه البرامج؛ وبخلاف ذلك، لا تتدخل النواة إطلاقًا في مساحة المستخدم .
على مر السنين، تغير نموذج الحوسبة، ولم يعد تعامل يونكس مع كل شيء كملف أو سلسلة بايتات قابلاً للتطبيق عالميًا كما كان سابقًا. فمع أن الطرفية يمكن التعامل معها كملف أو سلسلة بايتات، تُطبع أو تُقرأ منها، إلا أن الأمر لم يكن كذلك بالنسبة لواجهة المستخدم الرسومية . وشكّلت الشبكات مشكلة أخرى. فحتى لو أمكن مقارنة الاتصال الشبكي بالوصول إلى الملفات، فإن بنية يونكس منخفضة المستوى والموجهة نحو الحزم تتعامل مع أجزاء منفصلة من البيانات لا مع الملفات كاملة. ومع نمو قدرات الحواسيب، أصبح يونكس أكثر ازدحامًا بالبرمجيات. ويعود ذلك أيضًا إلى قابلية التوسع الهائلة لنواة يونكس. [ 53 ] فبينما كانت النواة تحتوي على 100,000 سطر من التعليمات البرمجية في السبعينيات والثمانينيات، فإن نواة أنظمة مثل لينكس ، وخلفاء يونكس الحديثة مثل جنو ، تحتوي على أكثر من 13 مليون سطر. [ 54 ]
تعتمد مشتقات يونكس الحديثة عمومًا على نواة متجانسة تعتمد على تحميل الوحدات النمطية. ومن أمثلة ذلك نواة لينكس في العديد من توزيعات جنو ، وآي بي إم إيه آي إكس ، بالإضافة إلى نواة توزيعة برمجيات بيركلي المتغيرة مثل فري بي إس دي ، ودراغون فلاي بي إس دي ، وأوبن بي إس دي، ونت بي إس دي ، وماك أو إس . وبغض النظر عن هذه البدائل، يُدير المطورون الهواة مجتمعًا نشطًا لتطوير أنظمة التشغيل ، يضم نواة هواة مكتوبة ذاتيًا، والتي غالبًا ما تشترك في العديد من الميزات مع نواة لينكس، أو فري بي إس دي، أو دراغون فلاي بي إس دي، أو أوبن بي إس دي، أو نت بي إس دي، أو تكون متوافقة معها. [ 55 ]
نظام التشغيل ماك الكلاسيكي ونظام التشغيل ماك
أطلقت شركة آبل نظام التشغيل الكلاسيكي ماك أو إس لأول مرة عام 1984، مُرفقًا بجهاز الكمبيوتر الشخصي ماكنتوش . انتقلت آبل إلى تصميم النواة النانوية في نظام ماك أو إس 8.6. في المقابل، يعتمد نظام ماك أو إس الحديث (الذي كان يُسمى في الأصل ماك أو إس إكس) على داروين ، الذي يستخدم نواة هجينة تُسمى إكس إن يو ، والتي تم إنشاؤها من خلال دمج نواة 4.3 بي إس دي ونواة ماخ . [ 56 ]
مايكروسوفت ويندوز
صدر نظام التشغيل مايكروسوفت ويندوز لأول مرة عام 1985 كإضافة لنظام التشغيل MS-DOS . ونظرًا لاعتماده على نظام تشغيل آخر، اعتُبرت الإصدارات الأولى من ويندوز، قبل ويندوز 95، بيئة تشغيل (لا ينبغي الخلط بينها وبين نظام التشغيل ). استمر هذا المنتج في التطور خلال ثمانينيات وتسعينيات القرن الماضي، حيث أضافت سلسلة ويندوز 9x ميزة العنونة 32 بت وتعدد المهام الاستباقي؛ لكنه انتهى بإصدار ويندوز مي عام 2000.
طوّرت مايكروسوفت أيضًا نظام التشغيل ويندوز إن تي ، وهو نظام ذو واجهة مشابهة جدًا، ولكنه مُصمّم خصيصًا للمستخدمين المحترفين ورجال الأعمال. بدأ هذا النظام مع إصدار ويندوز إن تي 3.1 عام 1993، وطُرح للمستخدمين العاديين مع إصدار ويندوز إكس بي في أكتوبر 2001، ليحل محل ويندوز 9x بنظام تشغيل مختلف تمامًا وأكثر تطورًا. ويستمر هذا النظام مع ويندوز 11 .
يُعتبر تصميم نواة نظام التشغيل ويندوز إن تي نواة هجينة، إذ تحتوي النواة نفسها على مهام مثل مدير النوافذ ومديري الاتصال بين العمليات، مع نموذج نظام فرعي متعدد الطبقات بين العميل والخادم. [ 57 ] وقد صُممت كنواة مصغرة مُعدّلة ، حيث تأثرت نواة ويندوز إن تي بنواة ماخ المصغرة، لكنها لا تستوفي جميع معايير النواة المصغرة النقية.
مشرف في شركة آي بي إم
البرنامج الإشرافي أو المشرف هو برنامج حاسوبي ، عادة ما يكون جزءًا من نظام التشغيل ، يتحكم في تنفيذ الإجراءات الأخرى وينظم جدولة العمل وعمليات الإدخال/الإخراج وإجراءات الأخطاء والوظائف المماثلة وينظم تدفق العمل في نظام معالجة البيانات .
تاريخياً، ارتبط هذا المصطلح بشكل أساسي بسلسلة أنظمة تشغيل الحواسيب المركزية من شركة IBM بدءاً من نظام التشغيل OS/360 . في أنظمة التشغيل الأخرى، يُطلق على المشرف عموماً اسم النواة.
في CP-40 و CP-67 ، قامت شركة IBM بتجريد حالة المشرف بشكل أكبر من الأجهزة، مما أدى إلى ظهور برنامج مراقبة الأجهزة الافتراضية الذي مكن من المحاكاة الافتراضية الكاملة ، أي القدرة على تشغيل أنظمة تشغيل متعددة على نفس الجهاز بشكل مستقل تمامًا عن بعضها البعض.
في سبعينيات القرن العشرين، قامت شركة IBM بتحديث نظام CP/CMS الخاص بجهاز System/370 تحت اسم Virtual Machine Facility/370 (VM/370). ومن هنا جاء اسم أول نظام من هذا النوع، وهو Virtual Machine أو VM .
تطور النوى الدقيقة
على الرغم من أن Mach ، الذي طوره ريتشارد رشيد في جامعة كارنيجي ميلون ، هو أشهر نواة مصغرة للأغراض العامة، فقد طُوّرت نوى مصغرة أخرى لأهداف أكثر تحديدًا. أُنشئت عائلة نوى L4 المصغرة (وخاصة نواة L3 ونواة L4) لإثبات أن النوى المصغرة ليست بالضرورة بطيئة. [ 58 ] وتستطيع التطبيقات الأحدث مثل Fiasco و Pistachio تشغيل نظام لينكس بجانب عمليات L4 أخرى في مساحات عناوين منفصلة. [ 59 ] [ 60 ]
بالإضافة إلى ذلك، فإن QNX عبارة عن نواة مصغرة تستخدم بشكل أساسي في الأنظمة المدمجة ، [ 61 ] وبرنامج MINIX مفتوح المصدر ، على الرغم من أنه تم إنشاؤه في الأصل لأغراض تعليمية، إلا أنه يركز الآن على أن يكون نظام تشغيل نواة مصغرة موثوقًا للغاية وقادرًا على إصلاح نفسه .
انظر أيضاً
ملحوظات
- ↑ قد يعتمد ذلك على بنية الحاسوب
- ↑ يوجد أيضًا Derail (DRL)، لكن دوره محدود.
- ↑ مثال، إدخال الوضع الرئيسي [ 8 ] (MME) على سلسلة GE-600 ، [ ب ] استدعاء المشرف [ 9 ] (SVC) على نظام IBM System/360 .
- ↑ مثال، عملية المستخدم غير المنفذة [ 10 ] (UUO) على جهاز DEC PDP-10 .
- ↑ تحتوي بعض البنى على رمز عملية [ c ] أو مجموعة من رموز العمليات [ d ] مخصصة لتوليد مقاطعة. بعض أنظمة التشغيل تعيد استخدام المقاطعة، على سبيل المثال، يستخدم CP-67 و VM مقاطعة تعليمات مميزة من تعليمات التشخيص.
- ↑ يتم تحقيق العنونة الافتراضية في أغلب الأحيان من خلال وحدة إدارة الذاكرة المدمجة.
- ↑ أعلى مستوى من الامتيازات له أسماء مختلفة عبر مختلف البنى، مثل وضع المشرف، ووضع النواة، وCPL0، وDPL0، والحلقة 0، وما إلى ذلك. انظر حلقة الحماية لمزيد من المعلومات.
مراجع
- 1 2 "Kernel" . Linfo . مجموعة مستخدمي لينكس في بيلفيو. مؤرشف من الأصل في 8 ديسمبر 2006. تم الاطلاع عليه في 15 سبتمبر 2016 .
- ↑ راندال إي. براينت؛ ديفيد ر. أوهالارون (2016). أنظمة الحاسوب: منظور المبرمج ( الطبعة الثالثة). بيرسون. ص 17. ISBN 978-0-13-409266-9.
- ↑ انظر إلى Daemon (الحوسبة)
- 1 2 روش 2004
- 1 2 3 4 5 6 7 وولف 1974 ص 337-345
- 1 2 سيلبرشاتز 1991
- ↑ تانينباوم، أندرو س. (2008). أنظمة التشغيل الحديثة ( الطبعة الثالثة). برنتيس هول. الصفحات 50-51 . ISBN 978-0-13-600663-3...
يتم استدعاء جميع استدعاءات النظام تقريبًا من برامج C عن طريق استدعاء إجراء مكتبة ... يقوم إجراء المكتبة ... بتنفيذ تعليمة TRAP للتبديل من وضع المستخدم إلى وضع النواة وبدء التنفيذ ...
- ↑ "عمليات متنوعة" (ملف PDF) . دليل برمجة GE-625/635 المرجعي (ملف PDF) . مراجعة أبريل 1968. جنرال إلكتريك . يوليو 1964. صفحة 132. CPB-1004F . تم الاطلاع عليه في 7 يوليو 2026 .
- ↑ "مكالمة مع المشرف" (ملف PDF) . مبادئ تشغيل نظام IBM System/360 (ملف PDF) . مكتبة مراجع الأنظمة ( الطبعة الثامنة). IBM . سبتمبر 1968. صفحة 74. A22-6821-7 . تاريخ الاسترجاع: 7 يوليو 2026 .
- ↑ "2.16 العمليات غير المُنفذة" (ملف PDF) . DECsystem-10 - DECSYSTEM-20 - دليل مرجعي للمعالج - AA-H391A-TK، AM-4391A-T1 (ملف PDF) . يونيو 1982. الصفحات 2-123 – 2-127 . AD-H391A . تاريخ الاسترجاع: 7 يوليو 2026 .
- ↑ دينينغ 1976
- ↑ اقتباس من Swift 2005، ص 29: "العزل، والتحكم في الموارد، والتحقق من القرار (الفحص)، واستعادة الأخطاء".
- ↑ شرودر 72
- 1 2 ليندن 76
- ↑ إيرانيان، ستيفان؛ موسبرغر، ديفيد (2002). "الذاكرة الافتراضية في نواة لينكس IA-64" . نواة لينكس IA-64: التصميم والتنفيذ . برنتيس هول بي تي آر. رقم ISBN 978-0-13-061014-0.
- ↑ سيلبرشاتز وغالفين، مفاهيم أنظمة التشغيل، الطبعة الرابعة، الصفحات 445 و446
- ↑ هوخ، تشارلز؛ جيه سي براون (يوليو 1980). "تطبيق القدرات على جهاز PDP-11/45" . مجلة ACM SIGOPS لأنظمة التشغيل . 14 (3): 22-32 . doi : 10.1145/850697.850701 . S2CID 17487360 .
- 1 2 شنايدر، فريد ب.؛ موريسيت، جريج؛ هاربر، روبرت. "نهج قائم على اللغة للأمن" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 22-12-2018.
- ١ ٢ ٣ لوسكوكو، بنسلفانيا؛ سمولي، داكوتا الجنوبية؛ موكلباور، بنسلفانيا؛ تايلور، آر سي؛ تيرنر، إس جيه؛ فاريل، جيه إف (أكتوبر ١٩٩٨). "حتمية الفشل: الافتراض الخاطئ للأمن في بيئات الحوسبة الحديثة" . وقائع المؤتمر الوطني الحادي والعشرين لأمن نظم المعلومات . الصفحات ٣٠٣-٣١٤ . مؤرشف من الأصل في ٢١ يونيو ٢٠٠٧.
- ↑ ليبرو، جاي؛ فورد، برايان؛ هيبلر، مايك (1996). "الأهمية المستمرة لنظام التشغيل المحلي للتطبيقات العالمية". وقائع ورشة العمل السابعة حول دعم الأنظمة للتطبيقات العالمية - EW 7، ACM SIGOPS . الصفحات 133-140 . doi : 10.1145/504450.504477 . ISBN 978-1-4503-7339-5. S2CID 10027108 .
- ↑ أندرسون، ج. (أكتوبر 1972). دراسة تخطيط تكنولوجيا أمن الحاسوب (ملف PDF) (تقرير). المجلد الثاني. قسم الأنظمة الإلكترونية التابع للقوات الجوية. ESD-TR-73-51، المجلد الثاني. مؤرشف (ملف PDF) من الأصل بتاريخ 21 يوليو 2011.
- ↑ جيري هـ. سالتزر؛ مايك د. شرودر (سبتمبر 1975). "حماية المعلومات في أنظمة الحاسوب" . وقائع معهد مهندسي الكهرباء والإلكترونيات . 63 (9): 1278-1308 . رمز Bibcode : 1975IEEEP..63.1278S . CiteSeerX 10.1.1.126.9257 . doi : 10.1109/PROC.1975.9939 . S2CID 269166. مؤرشف من الأصل في 2021-03-08 . تم الاسترجاع في 2007-07-15 .
- ↑ "عزل النواة الدقيق" . mars-research.github.io . تم الاطلاع عليه بتاريخ 15 سبتمبر 2022 .
- ↑ فيتزر، ماري. "العزل التلقائي لبرامج تشغيل الأجهزة يحمي من الأخطاء في أنظمة التشغيل" . جامعة ولاية بنسلفانيا عبر techxplore.com . تاريخ الاسترجاع: 15 سبتمبر 2022 .
- ↑ هوانغ، يونغتشي؛ نارايانان، فيكرام؛ ديتويلر، ديفيد؛ هوانغ، كايمينغ؛ تان، غانغ؛ ياغر، ترينت؛ بورتسيف، أنطون (2022). "KSplit: أتمتة عزل برامج تشغيل الأجهزة" (ملف PDF) . تم الاطلاع عليه بتاريخ 20 ديسمبر 2023 .
- ↑ جوناثان س. شابيرو؛ جوناثان م. سميث؛ ديفيد ج. فاربر (1999). "إيروس". مجلة أنظمة التشغيل ACM SIGOPS . 33 (5): 170-185 . doi : 10.1145/319344.319163 .
- ↑ ديكسترا، إي دبليو (سبتمبر 1965). "العمليات المتسلسلة المتعاونة" (ملف PDF) . في: ف. جينويس (محرر). لغات البرمجة: معهد الدراسات المتقدمة التابع لحلف الناتو: محاضرات أُلقيت في مدرسة صيفية لمدة ثلاثة أسابيع عُقدت في فيلار لو لانس، 1966. دار النشر الأكاديمية. قسم الرياضيات، الجامعة التكنولوجية، أيندهوفن. الصفحات 43-112 .
- 1 2 3 4 5 برينش هانسن 70 الصفحات من 238 إلى 241
- ↑ هاريسون، إم سي؛ شوارتز، جيه تي (1967). "SHARER، نظام مشاركة الوقت لجهاز CDC 6600" . اتصالات ACM . 10 (10): 659-665 . doi : 10.1145/363717.363778 . S2CID 14550794 .
- ↑ هوكستابل، د.هـ.ر.؛ وارويك، م.ت. (1967). "المشرفون الديناميكيون - تصميمهم وبناؤهم". وقائع ندوة ACM حول مبادئ أنظمة التشغيل - SOSP '67 . الصفحات 11.1 – 11.17 . doi : 10.1145/800001.811675 . ISBN 978-1-4503-7370-8. S2CID 17709902 .
- ↑ باياردي 1988
- 1 2 ليفين 75
- ↑ دينينغ 1980
- ↑ نيمر، يورغن (1991). "خلود أنظمة التشغيل، أو: هل لا يزال البحث في أنظمة التشغيل مُبررًا؟" . سلسلة محاضرات في علوم الحاسوب؛ المجلد 563. وقائع ورشة العمل الدولية حول أنظمة التشغيل في التسعينيات وما بعدها . الصفحات 77-83 . doi : 10.1007/BFb0024528 . ISBN 3-540-54987-0لقد
أظهرت السنوات الـ 25 الماضية أن الأبحاث المتعلقة بهندسة أنظمة التشغيل كان لها تأثير طفيف على الأنظمة السائدة الحالية .
- ↑ اقتباس من ليفي 84، ص.1: "على الرغم من أن تعقيد تطبيقات الكمبيوتر يزداد سنويًا، إلا أن بنية الأجهزة الأساسية للتطبيقات ظلت دون تغيير لعقود من الزمن."
- 1 2 3 ليفي 84، ص.1 اقتباس: "تدعم البنى التقليدية نمط تشغيل واحد ذو امتيازات. يؤدي هذا الهيكل إلى تصميم متجانس؛ أي وحدة تحتاج إلى حماية يجب أن تكون جزءًا من نواة نظام التشغيل. إذا كان بإمكان أي وحدة، بدلاً من ذلك، العمل ضمن نطاق محمي، فيمكن بناء الأنظمة كمجموعة من الوحدات المستقلة القابلة للتوسيع من قبل أي مستخدم."
- 1 2 "المصادر المفتوحة: أصوات من ثورة المصادر المفتوحة" . 1-56592-582-3 . 29 مارس 1999. مؤرشف من الأصل في 1 فبراير 2020. تم الاطلاع عليه في 24 مارس 2019 .
- ↑ يمكن العثور على تسجيلات المناظرة بين تورفالدز وتانينباوم على الموقع الإلكتروني dina.dk ( مؤرشف بتاريخ 3 أكتوبر 2012 على موقع Wayback Machine) ، و groups.google.com ( مؤرشف بتاريخ 26 مايو 2013 على موقع Wayback Machine) ،و oreilly.com ( مؤرشف بتاريخ 21 سبتمبر 2014 على موقع Wayback Machine ) ، وموقع أندرو تانينباوم الإلكتروني (مؤرشف بتاريخ 5 أغسطس 2015 على موقع Wayback Machine) .
- 1 2 ماثيو راسل. "ما هو داروين (وكيف يُشغّل نظام ماك أو إس إكس)" . أورايلي ميديا . مؤرشف من الأصل في 8 ديسمبر 2007. تم الاطلاع عليه في 9 ديسمبر 2008. تسمح
الطبيعة المترابطة بإحكام لنواة النظام المتجانسة باستخدامها الفعال للغاية للموارد المادية الأساسية [...] من ناحية أخرى، تُشغّل النوى المصغّرة عددًا أكبر بكثير من العمليات الأساسية في مساحة المستخدم. [...] لسوء الحظ، تأتي هذه المزايا على حساب اضطرار النواة المصغّرة إلى تمرير كمية كبيرة من المعلومات من وإلى مساحة النواة عبر عملية تُعرف باسم تبديل السياق. تُضيف عمليات تبديل السياق عبئًا كبيرًا، وبالتالي تُؤدي إلى انخفاض في الأداء.
- ↑ "أنظمة التشغيل/نماذج النواة - ويكي الجامعة" . en.wikiversity.org . مؤرشف من الأصل بتاريخ 18-12-2014 . تم الاطلاع عليه بتاريخ 18-12-2014 .
- 1 2 3 4 ليدتك 95
- ↑ هارتيغ 97
- ↑ هانسن 73، القسم 7.3، صفحة 233 " التفاعلات بين مستويات الحماية المختلفة تتطلب نقل الرسائل حسب القيمة "
- ↑ ماجي، جيم. جلسة WWDC 2000 رقم 106 - نظام التشغيل ماك أو إس إكس: النواة . 14 دقيقة. مؤرشف من الأصل بتاريخ 30-10-2021.
- ↑ "بنية KeyKOS Nanokernel" . مؤرشف من الأصل بتاريخ 21-06-2011.
- ↑ باومان، أندرو؛ بارام، بول؛ داغاند، بيير-إيفاريست؛ هاريس، تيم؛ إسحاق، ريبيكا؛ بيتر، سيمون؛ روسكو، تيموثي؛ شوباخ، أدريان؛ سينغانيا، أخيلش (2009). النواة المتعددة: بنية نظام تشغيل جديدة لأنظمة متعددة النوى قابلة للتوسع (ملف PDF) . الندوة الثانية والعشرون حول مبادئ أنظمة التشغيل.
- ↑ "نظام التشغيل Barrelfish" .
- ↑ بول: تصميمات المعالجات الدقيقة المدمجة، ص 129
- ^ هانسن 2001 (نظام التشغيل)، الصفحات من 17 إلى 18
- ↑ "نسخة BSTJ من ورقة بحثية حول نظام يونكس مقدمة إلى مؤتمر C.ACM" . bell-labs.com . مؤرشفة من الأصل بتاريخ 30 ديسمبر 2005. تم الاطلاع عليها بتاريخ 17 أغسطس 2006 .
- ↑ كورباتو، إف جيه ؛ فيسوتسكي، في إيه. مقدمة ونظرة عامة على نظام مولتيكس . مؤتمر الحاسوب المشترك لخريف 1965. مؤرشف من الأصل في 2011-07-09.
- 1 2 "مواصفات يونكس الموحدة" . مجموعة أوبن . مؤرشف من الأصل بتاريخ 2016-10-04 . تم الاطلاع عليه بتاريخ 2016-09-29 .
- ↑ "انتقام يونكس" . asymco.com . 29 سبتمبر 2010. مؤرشف من الأصل في 9 نوفمبر 2010. تم الاطلاع عليه في 2 أكتوبر 2010 .
- ↑ ويلر، ديفيد أ. (12 أكتوبر 2004). "نواة لينكس 2.6: إنها تستحق أكثر!" .
- ↑ يجتمع هذا المجتمع في الغالب في Bona Fide OS Development (أرشيف 2022-01-17 في Wayback Machine) ، و The Mega-Tokyo Message Board (أرشيف 2022-01-25 في Wayback Machine) ، ومواقع الويب الأخرى الخاصة بعشاق أنظمة التشغيل.
- ↑ سينغ، أميت (ديسمبر 2003). "XNU: النواة" . مؤرشف من الأصل في 12 أغسطس 2011.
- ↑ "ويندوز - الموقع الرسمي لنظام التشغيل مايكروسوفت ويندوز 10 هوم وبرو، وأجهزة الكمبيوتر المحمولة، وأجهزة الكمبيوتر الشخصية، والأجهزة اللوحية، والمزيد" . windows.com . مؤرشف من الأصل بتاريخ 20 أغسطس 2011. تم الاطلاع عليه بتاريخ 24 مارس 2019 .
- ↑ "عائلة النواة المصغرة L4 - نظرة عامة" . os.inf.tu-dresden.de . مؤرشف من الأصل بتاريخ 21-08-2006 . تم الاطلاع عليه بتاريخ 11-08-2006 .
- ↑ "نظرة عامة على نواة Fiasco المصغرة" . os.inf.tu-dresden.de . مؤرشف من الأصل بتاريخ 16-06-2006 . تم الاطلاع عليه بتاريخ 10-07-2006 .
- ↑ زولر (غير نشط)، هاينز (7 ديسمبر 2013). "مشروع L4Ka" . www.l4ka.org . مؤرشف من الأصل في 19 أبريل 2001. تم الاطلاع عليه في 24 مارس 2019 .
- ↑ "أنظمة تشغيل QNX" . blackberry.qnx.com . مؤرشف من الأصل بتاريخ 24-03-2019 . تم الاطلاع عليه بتاريخ 24-03-2019 .
مصادر
- روش، بنيامين (2004). "النواة المتجانسة مقابل النواة المصغرة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 1 نوفمبر 2006. تم الاطلاع عليه بتاريخ 12 أكتوبر 2006 .
- سيلبرشاتز، أبراهام ؛ جيمس ل. بيترسون؛ بيتر ب. جالفين (1991). مفاهيم أنظمة التشغيل . بوسطن، ماساتشوستس : أديسون-ويسلي. ص 696. ISBN 978-0-201-51379-0.
- بول، ستيوارت ر. (2002). أنظمة المعالجات الدقيقة المدمجة: تصاميم عملية ( الطبعة الأولى). إلسيفير ساينس. ISBN 978-0-7506-7534-5.
- ديتل ، هارفي م. (1984) [1982]. مقدمة في أنظمة التشغيل ( طبعة أولى منقحة). أديسون-ويسلي. ص 673. ISBN 978-0-201-14502-1.
- دينينغ، بيتر ج. (ديسمبر 1976). "أنظمة التشغيل المقاومة للأعطال". مجلة ACM Computing Surveys . 8 (4): 359-389 . doi : 10.1145/356678.356680 . ISSN 0360-0300 . S2CID 207736773 .
- دينينغ، بيتر ج. (أبريل 1980). "لماذا لا تكون هناك ابتكارات في هندسة الحاسوب؟" . أخبار هندسة الحاسوب الصادرة عن جمعية آلات الحوسبة (ACM SIGARCH) . 8 (2): 4-7 . doi : 10.1145/859504.859506 . ISSN 0163-5964 . S2CID 14065743 .
- هانسن، بير برينش (أبريل 1970). "نواة نظام البرمجة المتعددة". اتصالات رابطة آلات الحوسبة . 13 (4): 238-241 . CiteSeerX 10.1.1.105.4204 . doi : 10.1145/362258.362278 . ISSN 0001-0782 . S2CID 9414037 .
- هانسن ، بير برينش (1973). مبادئ أنظمة التشغيل . إنجلوود كليفس : برنتيس هول. ص 496. ISBN 978-0-13-637843-3.
- هانسن، بير برينش (2001). "تطور أنظمة التشغيل" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 25 يوليو 2011. تم الاطلاع عليه بتاريخ 24 أكتوبر 2006 .مُدرج في الكتاب: بير برينش هانسن، محرر (2001). "1 تطور أنظمة التشغيل". أنظمة التشغيل الكلاسيكية: من المعالجة الدفعية إلى الأنظمة الموزعة . نيويورك: سبرينغر-فيرلاغ. الصفحات 1-36 . ISBN 978-0-387-95113-3.
- هارتيغ، هيرمان؛ هوموث، مايكل؛ ليدتكه، يوشين ؛ شونبيرغ، سيباستيان؛ وولتر، جان (5-8 أكتوبر 1997). "أداء الأنظمة القائمة على نواة μ" . وقائع الندوة السادسة عشرة لجمعية ACM حول مبادئ أنظمة التشغيل - SOSP '97 . الندوة السادسة عشرة لجمعية ACM حول مبادئ أنظمة التشغيل (SOSP'97). سان مالو، فرنسا. doi : 10.1145/268998.266660 . ISBN 978-0-89791-916-6. S2CID 1706253 . مؤرشف من الأصل بتاريخ 2020-02-17. ، هارتيج، هيرمان؛ هوهموث، مايكل. ليدتكي، يوخن؛ شونبيرج ، سيباستيان (ديسمبر 1997). "أداء الأنظمة المعتمدة على النواة" . مراجعة أنظمة التشغيل ACM SIGOPS . 31 (5): 66-77 . دوى : 10.1145 / 269005.266660 .
- هوديك، إم إي؛ سولتيس، إف جي ؛ هوفمان، آر إل (1981). "دعم نظام IBM System/38 للعنونة القائمة على القدرات" . وقائع الندوة الدولية الثامنة لجمعية ACM حول هندسة الحاسوب . ACM/IEEE. الصفحات 341-348 .
- دليل مطوري برامج بنية IA-32، المجلد 1: البنية الأساسية (PDF) . شركة إنتل . 2002.
- ليفين، ر.؛ كوهين، إ.؛ كورين، و.؛ بولاك، ف.؛ وولف، ويليام (1975). "فصل السياسة/الآلية في هيدرا" . مجلة ACM SIGOPS لأنظمة التشغيل . 9 (5): 132-140 . doi : 10.1145/1067629.806531 .
- ليفي، هنري م. (1984). أنظمة الحاسوب القائمة على القدرات . ماينارد، ماساتشوستس: دار النشر الرقمية. ISBN 978-0-932376-22-0أُرشف من المصدر الأصلي بتاريخ 13 يوليو 2007. تم الاطلاع عليه بتاريخ 18 يوليو 2007 .
- ليدتك، يوشين (ديسمبر 1995). "حول بناء النواة المصغرة" . وقائع الندوة الخامسة عشرة لجمعية الحوسبة الآلية حول مبادئ أنظمة التشغيل (SOSP) . مؤرشف من الأصل في 13 مارس 2007.
- ليندن، ثيودور أ. (ديسمبر 1976). "هياكل أنظمة التشغيل لدعم أمن البرمجيات وموثوقيتها". مجلة ACM Computing Surveys ، 8 (4): 409-445 . doi : 10.1145/356678.356682 . hdl : 2027/mdp.39015086560037 . ISSN 0360-0300 . S2CID 16720589 . " هياكل أنظمة التشغيل لدعم الأمن والبرمجيات الموثوقة" (ملف PDF) . تم الاطلاع عليه بتاريخ 20 ديسمبر 2023 .
- لورين، هارولد (1981). أنظمة التشغيل . بوسطن، ماساتشوستس : أديسون-ويسلي. الصفحات 161-186 . ISBN 978-0-201-14464-2.
- شرودر، مايكل د .؛ جيروم هـ. سالتزر (مارس 1972). "بنية برمجية لتنفيذ حلقات الحماية". اتصالات رابطة مكائن الحوسبة . 15 (3): 157-170 . CiteSeerX 10.1.1.83.8304 . doi : 10.1145/361268.361275 . ISSN 0001-0782 . S2CID 14422402 .
- شو ، آلان سي. (1974). التصميم المنطقي لأنظمة التشغيل . برنتيس هول. ص 304. ISBN 978-0-13-540112-5.
- تانينباوم، أندرو س. (1979). تنظيم الحاسوب الهيكلي . إنجلوود كليفس، نيو جيرسي : برنتيس هول. ISBN 978-0-13-148521-1.
- وولف، دبليو .؛ إي. كوهين؛ دبليو. كورين؛ إيه. جونز؛ آر. ليفين؛ سي. بيرسون؛ إف. بولاك (يونيو 1974). "هيدرا: نواة نظام تشغيل متعدد المعالجات" (ملف PDF) . مجلة اتصالات رابطة مكائن الحوسبة . 17 (6): 337-345 . doi : 10.1145/355616.364017 . ISSN 0001-0782 . S2CID 8011765. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 26 سبتمبر 2007. تاريخ الاسترجاع: 18 يوليو 2007 .
- باياردي، ف؛ أ. توماسي؛ م. فانشي (1988). Architettura dei Sistemi di Elaborazione، المجلد الأول (باللغة الإيطالية). فرانكو انجيلي. رقم ISBN 978-88-204-2746-7أُرشف من المصدر الأصلي بتاريخ 27 يونيو 2012. تم الاطلاع عليه بتاريخ 10 أكتوبر 2006 .
- سويفت، مايكل م.؛ برايان ن. بيرشاد؛ هنري م. ليفي. تحسين موثوقية أنظمة التشغيل التجارية (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 19 يوليو 2007. تم الاطلاع عليه بتاريخ 16 يوليو 2007 .
- جيتيس، جيمس؛ كارلتون، فيليب ل.؛ ماكجريجور، سكوت (1990). "نظام نافذة X، الإصدار 11". البرمجيات: الممارسة والخبرة . 20 : S35– S67. doi : 10.1002/spe.4380201404 . S2CID 26329062 .
- مايكل م. سويفت؛ برايان ن. بيرشاد؛ هنري م. ليفي (فبراير 2005). "تحسين موثوقية أنظمة التشغيل التجارية". مجلة ACM للمعاملات في أنظمة الحاسوب . 23 (1). رابطة آلات الحوسبة: 77-110 . doi : 10.1145/1047915.1047919 . eISSN 1557-7333 . ISSN 0734-2071 . S2CID 208013080 .
للمزيد من القراءة
- أندرو إس. تانينباوم ، ألبرت إس. وودهول، أنظمة التشغيل: التصميم والتنفيذ (الطبعة الثالثة) ؛
- أندرو إس. تانينباوم، هربرت بوس، أنظمة التشغيل الحديثة (الطبعة الرابعة) ؛
- دانيال ب. بوفيه، ماركو سيساتي، فهم نواة لينكس (الطبعة الثالثة) ؛
- ديفيد أ. باترسون ، جون ل. هينيسي ، تنظيم وتصميم الحاسوب (الطبعة السادسة) ، مورغان كوفمان ( ISBN) 978-0-12-820109-1) ;
- بي إس تشوك، إيه تي كارتر، آر دبليو هيند، تنظيم وبنية الحاسوب: مقدمة (الطبعة الثانية) ، بالغراف ماكميلان ( ISBN) 978-1-4039-0164-4).
روابط خارجية
- مقارنة النواة: لينكس (2.6.22) مقابل ويندوز (فيستا) على موقع Wayback Machine (تمت أرشفته في 2008-09-14)
- نظام التشغيل Barrelfish
- نواة نظام التشغيل
- أنظمة التشغيل
