وراثت اولویت
در محاسبات بیدرنگ، وراثت اولویت شیوه ای است برای از بین بردن وارونگی نامحدود اولویت. با استفاده از این شیوه ی برنامه نویسی، الگوریتم زمانبندی پروسه باعث افزایش اولویت یک پروسه (مثلا 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». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۵ آوریل ۲۰۲۱.