Տարբերություն ընդհատման և թակարդի միջև

Տարբերություն ընդհատման և թակարդի միջև
Տարբերություն ընդհատման և թակարդի միջև

Video: Տարբերություն ընդհատման և թակարդի միջև

Video: Տարբերություն ընդհատման և թակարդի միջև
Video: Ժառանգականություն և փոփոխականություն. 9-րդ դասարան 2024, Հուլիսի
Anonim

Ընդհատում ընդդեմ ծուղակ

Ցանկացած համակարգչում, ծրագրի իր բնականոն կատարման ընթացքում, կարող են լինել իրադարձություններ, որոնք կարող են հանգեցնել CPU-ի ժամանակավոր դադարեցմանը: Նման իրադարձությունները կոչվում են ընդհատումներ: Ընդհատումները կարող են առաջանալ ինչպես ծրագրային, այնպես էլ ապարատային անսարքությունների պատճառով: Սարքավորումների ընդհատումները կոչվում են (պարզապես) ընդհատումներ, մինչդեռ ծրագրային ընդհատումները կոչվում են բացառություններ կամ թակարդներ: Բացառությունը ինքնաբերաբար ստեղծվող ծրագրային ընդհատում է, մինչդեռ ծուղակը ծրագրավորողի կողմից նախաձեռնված ծրագրային ապահովման միջոցով գործող ընդհատում է: Ընդհատումը (ծրագրակազմ կամ սարքաշար) բարձրացնելուց հետո կառավարումը փոխանցվում է հատուկ ենթածրագրին, որը կոչվում է ISR (Ընդհատումների սպասարկման ռեժիմ), որը կարող է կարգավորել այն պայմանները, որոնք առաջանում են ընդհատման պատճառով:

Ի՞նչ է ընդհատումը:

Ընդհատում տերմինը սովորաբար վերապահված է ապարատային ընդհատումների համար: Դրանք ծրագրային կառավարման ընդհատումներ են, որոնք առաջացել են արտաքին ապարատային իրադարձությունների հետևանքով: Այստեղ արտաքին նշանակում է պրոցեսորի արտաքին: Սարքավորումների ընդհատումները սովորաբար գալիս են տարբեր աղբյուրներից, ինչպիսիք են ժամանակաչափի չիպը, ծայրամասային սարքերը (ստեղնաշարեր, մկնիկ և այլն), I/O պորտերը (սերիական, զուգահեռ և այլն), սկավառակի կրիչներ, CMOS ժամացույց, ընդլայնման քարտեր (ձայնային քարտ, վիդեո): քարտ և այլն): Դա նշանակում է, որ ապարատային ընդհատումներ գրեթե երբեք չեն լինում կատարող ծրագրի հետ կապված ինչ-որ իրադարձության պատճառով: Օրինակ, այնպիսի իրադարձություն, ինչպիսին է օգտատիրոջ կողմից ստեղնաշարի վրա ստեղնաշարի սեղմումը կամ ներքին ապարատային ժամաչափի ժամանակի դադարը, կարող է առաջացնել նման ընդհատում և կարող է տեղեկացնել պրոցեսորին, որ որոշակի սարքը որոշակի ուշադրության կարիք ունի: Նման իրավիճակում պրոցեսորը կդադարեցնի այն, ինչ անում էր (այսինքն՝ դադարեցնում է ընթացիկ ծրագիրը), տրամադրում է սարքի կողմից պահանջվող ծառայությունը և կվերադառնա սովորական ծրագրին: Երբ ապարատային ընդհատումներ են տեղի ունենում, և պրոցեսորը սկսում է ISR-ն, ապարատային այլ ընդհատումներն անջատվում են (օր.է. 80×86 հաստոցներում): Եթե Ձեզ անհրաժեշտ է, որ այլ ապարատային ընդհատումներ տեղի ունենան, երբ ISR-ն աշխատում է, դուք պետք է դա անեք բացահայտորեն՝ մաքրելով ընդհատման դրոշակը (sti հրահանգով): 80×86 սարքերում ընդհատման դրոշը մաքրելը կազդի միայն ապարատային ընդհատումների վրա։

Ի՞նչ է թակարդը.

Ծուղակը կարող է նույնականացվել որպես կառավարման փոխանցում, որը նախաձեռնվում է ծրագրավորողի կողմից: Թակարդ տերմինը օգտագործվում է որպես «Բացառություն» տերմինի հետ (որը ավտոմատ կերպով առաջացող ծրագրային ընդհատում է): Բայց ոմանք կարող են պնդել, որ թակարդը պարզապես հատուկ ենթածրագրային զանգ է: Այսպիսով, նրանք դասվում են ծրագրային ապահովման վրա հիմնված ընդհատումների կատեգորիային: Օրինակ՝ 80×86 չափսի մեքենաներում ծրագրավորողը կարող է օգտագործել int հրահանգը՝ թակարդ սկսելու համար։ Քանի որ թակարդը միշտ անվերապահ է, կառավարումը միշտ կփոխանցվի թակարդի հետ կապված ենթածրագրին: Ճշգրիտ հրահանգը, որը կանչում է ծուղակը վարելու ռեժիմը, հեշտությամբ հայտնաբերվում է, քանի որ թակարդը նշելու համար օգտագործվում է հստակ հրահանգ:

Ո՞րն է տարբերությունը Interrupt-ի և Trap-ի միջև:

Ընդհատումները ապարատային ընդհատումներ են, մինչդեռ թակարդները՝ ծրագրային ապահովման միջոցով գործող ընդհատումներ: Սարքավորումների ընդհատումների դեպքերը սովորաբար անջատում են ապարատային այլ ընդհատումները, սակայն դա ճիշտ չէ թակարդների դեպքում: Եթե Ձեզ անհրաժեշտ է արգելել ապարատային ընդհատումները մինչև ծուղակի սպասարկումը, դուք պետք է հստակորեն մաքրեք ընդհատման դրոշակը: Եվ սովորաբար համակարգչի վրա ընդհատման դրոշակը ազդում է (ապարատային) ընդհատումների վրա՝ ի տարբերություն թակարդների: Սա նշանակում է, որ այս դրոշը մաքրելը չի կանխի թակարդները: Ի տարբերություն թակարդների, ընդհատումները պետք է պահպանեն պրոցեսորի նախկին վիճակը:

Խորհուրդ ենք տալիս: