Үздік дауыл - Interrupt storm

Жылы операциялық жүйелер, an үзіліс дауыл бұл процессор шамадан тыс санын алатын оқиға үзілістер процессор уақытының көп бөлігін пайдаланады. Үзіліс дауылдары, әдетте, үзілістерді шектеуді қолдамайтын аппараттық құрылғылардан туындайды.

Фон

Себебі үзу өңдеу әдетте емесалдын ала тапсырма уақытты бөлу операциялық жүйелер, үзіліс дауылы пайдаланушының кірісіне баяу жауап береді, тіпті пайда болады қату жүйені толығымен Бұл мемлекет әдетте ретінде белгілі тірі құлып. Мұндай күйде жүйе ресурстардың көп бөлігін басқа жұмыстарды аяқтаудың орнына үзілістерді өңдеуге жұмсайды. Соңғы пайдаланушыға ол ешнәрсе өңдемейтін сияқты, өйткені көбінесе өнім болмайды. Үзілген дауылды кейде қателеседі ұру, өйткені олардың екеуінде де ұқсас белгілер бар (пайдаланушының кірісіне жауап бермейді немесе баяу жауап береді, нәтиже аз немесе жоқ).

Жалпы себептерге: конфигурацияланған немесе ақаулы аппараттық құралдар, ақаулы құрылғылар драйверлері, амалдық жүйенің ақаулары немесе бір немесе бірнеше компоненттердегі метастұрлылық жатады. Соңғы жағдай прототиптен немесе әуесқойлардан жасалған жабдықтардан тыс сирек кездеседі.

Көптеген заманауи аппараттық және операциялық жүйелерде дауылдың әсерін азайту әдістері бар. Мысалы, көпшілігі Ethernet контроллерлер үзілістерді «жылдамдықты шектеуді» жүзеге асырады, бұл контроллерге әр туындаған үзіліс арасында бағдарламаланатын уақытты күтуге мәжбүр етеді. Құрылғыда болмаған кезде, ұқсас функциялар әдетте құрылғы драйверіне және / немесе амалдық жүйеге жазылады.

Ең көп тараған себебі - құрылғының басқасының «артында» an-ға үзіліс беруі APIC (Бағдарламаланатын үзілістің кеңейтілген контроллері). Компьютерлік перифериялық құрылғылардың көпшілігі APIC арқылы үзілістер тудырады, өйткені олардың саны құрылғылардың санына қарағанда әрқашан аз (қазіргі заманғы ДК үшін 15). Содан кейін ОЖ сол үзіліске тіркелген әр драйверден сұрау керек, егер үзіліс оның аппараттық құралынан шыққан болса. Ақаулы драйверлер әрдайым «иә» деп талап ете алады, бұл ОС сол үзіліске тіркелген басқа драйверлерге сұрау салмайды (бір уақытта бір ғана үзілісті өңдеуге болады). Бастапқыда үзілуді сұраған құрылғы оның үзілісіне қызмет көрсетпейді, сондықтан жаңа үзіліс пайда болады (немесе жойылмайды) және процессор үздіксіз үзіліс сигналдарымен батпаққа айналады. Кез-келген операциялық жүйе осындай ақаулардан туындаған үзіліс дауылының астында құлыптаушы бола алады. A ядро түзеткіш әдетте ақаулы драйверді түсіру арқылы дауылды бұза алады, егер жүргізушінің ақаулығы бар болса, оның ақаулығын жоюға мүмкіндік береді, егер пайдаланушы енгізу мүмкіндігі болса.

Драйверлерді көбінесе үшінші тарап жүзеге асыратындықтан, көптеген операциялық жүйелерде де бар дауыс беру күтудегі үзілістерге белгіленген уақыт аралығында немесе айналмалы режимде сұрайтын режим. Бұл режимді ғаламдық деңгейде, драйверге, үзіліске немесе динамикалық түрде орнатуға болады, егер ОС ақаулық жағдайын анықтаса немесе шектен тыс үзіліс тудырса. Сауалнама режимі үзілістер саны немесе үзілістен туындаған ресурстарды пайдалану белгілі бір шектерден өткен кезде динамикалық түрде қосылуы мүмкін. Осы шекті мәндерден асып кетпегенде, ОЖ кейіннен үзілетін драйверді, үзуді немесе үзуді басқаруды үзіліс режимінен дауыс беру режиміне өзгерте алады. Аппараттық құралдардағы үзілістерді шектеу әдетте дауыс беру режимін пайдалануды жоққа шығарады, бірақ қарқынды енгізу-шығару кезінде қалыпты жұмыс кезінде орын алуы мүмкін, егер процессор жылдамдықты ұстап тұру үшін контексттерді жылдам ауыстыра алмаса.

Тарих

Мүмкін, алғашқы үзіліс дауыл болған кезде болған шығар Аполлон 11-нің Айға түсуі 1969 ж.[1]

Қарастырулар

Үзіліс жылдамдығын шектеу оңтайлы нәтиже үшін мұқият конфигурациялануы керек. Мысалы, ан Ethernet үзіліс жылдамдығын шектейтін контроллер пакеттер ол әр үзілістің арасында желіден алады. Егер жылдамдық тым төмен болса, контроллердің буфері толып кетеді, ал пакеттер алынып тасталады. Ставка буфердің үзілістер арасында қаншалықты тез толтырылуы мүмкін екенін ескеруі керек кідіріс кідірісі үзіліс пен буфердің жүйеге берілуі арасында.

Үзілісті жеңілдету

Мәселеге аппараттық және бағдарламалық қамтамасыздандыру тәсілдері бар. Мысалға, FreeBSD дауылдарды анықтайды және жауап ретінде біраз уақытқа созылған проблемалық маскаларды жауып тастайды.[дәйексөз қажет ]

Қолданатын жүйе NAPI аппараттық тәсілдің мысалы болып табылады: жүйе (драйвер) үзіліс қосылған күйде басталады және Үзіліс өңдеушісі содан кейін үзілісті ажыратады және ағынға / тапсырмаға оқиғаны (ларды) өңдеуге мүмкіндік береді, содан кейін тапсырма құрылғының сауалнамаларын жасайды, оқиғалардың бірнеше санын өңдейді және үзіліске мүмкіндік береді.

Аппараттық қолдауды қолданудың тағы бір қызықты тәсілі - бұл оқиға кезегінің күйі «бос» -дан «бос емес» -ге ауысқан кезде құрылғы үзіліс тудырады. Содан кейін, егер RX FIFO құйрығында ақысыз DMA дескрипторлары болмаса, құрылғы оқиғаны тастайды. Одан кейін оқиға құйрыққа қосылады және FIFO жазбасы бос деп белгіленеді. Егер сол кезде жазба (− 1) бос (тазартылған) болса, үзіліс пайда болады (деңгейдің үзілуі) және құйрық көрсеткіші ұлғаяды. Егер аппараттық құрал үзілісті мойындауды талап етсе, процессор (үзіліс өңдеушісі) мұны жасайды, DMA дескрипторларының басында жұмыс істейді және үзілістен оралады.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Мюррей, Чарльз (1989). Аполлон: Айға жарыс. Симон мен Шустер. 345–355 бб.