الذاكرة الافتراضية،分页 (Paging) والتجزئة (Segmentation)
| English | العربية |
|---|---|
| pages/ˈpeɪdʒɪz/ | صفحات |
| paging/ˈpeɪdʒɪŋ/ | تجزئة |
| segmentation/ˌseɡmənˈteɪʃn/ | التجزئة |
| virtual address space/ˈvɜːtʃuːəl əˈdres speɪs/ | مساحة العناوين الافتراضية |
| frames/freɪmz/ | إطارات |
| page table/peɪdʒ ˈteɪbl/ | جدول الصفحات |
| page fault/peɪdʒ fɒlt/ | خطأ الصفحة |
| swap file/swɒp faɪl/ | ملف التبديل |
| thrashing/ˈθræʃɪŋ/ | الانهيار |
ضوء القرص الذي يعني أن الآلة قد تخلت
- فتح عدد كبير من التطبيقات على جهاز يفتقر إلى الذاكرة يؤدي إلى حدوث شيء مميز. يتباطأ كل شيء تقريبًا حتى التوقف، وتتوقف ضوء القرص عن الوخز ويبقى مضاءً.
- المعالج مشغول بشيء آخر. هو في وضع الانتظار، لأن الذاكرة التي يحتاجها كل برنامج موجودة على القرص، واستخراج صفحة واحدة يطرد أخرى مطلوبة بعد لحظات.
- الجهاز لا يفعل شيئًا سوى نقل الصفحات. لديه ما يكفي من العمل وما يكفي من الذاكرة للقيام بأحدهما فقط.
- هذه الدرس是关于 الذاكرة الافتراضية، كيف توفر تقسيم الصفحات (Paging) والتجزئة (Segmentation) ذلك، وكيف نفس الآلية التي تجعل الذاكرة تبدو أكبر يمكن أن تجعل الجهاز عديم الفائدة.
مساحة العناوين الافتراضية
- تحصل كل عملية على مساحة عناوين افتراضية خاصة بها: نطاق نظيف ومتصل من العناوين يبدأ من الصفر، تقوم نظام التشغيل برمجته أينما توجد البيانات فعليًا.
- ينتج عن ذلك ثلاثة أشياء. ترى كل عملية مساحة خاصة بسيطة ولا تحتاج لمعرفة ما يجري آخر. العمليات محمية من بعضها البعض، حيث لا يمكن لأحد تسمية عنوان في مساحة الآخر. ويمكن أن يتجاوز إجمالي الذاكرة المستخدمة الرام الفيزيائي، لأن جزءًا منها يعيش على القرص.
- هذا العزل هو حد أمني بقدر كونه مريحًا.
من فوائد الذاكرة الافتراضية أنها:
تعطي الذاكرة الافتراضية لكل عملية مساحة خاصة وتسمح للمجموعة العاملة بتجاوز الـ RAM المثبتة باستخدام القرص.
ماذا يحقق منح كل مساحة عناوين افتراضية؟ حدد كل الخيارات الصحيحة.
توفر الذاكرة الافتراضية البساطة والعزل والسعة. لكنها تكلف السرعة، لأن جزءًا من الذاكرة موجود فعليًا على القرص.
تقسيم الصفحات (Paging)
- تنقسم المساحة الافتراضية إلى صفحات ذات حجم ثابت؛ وتقسيم الذاكرة الفيزيائية إلى إطارات بنفس الحجم. يسجل جدول الصفحات أي إطار يحتوي حاليًا على كل صفحة.
- عندما تستخدم عملية عنوانًا، تبحث الأجهزة عن الصفحة في الجدول وتجد الإطار. إذا كانت الصفحة غير موجودة في الرام، فهذا يسمى خطأ في الصفحة (Page Fault).
- عند خطأ في الصفحة، يقرأ نظام التشغيل الصفحة من ملف التبديل (Swap file) على القرص إلى إطار فارغ. إذا لم يكن هناك إطار فارغ، يجب عليه أولاً طرد (Evict) صفحة، وكتابتها مرة أخرى على القرص إذا تم تعديلها.

صفحات وإطارات بنفس الحجم، مربوطة بجدول
في التقسيم إلى صفحات (Paging)، تنقسم الذاكرة إلى:
يستخدم التقسيم (Paging) صفحات وإطارات ذات حجم ثابت، ترتبط بواسطة جدول الصفحات. (أحجام غير منتظمة هي التجزئة.)
يحدث خطأ في الصفحة (Page fault) عندما:
الصفحة المطلوبة ليست في إطار، لذا يستخرجها نظام التشغيل من ملف التبديل (مع إخراج صفحة أخرى إذا لزم الأمر).
مثال محلول: ما الذي يحدث عند خطأ في الصفحة
- عملية تصل إلى عنوان تكون صفحته غير موجودة في الرام. اشرح ما يفعله نظام التشغيل. [4]
- تكتشف الأجهزة أن الصفحة غير موجودة وترفع قاطع خطأ في الصفحة، وتصبح العملية معلقة (Blocked).
- يجد نظام التشغيل إطارًا فارغًا؛ إذا لم يكن هناك واحد، يختار صفحة لـ استبدالها، ويكتبها مرة أخرى إلى ملف التبديل إذا تم تعديلها.
- يقرأ الصفحة المطلوبة من ملف التبديل إلى ذلك الإطار ويحدث جدول الصفحات.
- تُعاد العملية إلى حالة الاستعداد (Ready) ويُعاد تنفيذ التعليمة. أربع خطوات، أربع درجات، وملاحظة أن العملية كانت معلقة طوال الوقت.
ماذا يحدث عند خطأ الصفحة (Page Fault)?
مرر بخطوات خطأ الصفحة. عندما يلمس البرنامج صفحة ليست في ذاكرة RAM، يقوم نظام التشغيل بهدوء بسحبها من القرص وتحديث جدول الصفحات — بحيث يبدو أن البرنامج يمتلك ذاكرة أكبر مما هو موجود فعليًا.
رتب استجابة نظام التشغيل لخطأ الصفحة بالترتيب.
الكشف والإيقاف، توفير مساحة، التحميل، التسجيل، إعادة المحاولة. خطأ الصفحة هو الآلية الطبيعية، وليس خطأً تقنياً.
الاضطراب (Thrashing)
- اختيار الصفحة التي سيتم استبدالها مهم، لأن الاختيار الخاطئ يعني أنها ستحتاج إليها مرة أخرى فورًا.
- عندما يكون الرام قليلًا جدًا لنظام التشغيل النشط للعمليات الجارية، يسبب كل وصول تقريبًا خطأ في الصفحة، وكل خطأ يطرد صفحة مطلوبتها مرة أخرى فورًا.
- يقضي النظام حينئذٍ وقتًا مقاربًا全部 في تبديل الصفحات بدلاً من تنفيذ التعليمات. هذا هو الاضطراب (Thrashing)، أو اضطراب القرص، وهو الحالة الموصوفة في أعلى هذا الدرس.
- العلاج هو المزيد من الرام، أو عمليات أقل؛ المعالج الأسرع لا يساعد على الإطلاق، لأنه ليس المعالج هو المشغول.
يصبح الجهاز بطيئاً جداً ويكمن القرص الصلب باستمرار. ماذا سيحل هذه المشكلة؟
هذا هو الرعش (Thrashing): كل وصول تقريباً يسبب خطأ وينتظر المعالج. المعالج ليس المكون المشغول، لذا فإن تسريعه لا يغير شيئاً.
التجزئة (Segmentation)
- التجزئة تقسم الذاكرة إلى وحدات منطقية ذات أحجام متغيرة تتوافق مع بنية البرنامج نفسه: الكود، المكدس، الهيب، مصفوفة بيانات كبيرة.
- نظرًا لأن الوحدة هي وحدة منطقية، يمكنها حمل صلاحياتها الخاصة: يمكن أن يكون قسم الكود قراءة فقط وقابل للتنفيذ، والمكدس قراءة-كتابة وغير قابل للتنفيذ.
- التباين الذي يريده الامتحان: **الصفحات ذات حجم ثابت ولا تحمل معنى للبرنامج؛ الوحدات المتجزأة ذات أحجام متغيرة وتطابق الأجزاء المنطقية منه.**有许多真实系统 يجمع بين الاثنين، بتقسيم الصفحات داخل الوحدات.

الوحدات المتجزأة هي أجزاء البرنامج الخاصة، وليست شريحة متساوية
صلح كل مصطلح لإدارة الذاكرة بمعناه.
التقسيم = صفحات ثابتة؛ التجزئة = وحدات منطقية متغيرة؛ خطأ الصفحة يحفز التبديل؛ كثرة الأخطاء = رعش.
تجزئ الذاكرة إلى وحدات منطقية ذات أحجام متغيرة (كود، كومة، منطقة تجميع)، لكل منها صلاحيات خاصة بها، بينما يستخدم التقسيم صفحات ذات حجم ثابت.
تطابق التجزئة البنية المنطقية للبرنامج؛ الصفحات هي كتل ثابتة الحجم موحد — بعض الأنظمة تجمع بين الاثنين.
على عكس الصفحات التي جميعها بنفس الحجم، تكونsegments ذات حجم ____ وتطابق أجزاء البرنامج المنطقية.
الشريحة (segment) هي الكود أو الكومة أو منطقة التجميع، لذا يمكنها حمل صلاحياتها الخاصة. أما الصفحة فهي تقسيم فيزيائي بلا معنى للبرنامج.
مثال محلول: تقسيم الصفحات مقابل التجزئة
- اذكر فرقَين بين تقسيم الصفحات والتجزئة. [2]
- جميع الصفحات ذات حجم ثابت تحدده النظام؛ الوحدات المتجزأة ذات أحجام متغيرة تحدد الأجزاء المنطقية للبرنامج.
- الصفحة هي تقسيم فيزيائي بحت لا معنى له للبرنامج؛ الوحدة المتجزأة تطابق وحدة منطقية مثل الكود أو المكدس، ويمكن منحها صلاحيات وصول خاصة بها.
- ثالثة إذا لزم الأمر: قد يترك تقسيم الصفحات مساحات مستخدمة داخل الصفحة الأخيرة للتخصيص، بينما تترك التجزئة فجوات من المساحات المستخدمة بين الوحدات المتجزئة.
علامات ضائعة
- الذاكرة الافتراضية لا تنشئ ذاكرة. إنها تسمح لـ إجمالي المستخدم يتجاوز الرام الفيزيائي عن طريق الاحتفاظ بجزء منها على القرص، على حساب الوصول إلى القرص.
- خطأ الصفحة ليس خطأً. إنه الآلية الطبيعية لجلب الصفحة.
- الاضطراب (Thrashing) هو قضاء وقت أكثر في التبديل بدلاً من التنفيذ، والحل هو المزيد من الرام أو عمليات أقل، ولا معالج أسرع أبدًا.
- الحجم الثابت مقابل الحجم المتغير، ذو معنى منطقي هو الفرق بين تقسيم الصفحات والتجزئة. قل كلا الجانبين.
لقد فهمت الأمر
- مساحة العناوين الافتراضية تعطي كل عملية نطاقًا خاصًا متصلًا، وتحمي العمليات من بعضها البعض، وتسمح للذاكرة المستخدمة بتجاوز الرام الفيزيائي
- تقسيم الصفحات: صفحات ذات حجم ثابت مربوطة بـ إطارات عبر جدول صفحات؛ خطأ في الصفحة يعلق العملية بينما يطرد نظام التشغيل صفحة إذا لزم الأمر،حميل من ملف التبديل، تحديث الجدول وإعادة المحاولة
- الاضطراب (Thrashing) هو قضاء وقت أكثر في التبديل بدلاً من التنفيذ؛ علاجه بالمزيد من الرام أو عمليات أقل
- التجزئة تستخدم قطعاً متغيرة الحجم تطابق الأجزاء المنطقية للبرنامج، لكل منها صلاحياته الخاصة؛ العديد من الأنظمة تقوم بالتقسيم داخل القطع