تتيح الذاكرة الافتراضية، وهي تقنية لإدارة الذاكرة، لنظام التشغيل المثقل بالأعباء إنشاء شكل اصطناعي من الذاكرة يسمح له بالعمل بما يتجاوز قيود الذاكرة الخاصة به.
وبعبارة أخرى، عندما تستنزف البرامج الحاسوبية المتعددة الذاكرة المتوفرة، تتيح الذاكرة الافتراضية لنظام التشغيل إعادة توظيف ذاكرة الوصول العشوائي بالاستفادة من محرك الأقراص الثابتة.
ويمكن توضيح ذلك من خلال تشبيه مالي بسيط: تخيل أن الذاكرة الفعلية في جهازك هي الأموال الموجودة في حسابك الجاري الشخصي. تسير الأمور على ما يرام ويعمل كل شيء بصورة طبيعية إلى أن تنفد أموالك. وعندما تصل إلى الحد الأدنى، يقوم البنك الذي يوفر خدمة السحب على المكشوف للحسابات الجارية بمنحك تسهيلاً ائتمانياً (يمثل الذاكرة الافتراضية) يغطي نفقات الحساب مؤقتاً.
ومع ذلك، فإن لهذا التسهيل حدوداً واضحة. فأولاً، يوجد حد مالي يحدد حجم النفقات التي سيتحملها البنك. كما يوجد حد زمني يحدد المدة التي سيسمح خلالها البنك باستمرار هذا الوضع قبل أن يتلقى الحساب تدفقاً جديداً من الأموال.
تُعد الذاكرة الافتراضية مكوناً أساسياً في الأنظمة الحاسوبية، إذ تسهم في جعل التشغيل العام أكثر سلاسة. ومع ذلك، من المهم ملاحظة أنها ليست حلاً دائماً أو مستداماً فقد صُممت لتوفير كمية طارئة من الذاكرة عند الحاجة. وهي أشبه بحل سريع يؤدي الغرض مؤقتاً، لكنه لا يُعد بديلاً دائماً.
وتُعد الذاكرة الافتراضية ابتكاراً حديثاً في عالم الحوسبة، إلا أن جوهر فكرتها يتمثل في تحديث مفهوم قديم يقوم على "الاقتراض من جهة لسداد التزامات جهة أخرى"، حيث تُنقل الموارد من مصدر إلى آخر عند الحاجة.
ابقَ على اطلاع دائم على أبرز الاتجاهات في مجالات الذكاء الاصطناعي، والأتمتة، والبيانات، وغيرها الكثير من خلال رسالة Think الإخبارية. راجع بيان الخصوصية لشركة IBM.
وحدة المعالجة المركزية (CPU) هي المكوّن الوظيفي الرئيسي للحاسوب، وهي تستخدم أنواعاً مختلفة من الذاكرة. وتمثل ذاكرة الوصول العشوائي نوعاً أسرع وأكثر سهولة في الوصول ، إلا أن سعتها ليست غير محدودة. أما محرك الأقراص الثابتة فيوفر مساحة تخزين كبيرة، ولكن بسرعات وصول أبطأ.
تُثبَّت الذاكرة الحقيقية داخل وحدة المعالجة المركزية. ويُقصد بالذاكرة الحقيقية مكونات ذاكرة الوصول العشوائي التي تُحتفظ فيها البيانات مؤقتاً للاستخدام الفوري والنشط. (ويُطلق المبرمجون أيضاً على الذاكرة الحقيقية اسم الذاكرة المادية أو الذاكرة الرئيسية وفي المقابل، تُصنف الذاكرة الثانوية على أنها ذاكرة غير متطايرة، أي أن وسائط التخزين الخاصة بها تحتفظ بالبيانات حتى بعد إيقاف تشغيل الجهاز وفصله عن مصدر الطاقة. ويختلف ذلك عن ذاكرة الوصول العشوائي، إلى جانب عدد من خصائص الأداء الأخرى.
ولو شُبّه النوعان من الذاكرة بسيارتين، لكانت ذاكرة الوصول العشوائي سيارة رياضية صغيرة لامعة: سريعة ومكلفة ولا تتسع إلا للسائق وراكب واحد تقريباً (سعة محدودة). أما الذاكرة الثانوية فتشبه حافلة صغيرة اقتصادية؛ فهي أبطأ وأقل تكلفة لكنها توفر سعة أكبر بكثير من الذاكرة الرئيسية.
يعمل القرص الصلب، المعروف أيضا بمحرك الأقراص الصلبة (HDD)، كوحدة تخزين وتشغيل في آن واحد، بينما يمثل القرص الصلب نفسه اللوح المادي داخل محرك الأقراص الذي تُسجل عليه البيانات مغناطيسياً.
وفي معظم الحالات، حلَّت محركات الأقراص ذات الحالة الصلبة (SSD) محل محركات الأقراص الثابتة التقليدية. ويؤدي محرك الأقراص ذو الحالة الصلبة (SSD) نفس الوظائف ولكنه يستخدم ذاكرة فلاش على شكل شرائح ذاكرة غير متطايرة لا تحتاج إلى أجزاء متحركة. يُقارن محرك الأقراص ذو الحالة الصلبة بشكل إيجابي بمحرك الأقراص الثابتة بفضل سرعته القوية، والحجم المادي الأصغر، واستهلاك أقل للطاقة.
تعمل الذاكرة الافتراضية من خلال تحويل جزء من ذاكرة RAM بصورة مؤقتة، وهو الجزء الذي استُخدم سابقاً ثم ظل خاملاً وغير مستغل لفترة من الزمن. حيث يستخرج نظام التشغيل البيانات من تلك المساحة قليلة الاستخدام وينقلها إلى ملف المبادلة (Swap File) أو ملف الصفحات (Page File) الموجود على محرك الأقراص الثابتة.
ثم يخصص نظام التشغيل المساحة التي تم تحريرها من RAM للاستخدام الفوري. وتساعد هذه الذاكرة الإضافية "المستعارة" على تشغيل البرامج المتعددة التي يستخدمها الحاسوب دون حدوث مشكلات ملحوظة في الأداء أو تباطؤ محسوس في سرعة التشغيل.
وفيما يتعلق بالبيانات، تُعد الصفحات الوحدة الأساسية للتعامل والتبادل. ففي إدارة الذاكرة الافتراضية، تمثل الصفحات أصغر وحدة بيانات تُستخدم في هذا النظام. والصفحات عبارة عن كتل متجاورة من فضاء العناوين الافتراضية
وتأتي جميع الصفحات بحجم ثابت في العادة. وقد كان الحجم القياسي للصفحات في الأصل 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). ثم تصل النواة إلى البيانات المطلوبة من أحد مصادر التخزين الثانوية. وبعد ذلك، يُحدّث نظام التشغيل جدول الصفحات الذي يتتبع جميع العناوين الافتراضية والعناوين المادية المقابلة لها، ثم يستأنف البرنامج عمله بصورة طبيعية.
وتوجد عدة أنواع من أخطاء الصفحات، ويجري تصنيفها وفقاً لدرجة خطورتها:
ومن الأساليب التي يستخدمها نظام التشغيل لتحسين كفاءة المعالجة تقسيم الصفحات عند الطلب. وتتجنب هذه التقنية تحميل البرنامج بالكامل مسبقاً، إذ يحمّل نظام التشغيل فقط الصفحات المطلوبة في اللحظة الحالية.
ومن مزايا هذا الأسلوب أن النظام يستطيع تشغيل عدد أكبر من البرامج. أما عيبه فيتمثل في احتمال ارتفاع معدل أخطاء الصفحات، وهو ما قد يؤدي إلى حدوث الاهتياج نتيجة المقاطعات المتكررة لسير البرنامج بغرض استرجاع الصفحات من وسائط التخزين.
وتُستخدم بالتوازي مع تقسيم الصفحات عند الطلب مجموعة من المنهجيات القائمة على الخوارزميات. وتتناول كل خوارزمية من خوارزميات استبدال الصفحات هذه المشكلة بأسلوب مختلف:
تمكين عمليات أسرع وأكثر مرونة من خلال توحيد التخزين والحماية والتنسيق لأحمال تشغيل الذكاء الاصطناعي والأجهزة الافتراضية والحاويات.
تحسين وتوسيع نطاق أحمال التشغيل عبر البيئات الافتراضية والمادية من خلال المحاكاة الافتراضية الفعالة والمرنة.
خبرة فنية شاملة لخوادم أنظمة IBM Systems ووحدات التخزين الخاصة بك.