نواة (نظم تشغيل)
في الحوسبة، النواة هو برنامج الكمبيوتر الذي يدير طلبات الإدخال / الإخراج من البرمجيات، وترجمتها إلى تعليمات معالجة البيانات لوحدة المعالجة المركزية والمكونات الإلكترونية الأخرى من جهاز كمبيوتر. النواة هي جزء أساسي من نظام تشغيل الكمبيوتر الحديث.
النواة هي قلب كل نظام تشغيل للحاسوب حيث تقوم بدور حلقة الوصل بين عتاد الحاسوب وبرمجياته وتقوم أيضا بعملية التحكم بمصادر الجهاز. كحلقة وصل بين العتاد والبرمجيات تقوم النواة بتوفير طبقة يمكن للبرمجيات الاتصال بها مما يوفر إمكانيات الحاسب الآلي للبرمجيات التي يتحكم فيها المستخدم.
وظائف النواة تقوم بها كل نواة بصورة مختلفة عن الأخرى. فمثلا تقوم النواة الأحادية بالعمل في حيز واحد من الذاكرة وبهذا تحقق تحسن في أداء النظام. أما النواة المصغرة (النوية) فتقوم بتنفيذ معظم عملياتها في حيز المستخدم لكي تحافظ على توزيع وتفرقة المهام عن بعضها وبهذا تسهل عملية تحسين وتطوير الشيفرة البرمجية للنواة وإصلاحها.
أنظمة التشغيل الحديثة تعتمد على وجود نواة للنظام. في معظم الحالات يقوم محمل نظام التشغيل بتحميل النواة كعملية أثناء بداية تشغيل الحاسب الآلي وعند اكتمال تحميل نظام التشغيل تصبح هذه العملية مجموعة متكاملة من الوظائف التي يمكن أن تستخدمها البرمجيات عن طريق الاتصال بالنواة لكي تتمكن البرمجيات من القيام بعمليات تحتاج للوصول لعتاد الحاسب الآلي مثل الكتابة على القرص الصلب..
في المعلوماتية، نواة نظام التشغيل هي البرمجة التي تضمن :
النواة لها وظائف أساسية عديدة منها ضمان التحميل وتنفيذ العمليات، التحكم في المداخل|المخارج وتوفير سطح مناسب للربط بين النواة و المستخدم.
نواة يربط تطبيق البرمجيات لأجهزة كمبيوتر
عادة يتم تحميل رمز بالغ الأهمية من النواة إلى منطقة محمية من الذاكرة، والذي يمنعها من أن الكتابة بواسطة أخرى، الأجزاء المستخدمة أقل كثيرا من نظام التشغيل أو التطبيقات. نواة تؤدي مهامها، مثل تنفيذ العمليات والتعامل مع المقاطعات، في الفضاء النواة، في حين أن كل شيء على المستخدم يفعل عادة، مثل كتابة النص في محرر نص أو تشغيل البرامج في واجهة المستخدم الرسومية (واجهة المستخدم الرسومية)، ويتم ذلك في الفضاء المستخدم . هذا الفصل يمنع بيانات المستخدم والبيانات نواة من التداخل مع بعضها البعض، وبالتالي يقلل ذلك من أداء أو التسبب في النظام لتصبح غير مستقرة (وربما تسقط).
عندما يجعل عملية طلبات النواة، ويسمى طلب استدعاء نظام. تصاميم نواة مختلفة تختلف في كيفية إدارة المكالمات النظام والموارد. على سبيل المثال، نواة متجانسة بتنفيذ جميع التعليمات نظام التشغيل في نفس مساحة العنوان من أجل تحسين الأداء [المرجو التوضيح] من النظام. A النوية تدير معظم العمليات الخلفية في نظام التشغيل المستخدم في الفضاء لجعل نظام التشغيل أكثر وحدات، وبالتالي أسهل للمحافظة عليه.
هذا عنصرا مركزيا في نظام الكمبيوتر هو المسؤول عن تشغيل أو تنفيذ البرامج. النواة مسؤولة عن البت في وتنظيم وجدولة الوقت المخصص لإستخدام أي من البرامج قيد التنفيذ للمعالج (أو عدة معالجات؛ كل منها عادة يمكن تشغيل برنامج واحد فقط في كل مرة).
ويستخدم ذاكرة الوصول العشوائي لتخزين كل تعليمات البرنامج والبيانات. عادة، سواء بحاجة إلى أن تكون موجودة في الذاكرة من أجل برنامج لتنفيذه. في كثير من الأحيان برامج متعددة يريد الوصول إلى الذاكرة، وكثيرا ما تطالب بالمزيد من الذاكرة من لديه جهاز كمبيوتر متاح. النواة هي المسؤولة عن البت فيها الذاكرة يمكن استخدام كل عملية، وتحديد ما يجب القيام به عندما لا تكون ذاكرة كافية متوفرة.
وتشمل الأجهزة مثل هذه الأجهزة الطرفية لوحات المفاتيح والفئران، والأقراص، والطابعات، ومحولات الشبكة، وأجهزة العرض. نواة تخصص طلبات من التطبيقات لأداء I / O للجهاز المناسب وتوفر وسائل مريحة لاستخدام جهاز (تستخرج عادة إلى النقطة التي لا تحتاج إلى تطبيق لمعرفة تفاصيل تنفيذ الجهاز.
الجوانب الأساسية اللازمة في إدارة الموارد هي تعريف مجال التنفيذ (مساحة العنوان) وآلية الحماية المستخدمة للتوسط المداخل إلى الموارد ضمن المجال.
حبات أيضا عادة ما توفر وسائل لمزامنة والتواصل بين العمليات تسمى بين عملية الاتصال النواة قد تنفذ هذه الميزات نفسها، أو الاعتماد على بعض العمليات تشغيله لتقديم التسهيلات لعمليات أخرى، على الرغم من أن في هذه الحالة يجب أن يوفر بعض وسائل IPC للسماح العمليات للوصول إلى التسهيلات التي تقدمها بعضها البعض.
وأخيرا، يجب على نواة توفر برامج التشغيل مع طريقة لتقديم طلبات للوصول إلى هذه المرافق.
نواة لديه حق الوصول الكامل إلى ذاكرة النظام، ويجب أن تسمح عمليات للوصول بأمان هذه الذاكرة لأنها تتطلب ذلك. في كثير من الأحيان الخطوة الأولى في القيام بذلك هي افتراضية معالجة، حققت عادة عن طريق الترحيل و / أو تجزئة. معالجة افتراضية تسمح للنواة لجعل عنوان فعلي نظرا يبدو أن عنوان آخر، العنوان الظاهري. قد تكون مساحات العنوان الظاهرية مختلفة لعمليات مختلفة؛ الذاكرة التي يصل عملية واحدة في عنوان معين (الظاهري) قد تكون ذاكرة مختلفة من ما يصل إلى عملية أخرى في نفس العنوان. هذا يسمح لكل برنامج على التصرف كما لو كان هو الوحيد (بصرف النظر عن النواة) على التوالي، وبالتالي يمنع التطبيقات من تحطمها بعضها البعض.
على العديد من أنظمة، العنوان الظاهرية برنامج قد تشير إلى البيانات التي غير موجود حاليا في الذاكرة. طبقة من indirection المقدمة من معالجة افتراضية تسمح للنظام التشغيل لاستخدام مخازن البيانات الأخرى، مثل القرص الصلب لتخزين ما من شأنه أن يكون على خلاف ذلك لتبقى في الذاكرة الرئيسية (RAM). ونتيجة لذلك، يمكن أن أنظمة التشغيل تسمح برامج لاستخدام ذاكرة أكثر من النظام لديه المتاحة جسديا. عندما يحتاج برنامج البيانات وهو موجود حاليا في ذاكرة الوصول العشوائي، وإشارات وحدة المعالجة المركزية للنواة أن هذا لم يحدث، ويستجيب النواة عن طريق كتابة محتويات كتلة ذاكرة غير نشط على القرص (إذا لزم الأمر) واستبدالها مع البيانات التي طلبها البرنامج. ويمكن بعد ذلك استأنف البرنامج من النقطة التي توقفت بها. هذا المخطط كما هو معروف عموما الترحيل الطلب.
الظاهري معالجة كما يتيح إنشاء أقسام الافتراضية الذاكرة في مجالين مفككة، واحد يجري محفوظة للنواة (الفضاء النواة) والآخر للتطبيقات (الفضاء المستخدم). لا يسمح التطبيقات من قبل المعالج لمعالجة الذاكرة النواة، وبالتالي منع تطبيق من الإضرار نواة التوالي. وقد ساهم هذا القسم الأساسي من مساحة الذاكرة كثيرا في التصاميم الحالية من الحبوب للأغراض العامة الفعلية ويكاد يكون عاما في مثل هذه الأنظمة، على الرغم من أن بعض حبات البحوث (مثل وحدانية) تأخذ مناهج أخرى.
لأداء وظائف مفيدة، والعمليات تحتاج الوصول إلى الأجهزة الطرفية المتصلة بجهاز الكمبيوتر، والتي تسيطر عليها النواة من خلال برامج تشغيل الجهاز. برنامج تشغيل الجهاز هو برنامج الكمبيوتر الذي يتيح نظام التشغيل للتفاعل مع الجهاز. ويوفر نظام التشغيل مع 
في الحوسبة، واستدعاء نظام هو كيف يطلب برنامج خدمة من نواة نظام التشغيل التي ليس لديها عادة الإذن لتشغيل. استدعاءات النظام توفر واجهة بين عملية ونظام التشغيل. معظم عمليات التفاعل مع النظام تتطلب أذونات غير متوفرة لعملية مستوى المستخدم، على سبيل I / O مثال يؤديها مع هدية جهاز على النظام، أو أي شكل من أشكال الاتصال مع العمليات الأخرى يتطلب استخدام استدعاءات النظام
دعوة النظام هي الآلية التي يتم استخدامها من قبل تطبيق البرنامج لطلب الخدمة من نظام التشغيل. أنها تستخدم تعليمات الجهاز رمز التي تسبب المعالج لتغيير الوضع. على سبيل المثال سيكون من وضع المشرف على الوضع المحمي. هذا هو المكان الذي ينفذ نظام التشغيل الإجراءات مثل الحصول على الأجهزة أو وحدة إدارة الذاكرة. عموما يوفر نظام التشغيل المكتبة التي تقع بين نظام التشغيل والبرامج العادية. وعادة ما هي مكتبة C مثل سي العمومية أو Windows API. تتولى المكتبة والتفاصيل ذات المستوى المنخفض من تمرير معلومات إلى النواة والتحول إلى وضع المشرف. بما في ذلك مكالمات نظام قريب، وفتح، قراءة، الانتظار والكتابة.
لأداء فعلا بعمل مفيد، يجب أن تكون عملية قادرة على الوصول إلى الخدمات التي تقدمها النواة. ويتم تنفيذ هذا بشكل مختلف من قبل كل نواة، ولكن معظم توفير مكتبة. C أو API، والذي بدوره باستدعاء وظائف النواة ذات الصلة
طريقة الاحتجاج على وظيفة النواة يختلف من النواة إلى النواة. إذا العزلة الذاكرة قيد الاستخدام، فإنه من المستحيل على أي عملية المستخدم لاستدعاء النواة مباشرة، لأن ذلك من شأنه أن يشكل انتهاكا لقواعد مراقبة الدخول المعالج. وهناك عدد قليل الاحتمالات هي:
باستخدام المقاطعة-محاكاة البرمجيات. هذا الأسلوب هو متاح في معظم الأجهزة، وبالتالي فهو شائع جدا.
باستخدام بوابة المكالمة. بوابة المكالمة عنوان خاص تخزينها من قبل النواة في قائمة في الذاكرة النواة في مكان معروف إلى المعالج. عندما يكتشف المعالج دعوة إلى هذا العنوان، فإنه بدلا الموجهات إلى الموقع المستهدف دون التسبب في حدوث انتهاك وصول. وهذا يتطلب دعم الأجهزة، ولكن الأجهزة لذلك هو أمر شائع جدا.
استخدام خاص تعليمة استدعاء النظام. وتتطلب هذه التقنية دعم الأجهزة الخاصة، والتي أبنية المشتركة (لا سيما x86) و قد تفتقر. تم إضافة تعليمات دعوة النظام إلى النماذج الحديثة من معالجات x86، ومع ذلك، وبعض أنظمة التشغيل لأجهزة الكمبيوتر الاستفادة منها عندما تكون متاحة.
باستخدام طابور القائم على الذاكرة. تطبيق يجعل أعدادا كبيرة من الطلبات ولكن لا تحتاج إلى الانتظار لنتيجة كل إضافة تفاصيل الطلبات إلى المنطقة من الذاكرة أن النواة بفحص دوري للعثور على الطلبات.
في الحوسبة، واستدعاء نظام هو كيف يطلب برنامج خدمة من نواة نظام التشغيل التي ليس لديها عادة الإذن لتشغيل. استدعاءات النظام توفر واجهة بين عملية ونظام التشغيل. معظم عمليات التفاعل مع النظام تتطلب أذونات غير متوفرة لعملية مستوى المستخدم، على سبيل يؤديها مع هدية جهاز على النظام، أو أي شكل من أشكال الاتصال مع العمليات الأخرى يتطلب استخدام استدعاءات النظام
استدعاء النظام هي الآلية التي يتم استخدامها من قبل تطبيق البرنامج لطلب الخدمة من نظام التشغيل. أنها تستخدم تعليمات الجهاز رمز التي تسبب المعالج لتغيير الوضع. على سبيل المثال سيكون من وضع المشرف على الوضع المحمي. هذا هو المكان الذي ينفذ نظام التشغيل الإجراءات مثل الحصول على الأجهزة أو وحدة إدارة الذاكرة. عموما يوفر نظام التشغيل المكتبة التي تقع بين نظام التشغيل والبرامج العادية. وعادة ما هي مكتبة C مثل سي العمومية أو Windows API. تتولى المكتبة والتفاصيل ذات المستوى المنخفض من تمرير معلومات إلى النواة والتحول إلى وضع المشرف. بما في ذلك مكالمات نظام قريب، وفتح، قراءة، الانتظار والكتابة.
لأداء فعلا بعمل مفيد، يجب أن تكون عملية قادرة على الوصول إلى الخدمات التي تقدمها النواة. ويتم تنفيذ هذا بشكل مختلف من قبل كل نواة، ولكن معظم توفير مكتبة. C أو API، والذي بدوره باستدعاء وظائف النواة ذات الصلة
طريقة الاحتجاج على وظيفة النواة يختلف من النواة إلى النواة. إذا العزلة الذاكرة قيد الاستخدام، فإنه من المستحيل على أي عملية المستخدم لاستدعاء النواة مباشرة، لأن ذلك من شأنه أن يشكل انتهاكا لقواعد مراقبة الدخول المعالج. وهناك عدد قليل الاحتمالات هي:
باستخدام المقاطعة-محاكاة البرمجيات. هذا الأسلوب هو متاح في معظم الأجهزة، وبالتالي فهو شائع جدا.
باستخدام بوابة المكالمة. بوابة المكالمة عنوان خاص تخزينها من قبل النواة في قائمة في الذاكرة النواة في مكان معروف إلى المعالج. عندما يكتشف المعالج دعوة إلى هذا العنوان، فإنه بدلا الموجهات إلى الموقع المستهدف دون التسبب في حدوث انتهاك وصول. وهذا يتطلب دعم الأجهزة، ولكن الأجهزة لذلك هو أمر شائع جدا.
استخدام خاص تعليمة استدعاء النظام. وتتطلب هذه التقنية دعم الأجهزة الخاصة، والتي أبنية المشتركة (لا سيما x86) و قد تفتقر. تم إضافة تعليمات دعوة النظام إلى النماذج الحديثة من معالجات x86، ومع ذلك، وبعض أنظمة التشغيل لأجهزة الكمبيوتر الاستفادة منها عندما تكون متاحة.
باستخدام طابور القائم على الذاكرة. تطبيق يجعل أعدادا كبيرة من الطلبات ولكن لا تحتاج إلى الانتظار لنتيجة كل إضافة تفاصيل الطلبات إلى المنطقة من الذاكرة أن النواة بفحص دوري للعثور على الطلبات
قضايا دعم نواة لحماية
أحد الاعتبارات الهامة في تصميم نواة هو الدعم الذي يقدمه للحماية من أخطاء (التسامح مع الخطأ) ومن السلوكيات الخبيثة (الأمن). هذين الجانبين هي عادة ليست مميزة بشكل واضح، واعتماد هذا التمييز في تصميم النواة يؤدي إلى رفض بنية هرمية للحماية.
آليات أو سياسات التي تقدمها نواة يمكن تصنيفها وفقا لعدة معايير، منها: ثابت (القسري في وقت الترجمة) أو ديناميكية (القسري في وقت التشغيل)؛ وقائية أو بعد الكشف؛ وفقا لمبادئ الحماية التي ترضي (على سبيل المثال دينينغ)؛ سواء كانت الأجهزة المعتمدة أو لغة تستند؛ سواء كانوا من أكثر آلية مفتوحة أو سياسة ملزمة؛ وغيرها الكثير.
وعادة ما يتم توفير الدعم لمجالات حماية الهرمية باستخدام وسائط وحدة المعالجة المركزية.
توفر العديد من حبات تنفيذ "قدرات"، أي الكائنات التي يتم توفيرها لرمز المستخدم التي تتيح الوصول المحدود إلى كائن الأساسي تدار من قبل النواة. يحدث الأمثلة الشائعة في التعامل مع الملف: ملف هو تمثيل المعلومات المخزنة على جهاز التخزين الدائم. نواة قد تكون قادرة على تنفيذ العديد من العمليات المختلفة (مثل القراءة والكتابة، حذف أو تنفيذ مضمون الملف) يجوز السماح لكن تطبيق مستوى المستخدم فقط لتنفيذ بعض هذه العمليات (على سبيل المثال أنه لا يجوز السماح لقراءة الملف) . تنفيذ شيوعا لهذا هو نواة لتوفير كائن إلى التطبيق (وتسمى عادة "التعامل مع ملف") والتي قد التطبيق ثم استدعاء العمليات على، صحة التي الشيكات النواة في وقت طلبت فيه العملية. ويجوز تمديد هذا النظام لتغطية كافة الكائنات التي تدير النواة، والواقع على الكائنات التي توفرها تطبيقات المستخدم الأخرى.
وسيلة فعالة وبسيطة لتقديم الدعم الأجهزة من قدرات هو تفويض MMU مسؤولية التحقق من وصول الحقوق لكل ذاكرة الوصول، آلية تسمى معالجة القائمة على القدرة. وتفتقر معظم أبنية الكمبيوتر التجارية دعم هذا MMU لقدرات
نهج بديل هو محاكاة قدرات باستخدام المجالات الهرمية بدعم عادة. في هذا النهج، يجب أن يتواجد كل كائن المحمية في مساحة عنوان التطبيق لا يستطيعون الوصول إلى؛ يحافظ على النواة أيضا قائمة من قدرات في هذه الذاكرة. عندما يحتاج تطبيق للوصول إلى كائن يحميها القدرة، فإنه يؤدي استدعاء نظام ونواة ثم يتحقق ما إذا كانت القدرة على التطبيق, يمنح ذلك الإذن لتنفيذ الإجراء المطلوب، واذا سمح لها بتنفيذ حصول عليه (سواء بشكل مباشر، أو عن طريق تفويض الطلب إلى عملية أخرى على مستوى المستخدم). تكلفة أداء التبديل مساحة العنوان يحد من التطبيق العملي لهذا النهج في النظم مع التفاعلات المعقدة بين الكائنات، ولكن يتم استخدامه في أنظمة التشغيل الحالية للكائنات التي لا يتم الوصول إليها بشكل متكرر أو التي لا يتوقع أن تؤدي بسرعة. النهج حيث آلية الحماية لا البرامج الثابتة دعم ولكن بدلا من ذلك محاكاة على مستويات أعلى (مثل محاكاة القدرات عن طريق التلاعب جداول صفحة على الأجهزة التي ليس لديها الدعم المباشر)، ممكنة، ولكن هناك آثار الأداء.عدم وجود دعم الأجهزة قد لا يكون مشكلة، ولكن، للأنظمة التي تختار استخدام الحماية القائمة على اللغة
قرار هام تصميم النواة هو اختيار مستويات التجريد حيث ينبغي تنفيذ الآليات والسياسات الأمنية. آليات الأمن نواة تلعب دورا حاسما في دعم الأمن في المستويات العليا.
نهج واحد هو استخدام البرامج الثابتة ونواة دعم التسامح مع الخطأ (انظر أعلاه)، وبناء على السياسة الأمنية لسلوك ضار على رأس ذلك (ميزات مضيفا مثل آليات التشفير عند الضرورة)، وتفويض بعض المسؤولية إلى مترجم. النهج أن إنفاذ مندوب السياسة الأمنية للمترجم و / أو مستوى التطبيق غالبا ما تسمى الأمنية القائمة على اللغة
عدم وجود العديد من الآليات الأمنية الحساسة في أنظمة التشغيل الرئيسية الحالية يعوق تنفيذ السياسات الأمنية الكافية على مستوى التجريد التطبيق.في الواقع، وهو مفهوم خاطئ شائع في أمن الكمبيوتر هو أن أي سياسة أمنية يمكن تنفيذها في تطبيق بغض النظر عن دعم النواة.
حماية أو القائم على لغة حماية الأجهزة القائمة على قواعد القسري الأجهزة أنظمة الكمبيوتر نموذجية تستخدم حتى اليوم حول ما يسمح البرامج للوصول إلى ما هي البيانات. المعالج يراقب التنفيذ وتوقف البرنامج الذي يخالف قاعدة (على سبيل المثال، عملية المستخدم الذي هو على وشك القراءة أو الكتابة إلى نواة الذاكرة، وهلم جرا). في النظم التي تفتقر إلى دعم قدرات، يتم عزل العمليات عن بعضها البعض باستخدام مساحات العناوين منفصلة. يدعو من عمليات المستخدم في نواة تنظمها تتطلب منهم استخدام إحدى الطرق استدعاء نظام المذكورة أعلاه.
نهج بديل هو استخدام الحماية القائمة على اللغة. في نظام الحماية القائم على اللغة، فإن نواة تسمح فقط متاحة لتنفيذ التي تم إنتاجها من قبل مترجم لغة موثوق به. قد ثم اللغة أن تصمم بحيث بات من المستحيل بالنسبة للمبرمج لإرشاد أن تفعل شيئا من شأنها أن تنتهك المتطلبات الأمنية.
مزايا هذا النهج ما يلي:
لا حاجة لمساحات العناوين منفصلة. التبديل بين مساحات العناوين هي عملية بطيئة التي تسبب قدرا كبيرا من النفقات العامة، ويتم تنفيذ الكثير من العمل الأمثل في الوقت الراهن من أجل منع مفاتيح لا لزوم لها في أنظمة التشغيل الحالية. التبديل غير ضروري تماما في نظام الحماية القائم على اللغة، وكل رمز يمكن أن تعمل بأمان في نفس مساحة العنوان.
المرونة. أي مخطط الحماية التي يمكن أن تكون مصممة لأعرب عن طريق لغة برمجة يمكن تنفيذها باستخدام هذا الأسلوب. تغييرات بالنسبة لبرنامج حماية (على سبيل المثال من نظام هرمي لواحدة على أساس القدرة) الأجهزة الجديدة لا تتطلب.
وتشمل العيوب:
تطبيق أطول وقت البدء. يجب التحقق من التطبيقات عند البدء فيها للتأكد من أنها تم تجميعها من قبل المجمع الصحيح، أو قد تحتاج اعادة تجميع إما من المصدر أو من بايت كود.
نظم نوع غير مرنة. على النظم التقليدية، والتطبيقات بشكل متكرر تنفيذ عمليات التي لا اكتب آمنة. ولا يمكن السماح بمثل هذه العمليات في نظام الحماية القائم على اللغة، مما يعني أنه قد تحتاج التطبيقات إلى إعادة صياغة، ويمكن، في بعض الحالات، تفقد الأداء.
ثبت إدسجير ديكسترا التي من وجهة نظر منطقية للعرض، قفل الذري وتأمين عمليات تعمل على الإشارات الثنائية والأوليات كافية للتعبير عن أي وظيفة للتعاون العملية.ولكن هذا النهج ومن المسلم به عموما أن هناك نقصا من حيث السلامة والكفاءة، في حين أن نهج رسالة يمر أكثر مرونة. وهناك عدد من المناهج الأخرى (سواء ذات الدخول المتدنية أو مستوى أعلى) متوفرة أيضا، مع العديد من حبات الحديثة بتوفير الدعم لأنظمة مثل الذاكرة المشتركة واستدعاء الإجراء البعيد.
مماثلة إلى الذاكرة الفعلية، مما يسمح للتطبيقات الوصول المباشر إلى الموانئ تحكم والسجلات يمكن أن يسبب وحدة تحكم لعطل، أو نظام لتحطم الطائرة. مع هذا، اعتمادا على تعقيد الجهاز، ويمكن الحصول على بعض الأجهزة المعقدة المدهش أن البرنامج، واستخدام العديد من وحدات تحكم مختلفة. وبسبب هذا، وتوفير واجهة أكثر تجريدا لإدارة الجهاز المهم. ويتم ذلك عادة عن طريق واجهة برنامج تشغيل الجهاز أو طبقة تجريد الأجهزة. في كثير من الأحيان، وتطبيقات تتطلب الوصول إلى هذه الأجهزة. النواة يجب الحفاظ على قائمة من هذه الأجهزة عن طريق الاستعلام عن النظام بالنسبة لهم بطريقة أو بأخرى. ويمكن أن يتم ذلك من خلال BIOS، أو من خلال واحدة من العديد من الحافلات النظام (مثل PCI / PCIE، أو USB). عندما يطلب أحد تطبيقات عملية على الجهاز (مثل عرض الحرف)، ونواة تحتاج إلى إرسال هذا الطلب إلى برنامج تشغيل الفيديو النشط الحالي. برنامج تشغيل الفيديو، في المقابل، يحتاج لتنفيذ هذا الطلب. هذا مثال من الاتصالات عملية مشتركة.
وبطبيعة الحال، يمكن تقديم المهام المذكورة أعلاه والميزات في العديد من الطرق التي تختلف عن بعضها البعض في التصميم والتنفيذ
مبدأ الفصل بين الآلية والسياسة هو الفرق الكبير بين فلسفة حبات صغيرة ومتجانسة.هنا الآلية هي الدعم الذي يتيح تنفيذ العديد من السياسات المختلفة، في حين أن السياسة هي على وجه الخصوص "واسطة من العملية ". على سبيل المثال، قد توفر آلية للمستخدم محاولات سجل في لدعوة خادم ترخيص لتحديد ما إذا كان ينبغي منح الوصول. سياسة قد يكون لخادم ترخيص لطلب كلمة المرور و التحقق من ذلك على كلمة مرور مشفرة تخزينها في قاعدة البيانات. لأن الآلية هي عامة، يمكن بسهولة أكبر تغيير السياسة (على سبيل المثال عن طريق اشتراط استخدام رمز الأمان) مما لو تم دمج آلية والسياسة في نفس الوحدة.
في الحد الأدنى النوية مدرجة فقط بعض السياسات الأساسية جدا، وآلياته يسمح ما يعمل على رأس النواة (الجزء المتبقي من نظام التشغيل والتطبيقات الأخرى) أن تقرر السياسات التي ستعتمدها (مثل إدارة الذاكرة، جدولة مستوى عال عملية، وإدارة نظام الملفات، الخ.). نواة متجانسة بدلا يميل لتشمل العديد من السياسات، وبالتالي تقييد بقية نظام الاعتماد عليها.
قدمت في BRINCH هانسن الحجج لصالح الانفصال آلية وسياسة. وعدم الوفاء صحيح هذا الفصل هو واحد من الأسباب الرئيسية لعدم وجود الابتكار كبير في أنظمة التشغيل الحالية، مشكلة شائعة في هندسة الكمبيوتروبفعل تصميم متجانسة من "وضع نواة" / "وضع المستخدم" النهج المعماري لحماية (وتسمى تقنيا مجالات حماية الهرمية)، وهو أمر شائع في النظم التجارية التقليدية؛. في الواقع، لذلك يفضل أن تضمن كل وحدة المحتاجين إلى الحماية في النواة وهذا الارتباط بين تصميم متجانسة و "وضع متميز" يمكن reconducted إلى القضية الرئيسية الانفصال آلية السياسات؛. في الواقع " وضع متميز "النهج المعماري يذوب معا آلية الحماية مع السياسات الأمنية، في حين أن النهج المعماري بديل رئيسي، على أساس القدرة تتناول، يميز بوضوح بين البلدين، مما يؤدي بطبيعة الحال إلى تصميم النوية (انظر الفصل بين الحماية والأمن).
في حين حبات متجانسة تنفيذ كافة التعليمات البرمجية الخاصة بهم في نفس مساحة العنوان (مساحة النواة) تصميم النوية microkernel محاولة تشغيل معظم خدماتها في الفضاء المستخدم، تهدف إلى تحسين الصيانة ونمطية من مصدر برنامج. معظم حبات لا تناسب تماما في واحد من هذه الفئات، ولكن بدلا جدت بين هذه التصاميم اثنين. وتسمى هذه الحبوب المختلطة. تصاميم أكثر غرابة مثل nanokernels وexokernels المتاحة، ولكن نادرا ما تستخدم في نظم الإنتاج. وهبرفيسر كسين، على سبيل المثال، هو exokernel
تخطيطي لنواة متجانسة
في نواة متجانسة، كافة الخدمات OS تعمل جنبا إلى جنب مع موضوع نواة الرئيسي، وبالتالي يقيم أيضا في منطقة الذاكرة نفسها. ويوفر هذا النهج وصول الأجهزة الأغنياء والأقوياء. بعض المطورين، مثل UNIX المطور كين تومسون، والحفاظ على أنه "من الأسهل لتنفيذ نواة متجانسة" من تصميم النوية microkernel. أهم عيوب حبات متجانسة هي تبعيات بين مكونات النظام - خلل في تشغيل الجهاز قد تعطل النظام بأكمله - وحقيقة أن حبات كبيرة يمكن أن يصبح من الصعب جدا الحفاظ عليها.
حبات متجانسة، التي جرت العادة على استخدامها من قبل أنظمة التشغيل يونكس مثل، تحتوي على جميع المهام الأساسية نظام التشغيل وبرامج تشغيل الجهاز (البرامج الصغيرة التي تسمح لنظام التشغيل للتفاعل مع الأجهزة، مثل محركات الأقراص، بطاقات الفيديو والطابعات) . هذا هو التصميم التقليدي للأنظمة UNIX. نواة متجانسة هو برنامج واحد يحتوي على كافة التعليمات البرمجية الضرورية لأداء كل مهمة نواة ذات الصلة. كل جزء التي سيتم الوصول إليها من قبل معظم البرامج التي لا يمكن وضعها في مكتبة في الفضاء نواة: برامج تشغيل الأجهزة، جدولة، والتعامل مع الذاكرة، أنظمة الملفات، مداخن الشبكة. وتقدم العديد من المكالمات النظام إلى التطبيقات، لتمكينهم من الوصول إلى جميع تلك الخدمات. نواة متجانسة، في حين حملت في البداية مع النظم الفرعية التي قد لا تكون هناك حاجة، يمكن ضبطها لنقطة حيث أنه بأسرع أو أسرع من تلك التي تم تصميمها خصيصا للأجهزة، على الرغم من أن أكثر بالمعنى العام. حبات متجانسة الحديثة، مثل تلك التي لينكس وفري، وكلاهما يقع في فئة أنظمة التشغيل يونكس مثل، ميزة القدرة على تحميل وحدات في وقت التشغيل، مما يتيح تمديد سهل من قدرات نواة كما هو مطلوب، بينما يساعد على تقليل كمية من التعليمات البرمجية يعمل في الفضاء النواة. في نواة متجانسة، بعض المزايا تتوقف على هذه النقاط:
لأنه ليس هناك أقل البرامج المعنية وهو أسرع.
كما هو قطعة واحدة من البرمجيات يجب أن تكون أصغر في كل من المصدر والشكل المترجمة.
أقل كود يعني عموما أقل الأخطاء التي يمكن أن تترجم إلى مشاكل أمنية أقل.
ويتم معظم العمل في نواة متجانسة عبر استدعاءات النظام. هذه هي واجهات، وأبقى عادة في بنية جدولي، أن الوصول إلى بعض الفرعي داخل النواة مثل عمليات القرص. أساسا يتم إجراء المكالمات داخل البرامج ويتم تمرير نسخة فحص الطلب من خلال استدعاء نظام. وبالتالي، ليست بعيدة من السفر على الإطلاق. ويمكن إجراء نواة لينكس متجانسة صغيرة للغاية ليس فقط بسبب قدرته على تحميل وحدات حيوي ولكن أيضا بسبب سهولة التخصيص. في الواقع، هناك بعض الإصدارات التي هي صغيرة بما يكفي لتناسب مع عدد كبير من المرافق وغيرها من البرامج على قرص مرن واحد والتي لا تزال توفر نظام التشغيل وظيفية بالكامل (واحدة من أكثر شعبية منها )muLinux). وقد أدت هذه القدرة على تصغير نواة لها أيضا إلى النمو السريع في استخدام لينكس في النظم المضمنة
هذه الأنواع من الحبوب تتكون من المهام الأساسية لنظام التشغيل وبرامج تشغيل الأجهزة مع القدرة على تحميل وحدات في وقت التشغيل. أنها توفر التجريدية الغنية والقوية من الأجهزة الأساسية. أنها توفر مجموعة صغيرة من التجريد الأجهزة بسيطة واستخدام التطبيقات ودعا الملقمات لتوفير المزيد من الوظائف. هذا نهج معين يحدد واجهة افتراضية رفيع المستوى على الأجهزة، مع مجموعة من نظام يدعو إلى تنفيذ خدمات نظام التشغيل مثل إدارة العمليات، والتزامن وإدارة الذاكرة في عدة وحدات التي يتم تشغيلها في وضع المشرف. هذا التصميم لديها العديد من العيوب والقيود:
الترميز في نواة يمكن أن يكون تحديا، وذلك جزئيا بسبب واحد لا يمكن استخدام المكتبات المشتركة LIBC (كامل المواصفات)، ولأن واحد يحتاج إلى استخدام مصحح أخطاء على مستوى مصدر مثل جدب. إعادة تشغيل الكمبيوتر في كثير من الأحيان هو مطلوب. هذه ليست مجرد مشكلة الراحة للمطورين. عند التصحيح هو أصعب، وعندما تصبح الصعوبات أقوى، يصبح أكثر عرضة هذا الرمز سيكون "buggier"
الخلل في جزء واحد من نواة لها آثار جانبية قوية. لأن كل وظيفة في نواة لديه كل الامتيازات وخلل في وظيفة واحدة يمكن بنية البيانات فاسد آخر، تماما جزءا لا علاقة للنواة، أو من أي برنامج تشغيل.
حبات غالبا ما تصبح كبيرة جدا ويصعب الحفاظ عليها.
حتى لو كانت وحدات خدمة هذه العمليات منفصلة عن العموم، فإن التكامل متاحة ضيق ويصعب القيام به بشكل صحيح.
منذ حدات تشغيل في مساحة العنوان نفسه، يمكن خلل اسقاط النظام بأكمله
النوية هو مصطلح يصف نهجا لتصميم نظام التشغيل الذي يتم نقل وظائف النظام للخروج من "نواة" التقليدية، إلى مجموعة من "الخوادم" أن التواصل من خلال "الحد الأدنى" النواة ، وترك أقل قدر ممكن في "الفضاء نظام" وبقدر الإمكان في "الفضاء المستخدم". النوية التي تم تصميمها لمنصة أو جهاز محددة من أي وقت مضى فقط ستكون لدينا ما يحتاجه للعمل. يتكون النهج النوية تحديد تجريد بسيط على الأجهزة، مع مجموعة من الأوليات أو نظام يدعو إلى تنفيذ خدمات OS الحد الأدنى مثل إدارة الذاكرة، تعدد المهام، والاتصالات بين العملية. غيرها من الخدمات، بما في ذلك تلك التي تقدم عادة من نواة، مثل الربط الشبكي، ويتم تنفيذها في برامج المستخدم في الفضاء، ويشار إلى الخوادم. تصميم النوية microkernel هي أسهل من الحفاظ على حبات متجانسة، ولكن قد تبطئ عدد كبير من المكالمات النظام ومفاتيح السياق أسفل النظام لأنهم عادة ما تولد الحمل أكثر من المكالمات وظيفة مدنية.
فقط الأجزاء التي تتطلب حقا أن تكون في وضع متميز وجودها في الفضاء نواة: IPC (الاتصال بين العمليات)، جدولة بسيطة، أو جدولة الأوليات، والتعامل مع الذاكرة الأساسية، البدائيون / O الأساسية I. والعديد من الأجزاء الهامة الجارية الآن في الفضاء المستخدم: جدولة كاملة، والتعامل مع الذاكرة، أنظمة الملفات، وأكوام الشبكة. اخترعت حبات الصغيرة كرد فعل على التقليدي "متجانسة" تصميم النواة، حيث تم وضع جميع وظائف النظام في البرنامج تشغيل ثابت واحد في وضع خاص "النظام" من المعالج. في النوية، يتم تنفيذ سوى أبسط المهام مثل أن تكون قادرة على الوصول إلى بعض (وليس بالضرورة كل) من الأجهزة، وإدارة الذاكرة وتنسيق رسالة يمر بين العمليات. بعض الأنظمة التي تستخدم حبات صغيرة هي QNX وHURD. في حالة جلسات عمل المستخدم QNX وهيرد يمكن أن تكون لقطات كاملة من النظام نفسه أو وجهات النظر كما يشار إليها. جوهر العمارة النوية يوضح بعض من مزاياه:
صيانة أسهل عموما.
ويمكن اختبار بقع في نسخة منفصلة، ثم تبادلت في لتولي مثيل الإنتاج.
الوقت اللازم لتطوير سريع وبرمجيات جديدة يمكن اختبارها من دون الحاجة إلى إعادة تشغيل النواة.
المزيد من الثبات في عام، إذا كان مثلا أحد يذهب القش الأسلاك، فمن الممكن في كثير من الأحيان إلى استبدالها مرآة التشغيلية.
معظم حبات صغيرة تستخدم نظام الرسائل يمر من نوع ما للتعامل مع طلبات من ملقم واحد إلى آخر. ويعمل نظام تمرير الرسائل بشكل عام على أساس الميناء مع النوية. على سبيل المثال، إذا تم إرسال طلب المزيد من الذاكرة، يتم فتح منفذ مع النوية وطلب إرسالها عبر. مرة واحدة في النوية، والخطوات هي مماثلة لدعوات النظام. كان المبرر أنه سيجلب نمطية في بنية النظام، الأمر الذي يترتب عليه نظام أنظف وأسهل لتصحيح أو تعديل حيوي، للتخصيص لاحتياجات المستخدمين، والمزيد من الأداء. فهي جزء من أنظمة التشغيل مثل AIX، بيوس، هيرد، ماخ، ماك OS X، MINIX، QNX. الخ وبالرغم من حبات صغيرة صغيرة جدا في حد ذاتها، بالاشتراك مع كل ما لديهم المطلوبة كود مساعدة هم، في الواقع، في كثير من الأحيان أكبر من حبات متجانسة. دعاة حبات متجانسة ويشير أيضا إلى أن هيكل ثنائي أنظمة النوية، الذي أكثر من نظام التشغيل لا يتفاعل مباشرة مع الجهاز، ويخلق تكلفة يست تافهة من حيث كفاءة النظام. هذه الأنواع من الحبوب عادة فقط توفير الحد الأدنى من الخدمات مثل تحديد مساحات الذاكرة عنوان والتواصل بين عملية (IPC) وإدارة العملية. وظائف أخرى مثل تشغيل عمليات الأجهزة لا يتم التعامل مباشرة حبات صغيرة. أنصار حبات صغيرة يشيرون إلى تلك حبات متجانسة لديها عيب أن خطأ في نواة يمكن أن يتسبب في النظام بأكمله إلى تحطم الطائرة. ومع ذلك، مع النوية، إذا تعطل عملية النواة، فإنه لا يزال من الممكن منع انهيار النظام ككل بمجرد إعادة تشغيل الخدمة التي تسببت في الخطأ.
يتم تنفيذ الخدمات الأخرى التي تقدمها النواة مثل الشبكات في برامج المستخدم في الفضاء يشار إلى الخوادم. خدمة تسمح للنظام التشغيل لتعديلها ببساطة عن طريق بدء وإيقاف البرامج. للحصول على جهاز بدون دعم الشبكة، على سبيل المثال، لا يتم بدء تشغيل الملقم الشبكات. مهمة يدخلون ويخرجون من نواة لنقل البيانات بين مختلف التطبيقات والخوادم يخلق النفقات العامة التي تضر كفاءة حبات صغيرة بالمقارنة مع حبات متجانسة.
عيوب في النوية ولا توجد إلا. البعض يكونون:
أكبر تشغيل الذاكرة البصمة
المزيد من البرامج للتفاعل مطلوب، هناك احتمال فقدان الأداء.
يمكن الخلل التراسل يكون من الصعب اصلاحها بسبب الرحلة الطويلة التي يجب أن تأخذ مقابل مرة واحدة في نسخة نواة متجانسة.
إدارة العملية بشكل عام يمكن أن يكون معقدا جدا.
مساوئ لحبات صغيرة هي بالسياق غاية القائمة. وكمثال على ذلك، أنها تعمل بشكل جيد بالنسبة للشبكات الصغيرة غرض واحد (والحرجة) لأنه إذا كان لا تحتاج العديد من العمليات لتشغيل، ثم يتم تخفيف تعقيدات إدارة العملية بشكل فعال.
النوية تتيح تنفيذ الجزء المتبقي من نظام التشغيل كبرنامج التطبيق العادي مكتوبة بلغة رفيعة المستوى، واستخدام أنظمة تشغيل مختلفة على الجزء العلوي من نفس النواة دون تغيير.ومن الممكن أيضا حيوي التبديل بين أنظمة التشغيل وأن يكون أكثر من واحد في وقت واحد نشط.
تستخدم بذور الهجين في معظم أنظمة التشغيل التجارية مثل Microsoft Windows NT 3.1، NT 3.5، NT 3.51، NT 4.0، 2000، XP، ويندوز فيستا، 7، 8، 8.1 و 10. شركة أبل نفسها ماك OS X يستخدم نواة هجين يسمى XNU الذي يقوم على رمز من جامعة كارنيجي ميلون ماخ النواة ونواة متجانسة فري و. وهي تشبه حبات صغيرة، إلا أنها تتضمن بعض رمز إضافي في النواة في الفضاء لرفع مستوى الأداء. هذه حبات تمثل حلا وسطا التي تم تنفيذها من قبل بعض المطورين قبل وقد تبين أن حبات صغيرة نقية يمكن أن توفر الأداء العالي. هذه الأنواع من الحبوب هي تمديدات حبات صغيرة مع بعض خصائص حبات متجانسة. على عكس حبات متجانسة، هذه الأنواع من الحبوب غير قادرة على تحميل وحدات في وقت التشغيل من تلقاء نفسها. حبات الهجينة هي حبات صغيرة التي لديها بعض التعليمات البرمجية "غير الاساسيين" في نواة الفضاء من أجل رمز لتشغيل بسرعة أكبر مما لو كان لها أن تكون في المستخدم الفضاء. حبات الهجين حلا وسطا بين تصاميم متجانسة والنوية. وهذا يعني تشغيل بعض الخدمات (مثل مكدس الشبكة أو نظام الملفات) في الفضاء نواة للحد من النفقات العامة أداء النوية التقليدية، ولكن لا يزال قيد كود النواة (مثل برامج تشغيل الجهاز) كما الخوادم في الفضاء المستخدم.
والآن ما لا يقل عن إضافة العديد من حبات متجانسة تقليديا (إن لم يكن استغلال بنشاط) القدرة حدة. أكثر من المعروف جيدا من هذه الحبوب هي نواة لينكس. نواة حدات أساسا يمكن أن يكون لها أجزاء منه التي تم إنشاؤها في ثنائي النواة الأساسية أو الثنائيات التي يتم تحميلها في الذاكرة عند الطلب. ومن المهم أن نلاحظ أن قانون الملوث وحدة نمطية لديها القدرة على زعزعة استقرار نواة التوالي. كثير من الناس تصبح مشوشة حول هذه النقطة عند مناقشة حبات صغيرة. فمن الممكن لكتابة برنامج تشغيل النوية في مساحة ذاكرة منفصلة تماما واختباره قبل "الذهاب" على الهواء مباشرة. عند تحميل حدة النواة، فإنه يصل إلى مساحة الذاكرة الجزء متجانسة من حيث مضيفا إليها ما يحتاج إليه، وبالتالي، وفتح الباب للتلوث ممكن. وهناك عدد قليل من المزايا إلى وحدات (أو) الهجين النواة هي:
الوقت اللازم لتطوير أسرع للسائقين التي يمكن أن تعمل من داخل الوحدات. ليس التمهيد المطلوب للاختبار (شريطة أن النواة لا تزعزع).
على قدرة الطلب مقابل قضاء وقت اعادة تجميع نواة بأكملها لأشياء مثل برامج تشغيل جديدة أو الأنظمة الفرعية.
التكامل أسرع من التكنولوجيا طرف ثالث (ذات الصلة بالتنمية ولكن ذات الصلة في حد ذاته على الرغم من ذلك).
وحدات، عموما، والتواصل مع النواة باستخدام واجهة وحدة من نوع ما. وتعميمها واجهة (على الرغم خاص لنظام تشغيل معين) لذلك ليس من الممكن دائما لاستخدام وحدات. غالبا ما تكون برامج تشغيل الأجهزة قد تحتاج مزيدا من المرونة من التي يتيحها الحصول على واجهة وحدة. أساسا، فمن مكالمتين النظام وغالبا ما تكون الشيكات السلامة التي لا تملك إلا أن يتم ذلك مرة واحدة في نواة متجانسة الآن يمكن القيام به مرتين. بعض من مساوئ النهج وحدات هي:
مع المزيد من واجهات بالمرور، وإمكانية زيادة الخلل موجود (وهو ما يعني المزيد من الثغرات الأمنية).
يمكن الحفاظ على وحدات يكون مربكا لبعض المسؤولين عند التعامل مع مشاكل مثل الخلافات الرمز.