Кіріспе
Компьютер процессорына аппараттық немесе бағдарламалық қамтамасыз ету арқылы жіберілетін сигнал. Цифрлік компьютерлерде үзіліс (кейде тұзақ деп те аталады) – процессорға қазіргі орындалып жатқан кодты тоқтату туралы талап (рұқсат болса), соның арқасында оқиға дер кезінде өңделеді. Талап қабылданса, процессор ағымдағы әрекеттерін тоқтатады, күйін сақтайды және оқиғаны өңдеу үшін үзіліс өңдеушісі (немесе үзіліс қызметтік бағдарламасы, ISR) деп аталатын функцияны орындайды. Бұл үзіліс көбінесе уақытша болады, үзіліс өңдеушісі жұмысын аяқтағаннан кейін бағдарламалық қамтамасыз ету қалыпты жұмысын жалғастыра алады, бірақ үзіліс орнына өлімге әкелетін қате туралы хабарлауы мүмкін. Үзілістер аппараттық құрылғылармен уақытқа сезімтал назар қажетті электрондық немесе физикалық күйдегі өзгерістерді көрсету үшін жиі қолданылады. Үзілістер компьютерлік көп тапсырмалылықты және жүйелік шақыруларды, әсіресе нақты уақытты есептеуде іске асыру үшін де кеңінен қолданылады. Мұндай үзілістерді пайдаланатын жүйелер үзіліске бағынған деп аталады.
In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to interrupt currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted, the processor will suspend its current activities, save its state, and execute a function called an interrupt handler (or an interrupt service routine, ISR) to deal with the event. This interruption is often temporary, allowing the software to resume normal activities after the interrupt handler finishes, although the interrupt could instead indicate a fatal error. Interrupts are commonly used by hardware devices to indicate electronic or physical state changes that require time sensitive attention. Interrupts are also commonly used to implement computer multitasking and system calls, especially in real time computing. Systems that use interrupts in these ways are said to be interrupt driven.
Тарих
Аппараттық үзілістер оңтайландыру мақсатымен енгізілді, сыртқы оқиғаларды күтуге кеткен дауыс беру циклдарындағы өнімсіз күту уақытын жойды. Бұл тәсілді алғаш рет қолданған жүйе – 1954 жылы аяқталған DYSEAC болды, алайда одан бұрынғы жүйелер қателіктерді анықтау функцияларын қамтамасыз еткен. UNIVAC 1103A компьютері 1953 жылы үзілістерді алғаш пайдаланған машина ретінде танылады.
Түрлері
Тоқтату сигналдары аппараттық немесе бағдарламалық оқиғаларға жауап ретінде берілуі мүмкін. Олар тиісінше аппараттық үзілістер немесе бағдарламалық үзілістер деп жіктеледі. Кез келген процессор үшін үзіліс түрлерінің саны архитектурасымен шектеледі.
Жабдықтың үзілуі
Жабдықтық үзіліс – аппараттық құрылғының күйіне байланысты жағдай, ол сыртқы аппараттық құрылғымен, мысалы, дербес компьютердегі (PC) үзіліс сұранысы (IRQ) желісімен немесе процессор логикасына енгізілген құрылғылармен (мысалы, IBM System/370 жүйесіндегі CPU таймері) сигналдалады. Бұл құрылғыға операциялық жүйеден (ОЖ) немесе, егер ОЖ болмаса, процессорда (CPU) тікелей жұмыс істейтін бағдарламадан назар қажет екенін хабарлау үшін жасалады. Мұндай сыртқы құрылғылар компьютердің құрамына (мысалы, дискілік контроллер) кіруі немесе сыртқы перифериялық құрылғылар болуы мүмкін. Мысалы, пернетақтадағы түймеге басу немесе PS/2 портына қосылған тышқанды жылжыту аппараттық үзілістерді тудырады, бұл процессорға пернетақтадан мәзімді немесе тышқанның орнын оқуды жүктетеді. Жабдықтық үзілістер процессор сағатына қатысты асинхронды түрде және нұсқаулар орындалып жатқан кез келген сәтте пайда болуы мүмкін. Сондықтан, кіріс аппараттық үзіліс сигналдарының барлығы процессор сағатына синхрондалады және тек нұсқаулар орындалу шегінде қолданылады. Көптеген жүйелерде әрбір құрылғыға белгілі бір IRQ сигналы сәйкес келеді. Бұл қандай аппараттық құрылғы қызмет көрсетуді сұрап отырғанын жылдам анықтауға және осы құрылғыға қызмет көрсетуді жеделдетуге мүмкіндік береді. Кейбір ескі жүйелерде, мысалы 1964 жылғы CDC 3600, барлық үзілістер бір орынға жіберілді, ал ОЖ ең жоғары басымдылыққа ие, маскаланбаған үзілісті анықтау үшін арнайы нұсқауды пайдаланды. Қазіргі жүйелерде әдетте, үзілістің әр түріне (немесе үзіліс көзіне) жеке үзіліс процедурасы қарастырылады, ол көбінесе бір немесе бірнеше үзіліс векторлық кестелер түрінде іске асырылады.
Қажетті үзілістер
Бір сәтсіздік түрі – аппараттық құрал күй өзгергенде күтілетін үзілісті жасамай қалуы, нәтижесінде операциялық жүйе шексіз күтеді. Детальдарына қарай, бұл ақау бір процеске ғана әсер етуі немесе жүйеге жалпы әсер етуі мүмкін. Кейбір операциялық жүйелерде осы мәселені шешу үшін арнайы код бар. Мысалы, IBM Операциялық жүйе/360 (OS/360) таспа жетегіне таспа орнатылғанда құрылғы аяқталуының дайын емес үзілісіне сенеді және сол үзіліс болғанға дейін немесе модельденгенге дейін таспаның таңбасын оқымайды. IBM OS/360-қа VARY ONLINE командасы нысаналық құрылғыда құрылғы аяқталуының үзілісін модельдейтін код қосты.
Жалған үзілістер
Жалған үзіліс – көзі табылмайтын аппараттық үзіліс. Бұл құбылысты сипаттау үшін «көлеңкелі үзіліс» немесе «призрак үзіліс» терминдері де қолданылуы мүмкін. Жалған үзілістер деңгейге сезімтал процессордың кірісіне қосылған сымдық ОР үзіліс схемасымен байланысты проблема тудырады. Мұндай үзілістерді жүйе қалыптан тыс жұмыс істегенде анықтау қиын болуы мүмкін. Сымдық ОР схемасында, үзіліс желісінің бұрмалану резисторы арқылы паразиттік сыйымдылықтың зарядталуы/босатылуы процессор үзіліс көзінің тазартылғанын мойындамас бұрын шағын кешігуге себеп болады. Егер үзіліс тудырғыш құрылғы үзіліс қызметтік бағдарламасы (ISR) ішінде тым кеш тазартылса, ISR-дың ағымдағы мысалы аяқталғанға дейін үзіліс схемасының тыныш күйге оралуына жеткілікті уақыт болмайды. Нәтижесінде процессор тағы бір үзіліс күтіліп тұр деп ойлайды, себебі үзіліс сұранысы кірісіндегі кернеу анықты ішкі логикалық 1 немесе логикалық 0 құру үшін жеткілікті жоғары немесе төмен болмайды. Бұл үзілістің көзі анықталмайды, сондықтан оны «жалған» деп атайды. Жалған үзіліс сондай-ақ дұрыс емес схемалық шешімдерден, жоғары шу деңгейінен, өзара әсерден, уақыттық мәселелерден немесе сирек жағдайларда құрылғының қателігінен туындаған электрлік аномалиялардың салдары болуы мүмкін. ISR мұндай үзіліс болу мүмкіндігін ескермесе, жалған үзіліс жүйеде тоқтап қалуға немесе басқа анықталмаған операцияларға әкелуі мүмкін. Жалған үзілістер көбінесе сымдық ОР үзіліс схемаларымен байланысты болғандықтан, мұндай жүйелерде дұрыс бағдарламалау тәсілі – ISR-дың барлық үзіліс көздерін белсенділікке тексеруі және егер ешбір көз үзіліс тудырмаса, ешқандай әрекет жасамауы (жазбаға алудан басқа). Олар нашар жағдайларда компьютердің құлауына әкелуі де мүмкін.
Бағдарламалық қамтамасыз етуді үзілу
Процессордың өзі белгілі бір нұсқауларды орындағанда немесе нақты шарттар орындалғанда бағдарламалық үзіліс сұралады. Әрбір бағдарламалық үзіліс сигналы нақты бір үзіліс өңдеушімен байланысты. Бағдарламалық үзіліс, арнайы нұсқауды орындау арқылы қасақана туындатылуы мүмкін, ол жобаланғандай орындалғанда үзілісті шақырады. Мұндай нұсқаулар кіші бағдарлама шақыруларына ұқсас жұмыс істейді және операциялық жүйе қызметтерін сұрау, құрылғы драйверлерімен өзара әрекеттесу (мысалы, сақтау құралдарын оқу немесе жазу) сияқты түрлі мақсаттарда қолданылады. Бағдарламалық үзілістер бағдарламаны орындау қателерінен немесе виртуалды жад жүйесінен де туындауы мүмкін. Әдетте, операциялық жүйенің ядросы мұндай үзілістерді анықтап, басқарады. Кейбір үзілістер бағдарлама үшін ашық түрде өңделеді, мысалы, беттік қателерді қалыпты шешу – қажетті бетті физикалық жадта қолжетімді ету. Бірақ сегментация қатесі сияқты басқа жағдайларда операциялық жүйе процесті қайта шақырады. Unix сияқты операциялық жүйелерде бұл SIGSEGV, SIGBUS, SIGILL немесе SIGFPE сияқты сигналды жіберуді қамтиды, ол сигнал өңдеушіні шақыруы немесе стандартты әрекетті орындауы мүмкін (бағдарламаны тоқтату). Windows жүйесінде қайта шақыру Құрылымдық ерекшеліктерді басқару арқылы STATUS ACCESS VIOLATION немесе STATUS INTEGER DIVIDE BY ZERO сияқты ерекшелік кодымен жасалады. Ядролық процесте кейбір бағдарламалық үзілістердің болуы қажет емес. Егер олар осылай болса да, операциялық жүйе құлауы мүмкін.
Терминология
Тоқтату, тұзақ, ерекшелік, қате және үзілу терминдері үзілістердің түрлерін ажырату үшін қолданылады, бірақ "осы терминдердің нақты мағынасына қатысты толық келісім жоқ". "Тұзақ" термині кез келген үзіліске, кез келген бағдарламалық үзіліске, кез келген синхронды бағдарламалық үзіліске немесе тек қана атауында "тұзақ" сөзі бар нұсқаулардың нәтижесінде туындаған үзілістерге қатысты болуы мүмкін. Кейбір жағдайларда, "тұзақ" термині мониторлық бағдарламаға немесе түзетушіге контексттік ауысуды бастауға арналған үзіліс нүктесін білдіреді. (Аппараттық) үзілістер – I/O құрылғысымен асинхронды түрде туындайтын үзілістер, олар бағдарламаны үздіксіздігін жоғалтпай қайта іске қосуға мүмкіндік береді. "Қателік" де қайта іске қосылуы мүмкін, бірақ ол нұсқаудың синхронды орындалуымен байланысты, ал қайтару адресі қателік тудырған нұсқауға сілтеме жасайды. "Тұзақ" "қателікке" ұқсас, бірақ қайтару адресі тұзақ тудырған нұсқаудан кейін орындалатын нұсқауға сілтеме жасайды. Arm барлық түрдегі үзілістерді білдіру үшін "ерекшелік" терминін қолданады және ерекшеліктерді (аппараттық) үзілістерге, тоқтатуларға, қайта орналастыруларға және ерекшеліктерді тудыратын нұсқауларға бөледі. Тоқтатулар x86 ерекшеліктеріне сәйкес келеді және нұсқауларды алдын ала алу тоқтатулары (сәтсіз нұсқауларды алу) немесе деректерді тоқтатулар (сәтсіз деректерге қол жеткізу) болуы мүмкін, сондай-ақ синхронды немесе асинхронды болуы мүмкін. Асинхронды тоқтатулар нақты немесе нақты емес болуы мүмкін. MMU тоқтатулары (бет қателіктері) синхронды болып табылады. RISC V жалпы термин ретінде де, сыртқы жиынтық ретінде де "үзіліс" терминін қолданады; ал ішкі үзілістер "ерекшеліктер" деп аталады.
Arm uses the term exception to refer to all types of interrupts, and divides exceptions into (hardware) interrupts, aborts, reset, and exception generating instructions. Aborts correspond to x86 exceptions and may be prefetch aborts (failed instruction fetches) or data aborts (failed data accesses), and may be synchronous or asynchronous. Asynchronous aborts may be precise or imprecise. MMU aborts (page faults) are synchronous. RISC V uses interrupt as the overall term as well as for the external subset; internal interrupts are called exceptions.
Қозғалтқышты іске қосу әдістері
Әрбір үзіліс сигналының кірісі логикалық сигнал деңгейімен немесе белгілі бір сигнал жиегімен (деңгей өзгерісімен) іске қосылу үшін құрастырылған. Деңгейге сезімтал кірістер, кіріске белгілі бір (жоғары немесе төмен) логикалық деңгей қолданылған кезде процессор қызметін үздіксіз сұрайды. Жиекке сезімтал кірістер сигнал жиегіне реакция жасайды: белгілі бір (өсу немесе төмендеу) жиек қызмет сұранысын тіркеуге (сақтауға) себеп болады; процессор үзіліс өңдеуші орындалғанда тіркеуді қайта орнатады.
Жазықпен іске қосылған
Деңгейлік үзіліс сигналын оның белгілі бір (жоғары немесе төмен) белсенді логикалық деңгейінде ұстап тұру арқылы сұралады. Құрылғы сигналды белсенді деңгейге жеткізіп, оны сол деңгейде ұстап тұру арқылы деңгейлік үзілісті шақырады. Процессор бұйрық бергенде, әдетте құрылғыға қызмет көрсетілгеннен кейін, сигналды жоққа шығарады. Процессор әр нұсқау циклында үзіліс енгізу сигналын тексеріп отырады. Егер сигнал тексеру кезінде белсенді болса, процессор үзіліс сұранысын қабылдайды. Деңгейлік кірістер бірнеше құрылғыға сымдық ОР қосылысы арқылы ортақ үзіліс сигналын пайдалануға мүмкіндік береді. Процессор қай құрылғыға қызмет көрсету қажет екенін анықтау үшін сұрау салады. Құрылғыға қызмет көрсеткеннен кейін процессор қайтадан сұрау жүргізе алады және, қажет болған жағдайда, ISR-ден шығар алдында басқа құрылғыларға қызмет көрсетуі мүмкін.
Етістікті іске қосу
Шегінен иницияланатын үзіліс – үзіліс сызығындағы деңгейдің өзгеруімен белгіленетін үзіліс, яғни төмендейтін шегі (жоғарыдан төменге) немесе көтерілетін шегі (төменнен жоғарыға). Құрылғы үзіліс туралы сигнал беру үшін сызыққа импульс жібереді, содан кейін сызықты белсенді емес күйге қайтарады. Егер импульс сауалнамалы I/O арқылы анықтауға тым қысқа болса, оны анықтау үшін арнайы аппараттық құралдар қажет болуы мүмкін. Шегінен инициялаудың маңызды бөлігі – сигнал үзілісті іске қосу үшін өзгеруі керек; мысалы, егер сигнал жоғары-төмен-төмен болса, тек бір төмендейтін шегінен үзіліс іске қосылады, ал төменгі деңгейдің жалғасуы қосымша үзілістерді тудырмайды. Сигнал жоғары деңгейге оралып, тағы бір үзілісті іске қосу үшін қайтадан төмендеуі керек. Бұл деңгей бойынша инициялаудан өзгеше, онда төменгі деңгей сигнал жоғары деңгейге оралғанға дейін үзілістерді (егер олар қосылған болса) жасауды жалғастырады. Шегінен иницияланатын үзілістерді қолдайтын компьютерлерде күтіліп тұрған үзілістердің күйін сақтайтын үзіліс тіркегі болуы мүмкін. Үзіліс тіркегі бар жүйелерде әдетте үзіліс маскалары да болады.
Ортақ IRQ
Егер олар осы мақсатта жасалған болса, бірнеше құрылғылар жиекпен іске қосылатын үзіліс желісін бөлісе алады. Үзіліс желісінде төменге қарай немесе жоғарыға қарай тартылу резисторы болуы керек, сондықтан белсенді түрде басқарылмағанда ол өзінің белсенді емес күйіне түседі, бұл оның әдепкі күйі. Құрылғылар желіні қысқа уақытқа әдепкі емес күйіне ауыстыру арқылы үзіліс туралы сигнал береді және үзіліс туралы сигнал бермегенде желінің «ашық» күйде қалуына (белсенді басқармауға) мүмкіндік береді. Бұл қосылым түрі ашық коллектор деп те аталады. Содан кейін желі барлық құрылғылар тудырған импульстарды тасымалдайды. (Бұл кейбір автобустар мен троллейбустардағы тоқтату арқанына ұқсас, оны кез келген жолаушы жүргізушіге тоқтауды сұрап отырғанын белгілеу үшін тарта алады.) Дегенмен, әртүрлі құрылғылардан келетін үзіліс импульстары уақыт жағынан жақын болса, бірігуі мүмкін. Үзілістердің жоғалуын болдырмау үшін процессор импульстің соңғы жиегінде (мысалы, желі жоғары тартылып, төменге түсірілген жағдайда, өрлеу жиегінде) іске қосылуы керек. Үзілісті анықтағаннан кейін процессор барлық құрылғыларды қызмет көрсету талаптары бойынша тексеруі керек. Жиекпен іске қосылатын үзілістер деңгейлік үзілістерге тән ортақ пайдалану проблемаларынан зардап көрмейді. Төмен басымдылыққа ие құрылғыға қызмет көрсетуді кез келген уақытта кейінге қалдыруға болады, ал жоғары басымдылыққа ие құрылғылардан келетін үзілістер қабылдануға және қызмет көрсетілуге жалғасады. Егер процессордың қызмет көрсету қалай жасалатынын білмейтін құрылғысы болса, ол жалған үзілістерді тудыруы мүмкін, бірақ ол басқа құрылғылардың үзіліс сигналына кедергі келтірмейді. Дегенмен, жиекпен іске қосылатын үзілістің қалыпты жұмыстан шығуы оңай, мысалы, үзілістер қысқа мерзімге тоқтатылғанда, және оқиғаны тіркеуге арналған аппараттық құрылғы болмаса, оны қалпына келтіру мүмкін емес. Бұл мәселе компьютердің алғашқы аппараттық құралдарында көптеген «істен шығуларға» себеп болды, өйткені процессор бірдеңе жасауды күтіп тұрғанын білмеді. Қазіргі заманғы аппараттық құралдарда көбінесе бір немесе бірнеше үзіліс күйі тіркелгіштері болады, олар үзіліс сұраныстарын тіркеп сақтайды; дұрыс жазылған жиекпен іске қосылатын үзіліспен жұмыс істейтін код осы тіркелгіштерін оқиғалардың жоғалмауы үшін тексеруге мүмкіндік береді. Ескі Industry Standard Architecture (ISA) шинасы жиекпен іске қосылатын үзілістерді пайдаланады, құрылғылар IRQ желілерін бөлісе алатынын талап етпейді, бірақ барлық негізгі ISA аналық платаларында IRQ желілерінде кері тартылу резисторлары бар, сондықтан IRQ желілерін бөлісетін дұрыс мінез-құлықты ISA құрылғылары жақсы жұмыс істеуі керек. Параллель порт та жиекпен іске қосылатын үзілістерді пайдаланады. Көптеген ескі құрылғылар IRQ желілерін тек қана пайдаланады деп есептейді, сондықтан оларды бөлісу электрлік қауіпсіз емес. Бір желіні бірнеше құрылғының бөлісуіне 3 жол бар. Біріншісі – эксклюзивті өткізу (ауыстыру) немесе эксклюзивті қосылу (пиндерге). Екіншісі – шина арқылы (барлығы бір желіге қосылған және тыңдайды): шинадағы карталар сөйлеуді және үнсіз болуды қашан білуі керек (яғни ISA шинасы). Сөйлеуді екі жолмен іске қосуға болады: жинақтағыш құрылғысымен немесе логикалық қақпалармен. Логикалық қақпалар негізгі сигналдарды бақылайтын үздіксіз дерек ағынын күтеді. Жинақтағыштар қашықтағы жақ қақпаны шектен тыс қозғайтын кезде ғана іске қосылады, сондықтан келісілген жылдамдық қажет емес. Әрқайсысының жылдамдық және қашықтыққа қатысты артықшылықтары бар. Триггер, әдетте, қоздыруды анықтау әдісі: өрлеу жиегі, төмендеу жиегі, шекті мән (осциллограф пішін мен жағдайдың әртүрлі түрлерін іске қоса алады). Бағдарламалық үзілістерді іске қосу бағдарламалық жасақтамаға (жүйелік жүйеде де, қолданбада да) енгізілуі тиіс. «C» қолданбасының басында триггерлік кесте (функциялар кестесі) болады, оны қолданба да, жүйелік жүйе де біледі және аппараттық құралдарға байланысты емес, оны тиісінше пайдаланады. Алайда, бұл процессорға сигнал беретін аппараттық үзілістермен шатастырмаңыз (процессор функциялар кестесінен бағдарламалық жасақтаманы орындайды, бағдарламалық үзілістерге ұқсас).
Тоқтату желілерін ортақтастыру қиын
Бірнеше құрылғылар бір үзіліс желісін (кез келген тудыру стилінде) бөліссе, олар бір-біріне қатысты нақты емес үзіліс көздері болып табылады. Бір желіде көп құрылғы болғанда, үзілістерге қызмет көрсету жұмысы құрылғылар санының квадратына пропорционалды өседі. Сондықтан, құрылғыларды қолданыстағы үзіліс желілері бойынша тең бөлу ұсынылады. Үзіліс желілерінің жетіспеушілігі – үзіліс желілері жеке физикалық өткізгіштер болып табылатын ескі жүйелердегі мәселе. Жаңа жүйе архитектураларында (мысалы, PCI Express) үзіліс желісі виртуалды болатын хабарлама арқылы берілетін үзілістерге басымдық беріледі, бұл мәселенің шешілуіне көмектеседі. Нақты емес бағдарламалау интерфейсі бар кейбір құрылғылар, қызмет сұрап отыр ма, жоқ па, анықтау мүмкіндігін бермейді. Егер олар қызмет көрсетуді қаламаса, құрылып қалуы немесе дұрыс жұмыс ілемеуі мүмкін. Мұндай құрылғылар нақты емес үзілістерге төзбейді, сондықтан үзіліс желісін бөлісуге де төзбейді. ISA карталары көбінесе арзан дизайн мен құрылысының салдарынан осы мәселеге жиі ұшырайды. Аппараттық логика арзандағандықтан және жаңа жүйе архитектуралары ортақ үзілістерді талап ететіндіктен, мұндай құрылғылар азайып барады.
Гибридті
Кейбір жүйелер деңгейлік және жиектік сигналдаудың гибридті нұсқасын қолданады. Аппараттық құрал тек жиекті ғана анықтамай, сонымен қатар үзіліс сигналының белгілі бір уақыт бойы белсенді күйде қалатынын тексеріп тұрады. Гибридті үзілістің кең таралған қолданылуы – NMI (маскаланбайтын үзіліс) кірісі. NMI әдетте маңызды, тіпті апатты жүйелік оқиғаларды хабарлайды, сондықтан осы сигналдың дұрыс жұмыс істеуі үзілістің жарамдылығын қамтамасыз ету үшін оның белгілі бір уақыт бойы белсенді екенін тексеруге тырысады. Бұл екі қадамды тәсіл жүйеге әсер ететін жалған үзілістерді болдырмауға көмектеседі.
Хабарламамен белгіленетін
Хабарлама арқылы берілетін үзіліс физикалық үзіліс желісін пайдаланбайды. Оның орнына, құрылғы қызмет көрсету туралы өтінішін қысқа хабарламаны, әдетте компьютерлік шина сияқты байланыс ортасы арқылы жіберу арқылы көрсетеді. Хабарлама үзілістерге арналған типте болуы мүмкін, немесе жадқа жазу сияқты бұрыннан бар типте болуы мүмкін. Хабарлама арқылы берілетін үзілістер, жиекке қол жеткен үзілістерге өте ұқсас, себебі үзіліс – үздіксіз жағдай емес, уақытша сигнал. Үзілістерді басқару бағдарламалық құралы оларды шамамен бірдей қарастырады. Әдетте, бірдей хабарламаға (бірдей виртуалды үзіліс желісіне) ие бірнеше күтіліп тұрған хабарлама арқылы берілетін үзілістерді біріктіруге рұқсат етіледі, дәл сол сияқты, жақын орналасқан жиекке қол жеткен үзілістерді біріктіруге болады. Негізгі байланыс ортасымен бөлісуге болатын жағдайларда, хабарлама арқылы берілетін үзіліс векторларын бөлісуге болады. Қосымша күш салудың қажеті жоқ. Үзілістің идентификациясы жеке физикалық өткізгішті қажет етпейтін дерек биттерінің үлгісімен көрсетілгендіктен, көптеген ерекше үзілістерді тиімді басқаруға болады. Бұл бөлісу қажеттілігін азайтады. Үзіліс хабарламалары қосымша желілерді қажет етпейтін, тізбекті шина арқылы да жіберілуі мүмкін. PCI Express, тізбекті компьютерлік шина, тек хабарлама арқылы берілетін үзілістерді ғана пайдаланады.
Есік қоңырауы
Компьютерлік жүйелердегі басқыш түймесі аналогиясында, есік қоңырауы немесе есік қоңырауын үзіп тастау термині бағдарламалық жүйенің компьютерлік аппараттық құрылғыға орындалуға тиіс жұмыс туралы хабарлау немесе ескерту жасау механизмін сипаттау үшін жиі қолданылады. Әдетте, бағдарламалық жүйе деректерді белгілі бір және өзара келісілген жад орындарына орналастырады, содан кейін басқа жад орнына жазу арқылы "есік қоңырауын шалады". Бұл басқа жад орны көбінесе есік қоңырауы аймағы деп аталады, және осы аймақта әртүрлі мақсаттарға қызмет ететін бірнеше есік қоңырауы болуы мүмкін. Дәл осы жадтың есік қоңырауы аймағына жазу амалы "қоңырауды соғып", аппараттық құрылғыға деректердің дайын және күтіп тұрғанын хабарлайды. Аппараттық құрылғы енді деректердің жарамды екенін біледі және олармен сәйкес әрекет ете алады. Ол әдетте деректерді қатты дискіге жазады, желі арқылы жібереді немесе шифрлейді және т.б. Есік қоңырауын үзіп тастау термині көбінесе қате қолданылады. Ол үзіліске ұқсас, себебі ол құрылғының жұмыс істеуіне себеп болады; алайда, есік қоңырауы аймағы кейде сауалнама аймағы ретінде жүзеге асырылады, кейде есік қоңырауы аймағы физикалық құрылғы тіркелімдеріне жазылады, ал кейде есік қоңырауы аймағы тікелей физикалық құрылғы тіркелімдерімен байланыстырылады. Физикалық құрылғы тіркелімдеріне жазу немесе тікелей жазу кезінде, егер құрылғыда орталық процессорлық блок (CPU) болса, ол құрылғыда нақты үзіліске әкелуі мүмкін. Есік қоңырауын үзіп тастауды хабарламалық сигналды үзілістермен салыстыруға болады, өйткені олардың арасында кейбір ортақ белгілер бар.
Көп процессорлы IPI
Көппроцессорлық жүйелерде процессор басқа процессорға процессорлар аралық үзілістер (IPI) арқылы үзіліс сұрауын жіберуі мүмкін.
Өнер көрсету
Тоқтатулар төмен жүктемеде аз шығын мен жақсы жауап беру уақытын қамтамасыз етеді, бірақ бірнеше патологияларды болдырмау үшін назар аудармаса, жоғары тоқтату жиілігінде едәуір нашарлайды. Үзілістерді өңдеуге жұмсалатын шамадан тыс уақыт жүйенің жалпы өнімділігін күрт төмендетсе, ол үзіліс дауылы деп аталады. Жүйе басқа қажетті тапсырмаларды орындамай, барлық уақытын үзілістерді өңдеуге жұмсайтын тірі тоқтаудың түрлі формалары бар. Ерекше жағдайларда, көптеген үзілістер (мысалы, өте жоғары желілік трафик) жүйені толығымен тоқтата алады. Мұндай проблемаларды болдырмау үшін операциялық жүйе желілік үзілістерді басқаруды процестерді орындауды жоспарлағандай мұқият жоспарлауы керек. Көп ядролы процессорларда, көп кезекті желілік карталар (NIC) қолданылғанда, қабылдау жағындағы масштабтау (RSS) арқылы үзілістерді өңдеуде қосымша өнімділікті жақсартуға қол жеткізуге болады. Мұндай NIC-тер бөлек үзілістерге байланысты бірнеше қабылдау кезегін қамтамасыз етеді; әр үзілісті әртүрлі ядроларға бағыттау арқылы, бір NIC-тің желілік трафигінен туындаған үзіліс сұраныстарын өңдеу бірнеше ядролар арасында таратылуы мүмкін. Үзілістерді ядролар арасында таратуды операциялық жүйе автоматты түрде орындай алады немесе үзілістерді маршруттау (әдетте IRQ аффинитеті деп аталады) қолмен конфигурациялануы мүмкін. Қабылдау трафигін таратудың бағдарламалық қамтамасыз етуге негізделген нұсқасы, қабылдау пакетін басқару (RPS) деп аталады, ол алынған трафикті деректер жолында кейінірек, үзіліс басқарушысының функционалдығының бір бөлігі ретінде ядролар арасында бөледі. RPS, RSS-ке қарағанда, арнайы жабдыққа қажеттілік болмауы, трафикті таратудың жетілдірілген сүзгілері және NIC-тің тудыратын үзілістердің азаюы сияқты артықшылықтарға ие. Алайда, RPS процессорлар аралық үзілістердің (IPI) санын арттырады. Қабылдау ағынын басқару (RFS) бағдарламалық тәсілді одан әрі дамытады, қосымшаның орналасуын ескере отырып; үзіліс сұраныстарын мақсатты қосымшаның желілік пакеттерін пайдаланатын ядролармен өңдеу арқылы қосымша өнімділікті жақсартуға қол жеткізіледі.
Әдеттегі қолданылу түрлері
Тоқтатулар әдетте аппараттық таймерлерге қызмет көрсету, деректерді сақтау құрылғыларына (мысалы, дискіге енгізу-шығару) беру және алу, байланыс интерфейстеріне (мысалы, UART, Ethernet) қолданылады, пернетақта мен тышқан оқиғаларын басқару және қолданба жүйесінің қажеттілігіне сәйкес басқа уақытқа сезімтал оқиғаларға жауап беру үшін пайдаланылады. Маскаланбайтын үзілістер әдетте күзетші таймердің аяқталуы, қуатты өшіру сигналдары және қақтығыстар сияқты жоғары басымдылықты сұранымдарға жауап беру үшін қолданылады. Аппараттық таймерлер көбінесе периодтық үзілістерді жасау үшін қолданылады. Кейбір қолданбаларда мұндай үзілістерді үзіліс басқарушысы абсолютті немесе өткен уақытты есептеу үшін санайды, немесе операциялық жүйе тапсырмаларын жоспарлаушысы жұмыс істеп жатқан процестерді басқару үшін пайдаланады, немесе екеуін де қолданады. Периодтық үзілістер сондай-ақ аналогтық-цифрлық түрлендіргіштер, инкрементті енкодер интерфейстері және GPIO кірістері сияқты кіріс құрылғыларынан үлгі алуды шақыру үшін және цифрлық-аналогтық түрлендіргіштер, мотор контроллерлері және GPIO шығыстары сияқты шығыс құрылғыларын бағдарламалау үшін де жиі қолданылады. Дискілік үзіліс дискіге немесе оның сыртқы құрылғысына деректерді берудің аяқталғанын көрсетеді; бұл оқу немесе жазу күтіп тұрған процестің іске қосылуына себеп болуы мүмкін. Қуатты өшіру үзілісі қуаттың жақын арада жоғалуын болжайды, бұл компьютерге әлі де жеткілікті қуат болғанда жүйелі түрде өшіруге мүмкіндік береді. Пернетақта үзілісі әдетте пернетақта басуларын буферге сақтайды, осылайша алдын ала теру (typeahead) мүмкіндігі іске асырылады. Кейде үзілістер өнімдер отбасындағы кейбір компьютерлерде қолдау көрсетілмейтін нұсқауларды эмуляциялау үшін қолданылады. Мысалы, қозғалатын нүктелік нұсқаулар кейбір жүйелерде аппараттық түрде іске асырылуы мүмкін, ал төмен құнмен жасалған жүйелерде эмуляциялануы мүмкін. Соңғы жағдайда қолдау көрсетілмейтін қозғалатын нүктелік нұсқаудың орындалуы "жарамсыз нұсқау" ерекшелігінің үзілісіне әкеледі. Үзіліс басқарушысы қозғалатын нүкте функциясын бағдарламалық түрде іске асырады, содан кейін аппараттық іске асырылған нұсқау орындалғандай үзіліске ұшыраған бағдарламаға қайта оралады. Бұл бүкіл желі бойынша қолданбалық бағдарламалық қамтамасыз етудің тасымалдануын қамтамасыз етеді. Үзілістер сигналдарға ұқсас, бірақ сигналдар процестер арасындағы байланыс үшін (IPC) қолданылады, ядро арқылы (мүмкін жүйелік шақырулар арқылы) жүзеге асырылады және процестермен өңделеді, ал үзілістер процессор арқылы және ядромен өңделеді. Ядро үзілісті тудырған процеске сигнал ретінде жіберуі мүмкін (типикалық мысалдар: SIGSEGV, SIGBUS, SIGILL және SIGFPE).