الذاكرة الافتراضية

تجمع الذاكرة الافتراضية بين ذاكرة الوصول العشوائي النشطة والذاكرة غير النشطة على DASD [ أ ] لتشكيل نطاق كبير من العناوين المتجاورة.

في مجال الحوسبة ، يتم تمكين الذاكرة الافتراضية ، أو التخزين الافتراضي ، [ ب ] بواسطة تقنية لإدارة الذاكرة توفر "تجريدًا مثاليًا لموارد التخزين المتاحة فعليًا على جهاز معين" [ 3 ] مما "يخلق وهمًا للمستخدمين بوجود ذاكرة (رئيسية) كبيرة جدًا". [ 4 ]

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

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

ملكيات

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

يمكن اعتبار تقنية المحاكاة الافتراضية للذاكرة تعميماً لمفهوم الذاكرة الافتراضية.

الاستخدام

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

تُشغّل معظم أنظمة التشغيل الحديثة التي تدعم الذاكرة الافتراضية كل عملية في مساحة عناوين مخصصة لها . وبالتالي، يبدو أن لكل برنامج حق الوصول الحصري إلى الذاكرة الافتراضية. أما بعض أنظمة التشغيل القديمة (مثل OS/VS1 و OS/VS2 SVS ) وحتى الأنظمة الأحدث (مثل IBM i ) فهي أنظمة تشغيل ذات مساحة عناوين واحدة ، حيث تُشغّل جميع العمليات في مساحة عناوين واحدة تتكون من ذاكرة افتراضية.

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

تاريخ

خلال خمسينيات وستينيات وأوائل سبعينيات القرن العشرين، كانت ذاكرة الحاسوب باهظة الثمن. وكانت البرامج الكبيرة التي لا تكفي الذاكرة المتاحة لها لاستيعاب جميع التعليمات البرمجية والبيانات، تتطلب تضمين منطق لإدارة التخزين الأساسي والثانوي، مثل التراكب . لذا، تم استحداث الذاكرة الافتراضية ليس فقط لتوسيع الذاكرة الأساسية، بل لتسهيل استخدام هذا التوسيع قدر الإمكان للمبرمجين. [ 7 ]

كان حاسوب أطلس التابع لجامعة مانشستر أول حاسوب يستخدم الذاكرة الافتراضية الحقيقية.

كان أول نظام ذاكرة افتراضية حقيقي هو ذلك الذي طُبِّق في جامعة مانشستر لإنشاء نظام تخزين أحادي المستوى [ 8 ] كجزء من حاسوب أطلس . استخدم هذا النظام آلية الترحيل لربط العناوين الافتراضية المتاحة للمبرمج بالذاكرة الحقيقية التي تتكون من 16384 كلمة من ذاكرة النواة الرئيسية ، بالإضافة إلى 98304 كلمة من ذاكرة الأسطوانة الثانوية . [ 9 ] كما ساهمت إضافة الذاكرة الافتراضية إلى حاسوب أطلس في حل مشكلة برمجية ملحة: وهي تخطيط وجدولة عمليات نقل البيانات بين الذاكرة الرئيسية والثانوية، وإعادة تجميع البرامج مع كل تغيير في حجم الذاكرة الرئيسية. [ 10 ] تم تشغيل أول حاسوب أطلس عام 1962، ولكن النماذج الأولية العاملة للترحيل كانت قد طُوِّرت بحلول عام 1959. [ 7 ] : 2 [ 11 ] [ 12 ]

للسماح بالبرمجة المتعددة والمهام المتعددة ، قامت بعض الأنظمة في الستينيات بتقسيم الذاكرة بين برامج متعددة بدون ذاكرة افتراضية، مثل UNIVAC 1107 و PDP-6 والنماذج المبكرة من PDP-10 ، عبر سجلات القاعدة والحدود .

إن الادعاء بأن مفهوم الذاكرة الافتراضية طُوِّر لأول مرة على يد الفيزيائي الألماني فريتز-رودولف غونتسش في جامعة برلين التقنية عام 1956 في أطروحته للدكتوراه بعنوان " التصميم المنطقي لحاسوب رقمي ذي أسطوانات دوارة متعددة غير متزامنة وتشغيل تلقائي عالي السرعة للذاكرة" [ 13 ] [ 14 ] لا يصمد أمام التدقيق. فالحاسوب الذي اقترحه غونتسش (والذي لم يُبنَ قط) كان يمتلك مساحة عناوين تبلغ 10⁵ كلمة ، والتي تطابقت تمامًا مع 10⁵ كلمة الموجودة على الأسطوانات، أي أن العناوين كانت عناوين حقيقية ولم يكن هناك أي شكل من أشكال الربط غير المباشر، وهي سمة أساسية للذاكرة الافتراضية. ما ابتكره غونتسش هو شكل من أشكال ذاكرة التخزين المؤقت ، حيث كان من المفترض أن تحتوي ذاكرته عالية السرعة على نسخة من بعض كتل التعليمات البرمجية أو البيانات المأخوذة من الأسطوانات. في الواقع، كتب (كما ورد في الترجمة [ 15 ] ): "لا يحتاج المبرمج إلى مراعاة وجود الذاكرة الرئيسية (بل لا يحتاج حتى إلى معرفة وجودها)، إذ لا يوجد سوى نوع واحد من العناوين [ كذا ] يمكن من خلاله البرمجة كما لو كان هناك وحدة تخزين واحدة فقط." هذا هو الوضع تمامًا في الحواسيب المزودة بذاكرة تخزين مؤقتة، ومن أوائل الأمثلة التجارية عليها حاسوب IBM System/360 Model 85. [ 16 ] في Model 85، كانت جميع العناوين عناوين حقيقية تشير إلى وحدة التخزين الرئيسية. تحتوي وحدة تخزين مؤقتة من أشباه الموصلات، غير مرئية للمستخدم، على محتويات أجزاء من وحدة التخزين الرئيسية التي يستخدمها البرنامج قيد التنفيذ حاليًا. وهذا يُشابه تمامًا نظام غونتسش، المصمم كوسيلة لتحسين الأداء، وليس لحل المشكلات المتعلقة بالبرمجة المتعددة.

في وقت مبكر من عام 1958، اقترح روبرت س. بارتون ، الذي كان يعمل في شركة شل للأبحاث ، تخصيص الذاكرة الرئيسية تلقائيًا بدلًا من انشغال المبرمج بالذاكرة الثانوية، أي الذاكرة الافتراضية. [ 17 ] : 49 [ 18 ] وبحلول عام 1960، أصبح بارتون كبير مهندسي مشروع بوروز B5000 . ومن عام 1959 إلى عام 1961، تولى دبليو آر لونيرجان إدارة مجموعة تخطيط منتجات بوروز، والتي ضمت بارتون، ودونالد نوث كمستشار، وبول كينج. وفي مايو 1960، نظمت جامعة كاليفورنيا في لوس أنجلوس ندوة لمدة أسبوعين بعنوان "استخدام واستغلال الحواسيب العملاقة"، أُرسل إليها بول كينج وشخصان آخران. وقدّم ستان جيل عرضًا تقديميًا عن الذاكرة الافتراضية في حاسوب أطلس 1. ونقل بول كينج الأفكار إلى بوروز، وتقرر تصميم الذاكرة الافتراضية في قلب حاسوب B5000. [ 17 ] : 3 . أصدرت شركة بوروز جهاز B5000 في عام 1964 كأول جهاز كمبيوتر تجاري مزود بذاكرة افتراضية. [ 19 ]

طورت شركة IBM مفهوم المشرفين في جهازي CP-40 و CP-67 ، وفي عام 1972 قدمته لجهاز S/370 باسم Virtual Machine Facility/370. [ 21 ] قدمت IBM تعليمة بدء التنفيذ التفسيري ( SIE ) كجزء من 370-XA على جهاز 3081 ، وإصدارات VM/XA من VM لاستغلالها.

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

تشمل أنظمة التشغيل التي تدعم الذاكرة الافتراضية على أجهزة الكمبيوتر المركزية في الستينيات ما يلي:

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

خلال سبعينيات القرن العشرين، وفرت سلسلة IBM System/370، التي تعمل بأنظمة تشغيل تعتمد على التخزين الافتراضي، وسيلةً لمستخدمي الأعمال لنقل أنظمة قديمة متعددة إلى عدد أقل من الحواسيب المركزية الأكثر قوة، والتي تميزت بتحسين نسبة السعر إلى الأداء. وكان أول حاسوب صغير يُدخل الذاكرة الافتراضية هو الحاسوب النرويجي NORD-1 ؛ وخلال سبعينيات القرن العشرين، طبقت حواسيب صغيرة أخرى الذاكرة الافتراضية، ولا سيما طرازات VAX التي تعمل بنظام VMS .

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

الذاكرة الافتراضية ذات الصفحات

تقسم جميع تطبيقات الذاكرة الافتراضية الحالية تقريبًا مساحة العناوين الافتراضية إلى صفحات ، وهي عبارة عن كتل من عناوين الذاكرة الافتراضية المتجاورة. عادةً ما يكون حجم الصفحات في الأنظمة المعاصرة 4 كيلوبايت على الأقل ؛ أما الأنظمة ذات نطاقات العناوين الافتراضية الكبيرة أو كميات الذاكرة الحقيقية فتستخدم عمومًا أحجام صفحات أكبر. [ 24 ]

جداول الصفحات

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

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

بعض الأنظمة السابقة ذات أحجام الذاكرة الحقيقية الأصغر، مثل SDS 940 ، استخدمت سجلات الصفحات بدلاً من جداول الصفحات في الذاكرة لترجمة العناوين.

مشرف قسم النداء

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

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

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

في معظم الحالات، سيكون هناك تحديث لجدول الصفحات، وربما يتبعه مسح مخزن الترجمة الجانبي (TLB)، ويعيد النظام تشغيل التعليمات التي تسببت في الاستثناء.

إذا كانت قائمة انتظار إطار الصفحة الحرة فارغة، فيجب على مشرف الترحيل تحرير إطار صفحة باستخدام نفس خوارزمية استبدال الصفحة لسرقة الصفحة.

الصفحات المثبتة

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

قد يتم تثبيت بعض الصفحات لفترات قصيرة، وقد يتم تثبيت صفحات أخرى لفترات طويلة، وقد تحتاج صفحات أخرى إلى التثبيت الدائم. على سبيل المثال:

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

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

استخدم نظام Multics مصطلح "مُوَصَّل". ويشير نظاما OpenVMS و Windows إلى الصفحات التي تُصبح مؤقتًا غير قابلة للترحيل (كما هو الحال بالنسبة لمخازن الإدخال/الإخراج المؤقتة) باسم "مُؤَكَّدة"، وإلى الصفحات التي لا يُمكن ترحيلها أبدًا باسم "غير قابلة للترحيل". كما يستخدم معيار UNIX الموحد مصطلح "مُؤَكَّد" في مواصفاته ، وكذلك صفحات الدليل في العديد من الأنظمة الشبيهة بنظام Unix .mlock()mlock()

عملية افتراضية-حقيقية

في نظام التشغيل OS/VS1 وأنظمة التشغيل المشابهة، تُدار بعض أجزاء ذاكرة النظام في وضع "افتراضي-حقيقي"، ويُسمى "V=R". في هذا الوضع، يُقابل كل عنوان افتراضي نفس العنوان الحقيقي. يُستخدم هذا الوضع لآليات المقاطعة ، ولمشرف الترحيل وجداول الصفحات في الأنظمة القديمة، ولبرامج التطبيقات التي تستخدم إدارة إدخال/إخراج غير قياسية. على سبيل المثال، يحتوي نظام التشغيل z/OS من IBM على ثلاثة أوضاع (افتراضي-افتراضي، افتراضي-حقيقي، وافتراضي-ثابت).

الضرب

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

غالبًا ما ينتج اضطراب النظام عن زيادة مفاجئة في طلب الصفحات من عدد قليل من البرامج قيد التشغيل. تُعدّ آلية Swap-token [ 28 ] آلية حماية خفيفة الوزن وديناميكية ضدّ هذا الاضطراب. تقوم فكرتها الأساسية على تعيين رمز مميز في النظام، يُمنح عشوائيًا للعملية التي تواجه أخطاء في الصفحات عند حدوث الاضطراب. تُمنح العملية التي تمتلك الرمز المميز امتيازًا لتخصيص المزيد من صفحات الذاكرة الفعلية لبناء مجموعة العمل الخاصة بها، والتي يُتوقع منها إنهاء تنفيذها بسرعة وتحرير صفحات الذاكرة لعمليات أخرى. يُستخدم طابع زمني لتسليم الرموز المميزة واحدًا تلو الآخر. طُبّق الإصدار الأول من Swap-token في Linux 2.6 [ 29 ] . يُطلق على الإصدار الثاني اسم preempt swap-token وهو موجود أيضًا في Linux 2.6 [ 29 ] . في هذا الإصدار المُحدّث من Swap-token، يُعيّن عداد أولوية لكل عملية لتتبع عدد صفحات التبديل. يُمنح الرمز المميز دائمًا للعملية ذات الأولوية العالية، والتي لديها عدد كبير من صفحات التبديل. إن طول الطابع الزمني ليس ثابتًا ولكنه يتحدد حسب الأولوية: فكلما زاد عدد صفحات التبديل في عملية ما، زاد طول الطابع الزمني الخاص بها.

الذاكرة الافتراضية المجزأة

تستخدم بعض الأنظمة، مثل Burroughs B5500 [ 30 ] وأنظمة Unisys MCP الحالية [ 31 ] ، التجزئة بدلاً من الترحيل، حيث تقسم مساحات العناوين الافتراضية إلى مقاطع متغيرة الطول. تُطابق التجزئة كتل الذاكرة المُخصصة مع الاحتياجات والطلبات المنطقية للبرامج، بدلاً من مطابقتها مع البنية الفيزيائية للحاسوب، على الرغم من أن الصفحات نفسها تُعد تقسيمًا اصطناعيًا للذاكرة. وقد وجد مصممو B5000 أن الحجم الاصطناعي للصفحات يُشبه قيودًا صارمة ، وهو ما استخدموه لاحقًا لتحديد أحجام البيانات الدقيقة في B1700 [ 32 ] .

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

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

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

يدعم معالج Intel 80286 مخطط تجزئة مماثل كخيار، ولكنه نادرًا ما يتم استخدامه.

يمكن استخدام التجزئة والتقسيم إلى صفحات معًا بتقسيم كل جزء إلى صفحات؛ وعادةً ما تعتمد الأنظمة ذات بنية الذاكرة هذه، مثل Multics و IBM System/38 ، على التقسيم إلى صفحات بشكل أساسي، حيث توفر التجزئة حماية للذاكرة. [ 34 ] [ 35 ] [ 36 ]

في معالجات Intel 80386 والمعالجات اللاحقة من نوع IA-32 ، توجد القطاعات في مساحة عناوين خطية مُقسّمة إلى صفحات، ذات 32 بت . يمكن نقل القطاعات من وإلى هذه المساحة؛ ويمكن للصفحات الموجودة فيها أن تنتقل من وإلى الذاكرة الرئيسية، مما يوفر مستويين من الذاكرة الافتراضية؛ ونادرًا ما تستخدم أنظمة التشغيل هذه الطريقة، بل تعتمد فقط على تقسيم الصفحات. جمعت حلول المحاكاة الافتراضية المبكرة لأنظمة x86 ، غير المدعومة بالأجهزة ، بين تقسيم الصفحات والتجزئة، لأن تقسيم الصفحات في x86 يوفر نطاقي حماية فقط، بينما يحتاج برنامج إدارة الأجهزة الافتراضية (VMM) أو نظام التشغيل الضيف أو حزمة تطبيقات الضيف إلى ثلاثة نطاقات. [ 37 ] : 22 لا يقتصر الفرق بين أنظمة تقسيم الصفحات والتجزئة على تقسيم الذاكرة فحسب؛ فالتجزئة مرئية لعمليات المستخدم، كجزء من دلالات نموذج الذاكرة. وبالتالي، فبدلاً من أن تبدو الذاكرة كمساحة واحدة كبيرة، يتم تنظيمها في مساحات متعددة.

لهذا الاختلاف تبعاتٌ هامة؛ فالمقطع ليس صفحةً ذات طولٍ متغير، ولا هو مجرد وسيلةٍ بسيطةٍ لتوسيع نطاق العناوين. إن التجزئة التي تُتيح نموذج ذاكرةٍ أحادي المستوى، لا يوجد فيه تمييزٌ بين ذاكرة العملية ونظام الملفات، تتكون فقط من قائمةٍ من المقاطع (الملفات) المُرتبطة بنطاق العناوين المُحتمل للعملية. [ 38 ]

يختلف هذا عن الآليات التي توفرها استدعاءات مثل mmap و MapViewOfFile في Win32 ، لأن مؤشرات الملفات لا تعمل عند ربط الملفات بمواقع شبه عشوائية. في Multics، يُربط الملف (أو جزء من ملف متعدد الأجزاء) بجزء في مساحة العناوين، لذا تُربط الملفات دائمًا عند حدود جزء. قد يحتوي قسم الربط في الملف على مؤشرات، ومحاولة تحميل المؤشر في سجل أو إنشاء مرجع غير مباشر من خلاله تُسبب خطأً. يحتوي المؤشر غير المُحلَّل على اسم الجزء الذي يُشير إليه المؤشر وإزاحة داخل الجزء؛ يقوم معالج الخطأ بربط الجزء بمساحة العناوين، ووضع رقم الجزء في المؤشر، وتغيير حقل الوسم في المؤشر بحيث لا يُسبب خطأً، ثم يعود إلى الكود الذي حدث فيه الخطأ، مُعيدًا تنفيذ التعليمة التي تسببت فيه. [ 39 ] هذا يلغي الحاجة إلى رابط تمامًا [ 7 ] ويعمل عندما تقوم عمليات مختلفة بربط الملف نفسه بأماكن مختلفة في مساحات عناوينها الخاصة. [ 40 ]

تبديل مساحة العناوين

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

يُتيح نظام MVS من IBM ، بدءًا من الإصدار الثاني من OS/VS2 وحتى z/OS ، إمكانية تحديد مساحة عنوان على أنها غير قابلة للتبديل؛ ولا يؤدي ذلك إلى تثبيت أي صفحات في مساحة العنوان. ويمكن القيام بذلك طوال مدة المهمة عن طريق إدخال اسم برنامج رئيسي مؤهل [ 41 ] في جدول خصائص البرنامج مع علامة "غير قابل للتبديل". بالإضافة إلى ذلك، يمكن للتعليمات البرمجية ذات الامتيازات جعل مساحة عنوان غير قابلة للتبديل مؤقتًا باستخدام تعليمة استدعاء المشرف SYSEVENT (SVC)؛ وتتطلب بعض التغييرات [ 42 ] في خصائص مساحة العنوان أن يقوم نظام التشغيل بتبديلها ثم إعادتها، باستخدام SYSEVENT TRANSWAP. [ 43 ]

لا يتطلب التبديل بالضرورة أجهزة إدارة الذاكرة، على سبيل المثال، إذا تم تبديل مهام متعددة من وإلى نفس منطقة التخزين.

انظر أيضاً

ملحوظات

  1. استخدمت الأنظمة القديمة أسطوانات ؛ أما الأنظمة المعاصرة فتستخدم أقراصًا أو ذاكرة الحالة الصلبة
  2. تستخدم شركة IBM مصطلح التخزين الافتراضي في أنظمة تشغيل الحواسيب المركزية. ويمتد هذا الاستخدام من نظام TSS [ 1 ] على جهازي 360/67 إلى نظام z/OS [ 2 ] على بنية z/Architecture .
  3. سبق لشركة IBM أن استخدمت مصطلح "المشرف" لجهاز 360/65 ، [ 20 ] ولكن ذلك لم يتضمن الذاكرة الافتراضية.
  4. لم تدعم أنظمة التشغيل IBM DOS/VS و OS/VS1 و DOS/VS  سوى صفحات بحجم2
  5. في IBM Z [ 26 ] توجد شجرة من 3 مستويات من المناطق لكل مساحة عنوان.

مراجع

  1. "مكونات النظام: النقل الديناميكي" (ملف PDF) . ملخص فني أولي لنظام المشاركة الزمنية System/360 طراز 67 (ملف PDF) . شركة IBM. 1966. صفحة  21. C20-1647-0.
  2. "برنامج التحكم الأساسي (BCP)" (ملف PDF) . دليل مقدمة وإصدار نظام التشغيل z/OS الإصدار 2، الإصدار 4 (ملف PDF) . شركة IBM. 22 سبتمبر 2020. صفحة 3. GA32-0887-40. 
  3. بهاتاشارجي، أبهيشيك؛ لوستيج، دانيال (2017). الدعم المعماري ودعم نظام التشغيل للذاكرة الافتراضية . دار مورغان وكلايبول للنشر. ص 1. ISBN  9781627056021تم الاطلاع عليه بتاريخ 16 أكتوبر 2017 .
  4. ^ هالدار، سيبسانكار؛ أرافيند ، أليكس الاجارسامي (2010). أنظمة التشغيل . تعليم بيرسون الهند. ص. 269. ردمك  978-8131730225تم الاطلاع عليه بتاريخ 16 أكتوبر 2017 .
  5. تشو، شيانغ رونغ؛ بيتروف، بيتر (1 ديسمبر 2008). "الترجمة المباشرة للعناوين للذاكرة الافتراضية في الأنظمة المدمجة الموفرة للطاقة" . معاملات ACM لأنظمة الحوسبة المدمجة . 8 (1): 1-31 . doi : 10.1145/1457246.1457251 . ISSN 1539-9087 . S2CID 18156695 .  
  6. "AMD-V™ Nested Paging" (ملف PDF) . AMD . تم الاطلاع عليه بتاريخ 28 أبريل 2015 .
  7. 1 2 3 4 5 دينينغ، بيتر (1997). "قبل أن تصبح الذاكرة افتراضية" (ملف PDF) . في البداية: ذكريات شخصية لرواد البرمجيات . ISBN 978-0-818-67999-5.
  8. كيلبورن، ت.؛ إدواردز، د.ب.ج.؛ لانيجان، م.ج.؛ سومنر، ف.هـ. (أبريل 1962). "نظام تخزين أحادي المستوى". معاملات معهد مهندسي الراديو في الحواسيب الإلكترونية . EC-11 (2): 223-235 . doi : 10.1109/TEC.1962.5219356 .
  9. ^ “فيرانتي أطلس 1 و 2 – هندسة النظم” (PDF) . 12 نوفمبر 2009.
  10. دينينغ، بيتر ج. (1 يناير 2003). "الذاكرة الافتراضية" . موسوعة علوم الحاسوب . جون وايلي وأولاده. ص 1832-1835 . ISBN  978-0-470-86412-8تم الاطلاع عليه بتاريخ 10 يناير 2023 .
  11. كريسي، آر جيه (سبتمبر 1981). "أصل نظام المشاركة الزمنية VM/370" (ملف PDF) . مجلة IBM للبحوث والتطوير . 25 (5): 486. doi : 10.1147/rd.255.0483 .
  12. "الأطلس" . مؤرشف من الأصل في 6 أكتوبر 2014.
  13. جيسن، إلكي (2004). "أصل مفهوم الذاكرة الافتراضية". حوليات IEEE لتاريخ الحوسبة . 26 (4): 71-72 .
  14. ^ جيسن، إي. (1996). "Die Entwicklung des Virtellen Speichers". إنفورماتيك-سبيكتروم (باللغة الألمانية). 19 (4): 216-219 . دوى : 10.1007 / s002870050034 . ISSN 0170-6012 . S2CID 11514875 .  
  15. جيسن (2004) .
  16. ليبتاي، جيه إس (1968)، "الجوانب الهيكلية لنظام/360 موديل 85 - الذاكرة المؤقتة"، مجلة أنظمة آي بي إم ، 7 : 15-21 ، doi : 10.1147/sj.71.0015
  17. 1 2 وايشوف، ريتشارد. "قصص عن جهاز B5000 والأشخاص الذين كانوا هناك" (ملف PDF) . متحف تاريخ الحاسوب .
  18. "رسالة ديفيد بولمان إلى المحرر" في مجلة IEEE Computer، أغسطس 1977. IEEE .
  19. كراغون، هارفي ج. (1996). أنظمة الذاكرة والمعالجات ذات البنية المتوازية . دار نشر جونز وبارتليت. ص 113. ISBN  978-0-86720-474-2.
  20. ألرد، غاري ر. (مايو 1971). محاكاة نظام التشغيل System/370 المتكاملة تحت نظامي التشغيل OS وDOS (ملف PDF) . مؤتمر الربيع المشترك للحاسوب لعام 1971. المجلد 38. مطبعة AFIPS. ص 164. doi : 10.1109/AFIPS.1971.58 . تاريخ الاسترجاع: 12 يونيو 2022 .  
  21. z/VM مبني على تقنية IBM للتقنية الافتراضية، معلومات عامة، الإصدار 4، الإصدار 3.0 (ملف PDF) . 12 أبريل 2002. GC24-5991-04.
  22. ساير، د. (1969). "هل الطي التلقائي للبرامج فعال بما يكفي ليحل محل الطي اليدوي؟". اتصالات رابطة آلات الحوسبة . 12 (12): 656-660 . doi : 10.1145/363626.363629 . S2CID 15655353 . 
  23. "الفرق بين التصفح والتجزئة" . Unstop . تم الاطلاع عليه بتاريخ 14 ديسمبر 2024 .
  24. كوينتيرو، دينو؛ وآخرون . (1 مايو 2013). دليل أداء أنظمة IBM Power: التنفيذ والتحسين . شركة IBM. ص 138. ISBN   978-0738437668تم الاطلاع عليه بتاريخ 18 يوليو 2017 .
  25. شارما، د.ب. (2009). أسس أنظمة التشغيل . إكسل بوكس ​​إنديا. ص 62. ISBN  978-81-7446-626-6تم الاطلاع عليه بتاريخ 18 يوليو 2017 .
  26. "جداول الترجمة" (ملف PDF) . z/Architecture - مبادئ التشغيل (ملف PDF) ( الطبعة الرابعة عشرة). IBM . مايو 2022. الصفحات 3-46 – 3-53 . SA22-7832-13 . تاريخ الاسترجاع: 18 أغسطس 2025 .  
  27. "الضرب العنيف" . يونيسيس .
  28. سونغ جيانغ؛ شياودونغ تشانغ (2005). "خوارزمية LRU المرتبة حسب الرمز المميز: سياسة فعالة لاستبدال الصفحات وتطبيقها في أنظمة لينكس". تقييم الأداء . 60 ( 1-4 ): 5-29 . doi : 10.1016/j.peva.2004.10.002 . ISSN 0166-5316 . 
  29. 1 2 تشانغ، شياودونغ. "يُقلل رمز التبديل بشكل فعال من تأثيرات تداخل النظام، وقد تم اعتماده في نواة نظام التشغيل" . جامعة ولاية أوهايو. مؤرشف من الأصل في 7 ديسمبر 2023.
  30. بوروز (1964). دليل مرجعي لنظام معالجة المعلومات بوروز B5500 (ملف PDF) . شركة بوروز . 1021326. تاريخ الاسترجاع: 18 أغسطس 2025 .
  31. "ذاكرة Unisys MCP الافتراضية" . Unisys .
  32. ويلنر، دبليو تي (1972). "تصميم بوروز B1700" . وقائع مؤتمر الحاسوب المشترك لخريف 1972، المنعقد في الفترة من 5 إلى 7 ديسمبر 1972، الجزء الأول - AFIPS '72 (خريف، الجزء الأول) . ACM. الصفحات 489-497 . doi : 10.1145/1479992.1480060 . ISBN  978-1-4503-7912-0.
  33. "الرقعة الشطرنجية" . يونيسيس .
  34. دليل نظام GE-645 (ملف PDF) . يناير 1968. الصفحات 21-30 . تم الاطلاع عليه بتاريخ 25 فبراير 2022 . 
  35. كورباتو، إف جيه ؛ فيسوتسكي، في إيه "مقدمة ونظرة عامة على نظام Multics" . تم الاسترجاع في 13 نوفمبر 2007 .
  36. جلاسر، إدوارد ل.؛ كولور، جون ف. وأوليفر، جي إيه "تصميم نظام حاسوب لتطبيقات المشاركة الزمنية" .
  37. سميث، جيه إي؛ أوليغ، آر. (14 أغسطس 2005). " الآلات الافتراضية: البنى والتنفيذات والتطبيقات ، هوت تشيبس 17، البرنامج التعليمي 1، الجزء 2" (PDF) .
  38. بنسوسان، أندريه؛ كلينجن، تشارلز ت.؛ دالي، روبرت س. (مايو 1972). "الذاكرة الافتراضية Multics: المفاهيم والتصميم" . اتصالات ACM . 15 (5): 308-318 . CiteSeerX 10.1.1.10.6731 . doi : 10.1145/355602.361306 . S2CID 6434322 .  
  39. "بيئة تنفيذ Multics" . Multicians.org . تم الاطلاع عليه بتاريخ 9 أكتوبر 2016 .
  40. أورغانيك، إليوت آي. (1972). نظام مولتيكس: دراسة لبنيته . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0-262-15012-5.
  41. الشرط الأهم هو أن يكون البرنامج معتمداً من قبل APF.
  42. على سبيل المثال، طلب استخدام الذاكرة المفضلة
  43. "تبديل التحكم (DONTSWAP، OKSWAP، TRANSWAP)" . مركز معارف IBM . برمجة z/OS MVS: مرجع خدمات المُجمِّع المُعتمد SET-WTO SA23-1375-00. 1990–2014 . تم الاطلاع عليه بتاريخ 9 أكتوبر 2016 .

للمزيد من القراءة

  • هينيسي، جون ل.؛ وباترسون، ديفيد أ.؛ هندسة الحاسوب، منهج كمي ( ISBN) 1-55860-724-2)