Interrupt vs Trap
Jebkurā datorā parastās programmas izpildes laikā var būt notikumi, kas var izraisīt CPU īslaicīgu apstāšanos. Šādus notikumus sauc par pārtraukumiem. Pārtraukumus var izraisīt programmatūras vai aparatūras kļūdas. Aparatūras pārtraukumus sauc (vienkārši) par pārtraukumiem, savukārt programmatūras pārtraukumus sauc par izņēmumiem vai slazdiem. Izņēmums ir automātiski ģenerēts programmatūras pārtraukums, savukārt Trap ir programmatūras izsaukts pārtraukums, ko ierosinājis programmētājs. Kad pārtraukums (programmatūra vai aparatūra) ir paaugstināts, vadība tiek pārsūtīta uz īpašu apakšprogrammu, ko sauc par ISR (Interrupt Service Routine), kas var apstrādāt nosacījumus, ko rada pārtraukums.
Kas ir pārtraukums?
Jēdziens Pārtraukt parasti ir paredzēts aparatūras pārtraukumiem. Tie ir programmas vadības pārtraukumi, ko izraisa ārējie aparatūras notikumi. Šeit ārējais nozīmē ārpus CPU. Aparatūras pārtraukumi parasti nāk no daudziem dažādiem avotiem, piemēram, taimera mikroshēma, perifērijas ierīces (tastatūras, peles utt.), I/O porti (seriālie, paralēlie utt.), diskdziņi, CMOS pulkstenis, paplašināšanas kartes (skaņas karte, video). karte utt.). Tas nozīmē, ka aparatūras pārtraukumi gandrīz nekad nenotiek kāda notikuma dēļ, kas saistīts ar izpildprogrammu. Piemēram, notikums, piemēram, lietotāja tastatūras nospiešana vai iekšējais aparatūras taimera taimauts, var palielināt šāda veida pārtraukumu un informēt centrālo procesoru, ka noteiktai ierīcei ir jāpievērš uzmanība. Šādā situācijā centrālais procesors pārtrauks visu, ko tas darīja (t.i., apturēs pašreizējo programmu), nodrošinās ierīcei nepieciešamo pakalpojumu un atgriezīsies pie parastās programmas. Kad notiek aparatūras pārtraukumi un centrālais procesors sāk ISR, citi aparatūras pārtraukumi tiek atspējoti (piem.g. 80 × 86 iekārtās). Ja jums ir nepieciešami citi aparatūras pārtraukumi, kamēr darbojas ISR, jums tas ir skaidri jādara, notīrot pārtraukuma karogu (ar sti instrukciju). 80 × 86 iekārtās pārtraukuma karoga dzēšana ietekmēs tikai aparatūras pārtraukumus.
Kas ir slazds?
Slazdu var identificēt kā vadības nodošanu, ko ierosina programmētājs. Termins Trap tiek lietots aizvietojami ar terminu Izņēmums (kas ir automātiski notiekošs programmatūras pārtraukums). Bet daži var iebilst, ka slazds ir vienkārši īpašs apakšprogrammas izsaukums. Tātad tie ietilpst programmatūras izsaukto pārtraukumu kategorijā. Piemēram, 80 × 86 iekārtās programmētājs var izmantot instrukciju, lai uzsāktu slazdu. Tā kā slazds vienmēr ir beznosacījuma, vadība vienmēr tiks pārsūtīta uz apakšprogrammu, kas saistīta ar slazdu. Precīza instrukcija, kas izsauc slazdu apstrādes rutīnu, ir viegli identificējama, jo slazda noteikšanai tiek izmantota skaidra instrukcija.
Kāda ir atšķirība starp Interrupt un Trap?
Pārtraukumi ir aparatūras pārtraukumi, savukārt slazdi ir programmatūras izsaukti pārtraukumi. Aparatūras pārtraukumu rašanās parasti atspējo citus aparatūras pārtraukumus, taču tas neattiecas uz slazdiem. Ja jums ir jāatļauj aparatūras pārtraukumi, līdz tiek nodrošināts slazds, jums ir skaidri jānotīra pārtraukuma karodziņš. Un parasti pārtraukuma karodziņš datorā ietekmē (aparatūras) pārtraukumus, nevis slazdus. Tas nozīmē, ka šī karoga notīrīšana nenovērsīs slazdus. Atšķirībā no slazdiem, pārtraukumiem jāsaglabā iepriekšējais CPU stāvoklis.