Pārtraukt vs slazds
Jebkurā datorā normālas programmas izpildes laikā var būt notikumi, kas var izraisīt CPU īslaicīgu apturēšanu. Šādus notikumus sauc par pārtraukumiem. Traucējumus var izraisīt programmatūras vai aparatūras traucējumi. Aparatūras pārtraukumus sauc par (vienkārši) 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 slazds ir programmatūras izsaukts pārtraukums, ko iniciējis programmētājs. Kad pārtraukums (programmatūra vai aparatūra) ir paaugstināts, vadība tiek pārvietota uz īpašu apakšprogrammu, ko sauc par ISR (Interrupt Service Routine) un kas var izturēties pret pārtraukuma radītajiem apstākļiem..
Kas ir pārtraukums?
Termins Pārtraukt parasti tiek rezervēts aparatūras pārtraukumiem. Tie ir programmas vadības pārtraukumi, ko izraisa ārēji aparatūras notikumi. Šeit CPU ārēji līdzekļi. Aparatūras pārtraukumi parasti nāk no daudziem dažādiem avotiem, piemēram, taimera mikroshēmas, perifērijas ierīcēm (tastatūras, pele utt.), I / O portiem (sērijas, paralēli utt.), Disku diskdziņiem, CMOS pulkstenim, paplašināšanas kartēm (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 izpildošo programmu. Piemēram, tāds notikums kā lietotāja taustiņu nospiešana uz tastatūras vai iekšējā aparatūras taimera taimauts var izraisīt šāda veida pārtraukumus un var informēt centrālo procesoru, ka noteiktai ierīcei jāpievērš uzmanība. Šādā situācijā CPU pārtrauks visu, ko tas darīja (t.i., aptur pašreizējo programmu), nodrošina ierīces prasītos pakalpojumus un atgriežas normālā programmā. Ja notiek aparatūras pārtraukumi un centrālais procesors sāk ISR, citi aparatūras pārtraukumi tiek atspējoti (piemēram, 80 × 86 mašīnās). Ja ISR darbības laikā nepieciešami citi aparatūras pārtraukumi, tas skaidri jādara, notīrot pārtraukuma karogu (ar sti instrukcija). 80 × 86 mašīnās pārtraukšanas karoga notīrīšana ietekmēs tikai aparatūras pārtraukumus.
Kas ir slazds?
Slazdu var identificēt kā vadības nodošanu, kuru ierosina programmētājs. Termins Trap tiek izmantots aizstāt ar terminu Izņēmums (kas ir automātisks 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 pārtraukto kategoriju kategorijā. Piemēram, 80 × 86 mašīnās programmētājs var izmantot int norādījums sākt slazdu. Tā kā slazds vienmēr ir beznosacījuma, vadība vienmēr tiks nodota apakšprogrammai, kas saistīta ar slazdu. Precīza instrukcija, kas izsauc slazdu apstrādes parasto kārtību, ir viegli identificējama, jo slazda norādīšanai tiek izmantota precīza 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 gadījumi parasti atspējo citus aparatūras pārtraukumus, taču slazdiem tas neattiecas. Ja jums ir jāatsakās no aparatūras pārtraukumiem, līdz tiek parādīts slazds, jums skaidri jānoņem pārtraukuma karodziņš. Parasti pārtraukšanas 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 vajadzētu saglabāt CPU iepriekšējo stāvokli.