IRQL (англ. Interrupt Request Level — рівень запиту переривання) — механізм програмно-апаратної пріоритезації, що застосовується для синхронізації в операційних системах сімейства Windows NT.
IRQL є програмним атрибутом (через те, що не підтримується апаратно) процесора та вказує пріоритет коду, що виконується на цьому процесорі відносно переривань та інших асинхронних подій. Для апаратних переривань, у більшості випадків, IRQL реалізується апаратно (приклад: поняття пріоритету переривання в контролері i8259A чи пріоритет завдання, що вказується в регістрі TPR в APIC), проте, код операційної системи сам може логічно перебувати на різних пріоритетах, у такому випадку додаткові рівні IRQL реалізуються програмно. Наприклад, пріоритет планувальника потоків або DPC вищий за пріоритет користувацьких потоків. Якби це було не так, тоді потоки могли б витісняти планувальник і тим самим «вимкнути» витискальну багатозадачність, у свою чергу планувальник може бути зроблений таким, що переривається апаратними перериваннями. У Windows NT застосовуються 32 рівня IRQL (у дужках зазначено числове значення):
- High (31)
- Power fail (30)
- IPI (29)
- Clock (28)
- Profile (27)
- Діапазон апаратних переривань, званих Devices IRQL, або DIRQL (від 26 до 3)
- DPC/DISPATCH (2)
- APC (1)
- PASSIVE (0)
Це означає, наприклад, що планувальник (який працює на рівні DPC/DISPATCH) може бути перерваний апаратними, міжпроцесорними перериваннями (IPI) і т. д., але не може бути перерваний асинхронними процедурами (APC) та звичайними потоками, що працюють на рівні PASSIVE. Міжпроцесорні переривання IPI можуть бути перервані збоєм електроживлення (переривання на рівні Power fail), але не можуть бути перервані звичайними апаратними перериваннями від пристроїв і т. д.
Також IRQL допомагає відстежувати та виявляти логічні помилки під час проектування ОС. Легендарна помилка з повідомленням IRQL_NOT_LESS_OR_EQUAL означає наступну ситуацію: драйвер або інший привілейований код із IRQL >= DPC/DISPATCH звернувся до відсутньої у пам'яті сторінки, вимагається виклик підсистеми, що довантажує сторінки з диску, проте ця підсистема, відповідно до архітектури Windows NT, має IRQL < DPC/DISPATCH. Отже, вона не має права переривати той код, який викликав помилку сторінки. В той же час привілейований код не може продовжити виконання, доки сторінку не буде завантажено. Виникає логічний тупик, який, власне, і спричинює крах ОС.
У Linux застосовуються подібні механізми. Наприклад, код обробника переривання може бути розділено на дві «половини»: верхню та нижню, «верхня» частина еквівалентна власне обробнику, «нижня» — відкладеній процедурі (аналог у Windows — DPC). Верхня половина процедури може бути перервана нижньою, але не навпаки. Таким чином, верхня та нижня половини логічно еквівалентні рівням IRQL Device IRQL і DPC/DISPATCH відповідно.
Дотримання системних погоджень
Технічна документація Windows NT ([ru]) обмежує неперервний час роботи коду на підвищених IRQL. Для рівнів апаратних переривань (DIRQL) обмеження складає 10-20 мкс. Для програмного рівня DISPATCH_LEVEL даються суперечливі значення в 25 і 100мкс.
Тим не менше, ці обмеження часто порушуються навіть власним кодом ядра та драйверів Windows, не кажучи вже про драйвери сторонніх виробників, створюючи приховані затримки. Це не впливає помітного на звичайну роботу системи, проте може сильно погіршувати роботу в реальному часі — наприклад, у потоковому мультимедіа (особливо це помітно на звуку). Для виявлення подібних порушень розроблено програми DPC Latency Checker і LatencyMon. Аналіз роботи різних версій Windows за допомогою подібних програм показує, що вказані порушення поступово виправляються[].
Примітки
- Synchronization Examples [ 2 березня 2016 у Wayback Machine.](англ.)
- Introduction to Spin Locks [ 2 березня 2016 у Wayback Machine.](англ.)
- Guidelines for Writing DPC Routines [ 2 березня 2016 у Wayback Machine.](англ.)
- Windows Vista Tuning Tips for Audio Processing [ 25 березня 2016 у Wayback Machine.](англ.)
- Windows XP Tuning Tips for Audio Processing [ 25 березня 2016 у Wayback Machine.](англ.)
- DPC Latency Checkeer(англ.)
- LatencyMon(англ.)
Література
- [ru], Д. Соломон. Внутреннее устройство Microsoft Windows. — 6-е. — СПб : Пітер, 2013. — С. 111—121. — .
- Волтер Оні. Використання Microsoft Windows Driver Model. — 2-е. — СПб : Пітер, 2007. — С. 166—172. — .
- Understanding IRQL [ 8 грудня 2017 у Wayback Machine.](англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
IRQL angl Interrupt Request Level riven zapitu pererivannya mehanizm programno aparatnoyi prioritezaciyi sho zastosovuyetsya dlya sinhronizaciyi v operacijnih sistemah simejstva Windows NT IRQL ye programnim atributom cherez te sho ne pidtrimuyetsya aparatno procesora ta vkazuye prioritet kodu sho vikonuyetsya na comu procesori vidnosno pererivan ta inshih asinhronnih podij Dlya aparatnih pererivan u bilshosti vipadkiv IRQL realizuyetsya aparatno priklad ponyattya prioritetu pererivannya v kontroleri i8259A chi prioritet zavdannya sho vkazuyetsya v registri TPR v APIC prote kod operacijnoyi sistemi sam mozhe logichno perebuvati na riznih prioritetah u takomu vipadku dodatkovi rivni IRQL realizuyutsya programno Napriklad prioritet planuvalnika potokiv abo DPC vishij za prioritet koristuvackih potokiv Yakbi ce bulo ne tak todi potoki mogli b vitisnyati planuvalnik i tim samim vimknuti vitiskalnu bagatozadachnist u svoyu chergu planuvalnik mozhe buti zroblenij takim sho pererivayetsya aparatnimi pererivannyami U Windows NT zastosovuyutsya 32 rivnya IRQL u duzhkah zaznacheno chislove znachennya High 31 Power fail 30 IPI 29 Clock 28 Profile 27 Diapazon aparatnih pererivan zvanih Devices IRQL abo DIRQL vid 26 do 3 DPC DISPATCH 2 APC 1 PASSIVE 0 Ce oznachaye napriklad sho planuvalnik yakij pracyuye na rivni DPC DISPATCH mozhe buti perervanij aparatnimi mizhprocesornimi pererivannyami IPI i t d ale ne mozhe buti perervanij asinhronnimi procedurami APC ta zvichajnimi potokami sho pracyuyut na rivni PASSIVE Mizhprocesorni pererivannya IPI mozhut buti perervani zboyem elektrozhivlennya pererivannya na rivni Power fail ale ne mozhut buti perervani zvichajnimi aparatnimi pererivannyami vid pristroyiv i t d Takozh IRQL dopomagaye vidstezhuvati ta viyavlyati logichni pomilki pid chas proektuvannya OS Legendarna pomilka z povidomlennyam IRQL NOT LESS OR EQUAL oznachaye nastupnu situaciyu drajver abo inshij privilejovanij kod iz IRQL gt DPC DISPATCH zvernuvsya do vidsutnoyi u pam yati storinki vimagayetsya viklik pidsistemi sho dovantazhuye storinki z disku prote cya pidsistema vidpovidno do arhitekturi Windows NT maye IRQL lt DPC DISPATCH Otzhe vona ne maye prava pererivati toj kod yakij viklikav pomilku storinki V toj zhe chas privilejovanij kod ne mozhe prodovzhiti vikonannya doki storinku ne bude zavantazheno Vinikaye logichnij tupik yakij vlasne i sprichinyuye krah OS U Linux zastosovuyutsya podibni mehanizmi Napriklad kod obrobnika pererivannya mozhe buti rozdileno na dvi polovini verhnyu ta nizhnyu verhnya chastina ekvivalentna vlasne obrobniku nizhnya vidkladenij proceduri analog u Windows DPC Verhnya polovina proceduri mozhe buti perervana nizhnoyu ale ne navpaki Takim chinom verhnya ta nizhnya polovini logichno ekvivalentni rivnyam IRQL Device IRQL i DPC DISPATCH vidpovidno Dotrimannya sistemnih pogodzhenTehnichna dokumentaciya Windows NT ru obmezhuye neperervnij chas roboti kodu na pidvishenih IRQL Dlya rivniv aparatnih pererivan DIRQL obmezhennya skladaye 10 20 mks Dlya programnogo rivnya DISPATCH LEVEL dayutsya superechlivi znachennya v 25 i 100mks Tim ne menshe ci obmezhennya chasto porushuyutsya navit vlasnim kodom yadra ta drajveriv Windows ne kazhuchi vzhe pro drajveri storonnih virobnikiv stvoryuyuchi prihovani zatrimki Ce ne vplivaye pomitnogo na zvichajnu robotu sistemi prote mozhe silno pogirshuvati robotu v realnomu chasi napriklad u potokovomu multimedia osoblivo ce pomitno na zvuku Dlya viyavlennya podibnih porushen rozrobleno programi DPC Latency Checker i LatencyMon Analiz roboti riznih versij Windows za dopomogoyu podibnih program pokazuye sho vkazani porushennya postupovo vipravlyayutsya dzherelo PrimitkiSynchronization Examples 2 bereznya 2016 u Wayback Machine angl Introduction to Spin Locks 2 bereznya 2016 u Wayback Machine angl Guidelines for Writing DPC Routines 2 bereznya 2016 u Wayback Machine angl Windows Vista Tuning Tips for Audio Processing 25 bereznya 2016 u Wayback Machine angl Windows XP Tuning Tips for Audio Processing 25 bereznya 2016 u Wayback Machine angl DPC Latency Checkeer angl LatencyMon angl Literatura ru D Solomon Vnutrennee ustrojstvo Microsoft Windows 6 e SPb Piter 2013 S 111 121 ISBN 978 5 459 01730 4 Volter Oni Vikoristannya Microsoft Windows Driver Model 2 e SPb Piter 2007 S 166 172 ISBN 978 5 91180 057 4 Understanding IRQL 8 grudnya 2017 u Wayback Machine angl