Жоғары басымдық тапсырманың төмен басымдық тапсырмамен кері кетуі – компьютерлік жүйедегі қауіпті жағдай. Ресурстарды бөлісу кезінде туындайды, басымдық ретін бұзады.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Қажетсіз есептеу кестесі сценарийі
Undesireable computing scheduling scenario
Компьютер ғылымында, басымдық инверсиясы – жоспарлау кезінде туындайтын жағдай, онда жоғары басымдылыққа ие тапсырма төмен басымдылыққа ие тапсырмамен тікелей емес, бірақ нәтижесінде ығыстырылады, бұл тапсырмаларға берілген басымдықтарды кері аударады. Бұл жоғары басымдылықтағы тапсырмалардың жұмысын тек одан да жоғары басымдылыққа ие тапсырмалар ғана тоқтатуы мүмкін деген басымдық моделін бұзады. Инверсия төмен басымдылыққа ие тапсырмамен ресурстық қақтығыс болғанда туындайды, содан кейін орта басымдылыққа ие тапсырма оны прерықтатады.
In computer science, priority inversion is a scenario in scheduling in which a high priority task is indirectly superseded by a lower priority task effectively inverting the assigned priorities of the tasks. This violates the priority model that high priority tasks can only be prevented from running by higher priority tasks. Inversion occurs when there is a resource contention with a low priority task that is then preempted by a medium priority task.
Формуляциясы
Екі тапсырманы қарастырайық: H және L, сәйкесінше жоғары және төмен басымдылыққа ие. Олардың әрқайсысы ортақ ресурс R-ді пайдалануға құқылы. Егер H, L ресурс R-ді алғаннан кейін оны алуға тырысса, H, L ресурстан бас тартқанға дейін тоқтатылады. Жақсы жобаланған жүйеде ерекше пайдалану ресурсын (осы жағдайда R) бөлісу әдетте L-дің R-ден дереу бас тартуын қамтамасыз етеді, сонда H (жоғары басымдылыққа ие тапсырма) тым ұзақ уақытқа тоқтатылмайды. Дегенмен, жақсы жобаланғанына қарамастан, L R-ді пайдаланып жатқанда орташа басымдылыққа ие үшінші M тапсырмасы іске қосылуы мүмкін. Осы кезде M, L-ден жоғары басымдылыққа ие болғандықтан, L-ге үзіліс жасайды (өйткені M R-ге тәуелді емес), бұл L-дің R-ден дереу бас тартуына кедергі келтіреді, нәтижесінде ең жоғары басымдылыққа ие H процесі іске қосыла алмайды (яғни, H M сияқты төмен басымдылыққа ие тапсырмалардың тудырған күтпеген тоқтауынан зардап шегеді).
Consider two tasks H and L, of high and low priority respectively, either of which can acquire exclusive use of a shared resource R. If H attempts to acquire R after L has acquired it, then H becomes blocked until L relinquishes the resource. Sharing an exclusive use resource (R in this case) in a well designed system typically involves L relinquishing R promptly so that H (a higher priority task) does not stay blocked for excessive periods of time. Despite good design, however, it is possible that a third task M of medium priority becomes runnable during L's use of R. At this point, M being higher in priority than L, preempts L (since M does not depend on R), causing L to not be able to relinquish R promptly, in turn causing H—the highest priority process—to be unable to run (that is, H suffers unexpected blockage indirectly caused by lower priority tasks like M).
Салдарлар
Кейбір жағдайларда басымдық инверсиясы тікелей зиян келтірмей орын алуы мүмкін: жоғары басымдылықтағы тапсырманың кешіктірілген орындалуы байқалмайды, ал соңында төмен басымдылықтағы тапсырма ортақ ресурсты босатады. Дегенмен, басымдық инверсиясы көптеген жағдайларда ауыр проблемаларға әкелуі мүмкін. Егер жоғары басымдылықтағы тапсырма ресурстардан ұзақ уақытқа дейін айырылса, ол жүйелік бұзушылыққа немесе алдын ала анықталған түзету шараларын іске қосуға, мысалы, жүйені қайта іске қосатын бақылау таймеріне алып келуі мүмкін. 1997 жылы Марсқа қонған Pathfinder ғарыш кемесінің басынан өткен қиындықтар – нақты уақыт жүйелерінде басымдық инверсиясының салдарынан туындаған мәселелердің классикалық мысалы. Басымдық инверсиясы жүйенің сезілетін өнімділігін де төмендетуі мүмкін. Төмен басымдылықтағы тапсырмалар әдетте төмен басымдыққа ие, себебі оларды дереу аяқтау маңызды емес (мысалы, олар пакеттік жұмыс немесе басқа да интерактивті емес әрекет болуы мүмкін). Сол сияқты, жоғары басымдылықтағы тапсырманың басымдығы жоғары, өйткені ол қатаң уақыт шектеулеріне ұшырауы ықтимал – ол интерактивті пайдаланушыға деректерді ұсынуы немесе нақты уақыт жауап беру кепілдіктеріне сәйкес әрекет етуі мүмкін. Басымдық инверсиясы жоғары басымдылықтағы тапсырманы тоқтатып, төмен басымдылықтағы тапсырманың орындалуына себеп болатындықтан, ол жүйенің жауап беру жылдамдығын төмендетуге немесе тіпті жауап беру уақытының кепілдіктерін бұзуға әкелуі мүмкін. Ұқсас мәселе, соңғы мерзім алмасуы деп аталады, ең ерте мерзімді бірінші кестелеу (EDF) ішінде пайда болуы мүмкін.
In some cases, priority inversion can occur without causing immediate harm—the delayed execution of the high priority task goes unnoticed, and eventually, the low priority task releases the shared resource. However, there are also many situations in which priority inversion can cause serious problems. If the high priority task is left starved of the resources, it might lead to a system malfunction or the triggering of pre defined corrective measures, such as a watchdog timer resetting the entire system. The trouble experienced by the Mars Pathfinder lander in 1997 is a classic example of problems caused by priority inversion in realtime systems. Priority inversion can also reduce the perceived performance of the system. Low priority tasks usually have a low priority because it is not important for them to finish promptly (for example, they might be a batch job or another non interactive activity). Similarly, a high priority task has a high priority because it is more likely to be subject to strict time constraints—it may be providing data to an interactive user, or acting subject to real time response guarantees. Because priority inversion results in the execution of a lower priority task blocking the high priority task, it can lead to reduced system responsiveness or even the violation of response time guarantees. A similar problem called deadline interchange can occur within earliest deadline first scheduling (EDF).