تالار گفتمان مانشت

نسخه‌ی کامل: تفاوت polling و busy waiting
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
busy waiting میشه همون روشی که cpu هر لحظه سر می زنه تا ببینه I/O کارش تموم شده یا نه ؟
یا polling میشه این ، یعنی همون سرکشی
یا اصلا این دوتا فرق ندارن
جمله ای که واسه تفاوت این دوتا خوندم این بوذ:
polling با busy waiting متفاوت است polling بعد از انجام یک سری کار ادوات را چک می کند که کاری دارد یا نه اما در busy waiting کاری انجام نمی دهد بلکه فقط چک می کند .

ممنون
ببینید دوست عزیز، busy waiting یعنی cpu در حال چک کردن مثلا یه قطعه کد هست تا اینکه یه مدت زمانی سپری شه و بعد به فرآیند دیگه سوئیچ کنه.عموما" در busy waiting عمل مفیدی جز بررسی یه شرط خاص انجام نمیشه.اما روش polling یا همون سرکشی برای رسیدگی به درخواست وقفه از دستگاه های جانبی هستش.یعنی مدام تمام دستگاه های جانبی چک میشن که آیا درخواست وقفه دارن یا نه.پس این دو روش اساسا" باهم فرق دارن.سوال دیگه ای بود بپرسید که بیشتر تشریحش کنم.
(04 تير 1392 02:29 ب.ظ)Andrew S.Tanenbaum نوشته شده توسط: [ -> ]ببینید دوست عزیز، busy waiting یعنی cpu در حال چک کردن مثلا یه قطعه کد هست تا اینکه یه مدت زمانی سپری شه و بعد به فرآیند دیگه سوئیچ کنه.عموما" در busy waiting عمل مفیدی جز بررسی یه شرط خاص انجام نمیشه.اما روش polling یا همون سرکشی برای رسیدگی به درخواست وقفه از دستگاه های جانبی هستش.یعنی مدام تمام دستگاه های جانبی چک میشن که آیا درخواست وقفه دارن یا نه.پس این دو روش اساسا" باهم فرق دارن.سوال دیگه ای بود بپرسید که بیشتر تشریحش کنم.

ممنون از توضیحتون اما

اساسا polling همون بحث سرکشی میشه که بعد وقفه اومد و بهبود یافت درسته ؟
و اینکه هدف از busy waiting چیه ، اون قطعه کدی که cpu چک می کنه مثلا چی می تونه باشه ؟

در یه جایی از جزوه دکتر حقیقت نوشته بود تکنیک های کار با سخت افزار busy waiting و وقفه است
می تونم اینو اینطور توجیه کنم که عملا polling خود یه جور busy waiting به حساب میاد چون وقت cpu در جهت سرکشی گرفته میشه ؟
روش polling یه روش ابتدائی واسه بررسی درخواست وقفه دستگاه های جانبی هست.بعدش به قول شما بهبود یافت و روشی مثل chaining ابداع میشه و...
هدف از busy waiting در واقع سپری کردن یه مدت زمان تا رسیدن به شرایطی خاص هستش.در واقع وقتی یه فرآیند cpu رو در اختیار میگیره و به دلیل اینکه شرایط مطلوبش هنوز فراهم نشده مدام یه حلقه انتظار مشغول رو چک میکنه تا اینکه شرایط مورد نظرش بوجود بیاد و یا اینکه time slice اون فرآیند تموم بشه و cpu رو ازش بگیرن.در مورد قطعه کدی که cpu چک میکنه میشه مثلا یه حلقه for یا while باشه که قبل از ورود یه فرآیند به بخش بحرانیش میذارن تا انحصار متقابل رو رعایت کنن.
در اینکه هردو عمل busy waiting و polling زمان cpu رو هدر میدن که شکی نیست اما توجیه شما درست نیست.چون اساسا این دو عمل باهم فرق دارن.ولی شاید بشه گفت که نتیجه کارشون که هدر دادن زمان cpu هست یکیه.یه نکته دیگه اینکه اساسا" خود عمل busy waiting آنچنان هم عمل بدی نیست.چون بهرحال مدت زمانی که یک فرآیند انتظار مشغول میکنه اونقدراهم زیاد نیست.عیب عمده busy waiting همون مشکل اولویت معکوس هستش.بعدا برای حل این مشکل میگن به جا اینکه بذاریم فرآیند busy waiting کنه بهتره بلوکه بشه.
لینک مرجع