الوضع المحمي
في مجال الحوسبة، يُعدّ الوضع المحمي ، أو ما يُسمى أيضًا بوضع العناوين الافتراضية المحمية ، [ 1 ] وضع تشغيل لوحدات المعالجة المركزية المتوافقة مع معمارية x86 . يسمح هذا الوضع لبرامج النظام باستخدام ميزات مثل التجزئة ، والذاكرة الافتراضية ، والتقسيم إلى صفحات، وتعدد المهام الآمن، المصممة لزيادة تحكم نظام التشغيل في برامج التطبيقات . [ 2 ] [ 3 ]
عند تشغيل معالج يدعم وضع الحماية x86، يبدأ بتنفيذ التعليمات في الوضع الحقيقي ، وذلك للحفاظ على التوافق مع معالجات x86 السابقة. [ 4 ] لا يمكن الدخول إلى وضع الحماية إلا بعد أن يقوم برنامج النظام بإنشاء جدول وصفي واحد وتفعيل بت تمكين الحماية (PE) في سجل التحكم 0 (CR0). [ 5 ]
تمت إضافة الوضع المحمي لأول مرة إلى بنية x86 في عام 1982، [ 6 ] مع إصدار معالج Intel 80286 ( 286 )، وتم توسيعه لاحقًا مع إصدار 80386 (386) في عام 1985. [ 7 ] نظرًا للتحسينات التي أضافها الوضع المحمي، فقد تم اعتماده على نطاق واسع وأصبح الأساس لجميع التحسينات اللاحقة لبنية x86 (IA-32)، [ 8 ] على الرغم من أن العديد من تلك التحسينات، مثل التعليمات المضافة والسجلات الجديدة، جلبت أيضًا فوائد للوضع الحقيقي.
تاريخ
كان أول معالج x86، وهو إنتل 8086 ، مزودًا بناقل عناوين 20 بت للذاكرة ، وكذلك معالج إنتل 8088. [ 9 ] وقد مكّن هذا المعالجين من الوصول إلى 2^ 20 بايت من الذاكرة، أي ما يعادل 1 ميجابايت . [ 9 ] في ذلك الوقت، كان 1 ميجابايت يُعتبر سعة ذاكرة كبيرة نسبيًا، [ 10 ] لذا خصص مصممو حاسوب IBM الشخصي أول 640 كيلوبايت للتطبيقات ونظام التشغيل، والـ 384 كيلوبايت المتبقية لنظام الإدخال/الإخراج الأساسي ( BIOS ) وذاكرة الأجهزة الإضافية . [ 11 ]
مع انخفاض تكلفة الذاكرة وزيادة استخدامها، أصبح قيد 1 ميجابايت مشكلة كبيرة. وقد سعت شركة إنتل إلى حل هذا القيد، إلى جانب قيود أخرى، بإصدار معالج 286. [ 11 ]
الـ 286
لم يُستخدم الوضع المحمي الأولي، الذي صدر مع معالج 286، على نطاق واسع؛ [ 11 ] فعلى سبيل المثال، استُخدم في أنظمة كوهيرنت (من عام 1982)، [ 12 ] ومايكروسوفت زينكس (حوالي عام 1984)، [ 13 ] ومينيكس . [ 14 ] وقد حالت عدة عيوب، مثل عدم القدرة على إجراء استدعاءات BIOS و DOS بسبب عدم إمكانية العودة إلى الوضع الحقيقي دون إعادة تشغيل المعالج، دون انتشار استخدامه على نطاق واسع. [ 15 ] كما أعاق قبوله حقيقة أن معالج 286 كان يسمح بالوصول إلى الذاكرة على شكل مقاطع بحجم 64 كيلوبايت ، يتم الوصول إليها بواسطة سجلات المقاطع الأربعة، مما يعني أنه لا يمكن الوصول إلا إلى 4 × 64 كيلوبايت ، أي ما يعادل 256 كيلوبايت، في المرة الواحدة. [ 11 ] لأن تغيير سجل القطاع في الوضع المحمي تسبب في تحميل واصف قطاع بحجم 6 بايت في وحدة المعالجة المركزية من الذاكرة، استغرقت تعليمات تحميل سجل القطاع عشرات دورات المعالج، مما جعلها أبطأ بكثير مما كانت عليه في 8086 و8088؛ لذلك، أصبحت استراتيجية حساب عناوين القطاعات أثناء التشغيل للوصول إلى هياكل البيانات الأكبر من 128 كيلوبايت (الحجم الإجمالي لقطاعي البيانات) غير عملية، حتى بالنسبة للمبرمجين القلائل الذين أتقنوها على 8086 و8088.
حافظ المعالج 286 على التوافق مع المعالجين 8086 و8088 من خلال دخوله وضع التشغيل الحقيقي عند بدء التشغيل. [ 4 ] كان وضع التشغيل الحقيقي يعمل بشكل مطابق تقريبًا للمعالجين 8086 و8088، مما سمح بتشغيل غالبية البرامج الموجودة لتلك المعالجات دون تعديل على المعالج 286 الأحدث. كما كان وضع التشغيل الحقيقي بمثابة وضع أساسي لإعداد المعالج والبدء في وضع التشغيل المحمي. للوصول إلى الوظائف الموسعة للمعالج 286، كان نظام التشغيل يُنشئ جداول في الذاكرة تتحكم في الوصول إلى الذاكرة في وضع التشغيل المحمي، ويُعيّن عناوين تلك الجداول في سجلات خاصة بالمعالج، ثم يُفعّل وضع التشغيل المحمي. هذا يُتيح عنونة 24 بت، مما يسمح للمعالج بالوصول إلى 2^ 24 بايت من الذاكرة، أي ما يعادل 16 ميجابايت . [ 9 ]
الـ 386

مع إصدار معالج 386 عام 1985، [ 7 ] تمّت معالجة العديد من المشكلات التي كانت تحول دون انتشار استخدام الوضع المحمي السابق على نطاق واسع. [ 11 ] صدر معالج 386 بحجم ناقل عناوين يبلغ 32 بت، مما يسمح بالوصول إلى 2^ 32 بايت من الذاكرة، أي ما يعادل 4 جيجابايت . [ 16 ] كما تمّت زيادة أحجام القطاعات إلى 32 بت، مما يعني إمكانية الوصول إلى مساحة العناوين الكاملة البالغة 4 جيجابايت دون الحاجة إلى التبديل بين قطاعات متعددة. [ 16 ] بالإضافة إلى زيادة حجم ناقل العناوين وسجلات القطاعات، أُضيفت العديد من الميزات الجديدة الأخرى بهدف تعزيز أمان التشغيل واستقراره. [ 17 ] يُستخدم الوضع المحمي الآن في جميع أنظمة التشغيل الحديثة تقريبًا التي تعمل على بنية x86، مثل مايكروسوفت ويندوز ولينكس وغيرها الكثير. [ 18 ]
علاوة على ذلك، واستنادًا إلى الدروس المستفادة من إخفاقات وضع الحماية 286 في تلبية احتياجات تطبيقات DOS متعددة المهام، أضافت إنتل وضع 8086 افتراضيًا منفصلاً ، [ 19 ] مما سمح بمحاكاة معالجات 8086 افتراضية متعددة على معالج 386. ومع ذلك، كان على تقنية المحاكاة الافتراضية للأجهزة x86 اللازمة لمحاكاة وضع الحماية نفسه أن تنتظر 20 عامًا أخرى. [ 20 ]
386 إضافة إلى الوضع المحمي
مع إصدار جهاز 386، تمت إضافة الميزات الإضافية التالية إلى الوضع المحمي: [ 2 ]
- الترحيل
- مساحة عناوين فعلية وافتراضية 32 بت (مساحة العناوين الفعلية 32 بت غير موجودة في 80386SX ، ومتغيرات معالج 386 الأخرى التي تستخدم ناقل 286 الأقدم. [ 21 ] )
- إزاحات القطاعات 32 بت
- إمكانية العودة إلى الوضع الحقيقي دون إعادة ضبط النظام
- وضع 8086 الافتراضي
الدخول والخروج من الوضع المحمي
قبل إصدار معالج 386، لم يكن الوضع المحمي يوفر طريقة مباشرة للعودة إلى الوضع الحقيقي بعد الدخول إليه. ابتكرت شركة IBM حلاً بديلاً (تم تنفيذه في IBM AT ) يتضمن إعادة ضبط وحدة المعالجة المركزية عبر وحدة تحكم لوحة المفاتيح وحفظ سجلات النظام ومؤشر المكدس ، وغالبًا قناع المقاطعة، في ذاكرة الوصول العشوائي (RAM) لشريحة ساعة الوقت الحقيقي. سمح هذا لنظام الإدخال والإخراج الأساسي (BIOS) باستعادة وحدة المعالجة المركزية إلى حالة مشابهة وبدء تنفيذ التعليمات البرمجية قبل إعادة الضبط. لاحقًا، تم استخدام خطأ ثلاثي لإعادة ضبط وحدة المعالجة المركزية 286، وهو ما كان أسرع وأكثر كفاءة من طريقة وحدة تحكم لوحة المفاتيح.
للدخول إلى الوضع المحمي، يجب أولاً إنشاء جدول الواصفات العامة (GDT) بثلاثة مدخلات على الأقل: واصف فارغ، وواصف مقطع التعليمات البرمجية، وواصف مقطع البيانات. بعد ذلك، يجب ضبط بت PE في سجل CR0، وإجراء قفزة بعيدة لمسح قائمة انتظار الإدخال المسبق . [ 22 ] [ 23 ] كذلك، في جهاز متوافق مع IBM، لتمكين وحدة المعالجة المركزية من الوصول إلى كامل مساحة العناوين البالغة 16 ميجابايت (بدلاً من 8 ميجابايتات زوجية فقط)، يجب تفعيل خط A20 (خط العنوان الحادي والعشرين). (يتم تعطيل A20 عند بدء التشغيل، مما يؤدي إلى ربط كل ميجابايت فردي من مساحة العناوين بالميجابايت الزوجي السابق، لضمان التوافق مع البرامج القديمة المصممة لأجهزة IBM PC و PC/XT التي تعمل بمعالجات Intel 8088). [ 24 ] تفعيل A20 ليس شرطًا أساسيًا للتشغيل في الوضع المحمي. ستعمل وحدة المعالجة المركزية بشكل طبيعي في الوضع المحمي مع تعطيل A20، ولكن بدون القدرة على الوصول إلى نصف عناوين الذاكرة.
برنامج MASM؛ الدخول إلى الوضع المحمي (ضبط بت PE) mov EBX , CR0 ; حفظ سجل التحكم 0 (CR0) في EBX أو EBX , PE_BIT ; ضبط بت PE باستخدام عملية OR، وحفظه في EBX mov CR0 , EBX ; حفظ EBX مرة أخرى في CR0مسح قائمة الجلب المسبق؛ (باستخدام تعليمة القفز البعيد jmp) jmp CLEAR_LABEL CLEAR_LABEL:مع إصدار 386، أصبح من الممكن الخروج من الوضع المحمي عن طريق تحميل سجلات القطاعات بقيم الوضع الحقيقي، وتعطيل خط A20 ومسح بت PE في سجل CR0، دون الحاجة إلى تنفيذ خطوات الإعداد الأولية المطلوبة مع 286. [ 25 ]
سمات
يحتوي الوضع المحمي على عدد من الميزات المصممة لتعزيز تحكم نظام التشغيل في برامج التطبيقات، بهدف زيادة الأمان واستقرار النظام. [ 3 ] تسمح هذه الإضافات لنظام التشغيل بالعمل بطريقة يصعب تحقيقها أو حتى يستحيل تنفيذها بدون دعم مناسب من الأجهزة. [ 26 ]
مستويات الامتياز

في الوضع المحمي، توجد أربعة مستويات امتياز أو حلقات ، مرقمة من 0 إلى 3، حيث تمثل الحلقة 0 أعلى مستوى امتياز، بينما تمثل الحلقة 3 أدنى مستوى. يتيح استخدام الحلقات لبرامج النظام تقييد وصول المهام إلى البيانات، أو استدعاء البوابات ، أو تنفيذ التعليمات ذات الامتيازات. [ 27 ] في معظم البيئات، يعمل نظام التشغيل وبعض برامج تشغيل الأجهزة في الحلقة 0، بينما تعمل التطبيقات في الحلقة 3. [ 27 ]
توافق التطبيقات في الوضع الحقيقي
وفقًا لدليل مرجع مبرمج Intel 80286 ، [ 28 ]
يظل المعالج 80286 متوافقًا مع معظم برامج التطبيقات الخاصة بالمعالجين 8086 و80186. ويمكن إعادة تجميع معظم برامج التطبيقات الخاصة بالمعالج 8086 وتشغيلها على المعالج 80286 في الوضع المحمي.
في معظم الأحيان، كانت التوافقية الثنائية مع التعليمات البرمجية في الوضع الحقيقي، والقدرة على الوصول إلى ما يصل إلى 16 ميجابايت من الذاكرة الفعلية، و1 جيجابايت من الذاكرة الافتراضية ، أبرز التغييرات التي طرأت على مبرمجي التطبيقات. [ 29 ] لم يكن هذا التغيير خاليًا من القيود. فإذا استخدم تطبيق ما أيًا من التقنيات التالية أو اعتمد عليها، فلن يعمل: [ 30 ]
- حساب القطع
- تعليمات خاصة
- الوصول المباشر إلى الأجهزة
- الكتابة إلى جزء من التعليمات البرمجية
- تنفيذ البيانات
- أجزاء متداخلة
- استخدام وظائف BIOS، نظرًا لأن مقاطعات BIOS محجوزة من قبل Intel [ 31 ]
في الواقع، انتهكت جميع برامج تطبيقات DOS تقريبًا هذه القواعد. [ 32 ] ونظرًا لهذه القيود، تم تقديم وضع 8086 الافتراضي مع معالج 386. وعلى الرغم من هذه النكسات المحتملة، يمكن لنظام التشغيل Windows 3.0 والإصدارات اللاحقة الاستفادة من التوافق الثنائي مع الوضع الحقيقي لتشغيل العديد من تطبيقات Windows 2.x ( Windows 2.0 و Windows 2.1x ) في الوضع المحمي، والتي كانت تعمل في الوضع الحقيقي في Windows 2.x. [ 33 ]
وضع 8086 الافتراضي
مع إصدار معالج 386، يوفر الوضع المحمي ما تسميه كتيبات إنتل " وضع 8086 الافتراضي" . صُمم وضع 8086 الافتراضي للسماح بتشغيل التعليمات البرمجية المكتوبة مسبقًا لمعالج 8086 دون تعديل وبالتزامن مع مهام أخرى، دون المساس بالأمان أو استقرار النظام. [ 34 ]
مع ذلك، لا يتوافق وضع 8086 الافتراضي تمامًا مع جميع البرامج. فالبرامج التي تتطلب معالجة المقاطع، أو تعليمات ذات امتيازات خاصة، أو الوصول المباشر إلى المكونات المادية، أو استخدام تعليمات برمجية ذاتية التعديل، ستُنتج استثناءً يجب على نظام التشغيل معالجته. [ 35 ] إضافةً إلى ذلك، تُنتج التطبيقات التي تعمل في وضع 8086 الافتراضي خطأً عند استخدام تعليمات تتضمن عمليات الإدخال/الإخراج ، مما قد يؤثر سلبًا على الأداء. [ 36 ]
بسبب هذه القيود، لا يمكن تشغيل بعض البرامج المصممة أصلاً للعمل على معالج 8086 في وضع 8086 الافتراضي. ونتيجةً لذلك، يُضطر نظام التشغيل إما إلى التنازل عن أمان النظام أو عن التوافق مع الإصدارات السابقة عند التعامل مع البرامج القديمة . ومن الأمثلة على هذا التنازل إصدار نظام التشغيل Windows NT ، الذي ألغى التوافق مع الإصدارات السابقة لتطبيقات DOS "غير المتوافقة". [ 37 ]
معالجة القطاعات
الوضع الحقيقي
في الوضع الحقيقي، يشير كل عنوان منطقي مباشرةً إلى موقع ذاكرة فعلي. يتكون كل عنوان منطقي من جزأين، كل منهما 16 بت : جزء المقطع، الذي يحتوي على العنوان الأساسي لمقطع بحجم 16 بايت، أي أن المقطع قد يبدأ من العنوان الفعلي 0، 16، 32، ...، 2 ^20 - 16. أما جزء الإزاحة، فيحتوي على إزاحة داخل المقطع، أي يمكن حساب العنوان الفعلي كالتالي: العنوان الفعلي = جزء المقطع × 16 + الإزاحة، إذا كان خط العنوان A20 مُفعّلاً، أو (جزء المقطع × 16 + الإزاحة) mod 2^ 20 ، إذا كان A20 مُعطّلاً. يبلغ حجم كل مقطع 2 ^16 بايت.
الوضع المحمي
في الوضع المحمي، يُستبدل جزء المقطع بمحدد 16 بت ، حيث تحتوي البتات الـ 13 العليا (من البت 3 إلى البت 15) على فهرس إدخال داخل جدول الواصفات . ويحدد البت التالي (البت 2) ما إذا كانت العملية تُستخدم مع جدول الواصفات العام (GDT) أو جدول الواصفات المحلي (LDT). ويتم دمج البتتين الأدنى (البت 1 والبت 0) من المحدد لتحديد امتياز الطلب، حيث تمثل القيمتان 0 و3 أعلى وأدنى امتياز على التوالي. وهذا يعني أن إزاحة البايت للواصفات في جدول الواصفات هي نفسها إزاحة البايت للمحدد ذي الـ 16 بت، بشرط أن تكون البتات الثلاثة السفلى أصفارًا.
يحدد إدخال جدول الوصف العنوان الخطي الحقيقي للقطاع، وقيمة حدية لحجم القطاع، وبعض بتات السمات (الأعلام).
286
يبلغ طول عنوان المقطع داخل مدخل جدول الواصفات 24 بتًا، لذا يمكن تعريف كل بايت من الذاكرة الفعلية على أنه حد للمقطع. أما قيمة الحد داخل مدخل جدول الواصفات فتبلغ 16 بتًا، لذا يمكن أن يتراوح طول المقطع بين بايت واحد و2 × 16 بايتًا. ويساوي العنوان الخطي المحسوب عنوان الذاكرة الفعلية.
386
يتم توسيع عنوان المقطع داخل مدخل جدول الواصفات إلى 32 بت، بحيث يمكن تعريف كل بايت من الذاكرة الفعلية على أنه حد للمقطع. يتم توسيع قيمة الحد داخل مدخل جدول الواصفات إلى 20 بت، وتُستكمل بعلامة دقة (جيجابايت بت اختصارًا).
- إذا كان G-bit يساوي صفرًا، فإن الحد له دقة 1 بايت، أي أن حجم المقطع قد يكون 1، 2، ...، 2 20 بايت.
- إذا كانت قيمة G-bit هي الحد الأقصى، فإن دقة التجزئة تبلغ 2^ 12 بايت، أي أن حجم المقطع قد يكون 1 × 2^ 12 ، أو 2 × 2^ 12 ، ...، أو 2 ^20 × 2^ 12 بايت. في حال تعطيل الترحيل، يكون العنوان الخطي المحسوب مساويًا لعنوان الذاكرة الفعلي. أما في حال تفعيل الترحيل، فيُستخدم العنوان الخطي المحسوب كمدخل لعملية الترحيل.
يستخدم معالج 386 أيضًا قيم 32 بت لإزاحة العنوان.
للحفاظ على التوافق مع وضع الحماية في معالج 286، أُضيفت علامة افتراضية جديدة (بت D اختصارًا). إذا كانت قيمة بت D في مقطع التعليمات البرمجية مُعطّلة (0)، فسيتم تفسير جميع الأوامر داخل هذا المقطع على أنها أوامر 16 بت افتراضيًا؛ أما إذا كانت مُفعّلة (1)، فسيتم تفسيرها على أنها أوامر 32 بت.
بنية مدخل وصف القطعة
أين:
- A هي بت الوصول ؛
- R هو بت القراءة ؛
- يعتمد C (البت 42) على X : [ 38 ]
- إذا كانت X = 1 فإن C هي بتة المطابقة ، وتحدد مستويات الامتياز التي يمكنها الانتقال إلى هذا الجزء (دون تغيير مستوى الامتياز):
- إذا كانت قيمة C تساوي 0، فلا يمكن إلا للتعليمات البرمجية التي لها نفس مستوى الامتياز مثل DPL الانتقال إلى هنا؛
- إذا كانت قيمة C تساوي 1، فقد ينتقل الكود الذي له نفس مستوى الامتياز أو مستوى امتياز أقل بالنسبة إلى DPL إلى هنا.
- إذا كانت قيمة X تساوي صفرًا، فإن C هي بتة الاتجاه :
- إذا كانت قيمة C تساوي صفرًا، فإن القطعة تنمو لأعلى ؛
- إذا كانت قيمة C تساوي 1، فإن القطعة تنمو إلى أسفل .
- إذا كانت X = 1 فإن C هي بتة المطابقة ، وتحدد مستويات الامتياز التي يمكنها الانتقال إلى هذا الجزء (دون تغيير مستوى الامتياز):
- X هو بت التنفيذ : [ 38 ]
- إذا كانت قيمة X تساوي 1، فإن المقطع هو مقطع برمجي؛
- إذا كانت قيمة X تساوي 0، فإن المقطع هو مقطع بيانات.
- S هو بت نوع القطاع ، والذي يجب مسحه بشكل عام لقطاعات النظام؛ [ 38 ]
- DPL هو مستوى امتياز الواصف ؛
- يمثل P بت المضارع ؛
- D هو حجم المعامل الافتراضي ؛
- G هو بتّ الدقة ؛
- البت رقم 52 من واصف 80386 غير مستخدم من قبل الأجهزة.
الترحيل


بالإضافة إلى إضافة وضع 8086 الافتراضي، أضاف معالج 386 أيضًا خاصية الترحيل إلى الوضع المحمي. [ 39 ] من خلال الترحيل، يستطيع برنامج النظام تقييد والتحكم في وصول المهام إلى الصفحات، وهي أقسام من الذاكرة. في العديد من أنظمة التشغيل، يُستخدم الترحيل لإنشاء مساحة عناوين افتراضية مستقلة لكل مهمة، مما يمنع مهمة من التلاعب بذاكرة مهمة أخرى. كما يسمح الترحيل بنقل الصفحات من وحدة التخزين الرئيسية إلى وحدة تخزين ثانوية أبطأ وأكبر حجمًا ، مثل القرص الصلب . [ 40 ] وهذا يتيح استخدام ذاكرة أكبر من المتاحة فعليًا في وحدة التخزين الرئيسية. [ 40 ]
تتيح بنية x86 التحكم في الصفحات من خلال مصفوفتين : أدلة الصفحات وجداول الصفحات . في الأصل، كان حجم دليل الصفحة يعادل حجم صفحة واحدة، أي أربعة كيلوبايت، ويحتوي على 1024 مدخلًا في دليل الصفحة (PDE)، إلا أن التحسينات اللاحقة على بنية x86 أضافت إمكانية استخدام أحجام صفحات أكبر. يحتوي كل مدخل في دليل الصفحة على مؤشر إلى جدول صفحات. كما كان حجم جدول الصفحات في الأصل أربعة كيلوبايت أيضًا، ويحتوي على 1024 مدخلًا في جدول الصفحات (PTE). يحتوي كل مدخل في جدول الصفحات على مؤشر إلى العنوان الفعلي للصفحة، ويُستخدم فقط عند استخدام صفحات بحجم أربعة كيلوبايت. في أي وقت، لا يمكن استخدام سوى دليل صفحات واحد بشكل فعلي. [ 41 ]
تعدد المهام
بفضل استخدام الحلقات، وبوابات الاستدعاء المميزة ، وقطاع حالة المهمة (TSS) الذي تم تقديمه مع معالج 286، أصبح تعدد المهام الاستباقي ممكنًا على بنية x86. يسمح قطاع حالة المهمة (TSS) بتعديل السجلات العامة، وحقول مُحدد القطاعات، والمكدسات دون التأثير على تلك الخاصة بمهمة أخرى. كما يسمح قطاع حالة المهمة (TSS) بأن يكون مستوى امتياز المهمة، وأذونات منافذ الإدخال/الإخراج مستقلة عن مستوى امتياز المهمة الأخرى.
في العديد من أنظمة التشغيل، لا تُستغلّ جميع ميزات نظام تبديل المهام (TSS). [ 42 ] ويعود ذلك عادةً إلى اعتبارات قابلية النقل أو إلى مشكلات الأداء الناتجة عن تبديل المهام عبر الأجهزة. [ 42 ] ونتيجةً لذلك، تستخدم العديد من أنظمة التشغيل كلاً من الأجهزة والبرامج لإنشاء نظام متعدد المهام. [ 43 ]
أنظمة التشغيل
تحاول أنظمة التشغيل مثل OS/2 1.x التبديل بين وضعَي التشغيل المحمي والحقيقي للمعالج. هذه العملية بطيئة وغير آمنة، لأن برنامجًا يعمل في الوضع الحقيقي قد يتسبب بسهولة في تعطل الحاسوب. يحدد نظام OS/2 1.x قواعد برمجة مقيدة تسمح لواجهة برمجة التطبيقات (API) أو البرنامج المرتبط بالعمل في أي من الوضعين. وقد استخدمت بعض أنظمة التشغيل يونكس القديمة، وOS/2 1.x، وويندوز هذا الوضع.
كان نظام التشغيل Windows 3.0 قادرًا على تشغيل برامج الوضع الحقيقي في الوضع المحمي ذي 16 بت؛ وعند التبديل إلى الوضع المحمي، كان يحتفظ بنموذج مستوى الامتياز الواحد المستخدم في الوضع الحقيقي، ولهذا السبب تستطيع تطبيقات Windows ومكتبات DLL اعتراض المقاطعات والوصول المباشر إلى مكونات الجهاز. استمر هذا الوضع حتى سلسلة Windows 9x . إذا كُتب برنامج Windows 1.x أو 2.x بشكل صحيح وتجنب العمليات الحسابية على القطاعات، فسيعمل بنفس الطريقة في كل من الوضع الحقيقي والوضع المحمي. تتجنب برامج Windows عمومًا العمليات الحسابية على القطاعات لأن Windows يُطبّق نظام ذاكرة افتراضية برمجية، حيث ينقل رمز البرنامج وبياناته في الذاكرة عندما لا تكون البرامج قيد التشغيل، لذا فإن التعامل مع العناوين المطلقة أمر خطير؛ يجب أن تحتفظ البرامج بمقابض لكتل الذاكرة فقط عندما لا تكون قيد التشغيل. يؤدي تشغيل برنامج قديم أثناء تشغيل Windows 3.0 في الوضع المحمي إلى ظهور مربع حوار تحذيري، يقترح إما تشغيل Windows في الوضع الحقيقي أو الحصول على إصدار مُحدّث من التطبيق. يُمكن تجنب ظهور مربع الحوار هذا عن طريق تحديث البرامج التي تعمل بشكل صحيح باستخدام أداة MARK مع مُعامل MEMORY. لا يمكن تشغيل بعض برامج واجهة المستخدم الرسومية في وضع الحماية 16 بت، بينما تعمل برامج أخرى في الوضع الحقيقي. في نظام التشغيل ويندوز 3.1 ، لم يعد الوضع الحقيقي مدعومًا، ولم يكن بالإمكان الوصول إليه.
في أنظمة التشغيل الحديثة ذات 32 بت، لا يزال وضع 8086 الافتراضي يُستخدم لتشغيل التطبيقات، مثل برامج DOS الموسعة المتوافقة مع DPMI (عبر أجهزة DOS الافتراضية ) أو تطبيقات Windows 3.x (عبر نظام Windows الفرعي على Windows ) وأنواع معينة من برامج تشغيل الأجهزة (مثل تغيير دقة الشاشة باستخدام وظائف BIOS) في نظام التشغيل OS/2 2.0 (والإصدارات اللاحقة من OS/2) ونظام Windows NT ذي 32 بت ، وكل ذلك تحت سيطرة نواة 32 بت. مع ذلك، لم تعد أنظمة التشغيل ذات 64 بت (التي تعمل في الوضع الطويل ) تستخدم هذا الوضع، نظرًا لإزالة وضع 8086 الافتراضي منه.
انظر أيضاً
مراجع
- ↑ "طريقة ونظام للتحكم في الوصول إلى الذاكرة لتحقيق ذلك" . براءة اختراع أمريكية رقم 5483646. 23 مايو 1995. مؤرشفة من الأصل (براءة الاختراع) في 26 سبتمبر 2007. تم الاطلاع عليها في 14 يوليو 2007.
نظام التحكم في الوصول إلى الذاكرة وفقًا للبند 4، حيث يكون نمط العنوان الأول نمط عنوان حقيقي، ويكون نمط العنوان الثاني نمط عنوان افتراضي محمي.
- 1 2 دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 1: البنية الأساسية . Intel . مايو 2019. القسم 2.1.3 معالج Intel 386 (1985). مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ١ ٢ روت (١٤ يوليو ٢٠٠٧). "دليل: ما معنى الوضع المحمي؟" (دليل) . برمجيات ديلوري . مؤرشف من الأصل في ٢٠٢٣-٠٧-٠٣ . تم الاسترجاع في ٢٠٠٧-٠٧-١٤ .
الغرض من الوضع المحمي ليس حماية برنامجك، بل حماية جميع المستخدمين الآخرين (بما في ذلك نظام التشغيل) منه.
- 1 2 دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 1: البنية الأساسية . Intel . مايو 2019. القسم 3.1 أوضاع التشغيل. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ كولينز، روبرت (2007). "أساسيات الوضع المحمي" . تم الاسترجاع في 21-07-2025 .
- ↑ دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 1: البنية الأساسية . Intel . مايو 2019. القسم 2.1.2 معالج Intel 286 (1982). مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ١ ٢ "تقرير إنتل للمواطنة العالمية ٢٠٠٣" . مؤرشف من الأصل (الجدول الزمني) بتاريخ ٢٢ مارس ٢٠٠٨. تم الاطلاع عليه بتاريخ ١٤ يوليو ٢٠٠٧. ١٩٨٥ :
إطلاق إنتل لمعالج إنتل ٣٨٦
- ↑ دليل مطوري البرامج لهندسة Intel 64 و IA-32، المجلد 1: الهندسة الأساسية . Intel . مايو 2019. القسم 2.1: نبذة تاريخية عن هندسة Intel 64 و IA-32.
- ١ ٢ ٣ "A+ - الأجهزة" (دليل/شرح) . دروس تعليمية حول تطورات وميزات معالجات الحاسوب الشخصي . BrainBell.com. مؤرشف من الأصل بتاريخ ٣١ مارس ٢٠٢٢. تم الاطلاع عليه بتاريخ ٢٤ يوليو ٢٠٠٧ .
- ↑ ريسلي، ديفيد (23 مارس 2001). "تاريخ وحدة المعالجة المركزية" . بي سي ميكانيك. مؤرشف من الأصل (المقال) في 29 أغسطس 2008. تم الاسترجاع في 24 يوليو 2007.
الأمر المثير للاهتمام هو أن مصممي ذلك الوقت لم يتوقعوا أبدًا أن يحتاج أي شخص إلى أكثر من 1 ميجابايت من ذاكرة الوصول العشوائي.
- 1 2 3 4 5 كابلان، ياريف (1997). "مقدمة إلى الوضع المحمي" . Internals.com. مؤرشف من الأصل (المقال) بتاريخ 22-06-2007 . تم الاطلاع عليه بتاريخ 24-07-2007 .
- ↑ "أسئلة وأجوبة عامة حول نظام التشغيل المتماسك" . 23 يناير 1993. مؤرشف من الأصل في 4 يونيو 2016. تم الاطلاع عليه في 7 يناير 2014 .
- ↑ "بيان صحفي حول مايكروسوفت XENIX 286" (ملف PDF) . مايكروسوفت. مؤرشف من الأصل (ملف PDF) بتاريخ 21 أكتوبر 2014. تم الاطلاع عليه بتاريخ 17 أغسطس 2015 .
- ↑ "ورقة معلومات MINIX" . مؤرشفة من الأصل في 7 يناير 2014.
- ↑ مولر، سكوت (24 مارس 2006). "معالجات الجيل الثاني P2 (286)" . ترقية وإصلاح أجهزة الكمبيوتر الشخصية، الطبعة السابعة عشرة (كتاب) ( الطبعة 17). Que. ISBN 0-7897-3404-4تم الاطلاع عليه بتاريخ 11 يوليو 2017 .
- 1 2 80386 دليل مرجعي للمبرمج (ملف PDF) . سانتا كلارا، كاليفورنيا: إنتل. 1986. القسم 2.1 تنظيم الذاكرة وتقسيمها. مؤرشف (ملف PDF) من الأصل بتاريخ 28-12-2018 . تم الاطلاع عليه بتاريخ 06-09-2019 .
- ↑ دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 1: البنية الأساسية . Intel . مايو 2019. القسم 3.1 أوضاع التشغيل. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ هايد، راندال (نوفمبر 2004). "12.10. تشغيل الوضع المحمي وبرامج تشغيل الأجهزة" . اكتب كودًا رائعًا . أورايلي. ISBN 1-59327-003-8.
- ↑ تشارلز بيتزولد ، معجزة إنتل ذات 32 بت: المعالج الدقيق 80386، مجلة الكمبيوتر الشخصي ، 25 نوفمبر 1986، الصفحات 150-152
- ↑ توم ياغر (6 نوفمبر 2004). "إرسال برمجيات للقيام بوظيفة الأجهزة" . إنفوورلد . مؤرشف من الأصل في 18 أكتوبر 2014. تم الاطلاع عليه في 24 نوفمبر 2014 .
- ↑ شفيتس، جينادي (3 يونيو 2007). "عائلة معالجات إنتل 80386" (مقال) . مؤرشف من الأصل في 20 أغسطس 2007. تم الاطلاع عليه في 24 يوليو 2007.
80386SX
- نسخة منخفضة التكلفة من 80386. يحتوي هذا المعالج على ناقل بيانات خارجي 16 بت وناقل عناوين خارجي 24 بت.
- ↑ "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام" . Intel . 9.9.1 التبديل إلى الوضع المحمي، الصفحات 9-13. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام" . Intel . القسم 9.10.2، قائمة STARTUP.ASM، الصفحات 9-19. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام" . Intel . القسم 21.33.1 التفاف القطاع، الصفحات 21-34. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ "دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام" . Intel . القسم 9.9.2 العودة إلى وضع العنوان الحقيقي، الصفحات 9-14. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ دليل مرجعي لمبرمج معالج Intel 80386، 1986 (ملف PDF) . سانتا كلارا، كاليفورنيا: Intel. 1986. الفصل 7، تعدد المهام. مؤرشف (ملف PDF) من الأصل بتاريخ 28 ديسمبر 2018. تم الاطلاع عليه بتاريخ 6 سبتمبر 2019 .
- 1 2 دليل مطوري البرامج لبنيتي Intel 64 و IA-32، المجلد 1: البنية الأساسية . Intel . مايو 2019. القسم 6.3.5: استدعاءات لمستويات امتياز أخرى. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ دليل مرجعي للمبرمجين لمعالجات 80286 و80287 (ملف PDF) . سانتا كلارا، كاليفورنيا: إنتل. 1987. القسم 1.2 أوضاع التشغيل. مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 27-09-2019 . تم الاطلاع عليه بتاريخ 06-09-2019 .
- ↑ دليل مرجعي للمبرمجين 80286 و80287 (ملف PDF) . سانتا كلارا، كاليفورنيا: إنتل. 1987. القسم 1.3.1 إدارة الذاكرة.
- ↑ دليل مرجعي للمبرمجين 80286 و80287 (ملف PDF) . سانتا كلارا، كاليفورنيا: إنتل. 1987. الملحق ج: اعتبارات التوافق بين 8086/8088. مؤرشف (ملف PDF) من الأصل بتاريخ 27-09-2019 . تم الاطلاع عليه بتاريخ 06-09-2019 .
- ↑ "طريقة التحكم في الوصول إلى الذاكرة ونظام لتحقيق ذلك" (براءة اختراع) . براءة اختراع أمريكية رقم 5483646. 6 مايو 1998. مؤرشفة من الأصل في 7 يوليو 2007. تم الاطلاع عليها في 25 يوليو 2007. كان
هذا الأمر مستحيلاً حتى الآن، مما أجبر فرق تطوير BIOS على إضافة دعم في BIOS لاستدعاءات وظائف 32 بت من تطبيقات 32 بت.
- ↑ روبنسون، تيم (26 أغسطس 2002). "وضع 8086 الافتراضي" . berliOS. مؤرشف من الأصل (الدليل) في 3 أكتوبر 2002. تم الاسترجاع في 25 يوليو 2007. ...
ثانيًا، كان الوضع المحمي غير متوافق أيضًا مع الكم الهائل من التعليمات البرمجية للوضع الحقيقي المتوفرة في ذلك الوقت
.
- ↑ روبنسون، تيم (26 أغسطس 2002). "وضع 8086 الافتراضي" . berliOS. مؤرشف من الأصل (الدليل) في 3 أكتوبر 2002. تم الاسترجاع في 25 يوليو 2007 .
- ↑ دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام . Intel . مايو 2019. القسم 20.2 وضع 8086 الافتراضي. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاسترجاع بتاريخ 2019-09-06 .
- ↑ دليل مطوري برامج معمارية Intel 64 و IA-32، المجلدات المجمعة 3A و 3B و 3C و 3D: دليل برمجة النظام . Intel . مايو 2019. القسم 20.2.7 التعليمات الحساسة. مؤرشف من الأصل بتاريخ 2019-09-06 . تم الاطلاع عليه بتاريخ 2019-09-06 .
- ↑ روبنسون، تيم (26 أغسطس 2002). "وضع 8086 الافتراضي" . berliOS. مؤرشف من الأصل (الدليل) في 3 أكتوبر 2002. تم الاسترجاع في 25 يوليو 2007. من عيوب استخدام وضع V86 انخفاض السرعة: فكل تعليمة حساسة لمستوى الإدخال/الإخراج (IOPL )
ستؤدي إلى دخول وحدة المعالجة المركزية في وضع النواة، وكذلك عمليات الإدخال/الإخراج إلى المنافذ المحظورة في TSS.
- ↑ داباك، براساد؛ ميليند بورات (أكتوبر 1999). ويندوز إن تي غير الموثق (كتاب). هانغري مايندز. ISBN 0-7645-4569-8.
- 1 2 3 "جدول الواصفات العامة - ويكي تطوير أنظمة التشغيل" . مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 يناير 2019 .
- ↑ "نظرة عامة على الوضع المحمي [ deinmeister.de ] " (موقع ويب) . تم الاطلاع عليه بتاريخ 29-07-2007 .
- ١ ٢ "ما هي تقنية PAE x86؟" . مايكروسوفت تك نت. ٢٨ مايو ٢٠٠٣. مؤرشف من الأصل (المقال) في ٢٢ أبريل ٢٠٠٨. تم الاطلاع عليه في ٢٩ يوليو ٢٠٠٧. تسمح
عملية الترحيل لنظام التشغيل بتجاوز حدود الذاكرة الفعلية. ومع ذلك، فإنها تؤثر بشكل مباشر على الأداء بسبب الوقت اللازم لكتابة البيانات أو استرجاعها من القرص.
- ↑ غارو، جان. "برمجة x86 المدمجة المتقدمة: الترحيل" . Embedded.com. مؤرشف من الأصل (دليل) بتاريخ 16-05-2008 . تم الاطلاع عليه بتاريخ 29-07-2007 .
لا يمكن أن يكون هناك سوى دليل صفحات واحد نشط في كل مرة، ويُشار إلى ذلك بواسطة سجل CR3.
- 1 2 zwanderer (2 مايو 2004). "أخبار: شرح تعدد المهام لمعالجات x86 #1" . NewOrer . NewOrder. مؤرشف من الأصل (المقال) بتاريخ 12 فبراير 2007. تم الاطلاع عليه بتاريخ 29 يوليو 2007.
يرجع سبب شيوع تبديل المهام البرمجي إلى أنه أسرع من تبديل المهام المادي. لم تُطوّر إنتل تبديل المهام المادي فعليًا، بل طبّقته، ولاحظت فعاليته، ثم تركته كما هو. وقد جعلت التطورات في تعدد المهام باستخدام البرمجيات هذا النوع من تبديل المهام أسرع (يقول البعض إنه أسرع بثلاث مرات) من الطريقة المادية. سبب آخر هو أن طريقة إنتل في تبديل المهام غير قابلة للنقل على الإطلاق.
- ↑ zwanderer (2 مايو 2004). "أخبار: شرح تعدد المهام لمعالجات x86 #1" . NewOrer . NewOrder. مؤرشف من الأصل (المقال) بتاريخ 12 فبراير 2007. تم الاطلاع عليه بتاريخ 29 يوليو 2007. ... يعتمد كلاهما على قدرة معالجات إنتل على تبديل المهام،
لكنهما
يعتمدان عليها بطرق مختلفة.
روابط خارجية
- أساسيات الوضع المحمي
- مقدمة عن الوضع المحمي
- نظرة عامة على عمليات الوضع المحمي في بنية إنتل
- نظرة عامة على الوضع المحمي ودليل الاستخدام
- برنامج تعليمي حول الوضع المحمي في مشروع الكود
- تنفيذ لغة البرمجة
- أوضاع تشغيل X86
