سؤال

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

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

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

هل هذا صحيح؟

أضف سؤالا: هل هناك فرق عملي بين تجزئة مع الترحيل، والترحيل من مستويين؟، هو نفسه باستثناء حماية "الحد" لطريقة القطاع.أو هناك فرق آخر؟

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

المحلول

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

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

الآن، عند تعطيل الترحيل، فإن العنوان الأساسي الخطي هو عنوان ذاكرةه البدني. عند تمكين الترحيل، يتم ترجمة جميع الوصول إلى بيانات القطاع من قبل MMU كالمعتاد.

نصائح أخرى

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

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