Համակարգային զանգ ընդդեմ ընդհատման
Տիպիկ պրոցեսորը կատարում է հրահանգները մեկ առ մեկ: Բայց կարող են լինել դեպքեր, երբ պրոցեսորը պետք է ժամանակավորապես կանգ առնի և պահի ընթացիկ հրահանգը և կատարի որևէ այլ ծրագիր կամ կոդի հատված (բնակվում է մեկ այլ վայրում): Դա անելուց հետո պրոցեսորը վերադառնում է նորմալ գործարկման և շարունակում է այնտեղից, որտեղ դադարեցվել է: Համակարգային զանգն ու ընդհատումը նման առիթներ են։ Համակարգային զանգը զանգ է համակարգում ներկառուցված ենթածրագրին: Ընդհատումը ծրագրի կառավարման ընդհատում է, որն առաջանում է արտաքին ապարատային իրադարձությունների հետևանքով:
Ի՞նչ է համակարգային զանգը:
Համակարգային զանգերը համակարգչում աշխատող ծրագրերին ապահովում են օպերացիոն համակարգի հետ խոսելու ինտերֆեյս:Երբ ծրագրին անհրաժեշտ է ծառայություն խնդրել (որի համար նա ինքը թույլտվություն չունի) օպերացիոն համակարգի միջուկից, այն օգտագործում է համակարգային զանգ: Օգտատիրոջ մակարդակի գործընթացները չունեն նույն թույլտվությունները, ինչ գործընթացները, որոնք անմիջականորեն փոխազդում են օպերացիոն համակարգի հետ: Օրինակ՝ արտաքին մուտքի/ելք սարքի հետ շփվելու կամ որևէ այլ գործընթացի հետ փոխազդելու համար ծրագիրը պետք է օգտագործի համակարգային զանգեր։
Ի՞նչ է ընդհատումը:
Համակարգչային ծրագրի բնականոն կատարման ընթացքում կարող են լինել իրադարձություններ, որոնք կարող են հանգեցնել CPU-ի ժամանակավոր դադարեցմանը: Նման իրադարձությունները կոչվում են ընդհատումներ: Ընդհատումները կարող են առաջանալ ինչպես ծրագրային, այնպես էլ ապարատային անսարքությունների պատճառով: Սարքավորումների ընդհատումները կոչվում են (պարզապես) ընդհատումներ, մինչդեռ ծրագրային ընդհատումները կոչվում են բացառություններ կամ թակարդներ: Ընդհատումը (ծրագրակազմ կամ սարքաշար) բարձրացնելուց հետո կառավարումը փոխանցվում է հատուկ ենթածրագրին, որը կոչվում է ISR (Ընդհատումների սպասարկման ռեժիմ), որը կարող է կարգավորել այն պայմանները, որոնք առաջանում են ընդհատման պատճառով:
Ինչպես նշվեց վերևում, ընդհատում տերմինը սովորաբար վերապահված է ապարատային ընդհատումների համար: Դրանք ծրագրային կառավարման ընդհատումներ են, որոնք առաջացել են արտաքին ապարատային իրադարձությունների հետևանքով: Այստեղ արտաքին նշանակում է պրոցեսորի արտաքին: Սարքավորումների ընդհատումները սովորաբար գալիս են տարբեր աղբյուրներից, ինչպիսիք են ժամանակաչափի չիպը, ծայրամասային սարքերը (ստեղնաշարեր, մկնիկ և այլն), I/O պորտերը (սերիական, զուգահեռ և այլն), սկավառակի կրիչներ, CMOS ժամացույց, ընդլայնման քարտեր (ձայնային քարտ, վիդեո): քարտ և այլն): Դա նշանակում է, որ ապարատային ընդհատումներ գրեթե երբեք չեն լինում կատարող ծրագրի հետ կապված ինչ-որ իրադարձության պատճառով: Օրինակ, այնպիսի իրադարձություն, ինչպիսին է օգտատիրոջ կողմից ստեղնաշարի վրա ստեղնաշարի սեղմումը կամ ներքին ապարատային ժամաչափի ժամանակի դադարը, կարող է առաջացնել նման ընդհատում և կարող է տեղեկացնել պրոցեսորին, որ որոշակի սարքը որոշակի ուշադրության կարիք ունի: Նման իրավիճակում պրոցեսորը կդադարեցնի այն, ինչ անում էր (այսինքն՝ դադարեցնում է ընթացիկ ծրագիրը), տրամադրում է սարքի կողմից պահանջվող ծառայությունը և կվերադառնա սովորական ծրագրին:
Ո՞րն է տարբերությունը System Call-ի և Interrupt-ի միջև:
Համակարգային զանգը զանգ է համակարգում ներկառուցված ենթածրագրին, մինչդեռ ընդհատումը իրադարձություն է, որը ստիպում է պրոցեսորին ժամանակավորապես պահել ընթացիկ կատարումը: Այնուամենայնիվ, մեկ հիմնական տարբերությունն այն է, որ համակարգային զանգերը համաժամանակյա են, մինչդեռ ընդհատումները՝ ոչ: Դա նշանակում է, որ համակարգային զանգերը տեղի են ունենում ֆիքսված ժամանակում (սովորաբար որոշվում է ծրագրավորողի կողմից), բայց ընդհատումները կարող են տեղի ունենալ ցանկացած պահի անսպասելի իրադարձության պատճառով, ինչպիսին է ստեղնաշարի ստեղնաշարի սեղմումը օգտագործողի կողմից: Հետևաբար, երբ երբ համակարգային զանգ է տեղի ունենում, պրոցեսորը միայն պետք է հիշի, թե որտեղ պետք է վերադառնալ, բայց ընդհատման դեպքում պրոցեսորը պետք է հիշի և՛ այն վայրը, որտեղ պետք է վերադառնա, և՛ համակարգի վիճակը: Ի տարբերություն համակարգային զանգի, ընդհատումը սովորաբար որևէ կապ չունի ընթացիկ ծրագրի հետ: