سیستم های عامل ۲
اسلاید 1: به نام خدا سيستم هاي عامل Operating Systems اسلايد 6 جوانمرد Email: javanmard.ehsan@gmail.com Website: www.ejavanmard.blogfa.com1
اسلاید 2: اجراي همروند پردازه ها (سيستم تك پردازنده اي)مزايا:استفاده مناسبتر از منابع سيستمبهبود زمان پاسخگوييمعايب:ممكن است نتايج اجراي همروند پردازه ها با نتيجه اجراي ترتيبي آنها متفاوت باشد.سربار سيستم را زياد ميکند.مديريت منابع مشترک ساده نيست و هر منبع تا تکميل کار با آن بايد در اختيار يک پردازه باشد. يافتن علت رخداد خطاهاي سيستم و رفع آن مشکل است.2
اسلاید 3: يك مثال ساده3Echo(){chin = getchar();chout = chin;putchar(chout);}
اسلاید 4: يك مثال سادهعلت مشکل: متغير سراسري و مشترك chin و choutاگر پردازه اي متغير سراسري را تغيير دهد وسپس با وقفه مواجه شود،پردازه ديگري مي تواند مقدار اين متغير را عوض كند.راه حل: متغير مشترک تا پايان کار يک پردازه در انحصار آن باشد.4Process P1Echo(){chin = getchar();...chout = chin;putchar(chout);}Process P2Echo(){chin = getchar();chout = chin;putchar(chout);}
اسلاید 5: حالات مختلف ارتباط پردازههااجراي پردازهها بدون ارتباطارتباط غير مستقيم: با استفاده از متغيرهاي مشترکارتباط مستقيم: پردازه ها مستقيما براي يکديگر داده ارسال كنند.5
اسلاید 6: چند تعريفناحيه بحراني:(Critical Section) بخش هايي از کد پردازه که با منابع مشترک کار دارد.انحصار متقابل(Mutual Exclusion): در هر لحظه تنها يک پردازه در حال اجراي ناحيه بحراني باشد.بن بست: رقابت و در اختيار گرفتن حلقوي منابع بصورتي که ادامه اجراي پردازه ها ممکن نباشد.گرسنگي: محروم ماندن يک يا چند پردازه از يک يا چند منبع انتظار مشغولي: چک کردن مداوم ابزار جانبي توسط پردازنده براي آگاهي از آمادگي آن را انتظار مشغولي ميگويند.6
اسلاید 7: نكته مهمايجاد انحصار متقابل براي اجراي صحيح پردازه ها بصورت همروند ضروري است.ايجاد انحصار متقابل ميتواند امكان رخداد بن بست و گرسنگي را بوجود آورد.7
اسلاید 8: شرايط لازم براي برقراري انحصار متقابلدر هر لحظه تنها يک پردازه در حال اجراي ناحيه بحراني باشد. پردازه اي که در حال اجراي ناحيه غير بحراني خود است نبايد روي بقيه پردازه ها تأثير بگذارد.پردازه ای که به منبعی نياز دارد، نبايد تا ابد منتظر بماند. اگر هيچ پردازه ای در ناحيه بحرانی نيست، اولين تقاضا بايد پذيرفته شود.هيچ پردازه ای تا ابد منبعی را در اختيار نگيرد.8
اسلاید 9: روشهاي برقراري انحصار متقابلايجاد انحصار متقابل در محيط کاربرمشخصه اين روشها اين است که از انتظار مشغولي استفاده ميکنند.روشهايي که نياز به حمايت سخت افزار دارند.روشهايي که نياز به حمايت سيستم عامل دارند. روشهايي که نياز به حمايت کامپايلرها دارند.9
اسلاید 10: ايجاد انحصار متقابل با انتظار مشغولي تلاش اولاين روش انحصار متقابل را ايجاد ميکند.پردازه ها بايد بصورت تناوبي اجرا شوند.در صورت از کار افتادن يک پردازه، پردازه ديگر هم قادر به اجرا نيست.10P0(){while( turn != 0 );<CS>turn = 1;}P1(){while( turn != 1 );<CS>turn = 0;}
اسلاید 11: روش چک کردن ايجاد يا عدم ايجاد انحصار متقابلروش ساده تر اين است که به جاي اثبات ايجاد انحصار متقابل، به دنبال حالت نقض بگرديم.بايد حالات خاصي را در نظر بگيريم که زمان اجراي پردازه ها در نواحي نزديک به شرط ورود به ناحيه بحراني رخ دهند.اگر مورد نقضي پيدا نشد باز هم بصورت قطعي نميتوان گفت که انحصار متقابل وجود دارد، اما ميتوان گفت که مثال نقضي يافت نشده است.11
اسلاید 12: چک کردن ايجاد انحصار متقابل12
اسلاید 13: چک کردن ايجاد انحصار متقابل13
اسلاید 14: ايجاد انحصار متقابل با انتظار مشغولي تلاش دومدر اين روش به جاي يک متغير نوبت، از دو فلاگ استفاده شود.مشکل نوبتي بودن اجرا حل شده است.اما اين روش انحصار متقابل را ايجاد نميکند.14P0(){while (flag[1] == true);flag[0] = true;<CS>flag[0] = false}P1(){while (flag[0] == true);flag[1] = true;<CS>flag[1] = false}
اسلاید 15: چک کردن ايجاد انحصار متقابل تلاش دوم15
اسلاید 16: ايجاد انحصار متقابل با انتظار مشغولي تلاش سومدر اين روش بجاي چک کردن و قفل کردن از قفل کردن و چک کردن استفاده شده.اين روش انحصار متقابل را ايجاد ميکند.مشكل؟؟؟16P0(){flag[0] = true;while (flag[1] == true);<CS>flag[0] = false}P1(){flag[1] = true;while (flag[0] == true);<CS>flag[1] = false}
اسلاید 17: چک کردن ايجاد انحصار متقابل تلاش سوم17مشکل بن بست دارد. يعني در يک حالت خاص ممکن است سيستم دچار بن بست شود.
اسلاید 18: ايجاد انحصار متقابل با انتظار مشغولي تلاش چهارممشكل؟؟؟ممكن است بن باز(LiveLock) رخ دهد.18P0(){flag[0] = true;while (flag[1] == true){flag[0] = false;/*delay*/flag[0] = true;}<CS>flag[0] = false}P1(){flag[1] = true;while (flag[0] == true){flag[1] = false;/*delay*/flag[1] = true;}<CS>flag[1] = false}
اسلاید 19: بن بست و بن بازبن بست (DeadLock): زماني رخ ميدهد كه مجموعه اي از پردازه ها ميخواهند وارد قسمت بحراني خود شوند، اما هيچ پردازه اي نميتواند موفق گردد.بن باز (LiveLock): در بن باز، دنباله هايي از اجرا وجود دارد كه ميتواند موفق شود، اما ميتوان يك يا چند دنباله را نيز پيدا كرد كه در آنها هيچ پردازه ايي هرگز وارد قسمت بحراني نميگردد.19
اسلاید 20: الگوريتم Dekker20
اسلاید 21: الگوريتم Peterson21
اسلاید 22: روش سخت افزاري ايجاد انحصار متقابل از کار انداختن وقفه ساعتخاموش کردن وقفه ساعت: در اين روش خود پردازه ها يا سيستم عامل تا اجرای کامل ناحيه بحرانی، وقفه ساعت را از کار مي اندازند.مزاياسادگياشکالاتايمني سيستم به دست برنامه نويسان مي افتد.22
اسلاید 23: روش سخت افزاري ايجاد انحصار متقابل آزمايش و قفل كردن (Test & Lock)لازمست تابع TSL، به روش سخت افزاري و توسط پردازنده بصورت اتميك اجرا شود.23TSL
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.