You are on page 1of 55

‫اﻷقفال اﳌتبادل‬

deadlock

Chapter 7
22/03/2018 Operating Systems DR.Mamoun Younes 244
Lecture 12 and 13

22/03/2018 Operating Systems DR.Mamoun Younes 245


‫‪deadlock‬‬
‫• في البرمجة المتعددة تتنافس اﻹجرائيات على الموارد وقد تطلب اﻹجرائية مورد ما ‪ ،‬إذا ل م‬
‫يك ن مت اح ف ي ذل ك الوق ت ‪ ،‬ستض طر اﻹجرائي ة ﻻنتظ اره) تتح ول اﻹجرائي ة إل ى حال ة‬
‫اﻻنتظ ار( ‪ ،‬وق د تظ ل اﻹجرائي ة ف ي ه ذه الحال ة وﻻ تتغي ر منه ا أب دا‪ ،‬ﻷن إجرائي ة أخ رى‬
‫تحج ز ه ذا الم ورد وه ي أيض ا ف ي حال ة انتظ ار ‪ .‬ه ذا الوض ع نس ميه اﻻختن اق أو اﻻقف ال‬
‫المتبادل او اﻻقفال الميت ‪.‬‬
‫• في هذا الباب سنتحدث عن كيفية تعامل نظام التشغيل مع اﻻقفال المتبادل ‪.‬‬
‫• تعريف المورد ‪resource‬‬
‫• المورد هو كل ما يستخدمه البرنامج من عتاد ‪ )،‬مثل ‪ :‬الطابعة ‪ ،‬القرص الصلب‪ ،‬والذاكرة(‬
‫وبرامج وملفات ) مثل جدول قواعد المعطيات‪ ،‬برنامج ما‪ ،‬صفحة إنترنت(‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪246‬‬


‫مفهوم اﻻقفال المتبادل‬
‫• تعريف ‪ :‬هو مجموعة من اﻹجرائيات التي تحتفظ كل منا بمورد ما ‪ ،‬وتنتظر الوصول إلى‬
‫مورد آخر تحتفظ به إجرائية أخرى من إجرائيات المجموعة ‪.‬‬
‫• مثﻼً ‪:‬‬
‫• إذا ك ان ل دينا إج رائيتين ‪ P1,P2‬وكان ت اﻹجرائي ة ‪ P1‬تس تخدم ع دة م وارد )م ن بينه ا‬
‫المورد ‪ ( R1‬وتحتاج إلى م ورد إض افي ه و الم ورد ‪ ،R2‬وف ي نف س الوق ت ل دينا اﻹجرائي ة‬
‫‪ P2‬التي تستخدم الم ورد ‪ R2‬وتحت اج إل ى م ورد آخ ر لتكم ل تنفي ذها ه و الم ورد ‪) R1‬ال ذي‬
‫بحوذة اﻹجرائية ‪ ،( P1‬هنا س تظل اﻹجرائيت ان ف ي ه ذا الوض ع إل ى م ا ش اء ﷲ ‪ ،‬ﻷن ك ل‬
‫إجرائية لن تكتمل ﻷنها بحاجة إلى م ورد اﻹجرائي ة اﻷخ رى ‪ ،‬هن ا يح دث اﻻقف ال المي ت أو‬
‫المتبادل ‪ ،‬ﻷن كل إجرائية تحتكر مواردها التي تستخدمها وﻻ تتركها أبدا ً ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪247‬‬


‫مثال مسألة الجسر‬

‫• يج ري عب ور الجس ر باتج اه واح د للم رور فق ط ) ﻻ يتس ع المم ر اﻹ لس يارة واح دة (‪،‬‬
‫وباعتبار كل جهة من طرفي الجسر كما لو أنها مورد من الموارد ‪.‬‬
‫• إذا كن ت تق ود س يارة ) إجرائي ة ( ودخل ت ف ي مم ر الجس ر وج اءت س يارة ف ي اﻻتج اه‬
‫المعاكس) إجرائية أخرى ( ودخلت نفس الممر ‪ ،‬فالتقت السيارتان في منتصف الجسر وك ل‬
‫سيارة تريد المرور عبر الجسر ‪ ،‬في ه ذه الحال ة يح دث حال ة اﻻقف ال المتب ادل ف يمكن حل ه‬
‫بأن تعود إحدى السيارات إلى الوراء ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪248‬‬


‫• يمكن أن يتنافس عدد من اﻹجرائيات عل ى مجموع ة مح ددة م ن الم وارد ‪ ،‬بحي ث يمك ن أن‬
‫تطلب اﻹجرائي ة حج ز مجموع ة م ن الم وارد غي ر المت وفرة ) محج وزة م ن قب ل إجرائي ات‬
‫أخرى ( ‪ ،‬وبالتالي تدخل هذه اﻹجرائية في حالة انتظار وإذا بقيت الموارد محج وزة فعن دها‬
‫تحدث حالة اﻻقفال المتبادل ‪.‬‬
‫• مثال آخر ‪:‬‬
‫• إذا كان هنالك تقاطعات طرق كما هو مبين في الشكل‬
‫التالي ‪ ،‬فإن أي سيارة ﻻ يمكنها التحرك ما لم نخرج‬
‫بعض السيارات خارج الطريق‪.‬‬
‫معالجة اﻻقفال المتبادل ‪:‬‬
‫• نﻼحظ أن اﻻقفال المتبادل يمكن حله ‪ ،‬فمثﻼً في‬
‫مثال تقاطع الطرق نجد أن إزاحة بعض السيارات‬
‫خارج الطريق يحل اﻻقفال المتبادل ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪249‬‬


22/03/2018 Operating Systems DR.Mamoun Younes 250
‫أنواع الموارد‬

‫• تنقسم الموارد إلى نوعين ‪:‬‬


‫‪ .1‬موارد قابلة للن زع ‪ : preemptable resources‬يمك ن ن زع ه ذا الن وع م ن الم وارد‬
‫من اﻹجرائية التي تستخدمه دون أن يسبب ذلك مشاكل‪ ،‬مثل الذاكرة‪.‬‬
‫‪ .2‬م وارد غي ر قابل ة للن زع ‪ : non-preemptable resources‬ق د يح دث خل ل‬
‫باﻹجرائية ) تتعطل ( إذا انتزعنا منها المورد مثا ‪ ،‬الطابع ة ‪ ،‬مس جل اﻷق راص الض وئية‬
‫‪. CD‬‬
‫مﻼحظة ‪:‬‬
‫• عندما تريد إجرائية استخدام مورد فإنها تقوم بطلب المورد أوﻻً‪ ،‬ثم تستخدمه‪ ،‬وعند اﻻنتهاء‬
‫منه تتخلى عنه لتستفيد منه إجرائية أخرى‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪251‬‬


‫شروط حدوث اﻻقفال المتبادل‬

‫• يوجد أربعة شروط لحدوث اﻻقفال المتبادل ‪:‬‬


‫‪ .1‬اﻻستبعاد المتبادل ‪ : mutual exclusion‬إجرائية واحدة فقط ه ي الت ي تس تخدم م ورد‬
‫معين في اللحظة المعينة فﻼ يمكن ﻹجرائيتين استخدام نفس الم ورد ف ي نف س الوق ت ‪ ،‬إذا‬
‫أرادت إجرائية ما الوصول إلى نف س الم ورد المحج وز فعليه ا اﻻنتظ ار حت ى ي تم تحري ر‬
‫ذلك المورد ‪.‬‬
‫‪ .2‬اﻻحتفاظ واﻻنتظار ‪ : hold and wait‬تح تفظ اﻹجرائي ة بموارده ا الت ي تس تخدم وتري د‬
‫موارد أخرى لتكمل عملها‪ ،‬أي تنتظر إجرائية تحتفظ بمورد واحد على اﻷقل ‪.‬‬
‫‪ .3‬اﻻحتف اظ ) اﻻحتك ار( ب الموارد ‪ : non preemption‬ﻻ يمك ن انت زاع الم ورد م ن‬
‫اﻹجرائية التي تستخدمه ما لم تكتمل عملها ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪252‬‬


‫‪ .4‬اﻻنتظ ار ال دوراني ‪ : circular wait‬يح دث اﻻنتظ ار ال دوراني ف ي سلس لة م ن‬
‫اﻹجرائي ات إذا كان ت اﻹجرائي ة اﻷول ى بالمجموع ة تس تخدم م وارد معين ة وتري د م وارد‬
‫أخرى من اﻹجرائية الثانية في المجموعة‪ ،‬واﻹجرائية الثانية تستخدم الموارد التي تريدها‬
‫اﻹجرائية اﻷولى ﻷنها ل م تف رغ منه ا بع د‪ ،‬ولتتخل ى ع ن موارده ا الت ي تس تخدمها تحت اج‬
‫موارد أخ رى تس تخدمها اﻹجرائي ة الثالث ة‪ ،‬وهك ذا إل ى اﻹجرائي ة اﻷخي رة ف ي المجموع ة‬
‫والتي تستخدم موارد تريدها اﻹجرائية قبل اﻷخي رة‪ ،‬وتحت اج م وارد تس تخدمها اﻹجرائي ة‬
‫اﻷولى مما يشكل دوران من اﻻنتظار‪.‬‬
‫• إذا كان لدينا مجموعة من اﻹجرائي ات المنتظ رة } ‪ { P0, P1 ,P2, . . . , Pn‬بحي ث تنتظ ر‬
‫‪ P0‬مورد محجوز من قبل ‪P1‬و تنتظر ‪P1‬مورد محجوز من قبل ‪ P2‬وتنتظ ر ‪ Pn-1‬م ورد‬
‫محجوز من قبل ‪ Pn‬و تنتظر ‪Pn‬مورد محجوز من قبل و‪. P0‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪253‬‬


‫بيان حجز الموارد‬

‫• يت ألف بي ان حج ز الم وارد م ن مجموع ة م ن العق د )‪ (V‬ومجموع ة م ن اﻻرتباط ات )‪،(E‬‬


‫وتقسم ‪ V‬إلى نوعين من العقد ‪:‬‬
‫‪ ‬مجموعة اﻹجراءات الموجودة في النظام ‪ ، { P=P1 ,P2, . . . , Pn } :‬الدائرة تدل على إجرائية ‪.‬‬
‫‪ ‬مجموعة كافة الموارد المتوفرة بالنظام ‪ ، { R= R1 ,R2, . . . , Rm } :‬المربع يدل على مورد ‪.‬‬
‫‪ ‬تمثل اﻻرتباطات في مجموعة ‪: E‬‬
‫• السهم الذي يخرج من الدائرة )إجرائية( ويشير إلى مربع )مورد( يعني أن اﻹجرائية تريد‬
‫طلب هذا المورد ‪ .‬أي ضلع موجه ‪ Pi → Rj‬يمثل طلب المورد ‪ Rj‬من قبل اﻹجرائية ‪Pi‬‬
‫• السهم الذي يخرج من المربع ) مورد ( ويتجه إلى دائرة ) إجرائية ( يعني أن هذا الم ورد‬
‫يُستخدم من قبل اﻹجرائية ‪ .‬أي ‪ Rj → Pi‬يمثل عملية اسناد المورد ‪ Rj‬إلى اﻹجرائية ‪Pi‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪254‬‬


‫يوض ح الش كل ) ‪ (a‬بي ان حج ز‬ ‫•‬
‫الموارد بطلب مورد ‪. Ra‬‬
‫يوض ح الش كل ) ‪ (b‬بي ان حج ز‬ ‫•‬
‫الموارد بحجز مورد ‪. Rb‬‬
‫يوض ح الش كل ) ‪ (c‬بي ان حج ز‬ ‫•‬
‫الم وارد بحال ة انتظ ار دوران ي بحلق ة‬
‫اقفال متبادل حي ث تق وم اﻹجرائي ة‪P1‬‬
‫بحج ز الم ورد ‪ Rb‬وطل ب الم ورد‬
‫‪ Ra‬بينما تق وم اﻹجرائي ة ‪ P2‬بحج ز‬
‫المورد ‪ Ra‬وطلب المورد ‪. Rb‬‬
‫يوض ح الش كل ) ‪ (d‬بي ان حج ز‬ ‫•‬
‫الم وارد ب دون اقف ال متب ادل وذل ك‬
‫لوجود عدة نسخ من المورد الواحد ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪255‬‬


‫• مثال على حجز الموارد ‪:‬‬
‫‪ ‬اﻹجرائية ‪ P1‬تحجز نسخة من المورد ‪ ، R2‬وتنتظر نسخة من المورد ‪. R1‬‬
‫‪ ‬اﻹجرائية ‪ P2‬تحجز نسخة من المورد ‪ R1‬ونسخة من المورد ‪ ، R2‬وتنتظر نسخة من المورد ‪. R3‬‬
‫‪ ‬اﻹجرائية ‪ P3‬تحجز نسخة من المورد ‪. R3‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪256‬‬


‫• في المثال التالي – تمثيل اﻻنتظار الدوراني بالرسم ‪:‬‬
‫• نجد أن هنالك انتظار داوراني حي ث نج د أن اﻹجرائي ة ‪ D‬تس تخدم الم ورد ‪ U‬وتحت اج إل ى‬
‫الم ورد ‪ ،R‬ونج د أن الم ورد ‪ R‬تس تخدمه اﻹجرائي ة ‪ E‬الت ي تري د الم ورد ‪ V‬ال ذي يُس تخدم‬
‫بواسطة اﻹجرائية ‪ ، G‬ونجد أن ‪ G‬تريد المورد ‪ U‬الذي تستخدم اﻹجرائي ة ‪ D‬وهك ذا نج د‬
‫أنفسنا في دائرة انتظار‪.‬‬
‫• إذا ابتدأت من أي اﻹجرائية أو مورد في أي شكل ‪،‬‬
‫وتتبعت اتجاه اﻷسهم فقادتك إلى نفس النقطة التي بدأت‬
‫منها فأنت في حالة انتظار دوراني ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪257‬‬


‫تمرين)‪ : (1‬في الشكل التالي هل هنالك حالة اقفال متبادل وما هو نوعه ؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪258‬‬


‫• تمرين)‪: (2‬‬
‫هل هنالك حلقة في البيان التالي وهل يحتوي على اقفال متبادل ؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪259‬‬


‫أساليب معالجة اﻻقفال المتبادل‬

‫• يمكن التعامل مع اﻻقفال المتبادل بطريقتين ‪:‬‬


‫‪ ‬الوقاية وذلك بمنع حدوثه أو تجنبه‪.‬‬
‫‪‬العﻼج وذل ك بتجاهل ه أو إص ﻼحه‪ ،‬طبع ا ً التجاه ل ﻻ يحت اج إل ى كثي را ً م ن العن اء ‪ ،‬فعل ى نظ ام التش غيل‬
‫التظ اهر بع دم حدوث ه )وك أن ش يء ل م يح دث(‪ .‬أم ا اﻹص ﻼح فيحت اج مرحل ة قبل ه ه ي اكتش اف اﻻقف ال‬
‫المتبادل أوﻻً‪ ،‬ثم إصﻼحه ثانيا ً ‪.‬‬
‫• تجاهل اﻻقفال المتبادل )خوارزمية النعامة ‪( The Ostrich Algorithm‬‬
‫أبسط خوارزمية تستخدم في تجاهل اﻻقفال المتبادل هي خوارزمية النعامة ) أدفن رأسك في‬
‫الرمل وتظاهر بأنه ﻻ توجد مشكلة (‪ .‬التظاهر بعدم حدوث اﻻقفال المتبادل أو الهروب من‬
‫المشكلة نلجأ إليها لسببين هما‪:‬‬
‫‪‬إذا كان اﻻختناق يحدث نادرا ً‪.‬‬
‫‪‬إذا كان عﻼجه مكلفا ً‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪260‬‬
‫• يوجد ثﻼثة أساليب لمعالجة حالة اﻹقفال المتبادل‪:‬‬
‫‪ .1‬من ع ح دوث اﻻقف ال المتب ادل‪ :‬إلغ اء إمكاني ة تحق ق أح د الش روط الﻼزم ة لح دوث اﻹقف ال‬
‫المتبادل‬
‫‪ .2‬تجنب حدوث اﻹقفال المتبادل‪ :‬من خﻼل عملية تحصيص الموارد‪ ،‬بحيث ﻻ يحصص مورد‬
‫ﻹجراء ما‪ ،‬إذا كان ذلك يمكن أن يؤدي إلى حدوث إقفال متبادل‪.‬‬
‫‪ .3‬كشف حالة اﻹقفال المتبادل‪ :‬فحص النظام دوريا من أجل كشف حالة اﻹقفال المتبادل‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪261‬‬


‫‪ -1‬منع حدوث اﻻقفال المتبادل‬

‫• منع حدوث اﻻقفال المتبادل هو الغ اء إمكاني ة تحق ق أح د الش روط الﻼزم ة لح دوث اﻻقف ال‬
‫المتبادل من خﻼل وضع قيود على طريقة طلب الموارد وحجزها منها‪:‬‬
‫‪ .1‬منع اﻻستبعاد المتبادل ‪ :‬من خﻼل اﻻستغناء عنه في حال ة الم وارد الت ي يمك ن التش ارك‬
‫بها‪ ،‬بينما يجب تحقيقه من أجل الموارد التي ﻻ يمكن التشارك بها‪ .‬يمكننا تجنب اﻻحتك ار‬
‫وذلك بتخصيص إجرائية تكون مسؤولة عن ه ذا الم ورد ‪ ،‬بحي ث نمن ع بقي ة اﻹجرائي ات‬
‫م ن اس تخدام الم ورد مباش رة وإنم ا تتعام ل ه ذه اﻹجرائي ة م ع اﻹجرائي ة المس ؤولة م ن‬
‫المورد وتقوم اﻷخيرة بالتعامل مع المورد ‪.‬‬
‫• مثﻼً مدير الطباعة في ويندوز يمثل إجرائية مس ؤولة ع ن الطباع ة ‪ ،‬بحي ث عن دما يرس ل‬
‫أي برنامج ) إجرائية ( أمر طباعة ‪ ،‬فإن الملف المراد طباعته سيُرسل إلى م دير الطباع ة ‪،‬‬
‫ويتعامل مدير الطباعة مع الطابعة حيث يرسل لها ملف كلما فرغت من عمله ا حس ب ورود‬
‫الملفات إليه ) ‪( FCFS‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪262‬‬
‫• نج د أن هن اك ملف ين أرس ﻼ للطابع ة ولك ن ق ام باس تﻼم ه ذه الملف ات م دير الطباع ة ‪ ،‬يق وم‬
‫مدير الطباعة بتنظيم التعامل مع الطابعة ‪ ،‬بحيث يتم طباعة الملف اﻷول ثم الثاني ‪.‬‬

‫ذكرنا أن اﻻستبعاد المتبادل يحصل عندما تكون الموارد ﻻ يمكن مشاركتها بين اﻹجرائيات وبهذا فإن الموارد التي يمكن مش اركتها‬
‫هي وسيلة لمنع حصول حلقة اقفال متبادل كمثال أيضا لدينا الملفات القابلة للقراء فقط كمثال عن الموارد التي يمكن تشاركها بحيث‬
‫مثﻼ إذا حاولت عدة ﻹجرائيات أن تقوم بفتح ملف قابل للقراءة فقط في لحظة زمنية معينة عندها يمكن لهذه اﻹجرائيات أن تفتح الملف‬
‫بشكل متماثل دون الوقوع بحلقة انتظار ولكن فإننا ﻻ يمكن أن نضمن منع هذا الشرط دائم ا ﻷن ال نظم تحت وي عل ى م وارد غي ر قابل ة‬
‫ﻷن تصبح موارد مشتركة ‪.‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪263‬‬
‫‪ .2‬منع اح تفظ وانتظ ر‪ :‬يج ب أن نض من أﻻ تق وم إجرائي ة م ا بطل ب م ورد م ا‪ ،‬قب ل تحري ر‬
‫الموارد التي كانت تحتفظ بها‪ ،‬وذلك من خﻼل‪ :‬حجز اﻹجرائية لكافة الموارد الﻼزمة له ا‬
‫قب ل ب دء التنفي ذ‪ ،‬أو الس ماح له ا بطل ب الم وارد فق ط عن دما ﻻ تك ون بحوزته ا م وارد‬
‫محج وزة‪) .‬يس بب اﻷس لوب الس ابق انخفاض ا ً بنس بة اس تثمار الم وارد ويمك ن أن يس بب‬
‫الحرمان(‪.‬‬

‫‪ .3‬منع اﻻحتفاظ بالموارد من خﻼل هذين الحلين ‪:‬‬


‫• الحل اﻷول‪ :‬إذا قام ت إجرائي ة محتفظ ة بع دة م وارد بطل ب م ورد جدي د ول م تحص ل عليه ا‬
‫مباشرة‪ ،‬يجب عندها تحرير الموارد المحجوزة )إعادة التنفيذ(‪.‬‬
‫• الحل الثاني‪ :‬إذا طلبت إجرائية موارد محجوزة من قبل إجرائية أخرى تنتظر‪ ،‬عندها يجري‬
‫تخليص اﻹجرائية التي تنتظرالموارد التي تحجزها )إعادة التنفيذ(‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪264‬‬


‫‪ .4‬منع اﻻنتظار الدوراني ‪ :‬من خﻼل ترتيب جميع أنواع الموارد وفق عﻼقة ترتي ب كلي ة‪.‬‬
‫ﻻ يمك ن ﻹجرائي ة أن تحج ز الم وارد إﻻ وفق ا ً لترتيبه ا التص اعدي‪ .‬بع د أن تحج ز إجرائي ة‬
‫مواردها‪ ،‬ﻻ يمكنها أن تطلب موارد بترتيب أدني‪ ،‬إﻻ بعد أن تحرر القديمة منها‪ .‬وفي ح ال‬
‫الحاجة إلى عدة نسخ من المورد نفسه‪ ،‬يجب حل ذلك من خﻼل طلب واحد لها‪.‬‬
‫• مثﻼً ‪:‬‬
‫إذا طلبت اﻹجرائية ‪ A‬الماسحة ورقمها هو ‪ ،2‬ف ﻼ يمك ن له ذه اﻹجرائي ة ان تطل ب الطابع ة ﻷن‬
‫رقمه ا أق ل م ن رق م الماس حة ‪ .‬لنف رض أن اﻹجرائي ة ‪ B‬قام ت بطل ب الش ريط المغناطيس ي )ذو‬
‫الرقم ‪ ، ( 4‬فﻼ يمكن لهذه اﻹجرائية طلب أي مورد رقمه أقل من ‪ ، 4‬ه ذا يعن ي ﻻ يمك ن طل ب‬
‫الماسحة التي تستخدمها اﻹجرائية ‪ ، A‬وبهذه الطريقة ﻻ يمكن أن يحدث اﻻنتظار الدوراني ‪.‬‬
‫‪1‬‬ ‫الطابعة‬
‫‪2‬‬ ‫الماسحة ‪Scanner‬‬
‫‪3‬‬ ‫سواقة اﻷقراص ‪CD‬‬
‫‪4‬‬ ‫الشريط المغناطيسي ‪Hard disk‬‬
‫‪5‬‬ ‫الراسمه ‪Plotter‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪265‬‬
‫‪ -2‬تجنب حدوث اﻻقفال المتبادل‬
‫إن تجنب حدوث اﻻقفال المتبادل من خﻼل تحصيص الموارد ‪ ،‬بحيث ﻻ يحصص م ورد ﻹجرائي ة م ا‬ ‫•‬
‫‪ ،‬إذا كان ذلك يمكن أن يؤدي إلى حدوث اقفال متبادل ‪.‬‬
‫يتطل ب ذل ك أن يت وفر ل دى نظ ام التش غيل‪ ،‬معلوم ات ع ن حال ة تحص يص الم وارد ‪ :‬ع دد الم وارد‬ ‫•‬
‫المتاحة‪ ،‬عدد الموارد المحجوزة‪ ،‬العدد اﻷعظمي للموارد المطلوبة‪.‬‬
‫عندما تطلب إجرائية ما أحد الموارد المتوفرة‪ ،‬فيجب على النظام أن يقرر إذا كان الحجز المباش ر له ذا‬ ‫•‬
‫المورد سيترك المورد في حالة أمنة أم ﻻ‪.‬‬
‫ما المقصود بالحالة اﻷمنة؟‬ ‫•‬
‫يكون النظام في حالة أمنة إذا توفر لديه تسلسل آمن من اﻹجرائيات‪.‬‬
‫هنا يحاول النظام التأكد من أن الموارد يمكن حجزه ا بص ورة آمن ة‪ ،‬وذل ك قب ل الش روع ف ي حجزه ا ‪،‬‬ ‫•‬
‫وهنالك العديد من الخوارزميات التي يمكن استخدامها للتأكد من أن الموارد يمكن حجزها بصورة آمنة‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪266‬‬
‫• نقول ع ن سلس لة اﻹجرائي ات > ‪ < P1 , P2 , ….. ,Pn‬أنه ا آمن ة إذا ك ان باﻹمك ان تلبي ة‬
‫طلبات كل إجرائية ‪ Pi‬من الموارد‪ ،‬سواء تلك المتوفرة في النظام أو تلك المحجوزة من قبل‬
‫اﻹجرائيات ‪ ،Pj‬حيث ‪. j< i‬‬
‫• إذا كان ﻻ يمكن تلبية حاجة اﻹجرائي ة ‪ Pi‬م ن الم وارد مباش رة‪ ،‬ف يمكن له ا أن تنتظرانته اء‬
‫كافة اﻹجرائيات ‪ Pj‬منها‪.‬‬
‫• عن دما تنته ي ‪ Pj‬م ن موارده ا‪ ،‬تس تطيع ‪ Pi‬الحص ول عل ى الم وارد وتحجزه ا ث م ينته ي‬
‫تنفيذها‪.‬‬
‫• عندما تنتهي ‪ Pi‬من مواردها‪ ،‬تستطيع ‪ Pi+1‬الحصول عليها وهكذا‪.‬‬
‫• إذا كان النظام في حالة أمنة فﻼ يوجد إقفال متبادل‪ ،‬أما إذا ك ان النظ ام ف ي حال ة غي ر آمن ة‬
‫فيمكن لﻺقفال المتبادل أن يحدث‪.‬‬
‫• تجنب اﻹقفال المتبادل يعني التأكد دائما ً من أن النظام لن يدخل أبدا ً في حالة غير آمنة‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪267‬‬


‫خوارزمية بيان حجز الموارد‬
‫• تطبق هذه الخوارزمية في حالة وجود نسخة واحدة فقط من الموارد بحيث ‪:‬‬
‫‪ ‬يمث ل اﻻرتب اط ‪ Pi → Rj‬إمكاني ة طل ب اﻹجرائي ة ‪ Pi‬للم ورد ‪ Rj‬حي ث يظه ر ذل ك ض من‬
‫البيان على شكل خط متقطع‪.‬‬
‫‪‬تتحول ارتباطات إمكانية الطلب إلى ارتباطات طلب‪ ،‬عندما‬
‫تطلب اﻹجرائية المورد فعليا ً وﻻ يحصل عليه‪ .‬وعندما تحرر‬
‫إجرائية موردا ً من الموارد‪ ،‬فإن ارتباط اﻹسناد يتحول إلى‬
‫ارتباط إمكانية طلب من جديد‪.‬‬
‫• يجب تحديد إمكانيات طلب الموارد مسبقا ضمن نظام التشغيل‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪268‬‬


‫• في حال عدم وجود حلقات في بيان حجز الموارد‪ ،‬فإن حجز الموارد يضع النظ ام ف ي حال ة‬
‫أمنة‪ ،‬بينما إذا وجد حلقة في البيان‪ ،‬فإن حجز الموارد سيضع النظام في حالة غير آمنة‪.‬‬
‫• يبين الشكل التالي حالة غير آمنة في بيان حجز الموارد ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪269‬‬


‫مثال عن حجز الموارد‬

‫• إذا ك ان ل دينا م وارد ‪ ،‬منه ا المس تخدم ومنه ا غي ر المس تخدم ) ح ره( ‪ ،‬وهن اك إجرائي ات‬
‫تستخدم م وارد وتري د المزي د‪ ،‬فيمكنن ا اس تخدام الطريق ة التالي ة للتأك د م ن أن حج ز الم وارد‬
‫الحرة لﻺجرائيات التي تريد موارد ﻻ تسبب اﻻقفال المتبادل ‪.‬‬
‫• الش كل الت الي يوض ح ث ﻼث إجرائي ات ‪ A , B , C‬وك ل إجرائي ة تس تخدم ع دد مع ين م ن‬
‫الموارد وتحتاج أن تصل إلى عدد معين من الموارد لتعمل ‪.‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪3 :‬‬


‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪270‬‬
‫• اﻹجرائية ‪ A‬تستخدم ‪ 3‬موارد وتحتاج أن تصل إلى ‪ 9‬موارد لتعمل ‪ ،‬اﻹجرائية ‪ B‬تس تخدم‬
‫موردين وتحتاج أن تصل إلى ‪ 4‬موارد لتعمل ‪ ،‬اﻹجرائية ‪ C‬تس تخدم م وردين وتحت اج أن‬
‫تصل إلى ‪ 7‬موارد لتعمل ‪ ،‬و لدينا ثﻼث موارد متاحة ‪ ،‬نريد التأكد من أننا لو استخدمنا هذه‬
‫الموارد المتوفرة يمكن أن نصل إلى حالة آمنة ) ﻻ يحدث اقفال متبادل ( ‪.‬‬
‫• الحل ‪:‬‬
‫‪‬بمقارنة المتوفر مع المطلوب‪ ،‬نجد أن اﻹجرائية ‪ B‬يمكن أن تعمل وذل ك بإعطائه ا م وردين‬
‫من المتوفر فيكون لدي مورد واحد متوفر كما موضح في الشكل التالي ‪:‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪4‬‬ ‫‪4‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪1 :‬‬


‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪271‬‬
‫• بعد انتهاء اﻹجرائية ‪ B‬ستترك الموارد التي كانت تستخدم ) ‪ 4‬موارد( ‪ ،‬فيصبح المت وفر‪5‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬ ‫كما هو مبين في الشكل ‪.‬‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪5 :‬‬


‫• بمقارن ة المت وفر م ع المطل وب‪ ،‬نج د أن اﻹجرائي ة ‪ C‬يمك ن أن تعم ل وذل ك بإعطائه ا ‪5‬‬
‫موارد وهي كل ما يتوفرلدينا كما هو موضح في الشكل‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪7‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪0 :‬‬


‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪272‬‬
‫• بعد انتهاء اﻹجرائية ‪ С‬س تترك الم وارد الت ي كان ت تس تخدم ) ‪ 7‬م وارد(‪ ،‬فيص بح المت وفر‬
‫هو ‪ 7‬كما هو موضح في الشكل ‪.‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪C‬‬
‫الموارد المتوفرة ‪7 :‬‬
‫• بمقارن ة المت وفر م ع المطل وب‪ ،‬نج د أن اﻹجرائي ة ‪ A‬يمك ن أن تعم ل وذل ك بإعطائه ا ‪6‬‬
‫موارد ويبقى لدينا مورد واحد غير مستخدم‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪9‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪1 :‬‬


‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪273‬‬
‫• بعد انتهاء اﻹجرائية ‪ A‬ستترك الم وارد الت ي كان ت تس تخدم ) ‪ 9‬م وارد(‪ ،‬فيص بح المت وفر‬
‫هو ‪ 10‬كما هو موضح في الشكل ‪.‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪-‬‬ ‫‪-‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪10 :‬‬

‫• هذا يدل أن الموارد يمكن استخدامها دون حدوث اقفال نتبادل أي حالة آمنة‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪274‬‬


‫• إذا لم نستخدم الموارد بحذر لتجنب اﻻقفال المتبادل فقد نص ل إل ى حال ة غي ر آمن ة وبالت الي‬
‫حالة اﻻقفال المتبادل ‪.‬‬
‫• لنفرض في المثال السابق استخدمنا الموارد بالشكل التالي ‪:‬‬

‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬ ‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬


‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬ ‫‪9‬‬ ‫‪4‬‬ ‫‪A‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪B‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬ ‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪3 :‬‬ ‫الموارد المتوفرة ‪0 :‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪275‬‬


‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪4‬‬ ‫‪A‬‬
‫‪-‬‬ ‫‪-‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫الموارد المتوفرة ‪4 :‬‬

‫• بعد انتهاء اﻹجرائية ‪ B‬ستترك الموارد التي كانت تستخدم ) ‪ 4‬موارد(‪ ،‬فيصبح المتوفر هو ‪4‬‬
‫• هنا وصلنا إل ى حال ة غي ر آمن ة وح دث اﻻقف ال المتب ادل‪ ،‬ﻻن الم وارد المت وفر ) ‪ 4‬م وارد( ﻻ‬
‫تكفي ﻷي إجرائية ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪276‬‬


‫‪ -3‬كشف حالة اﻻقفال المتبادل‬

‫• من أجل كشف حالة اﻹقفال المتبادل يتم فحص النظام دورياً‪ ،‬حيث يُسمح للنظام الدخول في‬
‫حالة إقفال متبادل‪ ،‬ومن ثم تطبق خوارزمية كشف اﻹقفال المتبادل‪ ،‬وبع دها مخط ط التع افي‬
‫من حالة اﻹقفال‪.‬‬
‫• يجري كشف حالة اﻹقف ال المتب ادل م ن خ ﻼل التعام ل م ع بي ان اﻻنتظ ار‪ ،‬حي ث يت ألف ه ذا‬
‫البي ان م ن مجموع ة م ن العق د‪ ،‬وه ي عب ارة ع ن مجموع ة اﻹجرائي ات ف ي النظ ام‪ ،‬وم ن‬
‫مجموعة اﻻرتباطات ‪ Pi → Pj‬إذا كانت اﻹجرائية ‪ Pi‬تنتظر اﻹجرائية ‪. Pj‬‬
‫• في حال وجود حلقة في بيان اﻻنتظار‪ ،‬فهذا يعني الدخول في حالة إقفال متبادل‪.‬‬
‫• نستدعي دوريا ً خوارزمية الكشف عن وجود حلقات في البيان‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪277‬‬


‫بيان حجز الموارد‬ ‫بيان اﻻنتظار الموافق‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪278‬‬
‫طرائق كشف اﻻقفال المتبادل‬
‫‪ -1‬اكتشاف اﻻقفال المتبادل لمورد واحد من كل نوع‬
‫• هنا سنستخدم البيان ﻻكتشاف اﻻقفال المتبادل في نظام به م ورد واح د م ن ك ل ن وع ‪ ،‬م ثﻼً طابع ة واح دة‪،‬‬
‫ماسحة واحدة‪.. ،‬الخ‪.‬‬
‫مثال ‪:‬‬
‫• ذا كان لدينا ‪ 7‬إجرائيات من ‪ A‬إلى ‪ G‬و مورد واحد من كل نوع‪ ،‬وكانت طلبات اﻹجرائيات كما يلي‪:‬‬
‫‪‬اﻹجرائية ‪ A‬تستخدم المورد ‪ R‬وتريد المورد ‪ S‬ﻹتمام عملها‪.‬‬
‫‪‬اﻹجرائية ‪ B‬ﻻ تستخدم أي مورد وتريد المورد ‪ T‬ﻹتمام عملها‪.‬‬
‫‪‬اﻹجرائية ‪ C‬ﻻ تستخدم أي مورد و تريد المورد ‪ S‬ﻹتمام عملها‪.‬‬
‫‪‬اﻹجرائية ‪ D‬تستخدم المورد ‪ U‬وتريد المورد ‪ S‬و المورد ‪ T‬ﻹتمام عملها‪. .‬‬
‫‪‬اﻹجرائية ‪ E‬تستخدم المورد ‪ T‬وتريد المورد ‪V‬ﻹتمام عملها‪. .‬‬
‫‪‬اﻹجرائية ‪ F‬تستخدم المورد ‪W‬وتريد المورد ‪S‬ﻹتمام عملها‪.‬‬
‫‪‬اﻹجرائية ‪ G‬تستخدم المورد ‪V‬وتريد المورد ‪U‬ﻹتمام عملها‪.‬‬
‫• نريد أن نعرف هل سيكون هنالك اقفال متبادل أم ﻻ )اكتشاف اﻻقفال متبادل ( ؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪279‬‬


‫• الحل ‪:‬‬
‫سنقوم بإنشاء بيان لكل الموارد واﻹجرائيات التي تستخدمها والتي تريدها ‪ ،‬كما هو مبين‬
‫بالشكل التالي ‪:‬‬

‫نﻼحظ من الشكل أن هناك اقفال متبادل‬


‫ﻷننا مثﻼ إذا بدأنا من المورد ‪ U‬ثم تتبعنا‬
‫اتجاه اﻷسهم سنجد نفسنا في ‪ U‬مرة أخرى‬
‫وهذا يعني وجود انتظار دوراني ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪280‬‬


‫طرائق كشف اﻻقفال المتبادل‬
‫‪ -2‬اكتشاف اﻻقفال المتبادل لعدة موارد‬
‫• قد يكون لدينا عدد من الموارد م ن ك ل ن وع م ثﻼً ‪ 5 :‬طابع ات و ‪ 4‬ماس حات ‪ ،‬و ‪...‬ال خ ‪،‬‬
‫في هذه الحالة يصعب استخدام البيان للتعبير عن الم وارد المتع ددة ‪ ،‬ل ذلك سنس تخدم طريق ة‬
‫المصفوفات ‪ matrix‬ﻻكتشاف اﻻقفال المتبادل ‪.‬‬
‫• إذا كان لدينا عدد ‪ n‬إجرائية و ‪ m‬عدد أنواع الموارد‪ ،‬حيث يمثل ‪E1‬عدد الموارد من‬
‫• الن وع اﻷول )م ثﻼ ع دد الماس حات( ‪ E2 ،‬يمث ل ع دد الم وارد م ن الن وع الث اني )م ثﻼ ع دد‬
‫الطابعات ( وهكذا إلى ‪ ، Em‬بحيث ننشئ متجه ‪ vector‬للموارد التي توجد في النظام ‪.‬‬
‫• م ثﻼً ‪ ،‬إذا ك ان ل دينا ‪ 7‬طابع ات ‪ ،‬و‪ 6‬ماس حات ‪ ،‬و ‪ 5‬أق راص ‪ ،‬ف إن المتج ه ال ذي يمث ل‬
‫الموارد سيكون كما يلي ‪:‬‬
‫) ‪(5 6 7‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪281‬‬


‫• إذا ك ان ل دينا ‪ 5‬طابع ات ‪ ،‬و ‪ 4‬ماس حات ‪ ،‬و ‪ 2‬قرص ان مس تخدمة بواس طة إجرائي ات‬
‫مختلفة ‪ ،‬فإن المتجه الذي يمثل الموارد المستخدمة سيكون‪:‬‬
‫) ‪(2 4 5‬‬
‫• يمكنن ا إنش اء متج ه يمث ل الم وارد المتاح ة ) غي ر المس تخدمة ( وذل ك بط رح الم وارد‬
‫المستخدمة من الموارد الكلية كما يلي‪:‬‬

‫) ‪ = ( 5 6 7‬الموارد الكلية‬
‫) ‪ = ( 3 4 5‬الموارد المستخدمة‬
‫‪-------------------‬‬
‫) ‪ = ( 2 2 2‬الموارد المتاحة‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪282‬‬


‫‪ ‬مصفوفة اﻻستخدام ) الموارد التي تستخدمها اﻹجرائيات حاليا ً (‬
‫• يمكننا انشاء مصفوفة للموارد المستخدمة بواسطة عدة إجرائيات ‪ ،‬حيث يمثل كل ص ف ف ي‬
‫المص فوفة م وارد إجرائي ة معين ة ‪ ،‬م ثﻼً ل و أردن ا إنش اء مص فوفة ﻷرب ع إجرائي ات كان ت‬
‫تستخدم الموارد أعﻼه‪ ،‬فإن المصفوفة ستكون كما يلي‪:‬‬
‫اﻷقراص‬ ‫الماسحات‬ ‫الطابعات‬
‫الموارد التي تستخدمها اﻹجرائية اﻷولى‬
‫‪1‬‬ ‫‪1‬‬ ‫‪5‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫الموارد التي تستخدمها اﻹجرائية الثانية‬

‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫الموارد التي تستخدمها اﻹجرائية الثالثة‬


‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫الموارد التي تستخدمها اﻹجرائية الرابعة‬

‫• اﻹجرائية اﻷولى تستخدم ‪ 5‬طابعات ‪،‬وماسح ‪ ،‬و قرص ‪.‬‬


‫• اﻹجرائية الثانية تستخدم ماسح ‪ ،‬و قرص ‪.‬‬
‫• اﻹجرائية الثالثة تستخدم ماسح ‪.‬‬
‫• اﻹجرائية الثانية تستخدم ماسح ‪ ،‬و قرص ‪.‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪283‬‬
‫‪ ‬مصفوفة الطلبات ) الموارد التي تحتاجها اﻹجرائيات (‬
‫• بنفس الطريقة يمكن انشاء مصفوفة للموارد التي تحتاجها كل إجرائية من كل مورد كما يلي ‪:‬‬

‫اﻷقراص‬ ‫الماسحات‬ ‫الطابعات‬


‫الموارد التي تحتاجها اﻹجرائية اﻷولى‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫الموارد التي تحتاجها اﻹجرائية الثانية‬

‫‪3‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫الموارد التي تحتاجها اﻹجرائية الثالثة‬


‫‪4‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫الموارد التي تحتاجها اﻹجرائية الرابعة‬

‫• اﻹجرائية اﻷولى تحتاج إلى طابعتين ‪،‬و ماسحين ‪ ،‬و قرصين ‪.‬‬
‫• اﻹجرائية الثانية تحتاج إلى ‪ 5‬طابعات ‪،‬و‪ 6‬ماسحات ‪ ،‬و‪ 7‬أقراص ‪.‬‬
‫• اﻹجرائية الثالثة تحتاج إلى ‪ 4‬طابعات ‪،‬و ‪ 3‬ماسحات ‪ ،‬و ‪ 3‬أقراص ‪.‬‬
‫• اﻹجرائية الثانية تحتاج إلى ‪ 4‬طابعات ‪ ،‬و‪ 4‬ماسحات ‪ ،‬و‪ 4‬أقراص ‪.‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪284‬‬
‫‪‬اكتشاف اﻻقفال المتبادل بالمصفوفات‬
‫• اﻷن لدينا عدد الموارد الكلية‪ ،‬وعدد الموارد المتاحة ‪ ،‬وعدد الم وارد المس تخدمة ‪ ،‬وع دد‬
‫الموارد المطلوبة التي تحتاجها اﻹجرائيات ﻹتمام عمله ا ‪ ،‬س نقوم باس تخدام ه ذه المعطي ات‬
‫ﻻكتشاف هل سيحدث اقفال متبادل أم ﻻ؟‬
‫• طريقة الحل ‪:‬‬
‫• نقوم أوﻻ بمقارنة الموارد المتاحة مع صفوف مصفوفة الموارد المطلوبة‪ ،‬ثم نختار الص ف‬
‫)اﻹجرائية ( الذي تكون موارده المطلوبة أقل أو تساوي الموارد الحرة المتوفرة‪.‬‬
‫• بمقارن ة ص فوف مص فوفة الطلب ات ) الم وارد ات ي تحتاجه ا ( م ع الم وارد الح رة ) الم وارد‬
‫المتاحة ( سنجد أن اﻹجرائية اﻷولى يمكنها إكمال عملها باستخدام الموارد الحرة المتاحة‪.‬‬
‫• سنعطي اﻹجرائية اﻷولى ما تحتاج من الموارد المتاحة ونخصم ذلك من الموارد الحرة كما‬
‫يلي‪:‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪285‬‬


‫) ‪ = ( 2 2 2‬الموارد المتاحة‬
‫) ‪ = ( 2 2 2‬الموارد التي تستخدمها اﻹجرائية اﻷولى‬
‫‪-------------------‬‬
‫) ‪ = ( 0 0 0‬الموارد المتاحة ) الحرة (‬

‫• إذا كان ت الم وارد الح رة تكف ي لﻺجرائي ة اﻷول ى أو الثاني ة عل ى س بيل المث ال ‪ ،‬فاﻷفض ل‬
‫اختي ار اﻹجرائي ة الت ي تس تخدم م وارد أكث ر ﻷنن ا سنحص ل عل ى م وارد ح رة أكث ر بع د أن‬
‫تكتمل اﻹجرائية عملها وتحرر ما تستخدم من موارد ‪.‬‬
‫• اﻵن ستكتمل اﻹجرائية اﻷولى عملها ثم تحرر ما ل ديها م ن م وارد ‪ ،‬وتك ون الم وارد الح رة‬
‫اﻹجمالية بعد انتهاء اﻹجرائية اﻷولى كما يلي ‪:‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪286‬‬


‫) ‪ = ( 0 0 0‬الموارد المتاحة المتبقية بعد إعطاء اﻹجرائية اﻷولى ما تحتاجه من موارد‬
‫) ‪ = ( 1 1 5‬الموارد التي كانت تستخدمها اﻹجرائية اﻷولى‬
‫) ‪ = ( 2 2 2‬الموارد التي استخدمتها اﻹجرائية اﻷولى مؤخرا ً‬
‫‪---------------------------------------------------------------‬‬
‫) ‪ = ( 3 3 7‬الموارد المتاحة ) الحرة ( بعد انتهاء اﻹجرائية اﻷولى وتحريرها لمواردها‬

‫• اﻵن سنقارن الم وارد الح رة الت ي حص لنا عليه ا بع د انته اء اﻹجرائي ة اﻷول ى وتحري ر‬
‫مواردها مع المتبقي من صفوف مصفوفة اﻻحتياجات ‪ ،‬س نجد أن اﻹجرائي ة الت ي يمك ن أن‬
‫تكفيها هذه الموارد الحرة هي اﻹجرائي ة الثالث ة ‪ ،‬فنخص م الم وارد الت ي تري دها م ن الم وارد‬
‫الحرة التي بحوزتنا كما يلي ‪:‬‬
‫) ‪ = ( 3 3 7‬الموارد المتاحة‬
‫) ‪ = ( 3 3 4‬الموارد التي تستخدمها اﻹجرائية اﻷولى‬
‫‪-------------------‬‬
‫) ‪ = ( 0 0 3‬الموارد المتاحة ) الحرة (‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪287‬‬


‫• اﻵن ستكتمل اﻹجرائية الثالثة عملها ثم تح رر م ا ل ديها م ن م وارد ‪ ،‬وتك ون الم وارد الح رة‬
‫اﻹجمالية بعد انتهاء اﻹجرائية الثالثة كما يلي ‪:‬‬
‫) ‪ = ( 0 0 3‬الموارد المتاحة المتبقية بعد إعطاء اﻹجرائية الثالثة ما تحتاجه من موارد‬
‫) ‪ = ( 0 1 0‬الموارد التي كانت تستخدمها اﻹجرائية الثالثة‬
‫) ‪ = ( 3 3 4‬الموارد التي استخدمتها اﻹجرائية الثالثة مؤخرا ً‬
‫‪---------------------------------------------------------------‬‬
‫) ‪ = ( 3 4 7‬الموارد المتاحة ) الحرة ( بعد انتهاء الثالثة اﻷولى وتحريرها لمواردها‬

‫• اﻵن سنقارن الموارد الحرة التي حصلنا عليها بعد انتهاء اﻹجرائية الثالثة وتحرير مواردها‬
‫مع المتبق ي م ن ص فوف مص فوفة اﻻحتياج ات ‪ ،‬س نجد أن الم وارد المت وفرة ل دينا ﻻ تكف ي‬
‫ﻷي من اﻹجرائيات المتبقية ‪.‬‬
‫• يمكننا القول أن هناك قفال متبادل حدث في هذه النقطة ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪288‬‬


‫مثال )‪( 2‬‬
‫مثال يوضح حالة ﻻ يحدث فيها اقفال متبادل‬

‫• المعطيات ‪:‬‬
‫‪ ‬الموارد الموجودة بالنظام ) ‪. ( 1 3 2 4‬‬
‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪2‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬

‫الموارد المطلوبة‬ ‫الموارد المستخدمة‬

‫• المطلوب ‪ :‬هل يوجد اقفال متبادل أم ﻻ ؟‬


‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪289‬‬
‫• الحل ‪:‬‬
‫نحسب الموارد المتوفرة ‪:‬‬
‫) ‪ = ( 1 3 2 4‬الموارد الكلية‬
‫) ‪ = ( 1 3 1 2‬الموارد المستخدمة‬
‫‪-------------------‬‬
‫) ‪ = ( 0 0 1 2‬الموارد المتاحة ) الحرة (‬
‫• نقارن الموارد المتاحة مع الموارد المطلوبة فنجد أن اﻹجرائية الثالثة يمكنها إكمال عملها‬
‫باستخدام الموارد الحرة المتاحة‬
‫) ‪ = ( 0 0 1 2‬الموارد المتوفرة‬
‫) ‪ = ( 0 0 1 2‬الموارد الموارد المطلوبة‬
‫‪-------------------‬‬
‫) ‪ = ( 0 0 0 0‬الموارد المتاحة ) الحرة (‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪290‬‬


‫• اﻵن ستكتمل اﻹجرائية عملها ثم تحرر ما لديها من موارد ‪ ،‬وتكون الموارد الحرة‬
‫اﻹجمالية كما يلي ‪:‬‬
‫) ‪ = ( 0 0 0 0‬الموارد المتاحة المتبقية بعد إعطاء اﻹجرائية الثالثة ما تحتاجه من موارد‬
‫) ‪ = ( 0 2 1 0‬الموارد التي كانت تستخدمها اﻹجرائية الثالثة‬
‫) ‪ = ( 0 0 1 2‬الموارد التي استخدمتها اﻹجرائية الثالثة مؤخرا ً‬
‫‪---------------------------------------------------------------‬‬
‫) ‪ = ( 0 2 2 2‬الموارد المتاحة ) الحرة ( بعد انتهاء اﻹجرائية الثالثة وتحريرها لمواردها‬

‫• نقارن الموارد المتاحة مع الموارد المطلوبة فنجد أن اﻹجرائية الثانية يمكنها إكمال عملها‬
‫باستخدام الموارد الحرة المتاحة‬
‫) ‪ = ( 0 2 2 2‬الموارد المتوفرة‬
‫) ‪ = ( 0 1 0 1‬الموارد الموارد المطلوبة‬
‫‪-------------------‬‬
‫) ‪ = ( 0 1 2 1‬الموارد المتاحة ) الحرة (‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪291‬‬
‫• اﻵن س تكتمل اﻹجرائي ة عمله ا ث م تح رر م ا ل ديها م ن م وارد ‪ ،‬وتك ون الم وارد الح رة‬
‫اﻹجمالية كما يلي ‪:‬‬
‫) ‪ = ( 0 1 2 1‬الموارد المتاحة المتبقية بعد إعطاء اﻹجرائية الثانية ما تحتاجه من موارد‬
‫) ‪ = ( 1 0 0 2‬الموارد التي كانت تستخدمها اﻹجرائية الثانية‬
‫) ‪ = ( 0 1 0 1‬الموارد التي استخدمتها اﻹجرائية الثانية مؤخرا ً‬
‫‪---------------------------------------------------------------‬‬
‫) ‪ = ( 1 2 2 4‬الموارد المتاحة ) الحرة ( بعد انتهاء اﻹجرائية الثانية وتحريرها لمواردها‬

‫• نق ارن الم وارد المتاح ة م ع الم وارد المطلوب ة فنج د أن اﻹجرائي ة اﻷول ى يمكنه ا إكم ال‬
‫عملها باستخدام الموارد الحرة المتاحة ‪ ،‬وهذا يعني انه ﻻ يوجد اقفال متبادل ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪292‬‬


‫‪ -4‬التعافي من اﻻقفال المتبادل‬

‫• يجري التعافي من حالة اﻹقفال المتبادل من خﻼل إنهاء كافة اﻹجرائيات المسببة لﻺقفال‪ ،‬أو‬
‫إنهاء إجرائية واحدة في كل مرة‪.‬‬
‫• ما هو الترتيب الذي يجب علينا إنهاء اﻹجرائيات فيه؟‬
‫‪ ‬حسب أولوية اﻹجرائية ‪.‬‬
‫‪ ‬حسب الطول الزمني المنقضي من تنفيذ اﻹجرائية ‪ ،‬أو حسب الزمن المتبقي من زمن التنفيذ الكلي ‪.‬‬
‫‪‬الموارد التي تستخدمها اﻹجرائية ‪.‬‬
‫‪ ‬الموارد التي تحتاجها اﻹجرائية حتى تنتهي ‪.‬‬
‫‪ ‬عدد اﻹجرائيات التي تحتاج إليها حتى تنتهي تنفيذها ‪.‬‬
‫‪ ، ‬باﻹضافة إلى نوعية اﻹجرائية هل هو تخاطبي؟ أم ﻻ‪.‬‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪293‬‬


‫أسئلة الفصل السابع‬
‫ما هي شروط حدوث اﻻقفال المتبادل ‪..‬‬ ‫‪.1‬‬
‫عدد طرائق التعامل مع اﻻقفال المتبادل ‪.‬‬ ‫‪.2‬‬
‫ما الفرق بين التجنب والمنع ؟‬ ‫‪.3‬‬
‫كيف يتم منع اﻻقفال المتبادل ؟‬ ‫‪.4‬‬
‫ما هي أساليب معالجة حالة اﻹقفال المتبادل ‪.‬‬ ‫‪.5‬‬
‫ما هي مسببات اﻻقفال المتبادل ؟‬ ‫‪.6‬‬
‫ما هي خوارزمية النعامة ؟ ومتى نستخدمها ؟‬ ‫‪.7‬‬
‫يجري التعافي من حالة اﻹقفال المتبادل من خﻼل إنهاء كافة اﻹجرائيات المسببة لﻺقفال‪،‬‬ ‫‪.8‬‬
‫ما هو الترتيب الذي يجب علينا إنهاء اﻹجرائيات فيه؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪294‬‬


‫مسألة)‪ (1‬عن حجز الموارد‬

‫• الشكل التالي يوضح ثﻼث إجرائيات ‪ A , B , C‬وكل إجرائية تستخدم عدد معين من‬
‫الموارد وتحتاج أن تصل إلى عدد معين من الموارد لتعمل ‪.‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪B‬‬
‫‪7‬‬ ‫‪2‬‬ ‫‪C‬‬

‫• نريد التأكد من أننا لو استخدمنا هذه الموارد المتوفرة يمكن أن نصل إلى حالة آمنة ) ﻻ‬
‫يحدث اقفال متبادل ( ‪.‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪295‬‬
‫مسألة)‪ (2‬عن حجز الموارد‬

‫• الش كل الت الي يوض ح ث ﻼث إجرائي ات ‪ A , B , C‬وك ل إجرائي ة تس تخدم ع دد مع ين م ن‬


‫الموارد وتحتاج أن تصل إلى عدد معين من الموارد لتعمل ‪.‬‬
‫يكفيها‬ ‫لديها‬ ‫اﻹجرائية‬
‫‪9‬‬ ‫‪3‬‬ ‫‪A‬‬
‫‪5‬‬ ‫‪2‬‬ ‫‪B‬‬
‫‪3‬‬ ‫‪2‬‬ ‫‪C‬‬

‫المواد المتوفرة ‪2‬‬


‫• نريد التأكد من أننا لو استخدمنا هذه الموارد المتوفرة يمكن أن نصل إلى حالة آمنة ) ﻻ‬
‫يحدث اقفال متبادل ( ‪.‬‬
‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪296‬‬
‫مسألة)‪ (1‬عن كشف اﻻقفال المتبادل‬

‫• إذا كانت ‪ E‬تمثل موارد النظام‪،‬‬


‫والمصفوفة ‪ C‬تمثل الموارد‬
‫المستخدمة منها‪ ،‬والمصفوفة ‪R‬‬
‫تمثل الموارد المطلوبة ﻹتمام‬
‫العمل‪ ،‬والمطلوب ‪:‬‬
‫‪ .1‬اوجد الموارد المتوفر ة غير‬
‫المستخدمة ؟‬
‫‪ .2‬سيحدث اقفال متبادل أم ﻻ ؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪297‬‬


‫مسألة)‪ (2‬عن كشف اﻻقفال المتبادل‬

‫• إذا كانت ‪ E‬تمثل موارد النظام‪،‬‬


‫والمصفوفة ‪ C‬تمثل الموارد‬
‫المستخدمة منها‪ ،‬والمصفوفة ‪R‬‬
‫تمثل الموارد المطلوبة ﻹتمام‬
‫العمل‪ ،‬والمطلوب ‪:‬‬
‫‪ .1‬اوجد الموارد المتوفر ة غير‬
‫المستخدمة ؟‬
‫‪ .2‬سيحدث اقفال متبادل أم ﻻ ؟‬

‫‪22/03/2018 Operating Systems‬‬ ‫‪DR.Mamoun Younes‬‬ ‫‪298‬‬

You might also like