استثناء فحص الآلة

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

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

إعداد التقارير

أنظمة تشغيل الحواسيب المركزية من IBM

يسجل نظام التشغيل IBM System/360 ( OS/360 ) أخطاء الإدخال/الإخراج في مجموعة بيانات تُسمى SYS1.LOGREC. ومنذ ذلك الحين، صاغت IBM مصطلح مجموعة بيانات تسجيل الأخطاء ( ERDS ) للإصدارات اللاحقة التي تسمح للمثبّت باختيار الاسم، ولأنظمة التشغيل غير المشتقة من OS/360. [ 1 ]

نظام التشغيل OS/360

في نظام التشغيل OS/360، يمكن للمثبّت اختيار مستويات دعم متعددة لمعالجة فحوصات الأجهزة. المستوى الأكثر تطورًا، وهو معالج فحص الأجهزة (MCH)، يسجل بيانات الأعطال في ملف SYS1.LOGREC ويحاول استعادتها. يمكن للمثبّت طباعة هذه البيانات باستخدام أداة المساعدة EREP (برنامج تحرير وطباعة السجلات البيئية) أو الإصدار المستقل SEREP. يستطيع معالج فحص الأجهزة (MCH) معالجة أعطال الذاكرة في أقسام التحكم الأساسية القابلة للتحديث عن طريق قراءة نسخة جديدة من ملف SYS1.ASRLIB، كما يستطيع معالجة أخطاء الذاكرة في مناطق SVC العابرة عن طريق قراءة نسخة جديدة من وحدة SVC من ملف SYS1.SVCLIB.

z/OS

في نظام z/OS، يمكن للتثبيت استخدام ERDS أو تعريف دفق سجل az/OS System Logger [ 2 ] لحفظ بيانات الأخطاء. وكما هو الحال في نظام OS/360، يستخدم التثبيت EREP لعرض هذه البيانات؛ ولم يعد SEREP متاحًا. لم يعد MCH اختياريًا، وهو يدعم أنماط فشل أكثر بكثير من MCH في نظام OS/360.

مايكروسوفت ويندوز

في منصات مايكروسوفت ويندوز ، في حالة حدوث خطأ MCE غير قابل للاسترداد، يقوم النظام بإنشاء BugCheck - ويسمى أيضًا خطأ STOP أو شاشة الموت الزرقاء .

تستخدم الإصدارات الأحدث من نظام التشغيل ويندوز بنية أخطاء الأجهزة في ويندوز (WHEA)، وتُصدر رمز التوقف 0x124، WHEA_UNCORRECTABLE_ERROR. تختلف المعلمات الأربع (بين قوسين)، لكن الأولى منها تكون دائمًا 0x0 في حالة خطأ MCE. [ 3 ] مثال:

 توقف: 0x00000124 (0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000)

تستخدم الإصدارات القديمة من نظام التشغيل ويندوز بنية فحص الجهاز ، مع رمز التوقف 0x9C، MACHINE_CHECK_EXCEPTION. [ 4 ] مثال:

 توقف: 0x0000009C (0x00000030, 0x00000002, 0x00000001, 0x80003CBA)

لينكس

في نظام لينكس ، تُسجّل النواة رسائل حول أخطاء تصحيح الأخطاء الرئيسية (MCEs) في سجل رسائل النواة ووحدة تحكم النظام . وعندما لا تكون هذه الأخطاء حرجة، تُنسخ عادةً إلى سجل النظام و/أو سجل systemd . في بعض الأنظمة، قد تُبلّغ أخطاء تصحيح الأخطاء (ECC) وغيرها من الأخطاء القابلة للتصحيح عبر وظائف تصحيح الأخطاء الرئيسية. [ 5 ]

مثال:

 وحدة المعالجة المركزية 0: استثناء فحص الجهاز: 0000000000000004 البنك 2: f200200000000863 خطأ في النواة: سياق وحدة المعالجة المركزية تالف

أنواع المسائل

تتضمن بعض مشاكل الأجهزة الرئيسية التي تسبب أخطاء MCE ما يلي:

الأسباب المحتملة

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

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

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

فك تشفير MCEs

بالنسبة لمعالجات IA-32 و Intel 64، راجع دليل مطوري البرامج الخاص ببنية Intel 64 و IA-32 [ 7 ] الفصل 15 (بنية فحص الآلة)، أو مقالة قاعدة معارف Microsoft حول استثناءات Windows. [ 8 ]

برامج لفك تشفير رموز Intel و AMD MCEs

  • rasdaemon [ 9 ] هي أداة تسجيل RAS ( الموثوقية، والتوافر، وقابلية الخدمة ) لنظام لينكس . تسجل هذه الأداة أخطاء الذاكرة باستخدام أحداث تتبع EDAC. EDAC هو نظام فرعي في نواة لينكس يتولى اكتشاف أخطاء تصحيح الأخطاء (ECC) من وحدات تحكم الذاكرة لمعظم الشرائح على معماريتي i386 و x86_64. كما تتوفر برامج تشغيل EDAC لمعماريات أخرى مثل ARM. يُنصح باستخدام rasdaemon لجمع معلومات MCE على أنظمة لينكس لأن mcelog أصبح قديمًا منذ عام 2017. [ 10 ] [ 11 ] [ 12 ] [ 13 ]
  • mcelog [ 14 ] هو برنامج يعمل في نظام لينكس، من تطوير أندي كلين، لمعالجة عمليات التحقق من سلامة النظام (MCEs) لمعالجات x86. كما يمكن لـ mcelog فك تشفير عمليات التحقق من سلامة النظام. يُعتبر mcelog قديمًا وظيفيًا اعتبارًا من عام 2017. [ 12 ] [ 13 ] ويُعدّ rasdaemon البديل لـ mcelog في أنظمة لينكس. [ 10 ] [ 11 ]
  • parsemce [ 15 ] هو برنامج Linux من تطوير Dave Jones لفك تشفير MCEs من معالجات AMD K7 .
  • برنامج mced [ 16 ] (mcedaemon) هو برنامج لينكس من تطوير تيم هوكين، يُستخدم لجمع بيانات MCE من نواة النظام وتنبيه التطبيقات المهتمة. تجدر الإشارة إلى أنه لا يحاول تفسير بيانات MCE، بل يقوم فقط بتنبيه البرامج الأخرى.
  • mcat هو برنامج سطر أوامر لنظام التشغيل Windows من AMD لفك تشفير MCEs من معالجات AMD K8 ، Family 0x10 و 0x11 .

انظر أيضاً

مراجع

  1. "الفصل 1. مقدمة عن برنامج EREP" (ملف PDF) . برنامج تحرير وطباعة السجلات البيئية (EREP) 3.5 - دليل المستخدم (ملف PDF) . شركة IBM . 30 سبتمبر 2021. ص  1. GC35-0151-50 . تم الاطلاع عليه في 20 فبراير 2023 .
  2. دليل مبرمج النظام إلى: مسجل نظام z/OS (ملف PDF) . الكتب الحمراء ( الطبعة الثانية). IBM . يوليو 2007. SG24-6898-01 . تم الاطلاع عليه في 20 فبراير 2023 . 
  3. "خطأ فحص الأخطاء 0x124: WHEA_UNCORRECTABLE_ERROR" . مايكروسوفت. 2022-11-03 . تم الاطلاع عليه بتاريخ 2022-12-11 .
  4. "خطأ فحص النظام 0x9C: MACHINE_CHECK_EXCEPTION" . مايكروسوفت. 14-12-2021 . تم الاطلاع عليه بتاريخ 11-12-2022 .
  5. "لا يعمل mcelog مع معالجات AMD من العائلة 16 وما فوق على نظام SLES11 SP3" . SuSE. 27-09-2022 . تم الاطلاع عليه بتاريخ 11-12-2022 .
  6. "تحذير" (ملف PDF) . مبادئ تشغيل بنية z (ملف PDF) ( الطبعة الخامسة عشرة). شركة IBM . أبريل 2025. الصفحات 11-17 . SA22-7832-14 . تاريخ الاسترجاع: 3 يوليو 2025 .  
  7. "بنية فحص الآلة" . دليل مطوري البرامج لبنى Intel® 64 و IA-32، المجلد 3ب: دليل برمجة النظام، الجزء 2. شركة Intel . نوفمبر 2018.
  8. "رسالة خطأ التوقف في نظام التشغيل Windows XP التي قد تتلقاها: "0x0000009C (0x00000004, 0x00000000, 0xb2000000, 0x00020151)"" . MSDN . 2015-12-07 . تم الاطلاع عليه بتاريخ 2017-07-13 .
  9. ماورو كارفاليو شهاب (mchehab) (2023-02-20). "rasdaemon هي أداة تسجيل RAS (الموثوقية والتوافر وقابلية الخدمة)" . github.com . تم الاطلاع عليه بتاريخ 2023-02-20 .
  10. 1 2 "استثناء فحص الجهاز" . wiki.archlinux.org . 2021-05-08 . تم الاسترجاع في 2023-02-21 .
  11. 1 2 "ECC RAM" . wiki.gentoo.org . 2022-12-30 . تم الاطلاع عليه بتاريخ 2023-02-21 .
  12. 1 2 "x86/mce: استبعاد برنامج تشغيل /dev/mcelog وإيقاف استخدامه" . git.kernel.org . 2017-03-28 . تم الاطلاع عليه بتاريخ 2023-02-21 .
  13. 1 2 "x86/mce: فصل برنامج تشغيل /dev/mcelog وإيقاف استخدامه" . github.com/torvalds/linux/ . 2017-03-28 . تم الاطلاع عليه بتاريخ 2023-02-21 .
  14. "mcelog: معالجة متقدمة لأخطاء الأجهزة لنظام لينكس x86" . 2015-04-20 . تم الاطلاع عليه بتاريخ 2017-07-13 .
  15. "parsemce: محلل معالج استثناءات فحص آلة لينكس" . 22-07-2003 . تم الاسترجاع في 13-07-2017 .
  16. mcedaemon على GitHub