هي مساحة العنوان الافتراضية في العملية بالكامل في الصفحات

StackOverflow https://stackoverflow.com/questions/1851794

  •  13-09-2019
  •  | 
  •  

سؤال

ملحوظة: أحاول دراسة نظرة عامة رفيعة المستوى عن تخصيص الذاكرة الافتراضية

تعد مساحة العنوان الافتراضية في العملية بأكملها في الصفحات، من حجم معين:

  .text
  .bss
  .data

هل هذا يشمل أيضا مساحة كومة وتكدس - أو هل هذا دائما غير قابل للنقش؟

هل كانت مفيدة؟

المحلول

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

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

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

ال .text, .bss و .data لا تعرف المناطق في نظام التشغيل (على الرغم من أن معظم أنظمة التشغيل تعرف عنها، لأسباب الأمن والأداء).

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

نصائح أخرى

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

على سبيل المثال، مع عناوين خطية 32 بت وصفحات 4KB، فإن البتات العشرين العشرين هي رقم صفحة وأقل 12 بت من إزاحة صفحة.

.data هو المكان الذي تضعه المتغيرات العالمية للبرنامج. .bss يحتوي على Globals دون تهيئة صريحة (بقيمة افتراضية من 0). الكومة والمكدسة هي مناطق الذاكرة منفصلة من هذه ومن بعضها البعض. جميع الذاكرة التي تظهرها عملية هي جميع الذاكرة الظاهرية تقسيم في الصفحات. العملية لا ترى أي شيء آخر غير الذاكرة الافتراضية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top