وضع المستخدم مقابل وضع النواة: شرح أنظمة التشغيل
يقوم الكمبيوتر بفصل نظام التشغيل إلى وضعين لأغراض تخصيص الموارد والأمان.
يحمي هذا التمييز الوظائف الأساسية لنظام الكمبيوتر ويضمن الاستقرار. أثناء تشغيل الكمبيوتر، فإنه يفصل الوظائف الأكثر تجريدًا عن تلك التي تتضمن المكونات الأساسية للكمبيوتر لتحسين التسامح مع الأخطاء.
يقوم وحدة المعالجة المركزية للكمبيوتر بالتبديل بين وضع المستخدم ووضع النواة حسب الكود الذي يتم تشغيله. بعض التطبيقات مقيدة بوضع المستخدم، بينما تعمل تطبيقات أخرى في وضع النواة. بشكل عام، تعمل تطبيقات المستخدم في وضع المستخدم، بينما تعمل مكونات نظام التشغيل الأساسية في وضع النواة.
ال انقطاع خدمة CrowdStrike في عام 2024، والذي جعل ملايين أجهزة الكمبيوتر التي تعمل بنظام Windows غير صالحة للعمل، كان بسبب خلل في برنامج الأمان أثناء التشغيل في وضع kernel.
ما هو وضع المستخدم؟
وضع المستخدم هو حالة نظام تشغيل مع وصول مقيد إلى أجهزة وموارد نظام الكمبيوتر. يتمتع وضع المستخدم بمستوى امتيازات أقل من وضع النواة ولا يمكنه تنفيذ أوامر معينة من المحتمل أن تتداخل مع استقرار النظام. لا يمكن للتطبيقات في وضع المستخدم التفاعل إلا مع الأجهزة ذات الامتيازات وتنفيذ العمليات ذات الامتيازات من خلال استدعاء النظام، والذي يتم إرساله باستخدام واجهة برمجة التطبيقات لنظام التشغيل.
تعمل تطبيقات المستخدم، مثل معالجات الكلمات ومتصفحات الويب ومشغلات الفيديو، في وضع المستخدم. عندما يقوم المستخدم بتشغيل أحد هذه التطبيقات، يقوم نظام التشغيل بإنشاء عملية تمنح التطبيق خصوصيته. عنوان افتراضي مساحة في الذاكرة.
يتيح هذا للبرامج في وضع المستخدم قسمًا خاصًا من الذاكرة لا تستطيع التطبيقات الأخرى الوصول إليه ويمنع التطبيقات في وضع المستخدم من تغيير بيانات بعضها البعض. في هذا الوضع، إذا تعطل أحد التطبيقات، فلن يؤدي ذلك إلى تعطل النظام بأكمله معه لأنه يعمل بمعزل عن التطبيقات الأخرى.
ما هو وضع النواة؟
وضع Kernel هو حالة نظام تشغيل تتيح الوصول غير المقيد إلى موارد النظام والأجهزة. وهو وضع مميز يتم فيه تنفيذ الوظائف الأساسية لنظام التشغيل. يفرض وضع Kernel عمليات العزل من خلال التعامل مع مكالمات النظام من وضع المستخدم. كما يتمتع أيضًا بإمكانية الوصول المباشر إلى الأجهزة الطرفية.
في وضع kernel، لا يوجد فصل لمساحة العنوان الافتراضية — كل التعليمات البرمجية في هذا الوضع تشترك في نفس مساحة العنوان الافتراضية في الذاكرة. وهذا يعني أن وحدة المعالجة المركزية يمكنها التبديل بين تشغيل البرامج وقراءة وكتابة كل من ذاكرة kernel وذاكرة المستخدم.
تتضمن البرامج التي يتم تشغيلها في وضع kernel نظام التشغيل نفسه، والرمز المرتبط بالعملية وبعض برامج الأمانلا تتم حماية بيانات البرنامج التي يتم تشغيلها في هذا الوضع من التطبيقات الأخرى. إذا تعطل تطبيق في وضع kernel، فقد يؤثر ذلك سلبًا على التطبيقات الأخرى التي يتم تشغيلها في وضع kernel. على سبيل المثال، إذا تعطل برنامج تشغيل في وضع kernel، فقد يؤدي ذلك إلى إتلاف نظام التشغيل بالكامل.
وضع المستخدم مقابل وضع النواة
وضع المستخدم ووضع النواة هما حالتان لنظام التشغيل تعملان معًا ضمان أمن واستقرار أنظمة الكمبيوتر.
صفات | وضع المستخدم | وضع النواة |
تعريف | وضع نظام التشغيل المقيد لتشغيل كود التطبيق | الوضع المميز لوظائف نظام التشغيل الأساسية |
الوصول إلى الموارد | الوصول المحدود إلى موارد النظام والأجهزة | الوصول الكامل إلى موارد النظام والأجهزة |
الوصول إلى الذاكرة | لا يمكن الوصول إلى ذاكرة النواة بشكل مباشر؛ الكود معزول | الوصول غير المقيد إلى ذاكرة المستخدم والنواة؛ الكود غير معزول |
مستوى الامتياز | مستوى الامتياز المنخفض | مستوى امتياز أعلى |
غاية | تشغيل برامج غير تابعة للنظام، مثل التطبيقات | إدارة موارد النظام وفرض القيود |
الأمن والاستقرار | أقل أهمية للعمليات وأقل عواقب للأخطاء | أمر بالغ الأهمية لعمليات النظام ولكن عواقب الأخطاء أكبر |
كيف يعمل وضع المستخدم ووضع النواة معًا
تحتوي وحدة المعالجة المركزية على سجل يشير إلى الوضع الذي تعمل فيه وحدة المعالجة المركزية ـ إما وضع المستخدم أو وضع النواة. تبدأ وحدة المعالجة المركزية في وضع النواة ثم تقوم بتحميل وتشغيل نظام التشغيل. وفي النهاية ـ بناءً على أمر من المستخدم على سبيل المثال ـ يقوم نظام التشغيل بتحميل التعليمات اللازمة لتشغيل برنامج ما وإعداد الذاكرة اللازمة لتشغيل البرنامج. وقبل تنفيذ التعليمات، تقوم وحدة المعالجة المركزية بتغيير السجل للإشارة إلى أن وحدة المعالجة المركزية تعمل في وضع المستخدم. ثم تقوم وحدة المعالجة المركزية بتنفيذ البرنامج في وضع المستخدم، حيث يكون لديها مستوى آمن من القيود.
كيفية التحويل من وضع المستخدم إلى وضع النواة
تقتصر تطبيقات وضع المستخدم بشكل عام على موارد النظام الحرجة ولكنها تحتاج إلى الوصول إلى تلك الموارد في بعض السياقات. على سبيل المثال، عندما يحتاج برنامج إلى الوصول إلى جهاز أو تحديث إعدادات النظام، يقوم هذا البرنامج بإجراء مكالمة نظام تشير إلى الخدمة المحددة التي يتطلبها من النواة. تحتوي تعليمات مكالمة النظام على حماية للذاكرة تجعلها غير قابلة للتعديل أو القراءة بواسطة برامج وضع المستخدم. بعد مكالمة النظام، يتم إعادة تعيين وحدة المعالجة المركزية إلى وضع المستخدم.
ما هي البرامج التي تعمل في وضع المستخدم ووضع النواة؟
أي برنامج يقوم بتنفيذ إدارة الذاكرةعادةً ما يتم تشغيل إدارة العمليات أو إدارة الإدخال/الإخراج في وضع النواة. يتمتع أي برنامج في هذا الوضع بإمكانية الوصول الكامل إلى النظام وبالتالي يجب أن يكون موثوقًا به. بمجرد التشغيل، يجب أن يكون الكود الموجود في النواة أو الكود الجديد الذي يتم إدخاله في النواة موثوقًا به حتى لا يفسد الوظائف الأساسية للكمبيوتر.
إن استدعاءات النظام تعمل على تأسيس هذه الثقة. ورغم أن التطبيقات مثل معالجات النصوص يتم تنفيذها في وضع المستخدم، فإنها تستخدم استدعاءات النظام بانتظام للدخول إلى وضع النواة وتنفيذ العمليات التي تتضمن الأجهزة الطرفية والذاكرة. على سبيل المثال، إذا احتاج معالج النصوص إلى حفظ ملف، فإنه يحتاج إلى القيام بذلك من خلال استدعاء النظام لأنه يحتاج إلى كتابة بايتات على القرص. وينطبق نفس الشيء على الكتابة أو تحريك المؤشر ــ يحتاج البرنامج إلى التفاعل مع الأجهزة بطريقة ما ويحتاج إلى بعض الوصول على مستوى النواة للقيام بذلك.
يحدث مثال آخر على استدعاء النظام عندما يستمع برنامج لاتصالات الشبكة الواردة. تخبر استدعاء النظام مكدس الشبكة الخاص بالنواة بترتيب هياكل البيانات لتجهيزها لاستقبال الاتصالات الواردة في المستقبل. حزم الشبكة.
ما ورد أعلاه هو أمثلة لبرامج يتم تنفيذها في وضع المستخدم ولكنها تستخدم مكالمات النظام للوصول إلى وضع النواة. وهناك مثال آخر للبرامج التي تتطلب الوصول إلى النواة وهو برامج الأمان التابعة لجهات خارجية. ومن الأمثلة البارزة على ذلك مستشعر Falcon من CrowdStrike، الذي ينشر بانتظام تحديثات المحتوى إلى النواة لمساعدة البرنامج على اكتشاف التهديدات الجديدة. يقوم المستشعر بالتحقق من صحة المحتوى، مما يسمح له نظريًا بأداء وظيفته بأمان في النواة.
ومع ذلك، بسبب وجود خلل في محقق المحتوى، تم تمرير تحديث للمحتوى ببيانات بها مشكلات. وقد تسبب هذا في تعطل برنامج CrowdStrike. ولأن البرنامج ـ أو جزء منه على الأقل ـ كان موجودًا في النواة، فقد تعطلت أيضًا أجهزة Windows التي تلقت التحديث تمامًا. ويشير هذا المثال إلى أهمية تشغيل العمليات الموثوقة فقط في النواة.
Ben Lutkevich هو محرر موقع TechTarget Software Quality. في السابق، كان يكتب تعريفات وميزات لموقع Whatis.com.