Системно обаждане срещу прекъсване
Типичният процесор изпълнява инструкции една по една. Но може да има случаи, когато процесорът трябва да спре временно и да задържи текущата инструкция и да изпълни друга програма или кодов сегмент (пребиваващ на друго място). След като направи това, процесорът се връща към нормално изпълнение и продължава от мястото, където е спрял. Системно повикване и прекъсване са такива случаи. Системното повикване е призив към подпрограма, вградена в системата. Прекъсването е прекъсване на програмния контрол, причинено от външни хардуерни събития.
Какво е системно обаждане?
Системните повиквания предоставят на програмите, работещи на компютъра, интерфейс за разговор с операционната система. Когато една програма трябва да поиска услуга (за която няма само разрешение) от ядрото на операционната система, тя използва системно повикване. Процесите на потребителско ниво нямат същите разрешения като процесите, директно взаимодействащи с операционната система. Например, за да комуникира с и външно I / O устройство или да взаимодейства с други процеси, една програма трябва да използва системни повиквания.
Какво е прекъсване?
По време на нормалното изпълнение на компютърна програма може да има събития, които могат да причинят временно спиране на процесора. Събития като това се наричат прекъсвания. Прекъсванията могат да бъдат причинени от софтуерни или хардуерни неизправности. Хардуерните прекъсвания се наричат (просто) Прекъсвания, докато софтуерните прекъсвания се наричат Изключения или Капани. След като се повдигне прекъсване (софтуер или хардуер), контролът се прехвърля в специална подпрограма, наречена ISR (Interrupt Service Routine), която може да се справи с условията, които са повдигнати от прекъсването.
Както бе споменато по-горе, терминът Interrupt обикновено е запазен за хардуерни прекъсвания. Те са прекъсвания на програмния контрол, причинени от външни хардуерни събития. Тук външни средства, външни за процесора. Хардуерните прекъсвания обикновено идват от много различни източници, като чип на таймера, периферни устройства (клавиатури, мишка и др.), I / O портове (серийни, паралелни и т.н.), дискови устройства, CMOS часовник, разширителни карти (звукова карта, видео карта и т.н.). Това означава, че хардуерните прекъсвания почти никога не се случват поради някакво събитие, свързано с изпълняващата програма. Например събитие като натискане на клавиш от клавиатурата от страна на потребителя или вътрешно хардуерно таймерно изчакване може да повиши този вид прекъсване и може да информира процесора, че определено устройство се нуждае от известно внимание. В ситуация като тази на процесора ще спре каквото и да прави (т.е. прави пауза на текущата програма), предоставя услугата, изисквана от устройството, и ще се върне към нормалната програма.
Каква е разликата между системно повикване и прекъсване?
Системното повикване е призив към подпрограма, вградена в системата, докато Interrupt е събитие, което кара процесора временно да задържи текущото изпълнение. Въпреки това една основна разлика е, че системните обаждания са синхронни, докато прекъсванията не са. Това означава, че системните обаждания се случват във фиксиран час (обикновено се определя от програмиста), но прекъсванията могат да възникнат по всяко време поради неочаквано събитие, като натискане на клавиша на клавиатурата от страна на потребителя. Следователно, когато някога се случи системно повикване, процесорът трябва само да помни къде да се върне, но в случай на прекъсване, процесорът трябва да запомни както мястото, където да се върне, така и състоянието на системата. За разлика от системното повикване, прекъсването обикновено няма нищо общо с текущата програма.