وراثت اولویت

در محاسبات بی‌درنگ، وراثت اولویت شیوه ای است برای از بین بردن وارونگی نامحدود اولویت. با استفاده از این شیوه ی برنامه نویسی، الگوریتم زمانبندی پروسه باعث افزایش اولویت یک پروسه (مثلا P) تا سطح حداکثر اولویت هر گونه پروسه ی دیگری می شود که منتظر منبعی است که P روی آن یک قفل منبع دارد (اگر بالاتر از اولویت اولیه P باشد).
ایده ی اساسی پروتکل وراثت اولویت این است که زمانیکه یک کار، یک یا بیش از یک کار با اولویت بالاتر را مسدود می کند، اولویت اولیه ی خود را نادیده می‌گیرد و ناحیه ی بحرانی خود را در یک سطح اولویت بالاتر اجرا می کند. پروسه، بعد از اجرای ناحیه بحرانی خویش و آزاد کردن قفل های خود، به سطح اولویت اولیه ی خود باز می گردد.

مثال

سه کار زیر را در نظر بگیرید:

نام کار اولویت
H بالا
M متوسط
L پایین

فرض کنید که هم H و هم L نیازمند یک منابع مشترک هستند. اگر L این منبع مشترک را به دست آورد، (وارد یک ناحیه ی بحرانی شود) و بعداً H آن را درخواست کند، آنگاه H تا زمانی که L منبع را آزاد کند (از ناحیه بحرانی خویش خارج شود)، مسدود می شود. بدون وراثت اولویت، پروسه M می تواند پروسه L را در زمان ناحیه بحرانی متوقف کند و تکمیل شدن آن را به تاخیر بیاندازد. در واقع یک پروسه با اولویت پایین به نام M به صورت غیر مستقیم یک پروسه‌ با اولویت بالاتر به نام H را دور می‌ زند. این وضعیت نوعی خطای وارونگی اولویت است.
با استفاده از وراثت اولویت، زمانی که پروسه H روی منبع مشترک مسدود شده است، پروسه L ناحیه بحرانی خویش را با اولویتی بالا برابر با H اجرا می کند. در نتیجه M قادر نخواهد بود تا اجرای پروسه‌ای L را متوقف کند و مسدود خواهد شد. این بدان معنی است که، کار M با اولویت بالاتر باید منتظر بماند تا، ناحیه ی بحرانی کار L با اولویت پایین تر اجرا شود، زیرا L دارای اولویت موروثی H است. زمانیکه L از ناحیه بحرانی خویش خارج می شود، مجددا اولویت اولیه (پایین) خود را به دست می‌آورد و پروسه H را بیدار می کند (که توسط پروسه L مسدود شده است). پروسه H که دارای اولویت بالا است، پروسه‌ای L را متوقف می‌کند و تا کامل شدن اجرا می شود. این کار باعث می شود تا پروسه ی M و L به طور متوالی از سر گرفته شوند و بدون وارونگی اولویت، تا زمان کامل شدن اجرا شوند.

منبع

مشارکت‌کنندگان ویکی‌پدیا. «Priority inheritance». در دانشنامهٔ ویکی‌پدیای انگلیسی، بازبینی‌شده در ۱۵ آوریل ۲۰۲۱.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.