الفصل ٩: الذاكرة الافتراضية

CS330 - أنظمة التشغيل

التصفح عند الطلب، استبدال الصفحات، التخبط ونموذج مجموعة العمل

٩.١ خلفية

ما هي الذاكرة الافتراضية؟

الذاكرة الافتراضية هي تقنية تسمح بتنفيذ عمليات ليست بالكامل في الذاكرة.

  • فصل الذاكرة المنطقية للمستخدم عن الذاكرة الفيزيائية
  • جزء فقط من البرنامج يحتاج ليكون في الذاكرة للتنفيذ
  • مساحة العنوان المنطقي يمكن أن تكون أكبر بكثير من مساحة العنوان الفيزيائي
  • تسمح بتشغيل برامج أكثر في وقت واحد
  • إدخال/إخراج أقل لتحميل أو مبادلة العمليات

فوائد الذاكرة الافتراضية

  • ✓ البرامج يمكن أن تكون أكبر من الذاكرة الفيزيائية
  • ✓ برامج أكثر يمكن أن تعمل في نفس الوقت
  • ✓ إدخال/إخراج أقل (تحميل الصفحات المطلوبة فقط)
  • ✓ بدء تشغيل أسرع للبرامج
  • ✓ مشاركة الصفحات بين العمليات
  • ✓ استخدام أكثر كفاءة للذاكرة

تنفيذ الذاكرة الافتراضية

يمكن تنفيذ الذاكرة الافتراضية عبر:

٩.٢ التصفح عند الطلب

إحضار صفحة إلى الذاكرة فقط عند الحاجة إليها

البت صالح/غير صالح

مع كل إدخال في جدول الصفحات، يُربط بت صالح/غير صالح:

صفحة إطار بت صالح المعنى
٠ ٤ ص في الذاكرة
١ ٦ ص في الذاكرة
٢ - غ ليست في الذاكرة
٣ ٩ ص في الذاكرة
٤ - غ ليست في الذاكرة

خطوات معالجة خطأ الصفحة

١
مرجع
صفحة

المعالج يشير لصفحة

٢
تحقق
بت صالح

بت غير صالح

٣
تخزين
احتياطي

ابحث عن الصفحة على القرص

٤
حمل إلى
الذاكرة

إحضار الصفحة إلى إطار

٥
تحديث
جدول الصفحات

تعيين بت صالح

٦
إعادة تشغيل
التعليمة

متابعة التنفيذ

١

انتقال إلى نظام التشغيل

إدخال جدول الصفحات به بت غير صالح، مسببًا خطأ صفحة

٢

تحقق من المرجع

نظام التشغيل يتحقق من جدول داخلي لمعرفة إذا كان المرجع صالحًا

٣

احصل على إطار فارغ

ابحث عن إطار فارغ من قائمة الإطارات الحرة

٤

مبادلة الصفحة داخليًا

اقرأ الصفحة من التخزين الاحتياطي إلى الإطار

٥

تحديث الجداول

تعيين إدخال جدول الصفحات، بت صالح = ص

٦

إعادة تشغيل العملية

إعادة تشغيل التعليمة التي سببت خطأ الصفحة

٩.٣ أداء التصفح عند الطلب

وقت الوصول الفعال

EAT = (١ - p) × ma + p × وقت_خطأ_الصفحة

حيث:

  • p = معدل خطأ الصفحة (٠ ≤ p ≤ ١)
  • ma = وقت الوصول للذاكرة
  • وقت_خطأ_الصفحة = وقت خدمة خطأ الصفحة

مكونات وقت خدمة خطأ الصفحة:

  1. عبء خطأ الصفحة (١-١٠٠ ميكروثانية)
  2. مبادلة الصفحة خارجًا (إذا لزم الأمر)
  3. مبادلة الصفحة داخليًا (٨-٢٠ ملي ثانية)
  4. عبء إعادة التشغيل (١-١٠٠ ميكروثانية)

مثال حسابي:

وقت الوصول للذاكرة = ٢٠٠ نانوثانية

وقت خدمة خطأ الصفحة = ٨ ملي ثانية

معدل خطأ الصفحة (p) = ٠.٠٠١

EAT = (١ - ٠.٠٠١) × ٢٠٠ + ٠.٠٠١ × ٨,٠٠٠,٠٠٠

EAT = ٠.٩٩٩ × ٢٠٠ + ٠.٠٠١ × ٨,٠٠٠,٠٠٠

EAT = ١٩٩.٨ + ٨,٠٠٠

EAT = ٨,١٩٩.٨ نانوثانية

هذا أبطأ بحوالي ٤٠ مرة من عدم وجود أخطاء صفحة!

⚠️ هدف الأداء:

لأداء مقبول، يجب أن يكون معدل خطأ الصفحة منخفضًا جدًا (< ٠.٠٠٠١)

حتى خطأ صفحة واحد لكل ١٠٠٠ وصول يسبب تباطؤًا كبيرًا

٩.٤ استبدال الصفحات

عندما لا يوجد إطار فارغ، يجب استبدال صفحة

خطوات استبدال الصفحة الأساسية:

  1. ابحث عن موقع الصفحة المطلوبة على القرص
  2. ابحث عن إطار فارغ:
    • إذا كان هناك إطار فارغ، استخدمه
    • إذا لم يكن، استخدم خوارزمية استبدال الصفحات لاختيار إطار ضحية
  3. إذا كانت الصفحة الضحية معدلة (بت متسخ = ١)، اكتبها على القرص
  4. أحضر الصفحة المطلوبة إلى الإطار المحرر حديثًا
  5. حدث جداول الصفحات والإطارات
  6. أعد تشغيل العملية

هدف استبدال الصفحات:

نريد أقل معدل لأخطاء الصفحة

تقييم الخوارزمية بتشغيلها على سلسلة مراجع وحساب عدد أخطاء الصفحة

٩.٥ خوارزميات استبدال الصفحات

مثال سلسلة المراجع:

٧
٠
١
٢
٠
٣
٠
٤
٢
٣
٠
٣
٢
١
٢
٠
١
٧
٠
١

باستخدام ٣ إطارات

خوارزمية أولاً يدخل أولاً يخرج

استبدال أقدم صفحة في الذاكرة

المرجع ٧٠١٢٠٣٠٤٢٣٠٣٢١٢٠١٧٠١
إطار ٠ ٧٧٧٢٢٢٢٤٤٤٠٠٠٠٠٠٠٧٧٧
إطار ١ ٠٠٠٠٣٣٣٢٢٢٢٢١١١١١٠٠
إطار ٢ ١١١١٠٠٠٣٣٣٣٣٢٢٢٢٢١
خطأ؟ خخخخ-خخخخخخ--خخ--خخخ

إجمالي أخطاء الصفحة: ١٥

استبدال الصفحة الأمثل

استبدال الصفحة التي لن تُستخدم لأطول فترة زمنية

المرجع ٧٠١٢٠٣٠٤٢٣٠٣٢١٢٠١٧٠١
إطار ٠ ٧٧٧٢٢٢٢٢٢٢٢٢٢٢٢٢٢٧٧٧
إطار ١ ٠٠٠٠٠٠٤٤٠٠٠٠٠٠٠٠٠٠٠
إطار ٢ ١١١٣٣٣٣٣٣٣٣١١١١١١١
خطأ؟ خخخخ-خ-خ-خ---خ---خ--

إجمالي أخطاء الصفحة: ٩ (أمثل لكن يتطلب معرفة مستقبلية)

خوارزمية الأقل استخدامًا مؤخرًا

استبدال الصفحة التي لم تُستخدم لأطول وقت

المرجع ٧٠١٢٠٣٠٤٢٣٠٣٢١٢٠١٧٠١
إطار ٠ ٧٧٧٢٢٢٢٤٤٤٠٠٠١١١١١١١
إطار ١ ٠٠٠٠٠٠٠٠٠٠٣٣٣٣٠٠٠٠٠
إطار ٢ ١١١٣٣٣٢٣٣٣٢٢٢٢٢٧٧٧
خطأ؟ خخخخ-خ-خخ-خ-خخ-خ-خ--

إجمالي أخطاء الصفحة: ١٢

مقارنة الخوارزميات

الخوارزمية الوصف أخطاء الصفحة المزايا العيوب
FIFO استبدال أقدم صفحة ١٥ سهلة التنفيذ أداء ضعيف، شذوذ بيلادي
الأمثل استبدال صفحة لن تُستخدم لأطول وقت مستقبلي ٩ أقل أخطاء صفحة يحتاج معرفة مستقبلية (مستحيل)
LRU استبدال الأقل استخدامًا مؤخرًا ١٢ أداء جيد، يقارب الأمثل مكلف للتنفيذ بدقة
الساعة تقريب LRU باستخدام بت المرجع ~١٣ تنفيذ فعال ليس بجودة LRU الحقيقي
LFU استبدال الأقل استخدامًا من حيث التكرار يتفاوت يأخذ في الاعتبار تردد الاستخدام الصفحات المستخدمة بكثرة في البداية تبقى

🚨 شذوذ بيلادي

لبعض خوارزميات استبدال الصفحات (مثل FIFO)، المزيد من الإطارات يمكن أن يسبب المزيد من أخطاء الصفحة!

مثال: سلسلة المراجع: ١, ٢, ٣, ٤, ١, ٢, ٥, ١, ٢, ٣, ٤, ٥

  • مع ٣ إطارات: ٩ أخطاء صفحة
  • مع ٤ إطارات: ١٠ أخطاء صفحة (أكثر!)

٩.٦ التخبط

ما هو التخبط؟

العملية تتخبط إذا كانت تقضي وقتًا في التصفح أكثر من وقت التنفيذ

سيناريو التخبط:

  1. استخدام منخفض للمعالج ← نظام التشغيل يزيد تعدد البرمجة
  2. عمليات أكثر ← ذاكرة أقل لكل عملية
  3. العمليات تبدأ في حدوث أخطاء صفحة متكررة
  4. قائمة انتظار الإدخال/الإخراج تنمو، استخدام المعالج ينخفض أكثر
  5. نظام التشغيل يضيف عمليات أكثر (معتقدًا أن المعالج خامل)
  6. النظام يدخل حالة التخبط

استخدام المعالج مقابل درجة تعدد البرمجة

منخفض
جيد
أمثل
تخبط
شديد

درجة تعدد البرمجة →

⚠️ منع التخبط:

  • تزويد العملية بعدد الإطارات التي تحتاجها
  • استخدام نموذج مجموعة العمل لتقدير الاحتياجات
  • مراقبة تردد خطأ الصفحة
  • تعليق العمليات إذا تم اكتشاف تخبط

٩.٧ نموذج مجموعة العمل

المكانية المرجعية

المكانية الزمنية

إذا تمت الإشارة إلى موقع ذاكرة، فسيتم الإشارة إليه مرة أخرى قريبًا

مثال: عدادات الحلقات، المتغيرات المستخدمة بكثرة

المكانية المكانية

إذا تمت الإشارة إلى موقع ذاكرة، فسيتم الإشارة إلى المواقع القريبة منه قريبًا

مثال: عناصر المصفوفة، الكود المتسلسل

تعريف مجموعة العمل

مجموعة العمل W(t, Δ) = مجموعة الصفحات المشار إليها في آخر Δ وحدة زمنية

نافذة مجموعة العمل (Δ = ١٠)

٢
٦
١
٥
٧
٥
١
٦
٢
٣

مجموعة العمل = {١, ٢, ٣, ٥, ٦, ٧}

حجم مجموعة العمل = ٦

استراتيجية مجموعة العمل:

إذا كان إجمالي مجموعة العمل > الذاكرة المتاحة → تخبط

إذا كانت D = Σ حجم مجموعة العمل > m (إطارات متاحة)

ثم علق عملية أو أكثر

٩.٨ تردد خطأ الصفحة

مخطط تردد خطأ الصفحة

تحديد نطاق مقبول لتردد خطأ الصفحة

  • إذا كان تردد خطأ الصفحة مرتفعًا جدًا → خصص إطارات أكثر للعملية
  • إذا كان تردد خطأ الصفحة منخفضًا جدًا → قلل الإطارات المخصصة
  • إذا لم تكن هناك إطارات حرة متاحة → علق العملية
حد علوي
(زيادة الإطارات)
النطاق المطلوب
حد سفلي
(تقليل الإطارات)

٩.٩ تخصيص الإطارات

تخصيص متساوٍ

كل عملية تحصل على حصة متساوية

m إطار، n عملية

كل عملية تحصل m/n إطارًا

تخصيص نسبي

تخصيص حسب الحجم

sᵢ = حجم العملية i

S = Σsᵢ

aᵢ = (sᵢ/S) × m

تخصيص بالأولوية

بناءً على أولوية العملية

أولوية أعلى = إطارات أكثر

استبدال عالمي مقابل محلي:

  • استبدال عالمي: العملية يمكنها اختيار إطار بديل من جميع الإطارات (حتى تلك التابعة لعمليات أخرى)
  • استبدال محلي: العملية يمكنها الاختيار فقط من إطاراتها المخصصة

٩.١٠ مسائل تطبيقية

مسألة ١: استبدال الصفحات

سلسلة المراجع: ١, ٢, ٣, ٤, ٢, ١, ٥, ٦, ٢, ١, ٢, ٣, ٧, ٦, ٣, ٢, ١, ٢, ٣, ٦

إطارات: ٣

احسب أخطاء الصفحة لخوارزميات FIFO، LRU، والأمثل

الحل:

FIFO: ١٦ خطأ صفحة

LRU: ١٥ خطأ صفحة

الأمثل: ١١ خطأ صفحة

مسألة ٢: وقت الوصول الفعال

وقت الوصول للذاكرة = ١٠٠ نانوثانية

وقت خدمة خطأ الصفحة = ٢٥ ملي ثانية

معدل خطأ الصفحة = ٠.٠٠٠١

احسب EAT

الحل:

EAT = (١ - ٠.٠٠٠١) × ١٠٠ + ٠.٠٠٠١ × ٢٥,٠٠٠,٠٠٠

EAT = ٩٩.٩٩ + ٢,٥٠٠

EAT = ٢,٥٩٩.٩٩ نانوثانية

مسألة ٣: مجموعة العمل

سلسلة المراجع: ٢, ٣, ٢, ٤, ٥, ٣, ٦, ٣, ٤, ٥, ٣

حجم النافذة Δ = ٤

أوجد مجموعة العمل عند t = ٧

الحل:

انظر إلى آخر ٤ مراجع: ٥, ٣, ٦, ٣

مجموعة العمل = {٣, ٥, ٦}

حجم مجموعة العمل = ٣

٩.١١ أسئلة اختبار CS330

أسئلة اختيار من متعدد

س١. أي خوارزمية استبدال صفحات تعاني من شذوذ بيلادي؟

الإجابة: FIFO

س٢. النظام يتخبط عندما:

الإجابة: العمليات تقضي وقتًا في التصفح أكثر من التنفيذ

س٣. نموذج مجموعة العمل يعتمد على:

الإجابة: المكانية المرجعية

س٤. البت صالح/غير صالح في جدول الصفحات يشير إلى:

الإجابة: ما إذا كانت الصفحة في الذاكرة (ص) أو على القرص (غ)

أسئلة إجابة قصيرة

س٥. اذكر طريقتين لتحسين أداء النظام عند حدوث التخبط.

الإجابة:

  1. تقليل درجة تعدد البرمجة
  2. زيادة حجم الذاكرة الرئيسية
  3. استخدام خوارزمية استبدال صفحات أفضل
  4. تحسين مكانية البرامج

س٦. لماذا خوارزمية استبدال الصفحة المثلى غير قابلة للتنفيذ؟

الإجابة: تتطلب معرفة مستقبلية بسلسلة المراجع، وهو أمر مستحيل معرفته مسبقًا. تُستخدم فقط كمعيار لمقارنة الخوارزميات الأخرى.

٩.١٢ المصطلحات الرئيسية والتعريفات

ذاكرة افتراضية: تقنية تسمح بتنفيذ عمليات ليست بالكامل في الذاكرة
تصفح عند الطلب: تحميل الصفحات فقط عندما يُطلب أثناء التنفيذ
خطأ صفحة: انتقال يُولد عندما تصل عملية إلى صفحة ليست في الذاكرة
استبدال صفحات: اختيار صفحة ضحية لمبادلتها خارجًا عندما لا توجد إطارات حرة
سلسلة مراجع: تسلسل مراجع الصفحات المستخدم لتقييم الخوارزميات
تخبط: عملية تقضي وقتًا في التصفح أكثر من التنفيذ
مجموعة عمل: مجموعة الصفحات التي تستخدمها العملية بنشاط
مكانية: ميل للإشارة إلى مواقع ذاكرة قريبة
شذوذ بيلادي: إطارات أكثر تسبب أخطاء صفحة أكثر (FIFO)
بت متسخ: يشير إذا كانت الصفحة قد تم تعديلها
EAT: وقت الوصول الفعال بما في ذلك عبء خطأ الصفحة
PFF: تردد خطأ الصفحة لتخصيص الإطارات

٩.١٣ مخططات من الشرائح

📊 خطوات معالجة خطأ الصفحة

[إدراج مخطط مفصل لمعالجة خطأ الصفحة مع نظام التشغيل والذاكرة والقرص]

📊 مقارنة خوارزميات استبدال الصفحات

[إدراج مقارنة مرئية لـ FIFO و LRU والأمثل]

📊 رسم التخبط

[إدراج منحنى استخدام المعالج مقابل درجة تعدد البرمجة]

📊 نموذج مجموعة العمل

[إدراج نافذة مجموعة العمل ومثال حساب حجم مجموعة العمل]

ملاحظة: يرجى توفير المخططات الفعلية من مواد المقرر لاستبدال هذه العناصر النائبة.