حلقة الحماية

حلقات الامتيازات لـ x86 المتوفرة في الوضع المحمي

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

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

.

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

تتضمن بنية X86S، وهي بنية ملغاة من Intel تم طرحها في عام 2024، الحلقتين 0 و 3 فقط. وقد تقرر حذف الحلقتين 1 و 2 في نظام X86S نظرًا لعدم استخدام أنظمة التشغيل الحديثة لهما إطلاقًا.

. [3] [4]

التنفيذات

كانت حلقات الحماية المتعددة من بين المفاهيم الأكثر ثورية التي قدمها نظام التشغيل Multics ، وهو سلف آمن للغاية لعائلة أنظمة التشغيل Unix الحالية. كان لدى الحاسوب المركزي GE 645 بعض التحكم في الوصول إلى الأجهزة، بما في ذلك نفس الوضعين اللذين كانت لديهما أجهزة سلسلة GE-600 الأخرى، وأذونات على مستوى القطعة في وحدة إدارة الذاكرة ("وحدة الإلحاق")، ومع ذلك، لم يكن هذا كافيًا لتوفير دعم كامل لمفهوم الحلقات على مستوى الأجهزة، لذا قام نظام Multics بتوفير هذا الدعم من خلال التحكم في عمليات الانتقال بين الحلقات ضمن البرنامج نفسه؛ [5] قام خليفته، Honeywell 6180 ، بتنفيذها في الأجهزة، مع دعم ثماني حلقات؛ [6] في نظام Multics، كانت حلقات الحماية مفهومًا منفصلًا عن أوضاع تشغيل وحدة المعالجة المركزية. حيث كان الكود الذي يعمل في جميع الحلقات باستثناء الحلقة 0، بالإضافة إلى جزء من كود الحلقة 0، يُنفذ في وضع العبد.

. [7]

على الرغم من ذلك، فإن غالبية الأنظمة ذات الأغراض العامة لا تستخدم سوى حلقتين فقط للحماية، حتى وإن كانت الأجهزة التي تعمل عليها تدعم عددًا أكبر من ذلك. أوضاع وحدة المعالجة المركزية أكثر من ذلك. على سبيل المثال، يستخدم نظاما التشغيل Windows 7 وWindows Server 2008 (والإصدارات السابقة لهما) حلقتين فقط، حيث تتوافق الحلقة 0 مع وضع kernel والحلقة 3 مع وضع المستخدم ، [8] ويرجع ذلك إلى أن الإصدارات القديمة من نظام التشغيل Windows NT كانت مصممة للعمل على معالجات تدعم مستويين فقط من الحماية.

. [9]

تتضمن العديد من بنيات وحدة المعالجة المركزية الحديثة (بما في ذلك بنية Intel x86 الشهيرة) بعض أشكال حماية الحلقة، على الرغم من أن نظام التشغيل Windows NT ، مثل Unix، لا يستخدم هذه الميزة بشكل كامل. يستخدم OS/2 ، إلى حد ما، ثلاث حلقات: [10] تُستخدم الحلقة 0 لتشغيل كود النواة وبرامج تشغيل الأجهزة، بينما تُخصص الحلقة 2 لتشغيل الكود المميز (مثل برامج المستخدم التي لديها صلاحيات الوصول إلى أجهزة الإدخال/الإخراج)، وتُستخدم الحلقة 3 لتشغيل الكود غير المميز (الذي يشمل غالبية برامج المستخدم). في نظام التشغيل DOS ، في العادة، تعمل النواة وبرامج التشغيل والتطبيقات على الحلقة 3 (إلا أن هذا يقتصر على حالة استخدام برامج تشغيل الوضع المحمي أو موسعات DOS؛ أما في نظام تشغيل يعمل في الوضع الحقيقي، فإن النظام يعمل دون أي حماية فعلية). بينما تعمل مديرات الذاكرة 386 مثل EMM386 في الحلقة 0. بالإضافة إلى ذلك، يمكن لبرنامج DR-DOS 'EMM386 3.xx تشغيل بعض الوحدات (مثل DPMS) اختياريًا على الحلقة 1 بدلًا من الحلقة 0. أما نظام OpenVMS فيستخدم أربعة أوضاع تُعرف (ترتيبًا تنازليًا حسب الامتيازات) بالنواة، والتنفيذي، والمشرف، والمستخدم.

على الرغم من أن x86 لديه 4 حلقات حماية، فمن الأكثر شيوعًا أن تحتوي الهندسة المعمارية على حلقتين فقط. حتى على x86، تستخدم معظم أنظمة التشغيل الحلقات 0 و3 فقط.

تجدد الاهتمام ببنية التصميم هذه مع الانتشار الواسع لبرنامج XenVMM، والنقاش المستمرة حول بنية النواة المتجانسة مقابل بنية النواة الدقيقة (خاصة في مجموعات أخبار Usenet ومنتديات الويب ).وبنية تصميم Ring-1 من Microsoft كجزء من مبادرة NGSCB ، والمشرفين الافتراضيين المبنيين على x86 مثل Intel VT-x (المعروف سابقًا باسم Vanderpool).

كان نظام Multics الأصلي يحتوي على ثماني حلقات، ولكن العديد من الأنظمة الحديثة تحتوي على عدد أقل. تظل الأجهزة على دراية بالحلقة الحالية لخيط التعليمات المنفذة في جميع الأوقات، بمساعدة سجل جهاز خاص. في بعض الأنظمة، يتم تعيين أرقام حلقات لمناطق الذاكرة الافتراضية في الأجهزة. ومن الأمثلة على ذلك Data General Eclipse MV/8000 ،في هذا التصميم، كانت البتات الثلاث العليا من عداد البرنامج (PC) تعمل كسجل للحلقة. ونتيجة لذلك، فإن أي كود يتم تنفيذه باستخدام عداد برنامج افتراضي مضبوط على القيمة 0xE200000، على سبيل المثال، سيُعتبر تلقائيًا جزءًا من الحلقة 7. بالإضافة إلى ذلك، فإن استدعاء برنامج فرعي موجود في قسم مختلف من الذاكرة كان يؤدي تلقائيًا إلى تغيير الحلقة النشطة.

بهدف الحد من احتمالية وقوع اختراقات أمنية عرضية أو متعمدة، تفرض الأجهزة قيودًا صارمة على آليات نقل التحكم بين الحلقات المختلفة وأنواع الوصول إلى الذاكرة المسموح بها عبر هذه الحلقات. فعلى سبيل المثال، في بنية x86، توجد بنية خاصة تُعرف باسم "البوابة" ويتم الوصول إليها באמצעות تعليمات الاستدعاء، وهي تنقل التحكم بطريقة آمنة إلى نقاط دخول محددة مسبقًا في حلقات ذات مستوى امتياز أقل (أكثر ثقة). علاوة على ذلك، قد تُمنح الحلقة ذات الامتيازات الأعلى قدرات استثنائية مثل التعامل المباشر مع الذاكرة الحقيقية متجاوزةً بذلك آليات الذاكرة الافتراضية.

تطبق بنية ARM الإصدار 7 ثلاثة مستويات من الامتيازات: التطبيق (PL0)، ونظام التشغيل (PL1)، والمشرف الافتراضي (PL2). وعلى نحو غير تقليدي، يعتبر المستوى 0 (PL0) هو الأقل امتيازًا، بينما يعتبر المستوى 2 هو الأكثر امتيازًا.. [11] تطبق إصدار ARM 8 أربعة مستويات استثناء: التطبيق (EL0)، ونظام التشغيل (EL1)، والمراقب الآمن/البرامج الثابتة (EL3)، والمشرف الافتراضي (EL2)،

لـ AArch64 [12] :D1-2454و AArch32. [12] :G1-6013

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

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

الأوضاع

وضع المشرف

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

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

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

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

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

في غالبية الأنظمة الحديثة، يرتبط الانتقال من وضع المستخدم إلى وضع النواة بتأثير ملحوظ على الأداء. وقد أظهرت القياسات، بناءً على استدعاء النظام الأساسي getpid، أن تكلفة هذا الانتقال تتراوح بين 1000 و 1500 دورة معالج على معظم الأجهزة. ومن بين هذه الدورات، يُخصص حوالي 100 دورة للتبديل الفعلي (70 دورة للانتقال من مساحة المستخدم إلى مساحة النواة، و 40 دورة للعودة)، والباقي عبارة عن "نفقات عامة للنواة". [14] [15] في النواة الصغيرة L3 ، أدى تقليل هذه النفقات العامة إلى تقليل التكلفة الإجمالية إلى حوالي 150 دورة. [14]

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

تحقيقًا للأداء والحتمية، تقوم بعض الأنظمة بوضع وظائف يُحتمل اعتبارها جزءًا من منطق التطبيق، وليس من برامج تشغيل الأجهزة، في وضع النواة. ويُستشهد بتطبيقات الأمان (مثل التحكم في الوصول وجدران الحماية) ومراقبي نظام التشغيل كأمثلة على ذلك. وقد تم تطوير نظام إدارة قواعد بيانات مضمن واحد على الأقل، <i id="mw3Q">e</i> X <i id="mw3g">treme</i> DB Kernel Mode ، خصيصًا لنشر وضع kernel، لتوفير قاعدة بيانات محلية لوظائف التطبيقات المستندة إلى kernel، وللتخلص من تبديلات السياق التي قد تحدث بخلاف ذلك عندما تتفاعل وظائف kernel مع نظام قاعدة بيانات يعمل في وضع المستخدم. [16]

وفي بعض الأحيان، يتم أيضًا نقل وظائف عبر الحلقات في الاتجاه المعاكس. فعلى سبيل المثال، يقوم نواة Linux بإدخال قسم vDSO في العمليات، والذي يتضمن وظائف تتطلب عادةً استدعاء نظام، أي انتقالًا بين الحلقات. وبدلًا من إجراء استدعاء النظام، تستخدم هذه الوظائف بيانات ثابتة يوفرها النواة. ويؤدي هذا إلى تجنب الحاجة إلى الانتقال بين الحلقات، وبالتالي يكون أسرع وأقل استهلاكًا للموارد من استدعاء النظام التقليدي. ويمكن توفير وظيفة gettimeofday بهذه الطريقة.

وضع المشرف الافتراضي

توفر وحدات المعالجة المركزية الحديثة من Intel و AMD تعليمات المحاكاة الافتراضية x86 لبرامج Hypervisor، وذلك للتحكم في وصول الحلقة 0 إلى الأجهزة. وعلى الرغم من عدم وجود توافق مباشر بينهما، فإن تقنيتي من Intel VT-x (الاسم الرمزي "Vanderpool") و AMD-V (الاسم الرمزي "Pacifica") تسمحان لنظام تشغيل الضيف بتنفيذ عمليات الحلقة 0 بشكل أصلي دون التأثير على الأنظمة الضيفة الأخرى أو نظام التشغيل المضيف.

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

للمساعدة في عملية المحاكاة الافتراضية وتقليل النفقات العامة الناتجة عن الآلية المذكورة سابقًا، تسمح تقنيتا VT-x و AMD-V للضيف بالعمل ضمن الحلقة 0. وتقدم تقنية VT-x عملية VMX الجذر/غير الجذر: حيث يعمل المشرف الافتراضي في وضع تشغيل VMX الجذر، الذي يتمتع بأعلى مستوى من الامتيازات. بينما يتم تشغيل نظام التشغيل الضيف في وضع التشغيل غير الجذري VMX، مما يسمح له بالعمل في الحلقة 0 دون الحصول على امتيازات الأجهزة الفعلية المباشرة.

يتم التحكم في عملية VMX غير الجذرية وانتقالات VMX بواسطة بنية بيانات تسمى التحكم في الآلة الافتراضية. [17] تسمح هذه الامتدادات المادية لمحاكاة "Trap and Emulate" الكلاسيكية بالعمل على بنية x86 ولكن الآن مع دعم الأجهزة.

مستوى الامتياز

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

انهو ليس من الضروري استخدام جميع مستويات الامتياز الأربعة. تستخدم أنظمة التشغيل الحالية ذات الحصة السوقية الواسعة بما في ذلك Microsoft Windows وmacOS وLinux وiOS وAndroid آلية ترحيل في الغالب ببت واحد فقط لتحديد مستوى الامتياز كمشرف أو مستخدم (بت U/S). يستخدم Windows NT نظامًا ثنائي المستوى. [18] حيث يتم تنفيذ برامج الوضع الحقيقي في 8086 على المستوى 0 (أعلى مستوى امتياز) بينما يقوم الوضع الافتراضي في 8086 بتنفيذ جميع البرامج على المستوى 3. [19] [19][18]

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

IOPL

علم IOPL ( مستوى امتياز الإدخال/الإخراج ) هو علم موجود على جميع وحدات المعالجة المركزية x86 المتوافقة مع IA-32. إنه يشغل البتات 12 و 13 في سجل FLAGS . في الوضع المحمي والوضع الطويل ،يدل مستوى امتياز الإدخال/الإخراج (IOPL) على مستوى الصلاحيات الممنوحة للبرنامج أو المهمة قيد التنفيذ. ولكي يتمكن البرنامج أو المهمة من الوصول إلى منافذ الإدخال/الإخراج، يجب أن يكون مستوى الامتياز الحالي (CPL) الخاص به (CPL0، CPL1، CPL2، CPL3) أقل من أو يساوي قيمة IOPL.

.

لا يمكن تغيير مستوى امتياز الإدخال/الإخراج (IOPL) باستخدام تعليمتي POPF(D) و IRET(D) إلا عندما يكون مستوى الامتياز الحالي هو الحلقة 0.

بالإضافة إلى مستوى امتياز الإدخال/الإخراج (IOPL)، تلعب أذونات منفذ أذونات منفذ الإدخال/الإخراج الموجودة في قطاع حالة المهمة (TSS) دورًا أيضًا في تحديد قدرة المهمة على الوصول إلى منافذ الإدخال/الإخراج.

متنوع

في أنظمة x86، يشار إلى المحاكاة الافتراضية للأجهزة x86 ( VT-x وSVM ) باسم "حلقة -1"، يُشار إلى وضع إدارة النظام باسم "الحلقة −2"، يُشار أحيانًا إلى Intel Management Engine و AMD Platform Security Processor باسم "ring -3". [21]

استخدام ميزات الأجهزة

توفر العديد من تصميمات الأجهزة لوحدات المعالجة المركزية مرونة أكبر بكثير مما يتم استخدامه فعليًا أنظمة التشغيل التي تعمل عليها عادةً. يتطلب الاستخدام الصحيح لأوضاع وحدة المعالجة المركزية المعقدة تعاونًا وثيقًا للغاية بين نظام التشغيل ووحدة المعالجة المركزية، ونتيجة لذلك، يميل هذا النهج إلى ربط نظام التشغيل ببنية وحدة المعالجة المركزية المحددة. وعندما يتم تصميم نظام التشغيل ووحدة المعالجة المركزية خصيصًا للعمل معًا، فإن هذا لا يشكل مشكلة كبيرة (على الرغم من أنه قد تظل بعض ميزات الأجهزة غير مستغلة). ولكن عندما يتم تصميم نظام التشغيل لكي يكون متوافقًا مع العديد من بنيات وحدات المعالجة المركزية المختلفة، فقد يتجاهل نظام التشغيل جزءًا كبيرًا من ميزات وضع وحدة المعالجة المركزية. على سبيل المثال:، السبب وراء استخدام Windows لمستويين فقط (الحلقة 0 والحلقة 3) هو أن بعض بنيات الأجهزة التي كانت مدعومة في الماضي (مثل PowerPC أو MIPS ) نفذت مستويين فقط من الامتيازات. [22]

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

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

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

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

مراجع

  1. Karger، Paul A.؛ Herbert، Andrew J. (1984). "An Augmented Capability Architecture to Support Lattice Security and Traceability of Access". 1984 IEEE Symposium on Security and Privacy. ص. 2. DOI:10.1109/SP.1984.10001. ISBN:0-8186-0532-4. S2CID:14788823.
  2. Binder، W. (2001). Design and implementation of the J-SEAL2 mobile agent kernel. ص. 35–42. DOI:10.1109/SAINT.2001.905166. ISBN:0-7695-0942-8. S2CID:11066378.
  3. "Envisioning a Simplified Intel Architecture for the Future". Intel (بالإنجليزية). Archived from the original on 2025-05-25. Retrieved 2024-05-28.
  4. 1 2 Tanembaum، Andrew S. (2015). Modern Operating Systems (ط. 4th). Pearson. ص. 479–480. ISBN:978-0-13-359162-0. For many years, the x86 has supported four protection modes or rings [...]. Ring 3 is the least privileged [...]. Ring 0 is the most privileged [...]. The remaining two rings are not used by any current operating system.
  5. "A Hardware Architecture for Implementing Protection Rings". Communications of the ACM. ج. 15 ع. 3. مارس 1972. مؤرشف من الأصل في 2025-05-05. اطلع عليه بتاريخ 2012-09-27.
  6. "Multics Glossary - ring". مؤرشف من الأصل في 2025-03-21. اطلع عليه بتاريخ 2012-09-27.
  7. The Multics Virtual Memory, part 2 (PDF). Honeywell Information Systems. يونيو 1972. ص. 160–161. مؤرشف من الأصل (PDF) في 2025-03-11.
  8. Russinovich، Mark E.؛ David A. Solomon (2005). Microsoft Windows Internals (ط. 4). Microsoft Press. ص. 16. ISBN:978-0-7356-1917-3.
  9. Russinovich، Mark (2012). Windows Internals Part 1 (ط. 6th). Redmond, Washington: Microsoft Press. ص. 17. ISBN:978-0-7356-4873-9. The reason Windows uses only two levels is that some hardware architectures that were supported in the past (such as دي إي سي ألفا  and Silicon Graphics MIPS) implemented only two privilege levels.
  10. "Presentation Device Driver Reference for OS/2 – 5. Introduction to OS/2 Presentation Drivers". مؤرشف من الأصل في 2015-06-15. اطلع عليه بتاريخ 2015-06-13.
  11. ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition. Arm Ltd. ص. B1-1136. مؤرشف من الأصل في 2025-03-09.
  12. 1 2 Arm Architecture Reference Manual Armv8, for A-profile architecture. Arm Ltd. مؤرشف من الأصل في 2025-04-27.
  13. "supervisor mode". FOLDOC. 15 فبراير 1995. مؤرشف من الأصل في 2025-05-06.
  14. 1 2 Jochen Liedtke (ديسمبر 1995). On µ-Kernel Construction. مؤرشف من الأصل في 2023-12-12.
  15. Ousterhout، J. K. (1990). "Why aren't operating systems getting faster as fast as hardware?". Usenix Summer Conference A. naheim, CA. ص. 247–256.
  16. Gorine، Andrei؛ Krivolapov، Alexander (مايو 2008). "Kernel Mode Databases: A DBMS Technology For High-Performance Applications". Dr. Dobb's Journal. مؤرشف من الأصل في 2009-11-20.
  17. Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 3C (PDF) (بالإنجليزية). Intel Cooperation (published Sep 2016). 2016. pp. 1–3. Archived from the original (PDF) on 2025-04-25.
  18. 1 2 Russinovich، Mark E.؛ Solomon، David A. (2005). Microsoft Windows Internals (ط. 4th). Microsoft Press. ص. 16. ISBN:978-0-7356-1917-3.
  19. 1 2 Sunil Mathur. Microprocessor 8086: Architecture, Programming and Interfacing (ط. Eastern Economy). PHI Learning.
  20. Anderson، Thomas؛ Dahlin، Michael (21 أغسطس 2014). "2.2". Operating Systems: Principles and Practice (ط. 2nd). Recursive Books. ISBN:978-0985673529.
  21. De Gelas، Johan. "Hardware Virtualization: the Nuts and Bolts". AnandTech. مؤرشف من الأصل في 2025-05-06. اطلع عليه بتاريخ 2021-03-13.
  22. Russinovich، Mark E.؛ David A. Solomon (2005). Microsoft Windows Internals (ط. 4). Microsoft Press. ص. 16. ISBN:978-0-7356-1917-3.Russinovich, Mark E.; David A. Solomon (2005). Microsoft Windows Internals (4 ed.). Microsoft Press. pp. 16. ISBN 978-0-7356-1917-3.
  • مرجع مبرمج Intel 80386

قراءة إضافية

  1. E.g., In IBM OS/360 through z/OS, some system tasks run in problem state key 0.
وسوم <ref> موجودة لمجموعة اسمها "arabic-abajed"، ولكن لم يتم العثور على وسم <references group="arabic-abajed"/> أو هناك وسم </ref> ناقص