Apel de sistem vs întrerupere
Un procesor tipic execută instrucțiuni unul câte unul. Dar pot exista ocazii când procesorul trebuie să se oprească temporar și să mențină instrucțiunea curentă și să execute un alt program sau un segment de cod (care se află într-un alt loc). După ce face acest lucru, procesorul revine la execuția normală și continuă de unde a rămas. Un apel de sistem și o întrerupere sunt astfel de ocazii. Un apel de sistem este un apel către o subrutină încorporată în sistem. O întrerupere este o întrerupere a controlului programului cauzată de evenimente hardware externe.
Ce este un apel de sistem?
Apelurile de sistem oferă programelor care rulează pe computer o interfață pentru a vorbi cu sistemul de operare. Când un program trebuie să solicite un serviciu (pentru care nu are permisiunea în sine) din nucleul sistemului de operare, folosește un apel de sistem. Procesele la nivel de utilizator nu au aceleași permisiuni ca și procesele care interacționează direct cu sistemul de operare. De exemplu, pentru a comunica cu un dispozitiv I/O extern sau pentru a interacționa cu orice alte procese, un program trebuie să utilizeze apeluri de sistem.
Ce este o întrerupere?
În timpul execuției normale a unui program de calculator, pot exista evenimente care pot determina oprirea temporară a procesorului. Evenimente ca acesta se numesc întreruperi. Întreruperile pot fi cauzate fie de erori de software, fie de hardware. Întreruperile hardware sunt numite (pur și simplu) întreruperi, în timp ce întreruperile software sunt numite excepții sau capcane. Odată declanșată o întrerupere (software sau hardware), controlul este transferat într-o subrutină specială numită ISR (Interrupt Service Routine) care poate gestiona condițiile generate de întrerupere.
După cum s-a menționat mai sus, termenul de întrerupere este de obicei rezervat întreruperilor hardware. Sunt întreruperi ale controlului programului cauzate de evenimente hardware externe. Aici, extern înseamnă extern CPU. Întreruperile hardware provin de obicei din multe surse diferite, cum ar fi cip cronometru, dispozitive periferice (tastaturi, mouse etc.), porturi I/O (serial, paralel etc.), unități de disc, ceas CMOS, plăci de expansiune (placă de sunet, video). card, etc). Aceasta înseamnă că întreruperile hardware nu apar aproape niciodată din cauza unui eveniment legat de programul care se execută. De exemplu, un eveniment cum ar fi o apăsare de tastă pe tastatură de către utilizator sau un timer hardware intern poate genera acest tip de întrerupere și poate informa CPU că un anumit dispozitiv are nevoie de o anumită atenție. Într-o astfel de situație, procesorul va opri orice făcea (adică întrerupe programul curent), furnizează serviciul cerut de dispozitiv și va reveni la programul normal.
Care este diferența dintre apel de sistem și întrerupere?
Apelul de sistem este un apel către o subrutină încorporată în sistem, în timp ce Întreruperea este un eveniment, care face ca procesorul să suspende temporar execuția curentă. Cu toate acestea, o diferență majoră este că apelurile de sistem sunt sincrone, în timp ce întreruperile nu sunt. Aceasta înseamnă că apelurile de sistem au loc la o oră fixă (determinată de obicei de programator), dar întreruperile pot apărea în orice moment din cauza unui eveniment neașteptat, cum ar fi o apăsare a tastei de pe tastatură de către utilizator. Prin urmare, atunci când are loc un apel de sistem, procesorul trebuie doar să-și amintească unde să se întoarcă, dar în cazul unei întreruperi, procesorul trebuie să-și amintească atât locul la care să se întoarcă, cât și starea sistemului. Spre deosebire de un apel de sistem, o întrerupere de obicei nu are nimic de-a face cu programul curent.