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