Întreruperea este unul dintre conceptele de bază ale tehnologiei informatice , care constă în faptul că, atunci când are loc un eveniment, controlul este transferat către o procedură specială numită manipulator de întreruperi (ISR, ing. Rutina de servicii de întrerupere ) [1] . Spre deosebire de salturile condiționate și necondiționate, o întrerupere poate fi apelată oriunde în program, inclusiv dacă execuția programului este suspendată și este de obicei cauzată de evenimente externe programului. După efectuarea acțiunilor necesare, manipulatorul de întreruperi, de regulă, readuce controlul programului întrerupt [2] .
De regulă, întreruperile sunt folosite pentru a lucra cu dispozitive periferice. De exemplu, trebuie să trimiteți o solicitare de încărcare a datelor de pe disc în memorie și, în timp ce încărcarea este în desfășurare, să efectuați alte operațiuni sau să opriți execuția până când se primește o întrerupere și, după finalizarea descărcării, mergeți la handlerul de întreruperi. care va începe procesarea datelor primite [1] . Cu ajutorul întreruperilor, se pot implementa și multitasking , depanarea programelor , emularea anumitor dispozitive etc.
În funcție de sursa semnalului de întrerupere, acestea sunt împărțite în:
Termenul „capcană” ( în engleză trap ) este uneori folosit ca sinonim pentru termenul „întrerupere” sau „întrerupere internă”. De regulă, utilizarea este stabilită în documentația producătorului unei anumite arhitecturi de procesor.
Întreruperile externe, în funcție de posibilitatea de interzicere, sunt împărțite în:
Operatorii de întrerupere sunt de obicei scrisi în așa fel încât timpul lor de procesare să fie cât mai scurt posibil, deoarece alte întreruperi nu pot fi procesate în timpul funcționării lor și, dacă sunt multe dintre ele (în special dintr-o singură sursă), atunci se pot pierde. Windows folosește mecanismul de apelare a procedurii întârziate pentru a face acest lucru .
Până la sfârșitul procesării întreruperii, se stabilește de obicei o interdicție privind procesarea acestui tip de întrerupere, astfel încât procesorul să nu intre în ciclul de procesare a unei întreruperi. Prioritizarea înseamnă că toate sursele de întrerupere sunt împărțite în clase și fiecărei clase i se atribuie propriul nivel de prioritate a cererii de întrerupere [3] .
Un vector de întrerupere este un număr alocat dispozitivului care identifică operatorul de întrerupere corespunzător. Vectorii de întrerupere sunt combinați într- un tabel de vectori de întrerupere care conține adresele manipulatorilor de întreruperi [4] . Locația tabelului depinde de tipul și modul de funcționare al procesorului.
Se presupune că întreruperea trebuie să ofere transparență - adică cu excepția datelor care trebuie modificate în funcție de scopul întreruperii, după terminarea procesării întreruperii, procesorul trebuie să fie readus în aceeași stare în care era la momentul chemării sale [5] . În cel mai simplu caz, este suficient să salvați starea tuturor registrelor procesorului în stivă.
O întrerupere software este o întrerupere sincronă care poate fi implementată de un program folosind o instrucțiune specială.
În procesoarele x86, pentru a apela în mod explicit o întrerupere sincronă, există o instrucțiuneInt , al cărei argument este numărul de întrerupere (de la 0 la 255). Pe computerele compatibile cu PC IBM , unele întreruperi sunt procesate de rutinele BIOS stocate în ROM , iar întreruperea servește ca interfață pentru a accesa un serviciu furnizat de BIOS. De asemenea, întreruperile pot fi deservite de BIOS-ul plăcilor de expansiune (de exemplu, plăci de rețea sau video ), de sistemul de operare și chiar de programe obișnuite (aplicații) care se află în mod constant în memorie în timp ce alte programe rulează (așa-numitele programe rezidente ). ). Spre deosebire de modul real , în modul protejat al procesoarelor x86, programele obișnuite nu pot deservi întreruperile, această funcție este disponibilă doar pentru codul de sistem (sistemul de operare).
MS-DOS folosește întreruperi numerotate de la 20h la 3Fh pentru a interacționa cu modulele și programele de aplicație (numerele sunt date în notație hexazecimală , așa cum se obișnuiește atunci când se programează în limbajul de asamblare x86 ). De exemplu, accesul la setul principal de funcții MS-DOS se realizează prin executarea unei instrucțiuni Int 21h(în acest caz, numărul funcției și argumentele sale sunt transferate în registre ). Această alocare a numerelor de întrerupere nu este conectată, iar alte programe își pot instala propriile lor handlere de întrerupere în locul sau pe deasupra handlerelor existente instalate de MS-DOS sau alte programe, care este de obicei folosit pentru a schimba funcționalitatea sau a extinde lista de funcții de sistem. Virușii profită și de această oportunitate .
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |