الوضع الحقيقي

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

قبل إدخال الوضع المحمي مع إصدار 80286 ، كان الوضع الحقيقي هو الوضع الوحيد المتاح لوحدات المعالجة المركزية x86؛ [ 1 ] وللتوافق مع الإصدارات السابقة ، تبدأ جميع وحدات المعالجة المركزية x86 في الوضع الحقيقي عند إعادة الضبط، على الرغم من أنه من الممكن محاكاة الوضع الحقيقي على أنظمة أخرى عند بدء التشغيل في أوضاع أخرى.

تاريخ

أدخلت بنية 80286 وضع الحماية ، مما أتاح (من بين أمور أخرى) حماية الذاكرة على مستوى العتاد. إلا أن استخدام هذه الميزات الجديدة استلزم نظام تشغيل جديدًا مصممًا خصيصًا لوضع الحماية. ولأن أحد المواصفات الأساسية لتصميم معالجات x86 هو توافقها التام مع البرامج المكتوبة لجميع رقاقات x86 السابقة، فقد صُممت رقاقة 286 لتبدأ في "الوضع الحقيقي" - أي في وضع يُعطّل ميزات حماية الذاكرة الجديدة، لكي تتمكن من تشغيل أنظمة التشغيل المكتوبة لرقاقات 8086 و 8088 . اعتبارًا من عام 2018، أصبحت وحدات المعالجة المركزية x86 الحالية (بما في ذلك وحدات x86-64 ) قادرة على تشغيل أنظمة التشغيل في الوضع الحقيقي، ويمكنها تشغيل البرامج المكتوبة لأي رقاقة x86 سابقة تقريبًا دون الحاجة إلى محاكاة أو تقنية افتراضية. في عام 2023، اقترحت إنتل إسقاط وضع الحماية من وحدات المعالجة المركزية المستقبلية في مواصفات X86S .

يعمل نظام BIOS الخاص بالحاسوب الشخصي ، الذي قدمته شركة IBM، في الوضع الحقيقي، كما هو الحال في أنظمة تشغيل DOS ( مثل MS-DOS و DR-DOS وغيرها). كانت الإصدارات الأولى من مايكروسوفت ويندوز تعمل في الوضع الحقيقي. أتاح نظام Windows/386 إمكانية استخدام الوضع المحمي جزئيًا، وقد تحقق ذلك بشكل كامل في ويندوز 3.0 ، الذي كان بإمكانه العمل إما في الوضع الحقيقي أو استخدام الوضع المحمي كما في Windows/386. في الواقع، احتوى ويندوز 3.0 على عدة أوضاع: "الوضع الحقيقي" و"الوضع القياسي" و"الوضع المُحسَّن لمعالج 386"؛ تطلب الأخير بعض ميزات المحاكاة الافتراضية لمعالج 80386، وبالتالي لم يكن يعمل على معالج 80286. أزال ويندوز 3.1 دعم الوضع الحقيقي، وكان أول بيئة تشغيل شائعة تتطلب معالج 80286 على الأقل. لا يمكن اعتبار أي من هذه الإصدارات نظام تشغيل x86 حديثًا، لأنها كانت تنتقل إلى الوضع المحمي فقط لبعض الوظائف. تُعتبر أنظمة التشغيل Unix و Linux و OS/2 و Windows NT أنظمة تشغيل حديثة، إذ تُفعّل وضع الحماية عند بدء التشغيل، ولا تعود إلى الوضع الحقيقي، وتُوفر جميع مزايا وضع الحماية بشكل دائم. أما أنظمة التشغيل 64 بت، فتستخدم الوضع الحقيقي فقط عند بدء التشغيل، وبعدها يُفعّل نواة النظام وضع التشغيل الطويل . [ 2 ] والجدير بالذكر أن وضع الحماية في معالج 80286 أبسط بكثير من وضع الحماية المُحسّن الذي طُرح مع معالج 80386؛ ويُطلق على الأخير أحيانًا اسم وضع الحماية 386، وهو الوضع الذي تعمل به أنظمة التشغيل x86 الحديثة 32 بت.

معالجة القدرة

تحتوي معالجات 8086 و8088 و 80186 على ناقل عناوين بطول 20 بت، إلا أن نظام العنونة المجزأة غير المألوف الذي اختارته إنتل لهذه المعالجات ينتج عناوين فعالة قد يصل طولها إلى 21 بتًا. يقوم هذا النظام بإزاحة رقم مقطع بطول 16 بت إلى اليسار بمقدار أربعة بتات (ليصبح رقمًا بطول 20 بتًا مع أربعة أصفار ذات أهمية أقل) قبل إضافة إزاحة عنوان بطول 16 بتًا إليه؛ ويتحقق المجموع الأقصى عندما يكون كل من المقطع والإزاحة 0xFFFF، مما ينتج عنه 0xFFFF0 + 0xFFFF = 0x10FFEF. في معالجات 8086 و8088 و80186، ينتج عن تجاوز العنوان الفعال 20 بتًا أن العنوان "يلتف" إلى نهاية نطاق العنوان الصفرية، أي أنه يُحسب بتردد 2^20 (2^20 = 1048576 = 0x100000). مع ذلك، يمتلك معالج 80286 أربعة وعشرين بتًا للعناوين، ويحسب العناوين الفعلية حتى أربعة وعشرين بتًا حتى في الوضع الحقيقي. لذا، بالنسبة للقطاع 0xFFFF والإزاحة الأكبر من 0x000F، سيصل معالج 80286 فعليًا إلى بداية الميغابايت الثاني من الذاكرة، بينما سيصل معالج 80186 والإصدارات الأقدم إلى عنوان يساوي [الإزاحة]-0x10، وهو بداية الميغابايت الأول. (لاحظ أنه في معالج 80186 والإصدارات الأقدم، يمثل الكيلوبايت الأول من مساحة العناوين، بدءًا من العنوان 0، الموقع الدائم وغير القابل للتغيير لجدول متجه المقاطعة). بالتالي، فإن مقدار الذاكرة الفعلي الذي يمكن معالجته بواسطة معالجات x86 من طراز 80286 والإصدارات الأحدث في الوضع الحقيقي هو 1 ميغابايت + 64 كيلوبايت - 16 بايت = 1,114,096 بايت.

خط A20

صُممت بعض البرامج التي سبقت معالج 80286 للاستفادة من خاصية العنونة الالتفافية (modulo) للذاكرة، مما شكّل تحديًا للتوافق مع الإصدارات السابقة. يؤدي إجبار خط العنوان الحادي والعشرين ( سلك الإشارة المنطقية الخارج من الشريحة) على مستوى منطقي منخفض، ما يُمثل الصفر، إلى تأثير modulo-2^20 لمطابقة حسابات العناوين في المعالجات السابقة، إلا أن معالج 80286 لا يمتلك القدرة الداخلية على أداء هذه الوظيفة. عندما استخدمت شركة IBM معالج 80286 في جهاز IBM PC/AT ، حلت هذه المشكلة بإضافة بوابة قابلة للبرمجة لتمكين أو تعطيل (إجبار) خط العنوان A20، بين طرف A20 في معالج 80286 وناقل النظام؛ تُعرف هذه البوابة باسم Gate-A20 (بوابة A20)، ولا تزال تُستخدم في شرائح أجهزة الكمبيوتر الشخصية حتى اليوم. كانت معظم إصدارات برنامج تشغيل الذاكرة الموسعة HIMEM.SYS لأنظمة IBM/MS-DOS تعرض عند التحميل رسالةً تُفيد بتثبيت "معالج A20"، وهو برنامج يتحكم في بوابة A20 ويُنسقها وفقًا لاحتياجات البرامج. في الوضع المحمي، يجب تفعيل خط A20، وإلا ستحدث أخطاء في العنونة الفيزيائية، مما قد يؤدي إلى تعطل النظام. تستخدم برامج الإقلاع القديمة الحديثة (مثل GNU GRUB ) خط A20. [ 3 ]

التبديل إلى الوضع الحقيقي

أدخلت إنتل الوضع المحمي إلى عائلة معالجات x86 بهدف تشغيل أنظمة التشغيل التي تستخدمه بالكامل في هذا الوضع، وتشغيل جميع البرامج التي تعمل ضمن نظام تشغيل بالوضع المحمي فيه أيضًا. ونظرًا للاختلافات الجوهرية بين الوضع الحقيقي وحتى الوضع المحمي المحدود نسبيًا في معالجات 286، فإن البرامج المصممة للوضع الحقيقي لا يمكن تشغيلها في الوضع المحمي دون إعادة كتابتها. لذلك، ومع وجود قاعدة واسعة من تطبيقات الوضع الحقيقي التي يعتمد عليها المستخدمون، شكّل التخلي عن هذا الوضع مشكلةً للصناعة، وسعى المبرمجون إلى إيجاد طريقة للتبديل بين الوضعين حسب الحاجة. ومع ذلك، وتماشيًا مع نواياها لاستخدام المعالج، وفّرت إنتل طريقة سهلة للتبديل إلى الوضع المحمي في معالج 80286، لكنها لم توفّر طريقة سهلة للعودة إلى الوضع الحقيقي. قبل معالج 386، كانت الطريقة الوحيدة للتبديل من الوضع المحمي إلى الوضع الحقيقي هي إعادة تشغيل المعالج. بعد إعادة التشغيل، يبدأ المعالج دائمًا في الوضع الحقيقي لضمان التوافق مع معالجات x86 السابقة وصولًا إلى معالج 8086. لا تؤدي إعادة تشغيل المعالج إلى مسح ذاكرة الوصول العشوائي (RAM) للنظام، لذا فإن هذه الطريقة، على الرغم من كونها غير عملية وغير فعالة، إلا أنها ممكنة. من الوضع المحمي، تُحفظ حالة المعالج في الذاكرة، ثم يُعاد تشغيل المعالج، ويُعاد تشغيله في الوضع الحقيقي، ويُنفذ بعض التعليمات البرمجية الخاصة بالوضع الحقيقي لاستعادة الحالة المحفوظة من الذاكرة. يمكنه بعد ذلك تشغيل تعليمات برمجية أخرى خاصة بالوضع الحقيقي حتى يصبح البرنامج جاهزًا للعودة إلى الوضع المحمي. يُعد الانتقال إلى الوضع الحقيقي مكلفًا من حيث الوقت، لكن هذه التقنية تسمح لبرامج الوضع المحمي باستخدام خدمات مثل BIOS، الذي يعمل بالكامل في الوضع الحقيقي (حيث صُمم في الأصل لجهاز IBM الشخصي طراز 5150 القائم على معالج 8088 ). تُستخدم تقنية تبديل الوضع هذه أيضًا بواسطة DPMI (في ظل نظام DOS الحقيقي، وليس المُحاكى) وموسعات DOS مثل DOS/4GW للسماح لبرامج الوضع المحمي بالعمل في ظل نظام DOS. يقوم نظام DPMI أو موسع DOS بالتبديل إلى الوضع الحقيقي لاستدعاء DOS أو BIOS، ثم يعود إلى برنامج التطبيق الذي يعمل في الوضع المحمي.

انخفاض

مع ازدياد شعبية إصدارات ويندوز المبنية على نواة NT (التي تتجاوز وضع التشغيل الحقيقي عند بدء التشغيل)، تراجعت الحاجة إلى إعادة تشغيل الكمبيوتر في وضع التشغيل الحقيقي لاستخدام MS-DOS بعد ويندوز 3.1x ، إلى أن توقف دعمه في ويندوز ME . الطريقة الوحيدة لتشغيل تطبيقات DOS التي تتطلب وضع التشغيل الحقيقي من داخل الإصدارات الأحدث من ويندوز هي استخدام برامج محاكاة مثل DOSBox أو منتجات المحاكاة الافتراضية x86 .

انظر أيضاً

مراجع

  1. "مرجع معالج x86 (مؤرشف بتاريخ 8 سبتمبر 2018 - بدلاً من 'نبذة تاريخية عن x86'  : alasir.com/x86ref  : 403 ممنوع الوصول إليه في 24 مارس 2023)" . مؤرشف من الأصل بتاريخ 8 سبتمبر 2018. تم الاطلاع عليه بتاريخ 24 مارس 2023 .{{cite web}}: CS1 maint: bot: حالة عنوان URL الأصلي غير معروفة ( رابط )
  2. "التمهيد · لينكس إنسايد" . 0xax.gitbooks.io . تم ​​الاطلاع عليه بتاريخ 10 نوفمبر 2020 .
  3. "A20 Line - OSDev Wiki" . wiki.osdev.org . مؤرشف من الأصل في 16 سبتمبر 2020. تم الاطلاع عليه في 10 سبتمبر 2020 .