مرجع
آخر الزيارات

خطأ الصفحة

990 كلمة•0 مشاهدة•🗒️ منذ 19 ساعة
باختصار: خطأ الصفحة في علوم الحوسبة هي رسالة خطأ تُصدرها وحدة إدارة الذاكرة عندما تحاول إحدى العمليات الوصول إلى صفحة ذاكرة دون تهيئة مناسبة. في هذه المقالة 6 أقسام: «خطأ الصفحة البسيط»، «الأنواع» و«حالات غير صالحة» وغيرها.
المحتويات
  1. خطأ الصفحة البسيط
  2. الأنواع
  3. حالات غير صالحة
  4. خطأ الصفحة غير الصالحة
  5. خطأ الصفحة الرئيسي
  6. التأثير على الأداء

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

خطأ الصفحة البسيط

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

الأنواع

  • يُمكن تقسيم أخطاء الصفحة بصورة عامة إلى ثلاثة أنواع على النحو التالي:
  • خطأ الصفحة البسيط
  • خطأ الصفحة الرئيسي
  • خطأ الصفحة غير الصالحة

حالات غير صالحة

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

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

خطأ الصفحة غير الصالحة

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

خطأ الصفحة الرئيسي

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

التأثير على الأداء

ومن ناحية أخرى، تُؤدي أخطاء الصفحات إلى تدهور أداء النظام وقد تتسبب في تباطؤ الاستجابة بشدة. يمكن أن تؤثر أخطاء الصفحات الكبيرة في الحواسيب التقليدية التي تستعمل محركات الأقراص الصلبة تأثيرًا كبيرًا على الأداء، حيث يبلغ متوسط زمن استجابة الدوران لمحرك الأقراص الصلبة النموذجي 3 مللي ثانية، وزمن البحث 5 مللي ثانية، وزمن نقل البيانات 0.05 مللي ثانية/صفحة. وبالتالي، يبلغ إجمالي زمن الترحيل قرابة 8 مللي ثانية (8000 ميكروثانية). أي أنه إذا كان زمن الوصول إلى الذاكرة 0.2 ميكروثانية، فإن خطأ الصفحة سيؤدي إلى إبطاء العملية بنحو 40000 مرة. أما في الأنظمة الحديثة التي تستعمل محركات أقراص الحالة الصلبة السريعة، والتي يبلغ زمن استجابة قراءة الصفحة فيها 0.030 مللي ثانية (30 ميكروثانية)، ويبلغ زمن استجابة الوصول إلى الذاكرة فيها 70 نانوثانية (0.070 ميكروثانية)، فإن خطأ الصفحة الرئيسي سوف يتسبب في إبطاء العملية بأكثر من 400 مرة.

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

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.