Apel sistem vs întrerupere
Un procesor tipic execută instrucțiunile unul câte unul. Dar pot exista situații în care procesorul trebuie să se oprească temporar și să dețină instrucțiunile actuale și să execute un alt program sau un segment de cod (care locuiesc în alt loc). După aceasta, procesorul revine la execuția obișnuită ș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 un subrutin construit în sistem. O întrerupere este o întrerupere de control a programului cauzată de evenimente hardware externe.
Ce este un apel sistem??
Apelurile de sistem oferă programe care rulează pe computer o interfață pentru a vorbi cu sistemul de operare. Când un program trebuie să ceară un serviciu (pentru care nu are permisiunea însăși) din kernelul sistemului de operare, acesta 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 apelurile de sistem.
Ce este o întrerupere?
În timpul executării normale a unui program de calculator, pot apărea evenimente care pot face ca CPU să se oprească temporar. Evenimente ca aceasta se numesc întreruperi. Întreruperile pot fi cauzate de defecțiuni software sau hardware. Întreruperile hardware sunt numite (pur și simplu) întreruperi, în timp ce întreruperile software sunt numite Excepții sau Capcane. Odată ce o întrerupere (software sau hardware) este ridicată, controlul este transferat la o subrutină specială numită ISR (Interrupt Service Routine) care poate face față condițiilor ridicate de întrerupere.
Așa cum am menționat mai sus, termenul Interrupt este de obicei rezervat pentru întreruperi hardware. Acestea sunt întreruperi ale programului de control cauzate de evenimente hardware externe. Aici, mijloace externe externe pentru CPU. Întreruperile hardware provin de obicei din mai multe surse, cum ar fi cipul temporizator, dispozitivele periferice (tastaturi, mouse-ul etc.), porturile I / O (serial, paralel etc), unități de disc, ceas CMOS, carduri de extensie card, etc). Asta înseamnă că întreruperea hardware nu apare aproape niciodată din cauza unui eveniment legat de programul de executare. De exemplu, un eveniment cum ar fi o apăsare de tastă a tastaturii de către utilizator sau o deconectare a temporizatorului hardware intern poate ridica acest tip de întrerupere și poate informa CPU-ul că un anumit dispozitiv are nevoie de o anumită atenție. Într-o astfel de situație, CPU-ul va opri orice face (de ex. Întrerupe programul curent), oferă serviciul solicitat de dispozitiv și va reveni la programul normal.
Care este diferența dintre sistemul de apel și întrerupere?
Apelul de sistem este un apel către un subrutin construit în sistem, în timp ce întreruperea este un eveniment, ceea ce determină ca procesorul să mențină temporar executarea curentă. Cu toate acestea, o diferență majoră este că apelurile de sistem sunt sincrone, în timp ce întreruperile nu sunt. Asta inseamna ca apelurile de sistem apar la o ora fixa (de obicei determinata de programator), dar intreruperile pot aparea oricand din cauza unui eveniment neasteptat, cum ar fi o apasare de tasta a tastaturii de catre utilizator. Prin urmare, atunci când are loc vreodată un apel de sistem, procesorul trebuie doar să-și amintească unde să se întoarcă, dar în eventualitatea unei întreruperi, procesorul trebuie să-și amintească atât locul de revenire, cât și starea sistemului. Spre deosebire de apelul de sistem, o întrerupere de obicei nu are nimic de-a face cu programul curent.