منظر بزاوية عالية لمبرمجي كمبيوتر يستخدمان كمبيوتر مكتبيًا في مكتب

ما المقصود بالذاكرة الافتراضية؟

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

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

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

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

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

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

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

آلية عمل الذاكرة الافتراضية

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

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

ولو شُبّه النوعان من الذاكرة بسيارتين، لكانت ذاكرة الوصول العشوائي سيارة رياضية صغيرة لامعة: سريعة ومكلفة ولا تتسع إلا للسائق وراكب واحد تقريباً (سعة محدودة). أما الذاكرة الثانوية فتشبه حافلة صغيرة اقتصادية؛ فهي أبطأ وأقل تكلفة لكنها توفر سعة أكبر بكثير من الذاكرة الرئيسية.

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

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

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

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

IBM Power

التحديث والأتمتة باستخدام IBM Power

يرشدك Joe Cropper، مخترع رئيسي في شركة IBM، وكبير الموظفين الفنيين (STSM) في منصة IBM Power Hybrid Cloud Platform خلال عرض توضيحي يتناول كيف يمكن أن تساعدك IBM Power في تحديث تطبيقاتك.

ما هو منطق الصفحة؟

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

وتأتي جميع الصفحات بحجم ثابت في العادة. وقد كان الحجم القياسي للصفحات في الأصل 4 كيلوبايت، وظل هذا الحجم معياراً شائعاً في القطاع لفترة طويلة. في الآونة الأخيرة، بدأت الأنظمة الأحدث في استخدام أحجام ثابتة أكبر بكثير للصفحات، بما في ذلك أحجام تصل إلى 2 ميجابايت أو 1 جيجابايت أو حتى أكبر من ذلك.

وفي الذاكرة الافتراضية، يكون حجم معظم الصفحات 4 كيلوبايت أو 8 كيلوبايت، بحسب البنية المعمارية المستخدمة. تعتمد أنظمة Microsoft Windows وLinux وmacOS من Apple حجم صفحة يبلغ 4 كيلوبايت. أما في أنظمة UNIX، فيُحدد حجم صفحات الذاكرة الافتراضية وفقاً للبنية العتادية الخاصة بكل نظام، سواء كان نظاماً 32 بت أو 64 بت. (وتخصص أنظمة UNIX عادةً ما بين 3 جيجابايت و4 جيجابايت لكل عملية قيد التنفيذ).

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

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

ومن خلال استخدام الصفحات، يستطيع نظام التشغيل (OS) إنشاء خريطة للذاكرة المنطقية الخاصة بإحدى العمليات، أي ترجمتها عملياً إلى ذاكرة مادية غير متجاورة في صورة إطارات صفحات. وإطارات الصفحات هي كتل من الذاكرة المادية (RAM) يستخدمها نظام التشغيل بوصفها حاويات لصفحات الذاكرة. ويتطابق حجم إطار الصفحة مع حجم الصفحة نفسها، سواء كان 4 كيلوبايت (KB) أو حجماً أكبر.

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

ويستخدم رقم الصفحة الافتراضية أول 20 بتاً من العنوان الافتراضي ليكون معرِّفاً لحيز العناوين الافتراضي ضمن مساحة الذاكرة الافتراضية الخاصة بالعملية الحاسوبية. ويحدد رقم الصفحة المطلوبة بحيث تتمكن وحدة إدارة الذاكرة من استرجاعها من إطار في الذاكرة المادية أو من القرص.

أما الجزء المتبقي من العنوان فيمثل إزاحة الصفحة (Page Offset)، التي تحدد الموقع المادي الدقيق لتلك الصفحة داخل نظام التشغيل، وصولاً إلى مواقع البايتات الفردية.

فهم التذبذب وأخطاء الصفحات

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

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

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

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

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

وتوجد عدة أنواع من أخطاء الصفحات، ويجري تصنيفها وفقاً لدرجة خطورتها:

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

طرق الترحيل حسب الطلب

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

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

وتُستخدم بالتوازي مع تقسيم الصفحات عند الطلب مجموعة من المنهجيات القائمة على الخوارزميات. وتتناول كل خوارزمية من خوارزميات استبدال الصفحات هذه المشكلة بأسلوب مختلف: 

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

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

حلول ذات صلة
IBM Storage Fusion

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

استكشِف IBM Storage Fusion
حلول المحاكاة الافتراضية من IBM

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

استكشف حلول المحاكاة الافتراضية من IBM
خدمات البنية التحتية من IBM

خبرة فنية شاملة لخوادم أنظمة IBM Systems ووحدات التخزين الخاصة بك.

استكشف خدمات البنية التحتية من IBM
اتخذ الخطوة التالية

عزز بنيتك التحتية بخدمات بيانات موحدة ومحاكاة افتراضية — مما يتيح أحمال تشغيل مرنة وعالية الأداء عبر البيئات الهجينة.

  1. اكتشِف IBM Storage Fusion
  2. استكشف حلول المحاكاة الافتراضية من IBM