Professional Documents
Culture Documents
ËÀÁÎÐÀÒÎÐÈÉÍ ÀÆÈË ¹ 2
Зорилго
Áîäëîãûí ºãºãäºë :
Онолын товчоон
1.1. Тасалдал
1
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
2
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
3
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
7. Тасалдал боловсруулах
Тасалдлыг боловсруулах буюу тасалдлын эх биеийг ажиллуулан
шаардлагатай үйлдлийг гүйцэтгэнэ.
Системд нэгэн зэрэг олон тасалдал үүсвэл яах вэ? Эсвэл тасалдлыг
боловсруулж байх үед өөр тасалдал үүсвэл яах вэ?
Энэ тохиолдолд тасалдлыг боловсруулах үндсэн 2 арга байдаг.
1. Тасалдлыг дараалж боловсруулах
Хамгийн эхэнд үүссэн тасалдал боловсруулагдаж дуустал өөр ямар ч
тасалдал боловсруулахгүй. Өөрөөр хэлбэл нь Эхэнд Ирсэн Эхэнд Гарах
буюу FIFO зарчим юм.
2. Тасалдлыг зэрэглэлээр боловсруулах
Зарим тасалдал нь бусдаас илүү өндөр зэрэглэлтэй байж болно. Өөрөөр
хэлбэл одоо боловсруулж буй тасалдлаас илүү өндөр зэрэглэлтэй тасалдал
үүсвэл одоо боловсруулж буй тасалдлаа таслан шинээр үүссэн тасалдлыг
боловсруулна. Үүний жишээ нь : Техник хангамжийн эвдрэлийн тасалдал нь
хамгийн өндөр зэрэглэлтэй бол ямар ч тасалдлыг боловсруулж байсан
техник хангамж эвдэрсэн тухай тасалдал түүнийг таслан ажилланэ гэсэн үг
(Зураг 1.9).
4
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
5
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
Практик хэрэгжүүлэлт
Vector[0][0]=FP_SEG(Intr1); Vector[0][1]=FP_OFF(Intr1);
Vector[1][0]=FP_SEG(Intr2); Vector[1][1]=FP_OFF(Intr2);
Системд байгаа хоёр тасалдлын эх бие болох функцуудыг Intr1 ба Intr2 гэж
нэрлэсэн байна. Системд тасалдал үүссэн бол түүний дугаарыг заах хувьсагч
хэрэгтэй. Энэ хувьсагчийг IntNum гэж нэрлэе. Харин систем тасалдлыг
боловсруулж болох эсэхийг заасан хувьсагчийг IsIntr гэж нэрлэе (Тасалдал
боловсруулах ялгаатай схемүүд байдаг тухай Зураг 1.9 –с харж болно). Процессын
эх бие дотор тасалдал үүссэн эсэхийг л шалгана (Үнэндээ энэ нь техник
хангамжаар хийгддэг). Тасалдлыг ажиллуулах (боловсруулах) ажлыг тасалдал
боловсруулагч гүйцэтгэнэ (Зураг 1.8 –аас хар). Мөн тасалдал боловсруулагч нь
тасалдал үүсч болох эсэхийг шалгана (IsIntr хувьсагчийн утгаар). Хэрэв тасалдал
үүсэх боломжтой бол тасалдлын эх биеийг ажиллуулна. Ажиллуулахдаа харгалзах
функцийг шууд дуудаж болдоггүй. Учир нь урьд авч үзсэнчлэн бүх тасалдлыг
хэлбэрээс үл хамааран нэг аргаар дуудах ёстой. Мөн тасалдал дуудахын өмнө
системд шаардлагатай мэдээллийг (энэ лабораторийн ажлын хувьд зөвхөн
регистрүүд гэж үзье) стект хадгалдаг. Харин тасалдал ажиллаж дуусахад
мэдээллийг эргэж сэргээдэг. Системийн стекийг массиваар дүрсэлье.
Регистрүүдийг бүхэл тоон хувьсагчдаар дүрсэлье.
6
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
void Push()
{ stack[stackp++]=ax; stack[stackp++]=bx;
stack[stackp++]=cx; stack[stackp++]=dx;
}
void Pop()
{ dx=stack[stackp--]; cx=stack[stackp--];
bx=stack[stackp--]; ax=stack[stackp--];
}
void IntrProcess()
{ int i=IntNum; // хэрэгцээгүй код
Push();
(void*)fun=(void*)MK_FP(Vector[0][0],Vector[0][1]);
7
Лабораторийн ажил №2. Тасалдал боловсруулах механизм
fun(); Pop();
}
Санамж :
8
Лабораторийн ажил №2. Тасалдал боловсруулах механизм