Үзгүлтүккө каршы өзгөчө кырдаал
Кандайдыр бир компьютерде программанын нормалдуу аткарылышы учурунда CPU убактылуу токтоп калышына алып келген окуялар болушу мүмкүн. Мындай окуялар үзгүлтүккө учуроо деп аталат. Үзгүлтүккө программалык же аппараттык каталар себеп болушу мүмкүн. Аппараттык үзгүлтүктөр (жөн эле) Үзгүлтүктөр деп аталат, ал эми программалык үзгүлтүктөр Exceptions деп аталат. Үзгүлтүк (программалык же аппараттык камсыздоо) көтөрүлгөндөн кийин, башкаруу үзгүлтүккө учураган шарттарды жөнгө сала турган ISR (Үзгүлтүккө учуратуу кызматынын тартиби) деп аталган атайын подпрограммага өткөрүлүп берилет.
Үзгүлтүк деген эмне?
Үзгүлтүк деген термин адатта аппараттык үзгүлтүктөр үчүн сакталат. Алар тышкы аппараттык окуялардан улам келип чыккан программаны башкаруу үзгүлтүктөрү. Бул жерде CPU үчүн тышкы каражаттар. Аппараттык үзгүлтүктөр адатта таймер чиптери, перифериялык түзүлүштөр (клавиатура, чычкан ж.б.), киргизүү/чыгаруу порттору (сериялуу, параллелдүү ж.б.), диск дисктери, CMOS сааты, кеңейтүү карталары (үн картасы, видео) сыяктуу ар кандай булактардан келип чыгат. карта жана башкалар). Бул аппараттык үзгүлтүктөр аткарылуучу программага байланыштуу кандайдыр бир окуядан улам дээрлик эч качан пайда болбойт дегенди билдирет. Мисалы, колдонуучу клавиатурадагы баскычты басышы сыяктуу окуя же ички аппараттык таймердин таймеринин таймеринин мындай түрү үзгүлтүккө учурашы мүмкүн жана CPUга белгилүү бир түзүлүшкө бир аз көңүл буруу керек экенин билдире алат. Ушундай кырдаалда CPU эмне кылып жатканын токтотот (б.а. учурдагы программаны токтотот), аппарат талап кылган кызматты камсыздайт жана кадимки программага кайтып келет. Аппараттык үзгүлтүктөр пайда болгондо жана CPU ISRди иштеткенде, башка аппараттык үзгүлтүктөр өчүрүлөт (мисалы, 80×86 машиналарда). Эгерде сизге ISR иштеп турганда башка аппараттык үзгүлтүктөр болушу керек болсо, үзгүлтүккө учуратуу желекчесин тазалоо менен аны так аткарышыңыз керек (sti инструкциясы менен).80×86 машиналарда үзгүлтүктүн желегин тазалоо аппараттык үзгүлтүктөргө гана таасирин тийгизет.
Өзгөчөлөр деген эмне?
Өзгөчөлүк - бул программалык камсыздоону үзгүлтүккө учуратып, аны атайын иштеткич тартиби катары аныктоого болот. Өзгөчөлүктү автоматтык түрдө пайда болгон тузак катары аныктоого болот (Тузак башкаруунун өткөрүп берүүсү катары аныкталышы мүмкүн, аны программист баштаган). Жалпысынан алганда, өзгөчөлүктөргө байланыштуу эч кандай конкреттүү көрсөтмөлөр жок (тузактар белгилүү бир нускаманы колдонуу менен түзүлөт). Ошентип, программаны аткаруу учурунда пайда болгон "өзгөчө" шарттан улам өзгөчөлүк пайда болот. Мисалы, нөлгө бөлүү, мыйзамсыз операция кодунун аткарылышы же эстутумга байланыштуу ката өзгөчөлүктөргө алып келиши мүмкүн. Качан гана өзгөчө кырдаал көтөрүлсө, CPU ал аткарып жаткан программаны убактылуу токтотуп, ISRди ишке киргизет. ISR өзгөчө учурларда эмне кылууну камтыйт. Ал көйгөйдү чечиши мүмкүн же мүмкүн болбосо, ылайыктуу ката билдирүүсүн басып чыгаруу менен программаны акырындык менен токтотушу мүмкүн. Белгилүү бир көрсөтмө өзгөчөлүктү жаратпаса да, өзгөчөлүктү дайыма көрсөтмө себеп болот. Мисалы, нөлгө бөлүү катасы бөлүү инструкциясы аткарылганда гана болушу мүмкүн.
Үзгүлтүк менен Exception ортосунда кандай айырма бар?
Үзгүлтүктөр аппараттык үзгүлтүктөр, ал эми өзгөчө учурлар программалык үзгүлтүктөр. Аппараттык үзгүлтүктөр адатта башка аппараттык үзгүлтүктөрдү өчүрөт, бирок бул өзгөчө учурлар үчүн туура эмес. Эгерде сиз өзгөчө кырдаал аткарылмайынча аппараттык үзгүлтүктөргө тыюу салышыңыз керек болсо, үзгүлтүккө учуроо желекчесин так тазалоо керек. Жана адатта компьютердеги үзгүлтүккө учуроо желекчеси өзгөчөлүктөрдөн айырмаланып үзгүлтүккө (аппараттык) таасир этет. Бул желектин тазаланышы өзгөчө кырдаалдардын алдын албайт дегенди билдирет.