الفصل ٧: الجمود

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

الجمود في النظام، المنع، التجنب، الاكتشاف والاسترداد

٧.١ نموذج النظام

الجمود هو حالة حيث مجموعة من العمليات محجوبة لأن كل عملية تمتلك موردًا وتنتظر موردًا آخر مملوكًا بواسطة عملية أخرى.

أنواع الموارد

استخدام العملية للموارد

// تسلسل استخدام العملية العادي للموارد: 1. طلب - العملية تطلب موردًا 2. استخدام - العملية تستخدم المورد 3. تحرير - العملية تحرر المورد

⚠️ مثال جمود:

عملية P1 تمتلك مورد R1 وتنتظر مورد R2

عملية P2 تمتلك مورد R2 وتنتظر مورد R1

النتيجة: كلتا العمليتين تنتظران إلى الأبد!

٧.٢ توصيف الجمود

أربعة شروط ضرورية للجمود

الجمود يمكن أن يحدث إذا تحققت كل الشروط الأربعة في نفس الوقت:

١الاستبعاد المتبادل

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

٢الاحتجاز والانتظار

يجب أن تحتجز العملية موردًا واحدًا على الأقل وتنتظر للحصول على موارد إضافية محتجزة بواسطة عمليات أخرى.

٣عدم الاستباق

لا يمكن استباق الموارد؛ يمكن تحرير المورد فقط طواعية بواسطة العملية التي تحتجزه.

٤الانتظار الدائري

يجب أن توجد مجموعة {P0, P1, ..., Pn} من العمليات المنتظرة بحيث P0 تنتظر P1، P1 تنتظر P2، ...، و Pn تنتظر P0.

💡 مهم:

يجب توفر جميع الشروط الأربعة لحدوث الجمود. إذا تمكنا من منع أي شرط واحد من هذه الشروط، يمكننا منع الجمود!

٧.٣ رسم تخصيص الموارد

مكونات رسم تخصيص الموارد

رسم بياني موجه يستخدم لوصف الجمود

P1
R1
P2

عناصر الرسم:

  • الرؤوس:
    • عُقد العمليات (دوائر): P = {P1, P2, ..., Pn}
    • عُقد الموارد (مستطيلات): R = {R1, R2, ..., Rm}
  • الأضلاع:
    • ضلع طلب: Pi → Rj (عملية تطلب موردًا)
    • ضلع تخصيص: Rj → Pi (مورد مخصص لعملية)

قواعد تحليل RAG:

  • إذا لم يكن في الرسم دوراتلا جمود
  • إذا كان في الرسم دورة:
    • إذا كانت نسخة واحدة فقط لكل نوع مورد → جمود
    • إذا كان عدة نسخ لكل نوع مورد → احتمال جمود

📊 أمثلة رسم تخصيص الموارد

[إدراج مخططات RAG تظهر سيناريوهات جمود وبدون جمود]

٧.٤ طرق التعامل مع الجمود

١️⃣ منع الجمود

ضمان أن شرطًا واحدًا على الأقل من الشروط الأربعة لا يمكن أن يتحقق.

  • نهج هيكلي
  • يمنع الجمود بالتصميم
  • قد يؤدي لاستخدام منخفض للأجهزة

٢️⃣ تجنب الجمود

يتطلب معرفة مسبقة باحتياجات الموارد. النظام يقرر ما إذا كان الطلب يجب أن ينتظر.

  • نهج ديناميكي
  • يستخدم خوارزمية المصرفي
  • يحافظ على حالة آمنة

٣️⃣ اكتشاف الجمود

السماح بحدوث الجمود، ثم اكتشافه والاسترداد منه.

  • فحص دوري
  • خوارزمية اكتشاف
  • إجراءات استرداد

٤️⃣ تجاهل المشكلة

خوارزمية النعامة - التظاهر بأن الجمود لا يحدث أبدًا.

  • تستخدم بواسطة معظم أنظمة التشغيل
  • تدخل يدوي
  • فعال من حيث التكلفة للجمود النادر

٧.٥ منع الجمود

تقييد طرق تقديم طلبات الموارد لضمان أن شرطًا واحدًا على الأقل لا يمكن أن يحدث:

منع كل شرط:

١. الاستبعاد المتبادل

المنع: غير عملي لمعظم الموارد. بعض الموارد بطبيعتها غير قابلة للمشاركة (مثل الطابعة).

الحل: استخدام spooling لبعض الموارد (قوائم انتظار الطابعة).

٢. الاحتجاز والانتظار

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

الحلول:

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

٣. عدم الاستباق

المنع: إذا كانت عملية تحتجز موارد وتطلب موردًا آخر لا يمكن تخصيصه فورًا، يتم تحرير جميع الموارد المحتجزة حاليًا.

الحدود: يُطبق فقط على الموارد التي يمكن حفظ حالتها (المعالج، الذاكرة).

٤. الانتظار الدائري

المنع: فرض ترتيب كلي لجميع أنواع الموارد.

الحل: طلب العمليات للموارد بترتيب تصاعدي.

// مثال ترتيب الموارد: R1 = محرك شريط (الترتيب = ١) R2 = قرص صلب (الترتيب = ٢) R3 = طابعة (الترتيب = ٣) // العملية يجب أن تطلب بالترتيب: R1 → R2 → R3 // لا يمكن طلب R1 بعد احتجاز R2

٧.٦ تجنب الجمود

الحالة الآمنة

الحالة آمنة إذا كان بإمكان النظام تخصيص موارد لكل عملية بترتيب ما وتجنب الجمود.

النظام في حالة آمنة إذا كان هناك تسلسل آمن لجميع العمليات.

حالة آمنة

لا جمود ممكن

حالة غير آمنة

قد تؤدي لجمود

حالة جمود

النظام عالق

خوارزمية رسم تخصيص الموارد

لنسخة واحدة من كل نوع مورد:

خوارزمية المصرفي

لعدة نسخ من الموارد

سميت على اسم النظام المصرفي الذي يضمن أن البنك لا يخصص كل النقود.

هياكل البيانات (n عملية، m نوع مورد):

Available[m]
٣
٣
٢

الموارد المتاحة

Max[n][m]
٧
٥
٣
٣
٢
٢
٩
٠
٢

الحد الأقصى للطلب

Allocation[n][m]
٠
١
٠
٢
٠
٠
٣
٠
٢

المخصص حاليًا

Need[n][m]
٧
٤
٣
١
٢
٢
٦
٠
٠

الاحتياج = Max - Allocation

خوارزمية الأمان

// خوارزمية الأمان لإيجاد تسلسل آمن ١. اجعل Work = Available و Finish[i] = false لكل i ٢. ابحث عن i بحيث: Finish[i] == false و Need[i] ≤ Work إذا لم يوجد i، اذهب للخطوة ٤ ٣. Work = Work + Allocation[i] Finish[i] = true اذهب للخطوة ٢ ٤. إذا كان Finish[i] == true لكل i، فإن النظام في حالة آمنة

مثال تسلسل آمن:

P1 P3 P4 P2 P0

النظام في حالة آمنة مع هذا الترتيب للتنفيذ

٧.٧ اكتشاف الجمود

خوارزمية الاكتشاف

السماح للنظام بالدخول في حالة جمود، ثم اكتشافه والاسترداد منه.

نسخة واحدة من كل نوع مورد:

  • الحفاظ على رسم انتظار
  • العقد هي العمليات
  • Pi → Pj إذا كانت Pi تنتظر Pj
  • التحقق دوريًا من وجود دورات
🔄 دورة في الرسم = تم اكتشاف جمود!

خوارزمية اكتشاف لعدة نسخ

// مشابهة لخوارزمية المصرفي ولكن للاكتشاف ١. اجعل Work = Available لكل i من ٠ إلى n-١: إذا كان Allocation[i] ≠ ٠ Finish[i] = false وإلا Finish[i] = true ٢. ابحث عن i بحيث: Finish[i] == false و Request[i] ≤ Work ٣. Work = Work + Allocation[i] Finish[i] = true اذهب للخطوة ٢ ٤. إذا كان Finish[i] == false لأي i، فإن النظام في حالة جمود العمليات التي Finish[i] == false هي في حالة جمود

متى نستدعي خوارزمية الاكتشاف؟

٧.٨ الاسترداد من الجمود

طرق الاسترداد

الخيار ١: إنهاء العملية

  • إنهاء جميع العمليات في حالة الجمود
    • إزالة الجمود فورًا
    • مكلف - كل العمل ضاع
  • إنهاء عملية واحدة في كل مرة
    • التحقق من الجمود بعد كل إنهاء
    • أقل تكلفة ولكن عبء أكبر

الخيار ٢: استباق الموارد

  • اختيار الضحية - أي الموارد والعمليات نستبق؟
  • التراجع - العودة لحالة آمنة، إعادة تشغيل العملية
  • التجويع - ضمان أن نفس العملية ليست دائمًا الضحية

عوامل اختيار الضحية

العامل الاعتبارات
الأولوية عملية ذات أولوية أقل تُختار أولاً
الوقت كم من الوقت حسبت العملية والوقت المتبقي
الموارد الموارد المستخدمة والموارد اللازمة للاكتمال
تكلفة التراجع عدد العمليات التي تحتاج إنهاء
تفاعلية/دفعية العمليات التفاعلية قد تكون لها أولوية أعلى

٧.٩ أمثلة تطبيقية

مثال ١: تطبيق خوارزمية المصرفي

المعطيات: ٥ عمليات (P0-P4)، ٣ أنواع موارد (A=١٠، B=٥، C=٧)

العملية المخصص
(A B C)
الحد الأقصى
(A B C)
الاحتياج
(A B C)
P0 ٠ ١ ٠ ٧ ٥ ٣ ٧ ٤ ٣
P1 ٢ ٠ ٠ ٣ ٢ ٢ ١ ٢ ٢
P2 ٣ ٠ ٢ ٩ ٠ ٢ ٦ ٠ ٠
P3 ٢ ١ ١ ٢ ٢ ٢ ٠ ١ ١
P4 ٠ ٠ ٢ ٤ ٣ ٣ ٤ ٣ ١

المتاح: A=٣، B=٣، C=٢

التسلسل الآمن: <P1, P3, P4, P2, P0>

حالة النظام: آمنة ✓

مثال ٢: طلب مورد

إذا طلبت P1 (١،٠،٢):

  1. تحقق: Request ≤ Need? (١،٠،٢) ≤ (١،٢،٢) ✓
  2. تحقق: Request ≤ Available? (١،٠،٢) ≤ (٣،٣،٢) ✓
  3. التخصيص الافتراضي:
    • Available = (٣،٣،٢) - (١،٠،٢) = (٢،٣،٠)
    • Allocation[P1] = (٢،٠،٠) + (١،٠،٢) = (٣،٠،٢)
    • Need[P1] = (١،٢،٢) - (١،٠،٢) = (٠،٢،٠)
  4. تشغيل خوارزمية الأمان → إيجاد تسلسل آمن
  5. إذا كان آمنًا، منح الطلب؛ وإلا رفض

٧.١٠ مسائل تطبيقية وأسئلة اختبارات

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

س١. أي مما يلي ليس شرطًا ضروريًا للجمود؟

  • أ) الاستبعاد المتبادل
  • ب) الاحتجاز والانتظار
  • ج) السماح بالاستباق
  • ج) السماح بالاستباق

س٢. في رسم تخصيص الموارد، الدورة تشير إلى:

  • أ) دائمًا جمود
  • ب) جمود إذا كانت نسخة واحدة، احتمال جمود إذا كانت عدة نسخ
  • ج) أبدًا جمود
  • د) النظام آمن

س٣. خوارزمية المصرفي تستخدم لـ:

  • أ) منع الجمود
  • ب) تجنب الجمود
  • ج) اكتشاف الجمود
  • د) استرداد الجمود

س٤. الحالة الآمنة تعني:

  • أ) النظام في حالة جمود
  • ب) النظام سيدخل في جمود
  • ج) النظام يمكنه تجنب الجمود
  • د) النظام لا يحتوي عمليات

س٥. أي طريقة تمنع الانتظار الدائري؟

  • أ) ترتيب الموارد
  • ب) مشاركة الموارد
  • ج) إنهاء العملية
  • د) استباق الموارد

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

س٦. اشرح الفرق بين منع الجمود وتجنب الجمود.

الإجابة:

المنع: يجعل الجمود مستحيلًا هيكليًا بضمان أن شرطًا واحدًا على الأقل من الشروط الضرورية لا يمكن أن يحدث.

التجنب: يفحص ديناميكيًا حالة تخصيص الموارد لضمان أن النظام لا يدخل أبدًا في حالة غير آمنة.

س٧. لدينا ٣ عمليات بالاحتياجات التالية. هل النظام في حالة آمنة؟

العملية المخصص الحد الأقصى
P0 ١ ٤
P1 ٢ ٣
P2 ٢ ٩

المتاح = ٢

الحل:

الاحتياج: P0=٣، P1=١، P2=٧

يمكن تلبية P1 (الاحتياج=١ ≤ المتاح=٢)

بعد P1: المتاح = ٢ + ٢ = ٤

يمكن تلبية P0 (الاحتياج=٣ ≤ المتاح=٤)

بعد P0: المتاح = ٤ + ١ = ٥

لا يمكن تلبية P2 (الاحتياج=٧ > المتاح=٥)

النظام ليس في حالة آمنة

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

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

٧.١٢ مخططات من الشرائح

📊 رسم تخصيص الموارد

[إدراج مخطط RAG مع عمليات وموارد]

📊 RAG مع جمود وبدون جمود

[إدراج مقارنة RAGs مع وبدون دورات]

📊 حالات آمنة، غير آمنة، وجمود

[إدراج مخطط انتقال الحالة]

📊 مثال خوارزمية المصرفي

[إدراج تنفيذ خوارزمية المصرفي خطوة بخطوة]

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