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

نواة (نظم تشغيل)
النَّوَاةُ أو اللُّب هي قلب كل نظام تشغيل للحاسوب تقوم بدور حلقة الوصل بين عتاد الحاسوب وبرمجياته، وتقوم أيضًا بعملية التحكم بمصادر الجهاز. لدى النواة طبقة تتصل بها البرمجيات مما يوفر إمكانيات الحاسب الآلي للبرمجيات التي يتحكم فيها المستخدم. تعد إحدى البرامج الأولى التي تحمل عند بدء التشغيل (بعد أداة محمل الإقلاع). كما تدير طلبات البرمجيات للإدخال والإخراج، ويترجمها إلى تعليمات لمعالجة البيانات في وحدة المعالجة المركزية. وتدير أيضًا الذاكرة والأجهزة الطرفية مثل لوحة المفاتيح والشاشة والطابعة والسماعات.
وظائف النواة تقوم بها كل نواة بصورة مختلفة عن الأخرى. فمثلا تقوم النواة الأحادية بالعمل في حيز واحد من الذاكرة، وبهذا تحقق تحسن في أداء النظام. أما النواة المصغرة (النوية) فتقوم بتنفيذ معظم عملياتها في حيز المستخدم لكي تحافظ على توزيع وتفرقة المهام عن بعضها وبهذا تسهل عملية تحسين وتطوير الشيفرة البرمجية للنواة وإصلاحها.
نظرة عامة
تعتمد أنظمة التشغيل الحديثة على وجود نواة للنظام. في معظم الحالات يقوم محمل نظام التشغيل بتحميل النواة كعملية أثناء بداية تشغيل الحاسب الآلي، وعند اكتمال تحميل نظام التشغيل تصبح هذه العملية مجموعة متكاملة من الوظائف يمكن أن تستخدمها البرمجيات المتصلة بالنواة للقيام بعمليات تحتاج الوصول لعتاد الحاسب الآلي مثل الكتابة على القرص الصلب.
في المعلوماتية، نواة نظام التشغيل هي البرمجة التي تضمن:
التواصل بين البرامج والأجهزة.
إدارة مختلف البرامج الخاصة بالآلة.
التحكم في الأجهزة ومكونات الآلة (الذاكرة، المعالج، التخزين).
المهام المنجزة من طرف النواة
النواة لها وظائف أساسية عديدة منها ضمان التحميل وتنفيذ العمليات، التحكم في المداخل|المخارج وتوفير سطح مناسب للربط بين النواة والمستخدم.
نواة يربط تطبيق البرمجيات لأجهزة كمبيوتر
عادة يتم تحميل رمز بالغ الأهمية من النواة إلى منطقة محمية من الذاكرة، والذي يمنعها من أن الكتابة بواسطة أخرى، الأجزاء المستخدمة أقل كثيرا من نظام التشغيل أو التطبيقات. نواة تؤدي مهامها، مثل تنفيذ العمليات والتعامل مع المقاطعات، في الفضاء النواة، في حين أن كل شيء على المستخدم يفعل عادة، مثل كتابة النص في محرر نص أو تشغيل البرامج في واجهة المستخدم الرسومية (واجهة المستخدم الرسومية)، ويتم ذلك في الفضاء المستخدم. هذا الفصل يمنع بيانات المستخدم والبيانات نواة من التداخل مع بعضها البعض، وبالتالي يقلل ذلك من أداء أو التسبب في النظام لتصبح غير مستقرة (وربما تسقط).
عندما يجعل عملية طلبات النواة، ويسمى طلب استدعاء نظام. تصاميم نواة مختلفة تختلف في كيفية إدارة المكالمات النظام والموارد. على سبيل المثال، نواة متجانسة بتنفيذ جميع التعليمات نظام التشغيل في نفس مساحة العنوان من أجل تحسين الأداء [المرجو التوضيح] من النظام. A النوية تدير معظم العمليات الخلفية في نظام التشغيل المستخدم في الفضاء لجعل نظام التشغيل أكثر وحدات، وبالتالي أسهل للمحافظة عليه.
وحدة المعالجة المركزية
هذا المكون المركزي لنظام الكمبيوتر مسؤول عن تشغيل البرامج أو تنفيذها. وتتحمل النواة مسؤولية تحديد في أي وقت يجب تخصيص إحدى البرامج المشَغّلة للمعالج أو لعدة معالجات.
ذاكرة الوصول العشوائي
تستخدم ذاكرة الوصول العشوائي لتخزين كلًا من تعليمات البرامج وبياناتها. وعادة، يجب أن يكون كلاهما موجودًا في الذاكرة من أجل تشغيل البرنامج. غالبًا ما تريد العديد من البرامج الوصول إلى الذاكرة، وتتطلب في كثير من الأحيان ذاكرة أكبر مما هو متوفر في للحاسوب. فتحدد النواة ما يمكن استخدامه من الذاكرة لكل عملية، وتحدد ما يجب فعله عند عدم توفر ذاكرة كافية.
أجهزة الإدخال والإخراج
تتضمن أجهزة الإدخال والإخراج أجهزة طرفية مثل لوحات المفاتيح والماوس ومحركات الأقراص والطابعات وأجهزة يو إس بي ومحولات الشبكة، وأجهزة العرض. تخصص النواة طلبات البرامج لأداء الإدخال والإخراج لجهاز مناسب وتوفر طرقًا ملائمة لاستخدام الجهاز (عادةً يتم تلخيصه إلى الحد الذي لا يحتاج فيه البرنامج إلى معرفة تفاصيل تشغيل الجهاز).
إدارة الموارد
الجوانب الرئيسية اللازمة في إدارة الموارد هي تحديد مجال التنفيذ (مساحة العنوان) وآلية الحماية المستخدمة وسيطا في الوصول إلى الموارد داخل المجال. توفر الأنوية أيضًا طرقًا للتزامن والتواصل بين العمليات (IPC). قد تكون هذه التطبيقات داخل النواة نفسها أو يمكن أن تعتمد النواة أيضًا على العمليات الأخرى التي يتم تشغيلها. تكون النواة مسؤولة أيضًا عن تبديل السياق بين العمليات أو سلاسل العمليات.
إدارة الذاكرة
تتمتع النواة بوصول كامل إلى ذاكرة النظام ويجب أن تسمح للعمليات بالوصول بأمان إلى هذه الذاكرة عند طلبها. غالبًا ما تكون الخطوة الأولى في القيام بذلك هي العنونة الافتراضية، والتي يتم تحقيقها عادةً عن طريق الترحيل أو التجزئة. تسمح العنونة الافتراضية للنواة بجعل عنوان مادي معين يبدو كأنه عنوان آخر، وهو العنوان الظاهري. قد تكون مساحات العنوان الافتراضية مختلفة من عملية لأخرى؛ قد تكون الذاكرة التي تصل إليها إحدى العمليات في عنوان (افتراضي) معين ذاكرة مختلفة عما تصل إليه عملية أخرى في نفس العنوان. يسمح هذا لكل برنامج بالتصرف كما لو كان هو الوحيد (بصرف النظر عن النواة) التي تعمل، وبالتالي تمنع التطبيقات من تعطيل بعضها البعض.
في العديد من الأنظمة، قد يشير العنوان الظاهري للبرنامج إلى بيانات غير موجودة حاليًا في الذاكرة. تسمح طبقة المراوغة التي توفرها العنونة الافتراضية لنظام التشغيل باستخدام مخازن بيانات أخرى، مثل القرص الصلب، لتخزين ما كان سيبقى في الذاكرة الرئيسية (العشوئية). نتيجة لذلك، يمكن لأنظمة التشغيل أن تسمح للبرامج باستخدام ذاكرة أكبر من تلك المتوفرة فعليًا في النظام. عندما يحتاج البرنامج إلى بيانات غير موجودة حاليًا في ذاكرة الوصول العشوائي، فإن وحدة المعالجة المركزية تشير إلى النواة بحدوث ذلك، وتستجيب النواة عن طريق كتابة محتويات كتلة ذاكرة غير نشطة على القرص (إذا لزم الأمر) واستبدالها بالبيانات المطلوبة من قبل البرنامج. يمكن بعد ذلك استئناف البرنامج من النقطة التي توقف فيها. يُعرف هذا المخطط عمومًا باسم ترحيل الطلب.
تسمح العنونة الافتراضية أيضًا بإنشاء أقسام افتراضية للذاكرة في منطقتين منفصلتين، أحدهما مخصص للنواة (مساحة النواة) والأخرى للتطبيقات (مساحة المستخدم). لا يسمح المعالج للتطبيقات بمعالجة ذاكرة النواة، وبالتالي منع التطبيق من تعطيل النواة قيد التشغيل. ساهم هذا التقسيم الأساسي لمساحة الذاكرة كثيرًا في التصميمات الحالية لنواة الأغراض العامة الفعلية وهو عالمي تقريبًا في مثل هذه الأنظمة، بالرغم من أن بعض النوى البحثية (على سبيل المثال، ) تتخذ مناهج أخرى.
إدارة الجهاز
لأداء وظائف مفيدة، تحتاج العمليات للوصول إلى الأجهزة الطرفية المتصلة بالحاسوب، والتي يُتحكم بها بواسطة النواة من خلال معرفات العتاد. تمكّن المعرفات نظام التشغيل من التفاعل مع العتاد. يزود نظام التشغيل بمعلومات حول كيفية التحكم بقطعة معينة من العتاد والتواصل معها. يعد المعرف جزءًا مهمًا وحيويًا في برامج الحاسوب. من الناحية النظرية، يجب أن يعمل الجهاز بشكل صحيح مع المعرف المناسب. تُستخدم معرفات الأجهزة لأشياء مثل بطاقات الفيديو وبطاقات الصوت والطابعات والماسحات الضوئية وأجهزة المودم وبطاقات الشبكة المحلية.
يجب أن تحتفظ النواة بقائمة بالأجهزة المتاحة. قد تكون هذه القائمة معروفة مسبقًا (على سبيل المثال، على نظام مضمن حيث ستعاد كتابة النواة إذا تغير العتاد المتاح) أو ثُبتت بواسطة المستخدم (على أجهزة الحاسوب القديمة وعلى الأنظمة غير المصممة للاستخدام الشخصي) أو اكتشفت بواسطة نظام التشغيل في وقت التشغيل (يسمى عادةً التوصيل والتشغيل). في أنظمة التوصيل والتشغيل، يقوم مدير الجهاز أولاً بإجراء فحص على نواقل طرفية مختلفة، مثل منفذ الملحقات الإضافية (PCI) أو الناقل التسلسلي العام (USB)، لاكتشاف الأجهزة المثبتة، ثم يبحث عن المعرف المناسب.
نظرًا لأن إدارة الأجهزة هي موضوع خاص بنظام التشغيل، يتم التعامل مع المعرفات هذه بشكل مختلف من نواة لأخرى، ولكن في كل حالة، يجب أن توفر النواة وحدات الإدخال والإخراج للسماح للمعرفات بالوصول الفعلي إلى العتاد المناسب من خلال بعض المنافذ أو موقع الذاكرة. يجب اتخاذ قرارات مهمة عند تصميم نظام إدارة الجهاز، حيث قد تتضمن عمليات الوصول في بعض التصميمات مفاتيح تحويل السياق، مما يجعل العملية كبيرة الاستخدام لوحدة المعالجة المركزية ويسبب عبئًا كبيرًا في الأداء بسهولة.
طلبات النظام
في الحوسبة، طلب النظام هو كيف تطلب العملية خدمة من نواة نظام التشغيل التي لا تملك عادةً إذنًا لتشغيلها. توفر طلبات النظام الواجهة بين العملية ونظام التشغيل. تتطلب معظم العمليات التي تتفاعل مع النظام أذونات غير متاحة لعملية على مستوى المستخدم، على سبيل المثال، الإدخال والإخراج الذي يجرى باستخدام عتاد موجود على النظام، أو يتطلب أي شكل من أشكال الاتصال مع العمليات الأخرى استخدام طلبات النظام.
طلب النظام هو آلية يستخدمها البرنامج التطبيقي لطلب خدمة من نظام التشغيل. يستخدمون تعليمات رمز الآلة التي تجعل المعالج يغير الوضع. مثال على ذلك سيكون من وضع المشرف إلى الوضع المحمي. هذا هو المكان الذي ينفذ فيه نظام التشغيل إجراءات مثل الوصول إلى الأجهزة أو وحدة إدارة الذاكرة. بشكل عام، يوفر نظام التشغيل مكتبة تقع بين نظام التشغيل وبرامج المستخدم العادية. عادة ما تكون مكتبة لغة سي مثل Glibc أو Windows API. تتعامل المكتبة مع التفاصيل ذات المستوى المنخفض لتمرير المعلومات إلى النواة والتحول إلى وضع المشرف. تتضمن طلبات النظام الإغلاق والفتح والقراءة والانتظار والكتابة.
لأداء عمل مفيد بالفعل، يجب أن تكون العملية قادرة على الوصول إلى الخدمات التي توفرها النواة. يُنفذ ذلك بشكل مختلف بواسطة كل نواة، ولكن معظمها يوفر مكتبة سي أو واجهة برمجة تطبيقات، والتي بدورها تستدعي وظائف النواة ذات الصلة.
تختلف طريقة طلب دالة النواة من نواة إلى أخرى. إذا كان عزل الذاكرة قيد الاستخدام، فمن المستحيل على عملية المستخدم الاتصال بالنواة مباشرة، لأن ذلك سيكون انتهاكًا لقواعد التحكم في الوصول للمعالج. بعض الاحتمالات هي:
استخدام مقاطعة بمحاكاة برمجية. هذه الطريقة متاحة في معظم الأجهزة، وبالتالي فهي شائعة جدًا.
باستخدام بوابة الاتصال. بوابة الاتصال هي عنوان خاص مخزن بواسطة النواة في قائمة في ذاكرة النواة في موقع معروف للمعالج. عندما يكتشف المعالج اتصالاً بهذا العنوان، فإنه يعيد التوجيه بدلاً من ذلك إلى الموقع المستهدف دون التسبب في انتهاك الوصول. يتطلب هذا دعمًا للأجهزة، لكن الأجهزة الخاصة به شائعة جدًا.
استخدام تعليمات اتصال خاصة بالنظام. تتطلب هذه التقنية دعمًا خاصًا للأجهزة، والذي قد تفتقر إليه البنى الشائعة (خاصة، إكس 86). أضيفت تعليمات طلب النظام إلى الطرز الحديثة من معالجات x86، ومع ذلك، فإن بعض أنظمة التشغيل لأجهزة الكمبيوتر تستفيد منها عند توفرها.
استخدام قائمة انتظار مستندة إلى الذاكرة. قد يضيف التطبيق الذي يقوم بعدد كبير من الطلبات ولكنه لا يحتاج إلى انتظار نتيجة كل منها تفاصيل الطلبات إلى منطقة من الذاكرة تقوم النواة بمسحها بشكل دوري للعثور على الطلبات.
المقال الرئيسي: دعوة النظم
في الحوسبة، واستدعاء نظام هو كيف يطلب برنامج خدمة من نواة نظام التشغيل التي ليس لديها عادة الإذن لتشغيل. استدعاءات النظام توفر واجهة بين عملية ونظام التشغيل. معظم عمليات التفاعل مع النظام تتطلب أذونات غير متوفرة لعملية مستوى المستخدم، على سبيل يؤديها مع هدية جهاز على النظام، أو أي شكل من أشكال الاتصال مع العمليات الأخرى يتطلب استخدام استدعاءات النظام
استدعاء النظام هي الآلية التي يتم استخدامها من قبل تطبيق البرنامج لطلب الخدمة من نظام التشغيل. أنها تستخدم تعليمات الجهاز رمز التي تسبب المعالج لتغيير الوضع. على سبيل المثال سيكون من وضع المشرف على الوضع المحمي. هذا هو المكان الذي ينفذ نظام التشغيل الإجراءات مثل الحصول على الأجهزة أو وحدة إدارة الذاكرة. عموما يوفر نظام التشغيل المكتبة التي تقع بين نظام التشغيل والبرامج العادية. وعادة ما هي مكتبة C مثل سي العمومية أو Windows API. تتولى المكتبة والتفاصيل ذات المستوى المنخفض من تمرير معلومات إلى النواة والتحول إلى وضع المشرف. بما في ذلك مكالمات نظام قريب، وفتح، قراءة، الانتظار والكتابة.
لأداء فعلا بعمل مفيد، يجب أن تكون عملية قادرة على الوصول إلى الخدمات التي تقدمها النواة. ويتم تنفيذ هذا بشكل مختلف من قبل كل نواة، ولكن معظم توفير مكتبة. C أو API، والذي بدوره باستدعاء وظائف النواة ذات الصلة
طريقة الاحتجاج على وظيفة النواة يختلف من النواة إلى النواة. إذا العزلة الذاكرة قيد الاستخدام، فإنه من المستحيل على أي عملية المستخدم لاستدعاء النواة مباشرة، لأن ذلك من شأنه أن يشكل انتهاكا لقواعد مراقبة الدخول المعالج. وهناك عدد قليل الاحتمالات هي:
باستخدام المقاطعة-محاكاة البرمجيات. هذا الأسلوب هو متاح في معظم الأجهزة، وبالتالي فهو شائع جدا.
باستخدام بوابة المكالمة. بوابة المكالمة عنوان خاص تخزينها من قبل النواة في قائمة في الذاكرة النواة في مكان معروف إلى المعالج. عندما يكتشف المعالج دعوة إلى هذا العنوان، فإنه بدلا الموجهات إلى الموقع المستهدف دون التسبب في حدوث انتهاك وصول. وهذا يتطلب دعم الأجهزة، ولكن الأجهزة لذلك هو أمر شائع جدا.
استخدام خاص تعليمة استدعاء النظام. وتتطلب هذه التقنية دعم الأجهزة الخاصة، والتي أبنية المشتركة (لا سيما x86) وقد تفتقر. تم إضافة تعليمات دعوة النظام إلى النماذج الحديثة من معالجات x86، ومع ذلك، وبعض أنظمة التشغيل لأجهزة الكمبيوتر الاستفادة منها عندما تكون متاحة.
باستخدام طابور القائم على الذاكرة. تطبيق يجعل أعدادا كبيرة من الطلبات ولكن لا تحتاج إلى الانتظار لنتيجة كل إضافة تفاصيل الطلبات إلى المنطقة من الذاكرة أن النواة بفحص دوري للعثور على الطلبات
قرارات تصميم النواة (kernel)
قضايا دعم نواة لحماية
أحد الاعتبارات الهامة في تصميم نواة هو الدعم الذي يقدمه للحماية من أخطاء (التسامح مع الخطأ) ومن السلوكيات الخبيثة (الأمن). هذين الجانبين هي عادة ليست مميزة بشكل واضح، واعتماد هذا التمييز في تصميم النواة يؤدي إلى رفض بنية هرمية للحماية.
آليات أو سياسات التي تقدمها نواة يمكن تصنيفها وفقا لعدة معايير، منها: ثابت (القسري في وقت الترجمة) أو ديناميكية (القسري في وقت التشغيل)؛ وقائية أو بعد الكشف؛ وفقا لمبادئ الحماية التي ترضي (على سبيل المثال دينينغ)؛ سواء كانت الأجهزة المعتمدة أو لغة تستند؛ سواء كانوا من أكثر آلية مفتوحة أو سياسة ملزمة؛ وغيرها الكثير.
وعادة ما يتم توفير الدعم لمجالات حماية الهرمية باستخدام وسائط وحدة المعالجة المركزية.
توفر العديد من حبات تنفيذ «قدرات»، أي الكائنات التي يتم توفيرها لرمز المستخدم التي تتيح الوصول المحدود إلى كائن الأساسي تدار من قبل النواة. يحدث الأمثلة الشائعة في التعامل مع الملف: ملف هو تمثيل المعلومات المخزنة على جهاز التخزين الدائم. نواة قد تكون قادرة على تنفيذ العديد من العمليات المختلفة (مثل القراءة والكتابة، حذف أو تنفيذ مضمون الملف) يجوز السماح لكن تطبيق مستوى المستخدم فقط لتنفيذ بعض هذه العمليات (على سبيل المثال أنه لا يجوز السماح لقراءة الملف). تنفيذ شيوعا لهذا هو نواة لتوفير كائن إلى التطبيق (وتسمى عادة «التعامل مع ملف») والتي قد التطبيق ثم استدعاء العمليات على، صحة التي الشيكات النواة في وقت طلبت فيه العملية. ويجوز تمديد هذا النظام لتغطية كافة الكائنات التي تدير النواة، والواقع على الكائنات التي توفرها تطبيقات المستخدم الأخرى.
وسيلة فعالة وبسيطة لتقديم الدعم الأجهزة من قدرات هو تفويض MMU مسؤولية التحقق من وصول الحقوق لكل ذاكرة الوصول، آلية تسمى معالجة القائمة على القدرة. وتفتقر معظم أبنية الكمبيوتر التجارية دعم هذا MMU لقدرات
نهج بديل هو محاكاة قدرات باستخدام المجالات الهرمية بدعم عادة. في هذا النهج، يجب أن يتواجد كل كائن المحمية في مساحة عنوان التطبيق لا يستطيعون الوصول إلى؛ يحافظ على النواة أيضا قائمة من قدرات في هذه الذاكرة. عندما يحتاج تطبيق للوصول إلى كائن يحميها القدرة، فإنه يؤدي استدعاء نظام ونواة ثم يتحقق ما إذا كانت القدرة على التطبيق، يمنح ذلك الإذن لتنفيذ الإجراء المطلوب، وإذا سمح لها بتنفيذ حصول عليه (سواء بشكل مباشر، أو عن طريق تفويض الطلب إلى عملية أخرى على مستوى المستخدم). تكلفة أداء التبديل مساحة العنوان يحد من التطبيق العملي لهذا النهج في النظم مع التفاعلات المعقدة بين الكائنات، ولكن يتم استخدامه في أنظمة التشغيل الحالية للكائنات التي لا يتم الوصول إليها بشكل متكرر أو التي لا يتوقع أن تؤدي بسرعة. النهج حيث آلية الحماية لا البرامج الثابتة دعم ولكن بدلا من ذلك محاكاة على مستويات أعلى (مثل محاكاة القدرات عن طريق التلاعب جداول صفحة على الأجهزة التي ليس لديها الدعم المباشر)، ممكنة، ولكن هناك آثار الأداء.عدم وجود دعم الأجهزة قد لا يكون مشكلة، ولكن، للأنظمة التي تختار استخدام الحماية القائمة على اللغة
قرار هام تصميم النواة هو اختيار مستويات التجريد حيث ينبغي تنفيذ الآليات والسياسات الأمنية. آليات الأمن نواة تلعب دورا حاسما في دعم الأمن في المستويات العليا.
نهج واحد هو استخدام البرامج الثابتة ونواة دعم التسامح مع الخطأ (انظر أعلاه)، وبناء على السياسة الأمنية لسلوك ضار على رأس ذلك (ميزات مضيفا مثل آليات التشفير عند الضرورة)، وتفويض بعض المسؤولية إلى مترجم. النهج أن إنفاذ مندوب السياسة الأمنية للمترجم و / أو مستوى التطبيق غالبا ما تسمى الأمنية القائمة على اللغة
عدم وجود العديد من الآليات الأمنية الحساسة في أنظمة التشغيل الرئيسية الحالية يعوق تنفيذ السياسات الأمنية الكافية على مستوى التجريد التطبيق.في الواقع، وهو مفهوم خاطئ شائع في أمن الكمبيوتر هو أن أي سياسة أمنية يمكن تنفيذها في تطبيق بغض النظر عن دعم النواة.
حماية أو القائم على لغة حماية الأجهزة القائمة على قواعد القسري الأجهزة أنظمة الكمبيوتر نموذجية تستخدم حتى اليوم حول ما يسمح البرامج للوصول إلى ما هي البيانات. المعالج يراقب التنفيذ وتوقف البرنامج الذي يخالف قاعدة (على سبيل المثال، عملية المستخدم الذي هو على وشك القراءة أو الكتابة إلى نواة الذاكرة، وهلم جرا). في النظم التي تفتقر إلى دعم قدرات، يتم عزل العمليات عن بعضها البعض باستخدام مساحات العناوين منفصلة. يدعو من عمليات المستخدم في نواة تنظمها تتطلب منهم استخدام إحدى الطرق استدعاء نظام المذكورة أعلاه.
نهج بديل هو استخدام الحماية القائمة على اللغة. في نظام الحماية القائم على اللغة، فإن نواة تسمح فقط متاحة لتنفيذ التي تم إنتاجها من قبل مترجم لغة موثوق به. قد ثم اللغة أن تصمم بحيث بات من المستحيل بالنسبة للمبرمج لإرشاد أن تفعل شيئا من شأنها أن تنتهك المتطلبات الأمنية.
مزايا هذا النهج ما يلي:
لا حاجة لمساحات العناوين منفصلة. التبديل بين مساحات العناوين هي عملية بطيئة التي تسبب قدرا كبيرا من النفقات العامة، ويتم تنفيذ الكثير من العمل الأمثل في الوقت الراهن من أجل منع مفاتيح لا لزوم لها في أنظمة التشغيل الحالية. التبديل غير ضروري تماما في نظام الحماية القائم على اللغة، وكل رمز يمكن أن تعمل بأمان في نفس مساحة العنوان.
المرونة. أي مخطط الحماية التي يمكن أن تكون مصممة لأعرب عن طريق لغة برمجة يمكن تنفيذها باستخدام هذا الأسلوب. تغييرات بالنسبة لبرنامج حماية (على سبيل المثال من نظام هرمي لواحدة على أساس القدرة) الأجهزة الجديدة لا تتطلب.
وتشمل العيوب:
تطبيق أطول وقت البدء. يجب التحقق من التطبيقات عند البدء فيها للتأكد من أنها تم تجميعها من قبل المجمع الصحيح، أو قد تحتاج إعادة تجميع إما من المصدر أو من بايت كود.
نظم نوع غير مرنة. على النظم التقليدية، والتطبيقات بشكل متكرر تنفيذ عمليات التي لا اكتب آمنة. ولا يمكن السماح بمثل هذه العمليات في نظام الحماية القائم على اللغة، مما يعني أنه قد تحتاج التطبيقات إلى إعادة صياغة، ويمكن، في بعض الحالات، تفقد الأداء.
التعاون العملية
ثبت إدسجير ديكسترا التي من وجهة نظر منطقية للعرض، قفل الذري وتأمين عمليات تعمل على الإشارات الثنائية والأوليات كافية للتعبير عن أي وظيفة للتعاون العملية.ولكن هذا النهج ومن المسلم به عموما أن هناك نقصا من حيث السلامة والكفاءة، في حين أن نهج رسالة يمر أكثر مرونة. وهناك عدد من المناهج الأخرى (سواء ذات الدخول المتدنية أو مستوى أعلى) متوفرة أيضا، مع العديد من حبات الحديثة بتوفير الدعم لأنظمة مثل الذاكرة المشتركة واستدعاء الإجراء البعيد.
إدارة الأجهزة 0/1 فكرة نواة حيث I / O يتم التعامل مع الأجهزة بشكل موحد مع العمليات الأخرى، وعمليات التشغيل المشترك موازية، واقترحت ونفذت من قبل BRINCH هانسن أولا (على الرغم من واقترحت أفكار مماثلة في عام 1967). في وصف هانسن من هذا، وتسمى عمليات «مشتركة» العمليات الداخلية، في حين دعا الأجهزة . I / O العمليات الخارجية
مماثلة إلى الذاكرة الفعلية، مما يسمح للتطبيقات الوصول المباشر إلى الموانئ تحكم والسجلات يمكن أن يسبب وحدة تحكم لعطل، أو نظام لتحطم الطائرة. مع هذا، اعتمادا على تعقيد الجهاز، ويمكن الحصول على بعض الأجهزة المعقدة المدهش أن البرنامج، واستخدام العديد من وحدات تحكم مختلفة. وبسبب هذا، وتوفير واجهة أكثر تجريدا لإدارة الجهاز المهم. ويتم ذلك عادة عن طريق واجهة برنامج تشغيل الجهاز أو طبقة تجريد الأجهزة. في كثير من الأحيان، وتطبيقات تتطلب الوصول إلى هذه الأجهزة. النواة يجب الحفاظ على قائمة من هذه الأجهزة عن طريق الاستعلام عن النظام بالنسبة لهم بطريقة أو بأخرى. ويمكن أن يتم ذلك من خلال 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 الذي يقوم على رمز من جامعة كارنيجي ميلون ماخ النواة ونواة متجانسة فري و. وهي تشبه حبات صغيرة، إلا أنها تتضمن بعض رمز إضافي في النواة في الفضاء لرفع مستوى الأداء. هذه حبات تمثل حلا وسطا التي تم تنفيذها من قبل بعض المطورين قبل وقد تبين أن حبات صغيرة نقية يمكن أن توفر الأداء العالي. هذه الأنواع من الحبوب هي تمديدات حبات صغيرة مع بعض خصائص حبات متجانسة. على عكس حبات متجانسة، هذه الأنواع من الحبوب غير قادرة على تحميل وحدات في وقت التشغيل من تلقاء نفسها. حبات الهجينة هي حبات صغيرة التي لديها بعض التعليمات البرمجية «غير الاساسيين» في نواة الفضاء من أجل رمز لتشغيل بسرعة أكبر مما لو كان لها أن تكون في المستخدم الفضاء. حبات الهجين حلا وسطا بين تصاميم متجانسة والنوية. وهذا يعني تشغيل بعض الخدمات (مثل مكدس الشبكة أو نظام الملفات) في الفضاء نواة للحد من النفقات العامة أداء النوية التقليدية، ولكن لا يزال قيد كود النواة (مثل برامج تشغيل الجهاز) كما الخوادم في الفضاء المستخدم.
والآن ما لا يقل عن إضافة العديد من حبات متجانسة تقليديا (إن لم يكن استغلال بنشاط) القدرة حدة. أكثر من المعروف جيدا من هذه الحبوب هي نواة لينكس. نواة حدات أساسا يمكن أن يكون لها أجزاء منه التي تم إنشاؤها في ثنائي النواة الأساسية أو الثنائيات التي يتم تحميلها في الذاكرة عند الطلب. ومن المهم أن نلاحظ أن قانون الملوث وحدة نمطية لديها القدرة على زعزعة استقرار نواة التوالي. كثير من الناس تصبح مشوشة حول هذه النقطة عند مناقشة حبات صغيرة. فمن الممكن لكتابة برنامج تشغيل النوية في مساحة ذاكرة منفصلة تماما واختباره قبل «الذهاب» على الهواء مباشرة. عند تحميل حدة النواة، فإنه يصل إلى مساحة الذاكرة الجزء متجانسة من حيث مضيفا إليها ما يحتاج إليه، وبالتالي، وفتح الباب للتلوث ممكن. وهناك عدد قليل من المزايا إلى وحدات (أو) الهجين النواة هي:
الوقت اللازم لتطوير أسرع للسائقين التي يمكن أن تعمل من داخل الوحدات. ليس التمهيد المطلوب للاختبار (شريطة أن النواة لا تزعزع).
على قدرة الطلب مقابل قضاء وقت إعادة تجميع نواة بأكملها لأشياء مثل برامج تشغيل جديدة أو الأنظمة الفرعية.
التكامل أسرع من التكنولوجيا طرف ثالث (ذات الصلة بالتنمية ولكن ذات الصلة في حد ذاته على الرغم من ذلك).
وحدات، عموما، والتواصل مع النواة باستخدام واجهة وحدة من نوع ما. وتعميمها واجهة (على الرغم خاص لنظام تشغيل معين) لذلك ليس من الممكن دائما لاستخدام وحدات. غالبا ما تكون برامج تشغيل الأجهزة قد تحتاج مزيدا من المرونة من التي يتيحها الحصول على واجهة وحدة. أساسا، فمن مكالمتين النظام وغالبا ما تكون الشيكات السلامة التي لا تملك إلا أن يتم ذلك مرة واحدة في نواة متجانسة الآن يمكن القيام به مرتين. بعض من مساوئ النهج وحدات هي:
مع المزيد من واجهات بالمرور، وإمكانية زيادة الخلل موجود (وهو ما يعني المزيد من الثغرات الأمنية).
يمكن الحفاظ على وحدات يكون مربكا لبعض المسؤولين عند التعامل مع مشاكل مثل الخلافات الرمز.
مراجع
اختراعات أسترالية
علم الحاسوب
لينكس
مايكروسوفت ويندوز
نظم تشغيل
أنوية نظم التشغيل