critical-section: (المنطقة الحرجة)
محصورة بين المدخل القسم ومخرج القسم فاذا دخلت عمليه واحدة عليه راح تعمل له قفل(لوك) ولايمكن لغيرها الدخول حتى تخرج من كريتيكال سيكشن الخاصه بها وتلغي القفل
لضمان ان عمليه واحد فقط هي اللتي تدخل على هذه المنطقه الخاصه تطبق هذه القواعدالاتيه
1)Mutual Exclusion:
اذا عملية دخلت منطقتها الحرجه لااحد يستطيع ان يدخل على الكريتيكال سيكشن الخاصه به
2)progress
اذا لم يكون هنالك عمليه داخله الكريتيكال سيكشن الخاص بها وهناك عمليات تريد دخول الكريتكال سيكشن الخاص بها فلايرجع النظام لعملية القرار من يدخل الكريتيكال سيكشن
3)bounded waiting
اي لابد من تحديد عدد المرات اللتي ستدخل العمليات فيها الكريتيكال سيكشن الخاص فيها بعد ان طلبت عمليه اخرى دخول الكريتيكال سيكشن الخاص فيها اي طلبت القفل ولكنها لم تحصل عليه بعد
عند تحديده ب3 مثلا وهناك عملية تريد الدخول الدخول فطلبت القفل (اللوك ) فلن تحصل عليه وستنتظر الى ان تدخل 3 عمليات ثم تدخل هي على الكريتيكال سيكشن
المصدر :
Operating system concepts
*******************************************************************************************************************************************************
طرق حل critical section:
1-الحل عن طريق hard ware :
إن في hard ware يعتمد على operating system وذلك في تحديد نوع process هل يمكن تجزئ process (preemptive ) أو لايمكن تجزئها (non-preemptive).
وتستخدم عمليتين هما (test, set).
مشكلة في هذه الطريقة: إن استخدامها من قبل المبرمجين صعب.
2- الحل عن طريق soft ware:
تستخدم طريقتين:
أ-Peterson’s solution:
إن هذه الطريقة لاتستخدم إلا لبرنامجين فقط(processes2).
ب-semaphore :
إنsemaphoreهو عبارة عن رقم صحيح ويتعامل معه في single and wait .
single :تستخدم في exit section للبرنامج.
إن القيمة المفروضة لsemaphore هي 1 .
إن semaphore نوعين:1-counting : تأخذ قيمة أي عدد صحيح.
2-binary :تأخذ فقط 0,1 .
إضافة المعلومة نوف الصويغ
المصدر:operating system concept
Comments (0)
You don't have permission to comment on this page.