پاورپوینت بن بست ها (pptx) 37 اسلاید
دسته بندی : پاورپوینت
نوع فایل : PowerPoint (.pptx) ( قابل ویرایش و آماده پرینت )
تعداد اسلاید: 37 اسلاید
قسمتی از متن PowerPoint (.pptx) :
بنام خدا
Deadlocksبن بست ها
كامپيوتر ها داراي منابع زيادي هستند كه در هر لحظه فقط توسط يك processمي توانند استفاده شوند . مثلا printer ها ،tape drive ها ، scanner ها ، slot هاي process table .
اگر دو پروسس همزمان بخواهند در يك slot درون process table بنويسند، باعث خراب شدن سيستم ميشود.اگر دو پروسس بخواهند روي printer بنويسند حاصل آشغال خواهد بود.
بنا بر اين تمام سيستمهاي عامل قدرت تخصيص دسترسي انحصاري (به طور موقت) به منابع مشخصي را دارند . در بسياري از برنامه هاي كاربردي ، process نيازانحصاري به چندين منبع را دارد . فرض كنيدقرار باشد نقشه يك كشور از روي يك cd ،روي يك plotterبرده شود . فرض كنيد process Aدرخواست cd-Rom كند وcd-Rom به او تخصيص يابد. كمي بعد process Bدرخواست plotterكند وبه او داده شودحالا process A درخواست plotterكند،و در انتظار آن منبع ،block شود . سپس process B، تقاضاي cd_Rom driverكند وblock شود . در اين لحظه هر دوي process ها در حالت blockهستند و تا ابد در اين حالت باقي مي مانند . اين وضعيت deadlockنام دارد.
A
B
R1
R2
منبع : هر چیزی است که در هر لحظه فقط توسط یک پروسس می تواند استفاده شود . منبع می تواند سخت افزاری یا نرم افزاری باشد .
Resource ها دو نوعند:
قابل پس گرفتن preemptable
غير قابل پس گرفتن nonpreemptable
دنباله اتفاقات در مورد استفاده از يك منبع به اين صورت است:
تقاضا براي منبع
استفاده از منبع
آزاد كردن منبع
typedef int semaphore; typedef int semaphore;
semaphore resource_1; semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource _1); void process_A(void) {
use_resource_1( ); down(&resource _1);
up(&resource _1); down(&resource _2);
use_both_resources( );
} up(&resource _2);
up(&resource _1);
}
(a) (b)
typedef int semaphore;
semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource _1);
down(&resource _2);
use_both_resources( );
up(&resource _2);
up(&resource _1);
}
void process_B(void) {
down(&resource _1);
down(&resource _2);
use_both_resources( );
up(&resource _2);
up(&resource _1);
}
typedef int semaphore;
semaphore resource_1;
semaphore resource_2;
void process_A(void) {
down(&resource _1);
down(&resource _2);
use_both_resources( );
up(&resource _2);
up(&resource _1);
}
void process_B(void) {
down(&resource _2);
down(&resource _1);
use_both_resources( );
up(&resource _1);
up(&resource _2);
}
Fig. 3-2. (a) Deadlock-free code. (b) Code with a potential deadlock.
اصول بن بست
تعريف رسمی بن بست اين است:
مجموعه ای از processها در حالت بن بست قرار دارد اگر هر process
اين مجموعه منتظر اتفاقی باشد كه فقط process ديگری در اين مجموعه ميتواند ايجادش كند.از آنجا ئيكه همه پروسس ها منتظر هستند،هرگزهیچ يك از آنها نمی تواند اتفاقی که باعث بیدار شدن عضو ديگری از مجموعه شود
را ایجاد کنند و همه process ها برای هميشه منتظر خواهند بود.
شرايط لازم برای بوجود آمدن بن بست
شرط ” دو بدو ناسازگاری “ Mutual exclusion
شرط ” نگهدار و منتظر شو “Hold and wait
شرط“ غير قابل پس گرفتن “ No preemption
شرط“ انتظار دايره ای “Circular wait condition
Coffman و چند نفر دیگر (1971) نشان دادند که چهار شرط برای بوجود آمدن بن بست لازم است :