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

تبسيط مفرط لكيفية ربط النواة بين برامج التطبيق وعتاد الكمبيوتر

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

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

واجهة النواة عبارة عن طبقة تجريد منخفضة المستوى . عندما تطلب عملية خدمة من النواة، يجب عليها استدعاء نداء نظام ، عادةً من خلال دالة تغليف .

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

هذا المكون المركزي لنظام الكمبيوتر مسؤول عن تنفيذ البرامج. يتحمل النواة مسؤولية اتخاذ القرار في أي وقت بشأن أي من البرامج العديدة قيد التشغيل يجب تخصيصها للمعالج أو المعالجات.

ذاكرة الوصول العشوائي

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

أجهزة الإدخال والإخراج

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

إدارة الموارد

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

إدارة الذاكرة

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

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

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

إدارة الأجهزة

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

على مستوى الأجهزة، تتضمن التجريدات الشائعة لبرامج تشغيل الأجهزة ما يلي:

  • التفاعل المباشر
  • استخدام واجهة عالية المستوى (فيديو BIOS )
  • استخدام برنامج تشغيل جهاز من مستوى أدنى (برامج تشغيل الملفات باستخدام برامج تشغيل القرص)
  • محاكاة العمل باستخدام الأجهزة، أثناء القيام بشيء مختلف تمامًا

وعلى مستوى البرمجيات، تتضمن تجريدات برامج تشغيل الأجهزة ما يلي:

  • السماح لنظام التشغيل بالوصول المباشر إلى موارد الأجهزة
  • تنفيذ العناصر البدائية فقط
  • تنفيذ واجهة للبرامج غير المرتبطة بالتشغيل مثل TWAIN
  • تنفيذ لغة (غالبًا لغة عالية المستوى مثل PostScript )

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

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

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

مكالمات النظام

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

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

لأداء عمل مفيد فعليًا، يجب أن تكون العملية قادرة على الوصول إلى الخدمات التي توفرها النواة. يتم تنفيذ ذلك بشكل مختلف بواسطة كل نواة، ولكن معظمها توفر مكتبة C أو واجهة برمجة تطبيقات ، والتي بدورها تستدعي وظائف النواة ذات الصلة. [7]

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

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

قرارات تصميم النواة

حماية

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

يمكن تصنيف الآليات أو السياسات التي توفرها النواة وفقًا لعدة معايير، بما في ذلك: ثابتة (يتم فرضها في وقت التجميع ) أو ديناميكية (يتم فرضها في وقت التشغيل )؛ وقائية أو اكتشاف لاحق؛ وفقًا لمبادئ الحماية التي تلبيها (على سبيل المثال، Denning [8] [9] )؛ سواء كانت مدعومة بالأجهزة أو تعتمد على اللغة؛ سواء كانت آلية مفتوحة أكثر أو سياسة ملزمة؛ وغير ذلك الكثير.

يتم تنفيذ دعم مجالات الحماية الهرمية [10] عادةً باستخدام أوضاع وحدة المعالجة المركزية .

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

الطريقة الفعالة والبسيطة لتوفير الدعم المادي للقدرات هي تفويض وحدة إدارة الذاكرة (MMU) بمسؤولية التحقق من حقوق الوصول لكل وصول إلى الذاكرة، وهي آلية تسمى العنونة القائمة على القدرات . [11] تفتقر معظم بنيات الكمبيوتر التجارية إلى مثل هذا الدعم من وحدة إدارة الذاكرة للقدرات.

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

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

يعد اختيار مستويات التجريد التي ينبغي فيها تنفيذ آليات وسياسات الأمان أحد القرارات المهمة في تصميم النواة. تلعب آليات أمان النواة دورًا بالغ الأهمية في دعم الأمان على المستويات الأعلى. [11] [16] [17] [18] [19]

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

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

وفقًا لمطوري Mars Research Group، فإن الافتقار إلى العزل هو أحد العوامل الرئيسية التي تقوض أمان النواة. [20] يقترحون إطار عمل عزل برنامج التشغيل للحماية، في المقام الأول في نواة Linux. [21] [22]

الحماية القائمة على الأجهزة أو اللغة

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

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

وتشمل مزايا هذا النهج ما يلي:

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

تشمل العيوب ما يلي:

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

تتضمن أمثلة الأنظمة ذات الحماية القائمة على اللغة JX و Singularity من Microsoft .

التعاون في العملية

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

إدارة أجهزة الإدخال والإخراج

كانت فكرة النواة حيث يتم التعامل مع أجهزة الإدخال/الإخراج بشكل موحد مع العمليات الأخرى، كعمليات متعاونة متوازية، أول من اقترحها ونفذها برينش هانسن (على الرغم من اقتراح أفكار مماثلة في عام 1967 [26] [27] ). في وصف هانسن لهذا، تسمى العمليات "المشتركة" بالعمليات الداخلية ، بينما تسمى أجهزة الإدخال/الإخراج بالعمليات الخارجية . [25]

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

طرق التصميم على مستوى النواة

يمكن توفير المهام والميزات المذكورة أعلاه بطرق عديدة تختلف عن بعضها البعض في التصميم والتنفيذ.

إن مبدأ فصل الآلية عن السياسة هو الفارق الجوهري بين فلسفة النواة الصغيرة والنواة المتجانسة. [28] [29] هنا، الآلية هي الدعم الذي يسمح بتنفيذ العديد من السياسات المختلفة، في حين أن السياسة هي "طريقة تشغيل" معينة. مثال:

  • الآلية: يتم توجيه محاولات تسجيل دخول المستخدم إلى خادم التفويض
  • السياسة: يتطلب خادم التفويض كلمة مرور يتم التحقق منها مقابل كلمات المرور المخزنة في قاعدة البيانات

نظرًا لأن الآلية والسياسة منفصلتان، فمن الممكن تغيير السياسة بسهولة لتتطلب على سبيل المثال استخدام رمز أمان .

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

قدم بير برينش هانسن حججًا لصالح فصل الآلية عن السياسة. [5] [25] إن الفشل في الوفاء بهذا الفصل بشكل صحيح هو أحد الأسباب الرئيسية لعدم وجود ابتكار كبير في أنظمة التشغيل الحالية، [5] وهي مشكلة شائعة في بنية الكمبيوتر. [30] [31] [32] يتم تحريض التصميم المتجانس من خلال نهج "وضع النواة" / "وضع المستخدم" المعماري للحماية (يُطلق عليه تقنيًا مجالات الحماية الهرمية )، وهو أمر شائع في الأنظمة التجارية التقليدية؛ [33] في الواقع، يتم تضمين كل وحدة تحتاج إلى الحماية بشكل مفضل في النواة. [33] يمكن إعادة ربط هذا الارتباط بين التصميم المتجانس و "الوضع المميز" بالقضية الرئيسية المتمثلة في فصل الآلية عن السياسة؛ [5] في الواقع، يدمج نهج "الوضع المميز" المعماري آلية الحماية مع سياسات الأمان، في حين أن نهج العمارة البديل الرئيسي، العنونة القائمة على القدرات ، يميز بوضوح بين الاثنين، مما يؤدي بشكل طبيعي إلى تصميم نواة صغيرة [5] (انظر فصل الحماية والأمان ).

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

نوى متجانسة

رسم تخطيطي لنواة متجانسة

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

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

تدعم أنوية النظام الحديثة المتجانسة، مثل نواة Linux ، ونواة FreeBSD ، ونواة AIX ، ونواة HP-UX ، ونواة Solaris ، والتي تندرج جميعها ضمن فئة أنظمة التشغيل الشبيهة بنظام Unix، وحدات نواة قابلة للتحميل ، مما يسمح بتحميل الوحدات في النواة أثناء وقت التشغيل، مما يسمح بتوسيع قدرات النواة بسهولة حسب الحاجة، مع المساعدة في تقليل كمية التعليمات البرمجية التي تعمل في مساحة النواة.

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

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

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

النوى الدقيقة

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

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

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

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

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

ومع ذلك، هناك بعض العيوب في النواة الدقيقة، ومنها:

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

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

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

النواة المتجانسة مقابل النواة الصغيرة

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

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

أداء

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

كان أداء النوى الدقيقة ضعيفًا في كل من الثمانينيات وأوائل التسعينيات. [38] [39] ومع ذلك، فإن الدراسات التي قامت بقياس أداء هذه النوى الدقيقة تجريبيًا لم تحلل أسباب هذا الانخفاض في الكفاءة. [38] تُركت تفسيرات هذه البيانات لـ "الفولكلور"، مع افتراض أنها كانت بسبب زيادة وتيرة التبديل من "وضع النواة" إلى "وضع المستخدم"، وزيادة وتيرة الاتصال بين العمليات وزيادة وتيرة تبديل السياق . [38]

في الواقع، وكما تم التخمين في عام 1995، فإن أسباب ضعف أداء النوى الدقيقة ربما كانت: (1) عدم كفاءة حقيقية لنهج النوى الدقيقة بالكامل ، (2) المفاهيم الخاصة التي تم تنفيذها في تلك النوى الدقيقة، و(3) التنفيذ الخاص لتلك المفاهيم. لذلك، بقي من الضروري دراسة ما إذا كان الحل لبناء نواة دقيقة فعالة، على عكس المحاولات السابقة، هو تطبيق تقنيات البناء الصحيحة. [38]

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

يجمع نهج النواة الهجينة بين السرعة والتصميم الأبسط للنواة المتجانسة مع الوحدات النمطية وسلامة التنفيذ للنواة الصغيرة

النوى الهجينة (أو المعيارية)

تُستخدم النواة الهجينة في معظم أنظمة التشغيل التجارية مثل Microsoft Windows NT 3.1 وNT 3.5 وNT 3.51 وNT 4.0 و2000 وXP وVista و7 و8 و8.1 و10. يستخدم نظام macOS الخاص بشركة Apple نواة هجينة تسمى XNU ، والتي تستند إلى كود من نواة Mach الخاصة بـ OSF/1 (OSFMK 7.3) [41] ونواة FreeBSD المتجانسة . تشبه النواة الهجينة النوى الصغيرة، إلا أنها تتضمن بعض التعليمات البرمجية الإضافية في مساحة النواة لزيادة الأداء. تمثل هذه النواة حلاً وسطًا تم تنفيذه بواسطة بعض المطورين لاستيعاب المزايا الرئيسية لكل من النواة المتجانسة والصغرى. هذه الأنواع من النواة هي امتدادات للنوى الصغيرة مع بعض خصائص النواة المتجانسة. على عكس النوى المتجانسة، لا تستطيع هذه الأنواع من النوى تحميل الوحدات النمطية في وقت التشغيل بمفردها. [ بحاجة لمصدر ] وهذا يعني تشغيل بعض الخدمات (مثل مكدس الشبكة أو نظام الملفات ) في مساحة النواة لتقليل النفقات العامة لأداء النواة الصغيرة التقليدية، ولكن لا يزال يتم تشغيل كود النواة (مثل برامج تشغيل الأجهزة) كخوادم في مساحة المستخدم.

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

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

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

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

نواة النانو

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

النواة الخارجية

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

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

متعدد النواة

يعامل نظام التشغيل متعدد النواة الجهاز متعدد النواة كشبكة من النوى المستقلة، كما لو كان نظامًا موزعًا . ولا يفترض وجود ذاكرة مشتركة، بل ينفذ الاتصالات بين العمليات كمرور للرسائل . [43] [44] كان Barrelfish أول نظام تشغيل يوصف بأنه متعدد النواة.

تاريخ تطوير النواة

نوى أنظمة التشغيل المبكرة

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

في عام 1969، قدم نظام البرمجة المتعددة RC 4000 فلسفة تصميم النظام للنواة الصغيرة "التي يمكن بناء أنظمة التشغيل لأغراض مختلفة عليها بطريقة منظمة"، [46] وهو ما يسمى بنهج النواة الدقيقة.

أنظمة التشغيل المشاركة في الوقت

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

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

أميغا

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

يونكس

رسم تخطيطي لعلاقة العائلة السلف/الخليفة لأنظمة شبيهة بنظام يونكس

أثناء مرحلة تصميم يونكس ، قرر المبرمجون نمذجة كل جهاز عالي المستوى كملف ، لأنهم اعتقدوا أن الغرض من الحوسبة هو تحويل البيانات . [49]

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

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

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

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

نظام التشغيل Mac OS الكلاسيكي وmacOS

أطلقت شركة Apple نظام التشغيل Mac OS الكلاسيكي لأول مرة في عام 1984، مع جهاز الكمبيوتر الشخصي Macintosh . انتقلت Apple إلى تصميم nanokernel في Mac OS 8.6. في مقابل ذلك، يعتمد نظام التشغيل macOS الحديث (المسمى في الأصل Mac OS X) على Darwin ، والذي يستخدم نواة هجينة تسمى XNU ، والتي تم إنشاؤها عن طريق الجمع بين نواة 4.3BSD ونواة Mach . [53]

مايكروسوفت ويندوز

تم إصدار Microsoft Windows لأول مرة في عام 1985 كإضافة إلى MS-DOS . نظرًا لاعتماده على نظام تشغيل آخر، فقد تم اعتبار الإصدارات الأولية من Windows، قبل Windows 95، بيئة تشغيل (لا ينبغي الخلط بينها وبين نظام التشغيل ). استمر خط الإنتاج هذا في التطور خلال الثمانينيات والتسعينيات، حيث أضافت سلسلة Windows 9x عنونة 32 بت وتعدد المهام الاستباقي؛ لكنها انتهت بإصدار Windows Me في عام 2000.

طورت شركة مايكروسوفت أيضًا نظام التشغيل Windows NT ، وهو نظام تشغيل ذو واجهة مشابهة جدًا، ولكنه مخصص للمستخدمين من ذوي المستوى العالي ورجال الأعمال. بدأ هذا الخط بإصدار Windows NT 3.1 في عام 1993، وتم تقديمه للمستخدمين العاديين مع إصدار Windows XP في أكتوبر 2001 - ليحل محل Windows 9x بنظام تشغيل مختلف تمامًا وأكثر تطورًا. هذا هو الخط الذي يستمر مع Windows 11 .

تعتبر بنية نواة Windows NT نواة هجينة لأن النواة نفسها تحتوي على مهام مثل Window Manager وIPC Managers، مع نموذج نظام فرعي متعدد الطبقات للعميل/الخادم. [ 54 ] تم تصميمها كنواة دقيقة معدلة ، حيث تأثرت نواة Windows NT بنواة Mach الدقيقة ولكنها لا تلبي جميع معايير النواة الدقيقة النقية.

مشرف آي بي إم

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

تاريخيًا، كان هذا المصطلح مرتبطًا بشكل أساسي بخط أنظمة تشغيل الحاسبات المركزية لشركة IBM بدءًا من OS/360 . في أنظمة التشغيل الأخرى، يُطلق على المشرف عمومًا اسم النواة.

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

تطوير النوى الدقيقة

على الرغم من أن Mach ، الذي طوره ريتشارد رشيد في جامعة كارنيجي ميلون ، هو النواة الدقيقة الأكثر شهرة للأغراض العامة، فقد تم تطوير نوى دقيقة أخرى بأهداف أكثر تحديدًا. تم إنشاء عائلة نوى الدقيقة L4 (بشكل أساسي نواة L3 وL4) لإثبات أن النوى الدقيقة ليست بطيئة بالضرورة. [55] تتمكن التطبيقات الأحدث مثل Fiasco و Pistachio من تشغيل Linux بجوار عمليات L4 الأخرى في مساحات عناوين منفصلة. [56] [57]

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

انظر أيضا

ملحوظات

  1. ^ قد يعتمد ذلك على بنية الكمبيوتر
  2. ^ يتم تحقيق التوجيه الافتراضي عادةً من خلال وحدة إدارة الذاكرة المدمجة .
  3. ^ أعلى مستوى امتياز له أسماء مختلفة في مختلف البنيات، مثل وضع المشرف، ووضع النواة، وCPL0، وDPL0، والحلقة 0، وما إلى ذلك. راجع حلقة الحماية لمزيد من المعلومات.

مراجع

  1. ^ ab "Kernel". Linfo . Bellevue Linux Users Group. مؤرشف من الأصل في 8 ديسمبر 2006 . تم الاسترجاع في 15 سبتمبر 2016 .
  2. ^ راندال إي. براينت؛ ديفيد ر. أوهالارون (2016). أنظمة الكمبيوتر: وجهة نظر المبرمج (الطبعة الثالثة). بيرسون. ص. 17. ISBN 978-0-13-409266-9.
  3. ^ راجع Daemon (الحوسبة)
  4. ^ أب روش 2004
  5. ^ abcdefg وولف 1974 ص 337-345
  6. ^ بواسطة سيلبيرشاتز 1991
  7. ^ تانينباوم، أندرو س. (2008). أنظمة التشغيل الحديثة (الطبعة الثالثة). برنتيس هول. ص 50-51. ISBN 978-0-13-600663-3... يتم استدعاء جميع نداءات النظام تقريبًا من برامج C عن طريق استدعاء إجراء مكتبة ... ينفذ إجراء المكتبة ... تعليمات TRAP للتبديل من وضع المستخدم إلى وضع kernel وبدء التنفيذ ...
  8. ^ دينينج 1976
  9. ^ سويفت 2005، ص 29 اقتباس: "العزل، والتحكم في الموارد، والتحقق من القرار (الفحص)، واستعادة الخطأ".
  10. ^ شرودر 72
  11. ^ ab Linden 76
  12. ^ Eranian, Stephane; Mosberger, David (2002). "Virtual Memory in the IA-64 Linux Kernel". IA-64 Linux Kernel: Design and Implementation . Prentice Hall PTR. ISBN 978-0-13-061014-0.
  13. ^ Silberschatz & Galvin, Operating System Concepts, الطبعة الرابعة، ص 445 و446
  14. ^ Hoch, Charles; JC Browne (يوليو 1980). "تطبيق القدرات على PDP-11/45". مراجعة أنظمة التشغيل ACM SIGOPS . 14 (3): 22–32. doi : 10.1145/850697.850701 . S2CID  17487360.
  15. ^ ab Schneider, Fred B.; Morrissett, Greg; Harper, Robert. "A Language-Based Approach to Security" (PDF) . مؤرشف من الأصل (PDF) في 22 ديسمبر 2018.
  16. ^ abc Loscocco, PA; Smalley, SD; Muckelbauer, PA; Taylor, RC; Turner, SJ; Farrell, JF (October 1998). "The Inevitability of Failure: The Flawed Assumption of Security in Modern Computing Environments". Proceedings of the 21st National Information Systems Security Conference . ص. 303–314. مؤرشف من الأصل في 2007-06-21.
  17. ^ Lepreau, Jay; Ford, Bryan; Hibler, Mike (1996). "الأهمية المستمرة لنظام التشغيل المحلي للتطبيقات العالمية". وقائع ورشة العمل السابعة حول ACM SIGOPS ورشة العمل الأوروبية دعم الأنظمة للتطبيقات العالمية - EW 7 . ص 133-140. doi : 10.1145/504450.504477 . ISBN 978-1-4503-7339-5. S2CID  10027108.
  18. ^ أندرسون، ج. (أكتوبر 1972). دراسة تخطيط تكنولوجيا أمن الكمبيوتر (PDF) (تقرير). المجلد الثاني. قسم الأنظمة الإلكترونية للقوات الجوية. ESD-TR-73-51، المجلد الثاني. مؤرشف (PDF) من الأصل في 2011-07-21.
  19. ^ جيري إتش سالتزر؛ مايك دي شرودر (سبتمبر 1975). "حماية المعلومات في أنظمة الكمبيوتر". وقائع معهد مهندسي الكهرباء والإلكترونيات . 63 (9): 1278-1308. CiteSeerX 10.1.1.126.9257 . doi :10.1109/PROC.1975.9939. S2CID  269166. مؤرشف من الأصل في 2021-03-08 . تم الاسترجاع في 2007-07-15 . 
  20. ^ "عزل النواة الدقيقة". mars-research.github.io . تم الاسترجاع في 15 سبتمبر 2022 .
  21. ^ Fetzer, Mary. "العزل التلقائي لبرنامج تشغيل الجهاز يحمي من الأخطاء في أنظمة التشغيل". جامعة ولاية بنسلفانيا عبر techxplore.com . تم الاسترجاع في 15 سبتمبر 2022 .
  22. ^ هوانغ، يونغزي؛ نارايانان، فيكرام؛ ديتويلر، ديفيد؛ هوانغ، كايمينغ؛ تان، جانج؛ جايجر، ترينت؛ بورتسيف، أنطون (2022). "KSplit: أتمتة عزل برامج تشغيل الأجهزة" (PDF) . تم الاسترجاع في 20 ديسمبر 2023 .
  23. ^ جوناثان س. شابيرو؛ جوناثان م. سميث؛ ديفيد ج. فاربر (1999). "EROS". مراجعة أنظمة التشغيل ACM Sigops . 33 (5): 170–185. doi :10.1145/319344.319163.
  24. ^ Dijkstra, EW Cooperating Sequential Processes . قسم الرياضيات، جامعة آيندهوفن للتكنولوجيا، سبتمبر 1965.
  25. ^ abcde برينش هانسن 70 ص 238 – 241
  26. ^ هاريسون، إم سي؛ شوارتز، جيه تي (1967). "SHARER، نظام تقاسم الوقت لـ CDC 6600". اتصالات ACM . 10 (10): 659–665. doi : 10.1145/363717.363778 . S2CID  14550794.
  27. ^ Huxtable, DHR; Warwick, MT (1967). "Dynamic Supervisors - their design and build". Proceedings of the ACM symposium on Operating System Principles - SOSP '67 . ص. 11.1–11.17. doi : 10.1145/800001.811675 . ISBN 978-1-4503-7370-8. S2CID  17709902 . تم الاسترجاع في 2023-12-20 .
  28. ^ باياردي 1988
  29. ^ أب ليفين 75
  30. ^ دينينج 1980
  31. ^ Nehmer, Jürgen (1991). "خلود أنظمة التشغيل، أو: هل لا يزال البحث في أنظمة التشغيل مبررًا؟". مذكرات محاضرات في علوم الكمبيوتر؛ المجلد 563. وقائع ورشة العمل الدولية حول أنظمة التشغيل في التسعينيات وما بعدها . ص 77-83. doi :10.1007/BFb0024528. ISBN 3-540-54987-0لقد أظهرت السنوات الخمس والعشرون الماضية أن الأبحاث المتعلقة بهندسة أنظمة التشغيل كان لها تأثير طفيف على الأنظمة الرئيسية الحالية .
  32. ^ ليفي 84، ص 1 اقتباس: "على الرغم من أن تعقيد تطبيقات الكمبيوتر يتزايد سنويًا، إلا أن بنية الأجهزة الأساسية للتطبيقات ظلت دون تغيير لعقود من الزمن."
  33. ^ abc Levy 84, p.1 quote: "تدعم البنيات التقليدية نمط تشغيل مميزًا واحدًا. يؤدي هذا الهيكل إلى تصميم متجانس؛ يجب أن تكون أي وحدة تحتاج إلى الحماية جزءًا من نواة نظام التشغيل الفردية. إذا كان بإمكان أي وحدة بدلاً من ذلك التنفيذ داخل نطاق محمي، فيمكن بناء الأنظمة كمجموعة من الوحدات المستقلة القابلة للتمديد من قبل أي مستخدم."
  34. ^ ab "المصادر المفتوحة: أصوات من ثورة المصدر المفتوح". 1-56592-582-3 . 29 مارس 1999. مؤرشف من الأصل في 1 فبراير 2020. تم الاسترجاع 24 مارس 2019 .
  35. ^ يمكن العثور على تسجيلات المناظرة بين تورفالدز وتانيباوم على dina.dk أرشيف 2012-10-03 على موقع Wayback Machine ، groups.google.com أرشيف 2013-05-26 على موقع Wayback Machine ، oreilly.com أرشيف 2014-09-21 على موقع Wayback Machine وموقع أندرو تانيباوم على الويب أرشيف 2015-08-05 على موقع Wayback Machine
  36. ^ من تأليف ماثيو راسل. "ما هو داروين (وكيف يعمل على تشغيل نظام التشغيل ماك أو إس إكس)". أوريلي ميديا . مؤرشف من الأصل في 2007-12-08 . تم الاسترجاع في 2008-12-09 . تسمح الطبيعة المترابطة بإحكام للنواة المتجانسة لها باستخدام الأجهزة الأساسية بكفاءة عالية [...] من ناحية أخرى، تقوم النوى الدقيقة بتشغيل عدد أكبر بكثير من العمليات الأساسية في عالم المستخدم. [...] لسوء الحظ، تأتي هذه الفوائد على حساب النواة الدقيقة التي يتعين عليها تمرير الكثير من المعلومات داخل وخارج مساحة النواة من خلال عملية تُعرف باسم تبديل السياق. تفرض تبديلات السياق تكلفة إضافية كبيرة وبالتالي تؤدي إلى عقوبة الأداء.
  37. ^ "أنظمة التشغيل/نماذج النواة - ويكي الجامعة". en.wikiversity.org . مؤرشف من الأصل في 2014-12-18 . تم الاسترجاع 2014-12-18 .
  38. ^ أ ب ج د ليدتكي 95
  39. ^ هارتيج 97
  40. ^ هانسن 73، القسم 7.3 ص 233 " التفاعلات بين مستويات الحماية المختلفة تتطلب نقل الرسائل حسب القيمة "
  41. ^ ماجي، جيم. WWDC 2000 الدورة 106 – Mac OS X: Kernel. 14 دقيقة. مؤرشف من الأصل في 2021-10-30.
  42. ^ "KeyKOS Nanokernel Architecture". مؤرشف من الأصل في 2011-06-21.
  43. ^ باومان، أندرو؛ بارهام، بول؛ داجاند، بيير-إيفاريست؛ هاريس، تيم؛ إسحاق، ريبيكا؛ بيتر، سيمون؛ روسكو، تيموثي؛ شوباخ، أدريان؛ سينغانيا، أخيليش (2009). تعدد النواة: بنية نظام تشغيل جديدة لأنظمة متعددة النواة قابلة للتطوير (PDF) . الندوة الثانية والعشرون حول مبادئ أنظمة التشغيل.
  44. ^ "نظام التشغيل Barrelfish".
  45. ^ الكرة: تصميمات المعالجات الدقيقة المضمنة، ص 129
  46. ^ هانسن 2001 (نظام التشغيل)، الصفحات من 17 إلى 18
  47. ^ "نسخة BSTJ من ورقة C.ACM Unix". bell-labs.com . مؤرشف من الأصل في 2005-12-30 . تم الاسترجاع في 2006-08-17 .
  48. ^ Corbató, FJ ; Vissotsky, VA مقدمة ونظرة عامة على نظام Multics. مؤتمر الكمبيوتر المشترك في الخريف عام 1965. مؤرشف من الأصل في 2011-07-09.
  49. ^ ab "The Single Unix Specification". The Open Group . مؤرشف من الأصل في 2016-10-04 . تم الاسترجاع في 2016-09-29 .
  50. ^ "انتقام يونكس". asymco.com . 29 سبتمبر 2010. مؤرشف من الأصل في 9 نوفمبر 2010. تم الاسترجاع 2 أكتوبر 2010 .
  51. ^ ويلر، ديفيد أ. (12 أكتوبر 2004). "نواة لينكس 2.6: إنها تستحق المزيد!".
  52. ^ يتجمع هذا المجتمع في الغالب في Bona Fide OS Development Archived 2022-01-17 at the Wayback Machine ، The Mega-Tokyo Message Board Archived 2022-01-25 at the Wayback Machine ومواقع الويب الأخرى لمحبي أنظمة التشغيل.
  53. ^ سينغ، أميت (ديسمبر 2003). "XNU: The Kernel". مؤرشف من الأصل في 12 أغسطس 2011.
  54. ^ "Windows - الموقع الرسمي لأنظمة تشغيل Microsoft Windows 10 Home & Pro وأجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر الشخصية والأجهزة اللوحية والمزيد". windows.com . مؤرشف من الأصل في 2011-08-20 . تم الاسترجاع في 2019-03-24 .
  55. ^ "عائلة نواة L4 - نظرة عامة". os.inf.tu-dresden.de . مؤرشف من الأصل في 2006-08-21 . تم الاسترجاع في 2006-08-11 .
  56. ^ "نواة Fiasco - نظرة عامة". os.inf.tu-dresden.de . مؤرشف من الأصل في 2006-06-16 . تم الاسترجاع في 2006-07-10 .
  57. ^ Zoller (inaktiv)، Heinz (7 ديسمبر 2013). "L4Ka - L4Ka Project". www.l4ka.org . مؤرشف من الأصل في 19 أبريل 2001 . تم الاسترجاع في 24 مارس 2019 .
  58. ^ "أنظمة تشغيل QNX". blackberry.qnx.com . مؤرشف من الأصل في 2019-03-24 . تم الاسترجاع 2019-03-24 .

مصادر

  • روش، بنيامين (2004). "النواة الأحادية مقابل النواة الدقيقة" (PDF) . مؤرشف من الأصل (PDF) في 2006-11-01 . تم الاسترجاع في 2006-10-12 .
  • Silberschatz, Abraham ; James L. Peterson; Peter B. Galvin (1991). Operating system concepts. Boston, Massachusetts : Addison-Wesley. p. 696. ISBN 978-0-201-51379-0.
  • Ball, Stuart R. (2002) [2002]. Embedded Microprocessor Systems: Real World Designs (الطبعة الأولى). Elsevier Science. ISBN 978-0-7506-7534-5.
  • ديتل، هارفي م. (1984) [1982]. مقدمة لأنظمة التشغيل (الطبعة الأولى المنقحة). أديسون ويسلي. ص 673. رقم ISBN 978-0-201-14502-1.
  • دينينج، بيتر جيه . (ديسمبر 1976). "أنظمة التشغيل المقاومة للأخطاء". استطلاعات الحوسبة التابعة لجمعية آلات الحاسبات الآلية . 8 (4): 359-389. doi :10.1145/356678.356680. ISSN  0360-0300. S2CID  207736773.
  • دينينج، بيتر جيه. (أبريل 1980). "لماذا لا تكون هناك ابتكارات في هندسة الحاسوب؟". ACM SIGARCH Computer Architecture News . 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) في 2011-07-25 . تم استرجاعه في 2006-10-24 .مضمن في الكتاب: Per Brinch Hansen, ed. (2001). "1 The evolution of Operating systems". Classic Operating Systems: from batch processing to distribute systems. New York: Springer-Verlag. pp. 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 .
  • Houdek, ME; Soltis, FG ; Hoffman, RL (1981). "دعم نظام IBM/38 للعنونة القائمة على القدرات". وقائع ندوة ACM الدولية الثامنة حول بنية الكمبيوتر . ACM/IEEE. ص 341-348.
  • دليل مطور برامج هندسة IA-32، المجلد 1: الهندسة الأساسية (PDF) . شركة Intel Corporation . 2002.
  • Levin, R.; Cohen, E.; Corwin, W.; Pollack, F.; Wulf, William (1975). "فصل السياسة/الآلية في Hydra". مراجعة أنظمة التشغيل ACM Sigops . 9 (5): 132–140. doi : 10.1145/1067629.806531 .
  • ليفي، هنري م. (1984). أنظمة الكمبيوتر القائمة على القدرات. ماينارد، ماساتشوستس: ديجيتال بريس. رقم ISBN 978-0-932376-22-0. تم أرشفة النسخة الأصلية في 2007-07-13 . تم استرجاعها في 2007-07-18 .
  • Liedtke, Jochen (ديسمبر 1995). "حول بناء نواة µ". وقائع ندوة ACM الخامسة عشرة حول مبادئ نظام التشغيل (SOSP) . مؤرشف من الأصل في 2007-03-13.
  • ليندن، ثيودور أ. (ديسمبر 1976). "هياكل أنظمة التشغيل لدعم الأمن والبرمجيات الموثوقة". استطلاعات الحوسبة التابعة لجمعية آلات الحاسبات الآلية . 8 (4): 409-445. doi :10.1145/356678.356682. hdl : 2027/mdp.39015086560037 . ISSN  0360-0300. S2CID  16720589." هياكل أنظمة التشغيل لدعم الأمان والبرامج الموثوقة" (PDF) . تم الاسترجاع في 2023-12-20 .
  • لورين، هارولد (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) في 2007-09-26 . تم الاسترجاع في 2007-07-18 .
  • باياردي، ف؛ أ. توماسي؛ م. فانشي (1988). Architettura dei Sistemi di Elaborazione، المجلد الأول (باللغة الإيطالية). فرانكو انجيلي. رقم ISBN 978-88-204-2746-7. تم أرشفة النسخة الأصلية في 2012-06-27 . تم استرجاعها في 2006-10-10 .
  • سويفت، مايكل م.؛ بريان ن. بيرشاد؛ هنري م. ليفي. تحسين موثوقية أنظمة التشغيل السلعية (PDF) . مؤرشف (PDF) من الأصل في 2007-07-19 . تم الاسترجاع في 2007-07-16 .
  • جيتيس، جيمس؛ كارلتون، فيليب إل؛ ماكجريجور، سكوت (1990). "نظام نافذة إكس، الإصدار 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 )  ؛
  • BS Chalk، AT Carter، RW Hind، تنظيم الحاسوب والهندسة المعمارية: مقدمة (الطبعة الثانية) ، Palgrave Macmillan ( ISBN 978-1-4039-0164-4 ). 
  • مقارنة تفصيلية بين أنوية أنظمة التشغيل الأكثر شيوعًا
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=Kernel(operating_system)&oldid=1251653388"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate