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