مساحة عنوان افتراضية

مخطط يوضح العلاقة بين مساحات العناوين الافتراضية والمادية

في مجال الحوسبة ، تُعرف مساحة العناوين الافتراضية ( VAS ) بأنها منطقة من مواقع الذاكرة الافتراضية المتجاورة، تُسمى العناوين الافتراضية ، والتي يُتيحها نظام التشغيل للعمليات لتنفيذ التعليمات وتخزين البيانات، ويربطها بمساحة العناوين الفيزيائية في ذاكرة الحاسوب. [ 1 ] يبدأ نطاق العناوين الافتراضية عادةً من عنوان منخفض، ويمكن أن يمتد إلى أعلى عنوان تسمح به بنية مجموعة تعليمات الحاسوب ، ويدعمه حجم مؤشر نظام التشغيل ، والذي قد يكون 4 بايتات لأنظمة 32 بت أو 8 بايتات لأنظمة 64 بت . يوفر هذا العديد من المزايا، بما في ذلك الأمان من خلال عزل العمليات ، بافتراض تخصيص مساحة عناوين منفصلة لكل عملية.

مثال

في الوصف التالي، ستكون المصطلحات المستخدمة خاصة بنظام التشغيل Windows NT ، ولكن المفاهيم قابلة للتطبيق على أنظمة تشغيل الذاكرة الافتراضية الأخرى.

عند تشغيل تطبيق جديد على نظام تشغيل 32 بت ، يمتلك التطبيق مساحة تخزين افتراضية (VAS) بحجم 4 جيجابايت : يمكن لكل عنوان من عناوين الذاكرة (من 0 إلى 2^ 32 - 1) في هذه المساحة أن يحتوي على بايت واحد كقيمة. في البداية، لا توجد أي قيمة لأي منها ( -حيث يمثل 0 عدم وجود قيمة). استخدام أو تعيين قيم في مساحة التخزين الافتراضية هذه سيؤدي إلى حدوث استثناء في الذاكرة .

 0 4 جيجابايت خدمات القيمة المضافة |---------------------------------------------| 

ثم يتم ربط الملف التنفيذي للتطبيق بمساحة التخزين الافتراضية (VAS). يتم ربط العناوين في مساحة التخزين الافتراضية للعملية بالبايتات في الملف التنفيذي . ويتولى نظام التشغيل إدارة عملية الربط.

 0 4 جيجابايت خدمات القيمة المضافة |---vvv---------------------------------------| رسم الخرائط ||| تطبيق بايتات الملفات 

يمثل الرمز vالقيم من البايتات في الملف المُرتبط . ثم يتم ربط ملفات DLL المطلوبة (يشمل ذلك المكتبات المخصصة بالإضافة إلى مكتبات النظام مثل kernel32.dllو user32.dll):

 0 4 جيجابايت خدمات القيمة المضافة |---vvv--------vvvvvv---vvvv-------------------| التخطيط ||| |||||| |||| بايتات الملف تطبيق النواة المستخدم 

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

 0 4 جيجابايت خدمات القيمة المضافة |---vvv--------vvvvvv---vvvv---vv-----v----vvv-| التخطيط ||| |||||| |||| || | ||| ملف بايتات تطبيق نواة مستخدم ملف صفحة النظام 

ويمكن ربط أجزاء مختلفة من ملف الصفحة بـ VAS لعمليات مختلفة:

 0 4 جيجابايت خدمات القيمة المضافة |---vvvv-------vvvvvv---vvvv---vv-----v----vvv-| التخطيط |||| |||||| |||| || | ||| ملف بايتات التطبيق 1 التطبيق 2 نواة المستخدم ملف صفحة النظام التخطيط |||| |||||| |||| || | خدمات القيمة المضافة 2 |--------vvvv--vvvvvv---vvvv-------vv----v-----| 

في نظام التشغيل مايكروسوفت ويندوز 32 بت، يُخصص افتراضيًا 2 جيجابايت فقط للعمليات لاستخدامها الخاص. [ 2 ] أما الـ 2 جيجابايت المتبقية فيستخدمها نظام التشغيل. في الإصدارات اللاحقة من مايكروسوفت ويندوز 32 بت، يُمكن توسيع مساحة العناوين الافتراضية لوضع المستخدم إلى 3 جيجابايت مع تخصيص 1 جيجابايت فقط لمساحة العناوين الافتراضية لوضع النواة، وذلك بتحديد البرامج IMAGE_FILE_LARGE_ADDRESS_AWAREوتفعيل /3GBالخيار المناسب في boot.iniالملف. [ 3 ] [ 4 ]

في نظام التشغيل مايكروسوفت ويندوز 64 بت، عند تشغيل عملية تحتوي على ملف تنفيذي مرتبط بـ /LARGEADDRESSAWARE:NO، يقوم نظام التشغيل بتقييد جزء وضع المستخدم من مساحة العناوين الافتراضية للعملية إلى 2 جيجابايت. ينطبق هذا على كل من الملفات التنفيذية 32 بت و64 بت. [ 5 ] [ 6 ] أما العمليات التي تشغل ملفات تنفيذية مرتبطة بخيار /LARGEADDRESSAWARE:YES، وهو الخيار الافتراضي في Visual Studio 2010 والإصدارات الأحدث 64 بت، [ 7 ] فتتمتع بإمكانية الوصول إلى أكثر من 2 جيجابايت من مساحة العناوين الافتراضية: ما يصل إلى 4 جيجابايت للملفات التنفيذية 32 بت، وما يصل إلى 8 تيرابايت للملفات التنفيذية 64 بت في أنظمة ويندوز حتى ويندوز 8، وما يصل إلى 128 تيرابايت للملفات التنفيذية 64 بت في ويندوز 8.1 والإصدارات الأحدث. [ 4 ] [ 8 ]

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

لينكس

بالنسبة لوحدات المعالجة المركزية x86 ذات 32 بت، يسمح نظام لينكس بتقسيم نطاقات عناوين المستخدم والنواة بطرق مختلفة: 3G/1G مستخدم/نواة (افتراضي)، 1G/3G مستخدم/نواة أو 2G/2G مستخدم/نواة . [ 9 ]

انظر أيضاً

مراجع

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

  • ريختر، جيفري. أنظمة ويندوز المتقدمة . مطبعة مايكروسوفت.