Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Interrupt
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Terminology=== {{Further|Exception handling#Definition}} The terms ''interrupt'', ''trap'', ''exception'', ''fault'', and ''abort'' are used to distinguish types of interrupts, although "there is no clear consensus as to the exact meaning of these terms".<ref name="Hyde_1996">{{cite book |last1=Hyde |first1=Randall |chapter-url=https://www.plantation-productions.com/Webster/www.artofasm.com/DOS/ch17/CH17-1.html#HEADING1-0 |access-date=22 December 2021|date=1996|title=The Art Of Assembly Language Programming |chapter=Chapter Seventeen: Interrupts, Traps and Exceptions (Part 1) |quote=The concept of an interrupt is something that has expanded in scope over the years. The 80x86 family has only added to the confusion surrounding interrupts by introducing the int (software interrupt) instruction. Indeed different manufacturers have used terms like exceptions faults aborts traps and interrupts to describe the phenomena this chapter discusses. Unfortunately there is no clear consensus as to the exact meaning of these terms. Different authors adopt different terms to their own use.}}</ref> The term ''trap'' may refer to any interrupt, to any software interrupt, to any synchronous software interrupt, or only to interrupts caused by instructions with ''trap'' in their names. In some usages, the term ''trap'' refers specifically to a [[breakpoint]] intended to initiate a [[context switch]] to a [[profiler (computer science)|monitor program]] or [[debugger]].<ref name="Jargon_2003"/> It may also refer to a synchronous interrupt caused by an exceptional condition (e.g., [[division by zero]], [[segmentation fault|invalid memory access]], [[illegal opcode]]),<ref name="Hyde_1996"/> although the term ''exception'' is more common for this. [[x86]] divides interrupts into (hardware) ''interrupts'' and software ''exceptions'', and identifies three types of exceptions: faults, traps, and aborts.<ref name=Intel1/><ref name=Bryant>{{cite book |last1=Bryant |first1=Randal E. |last2=O’Hallaron |first2=David R. |title=Computer systems: a programmer's perspective |date=2016 |location=Harlow |isbn=978-1-292-10176-7 |edition=Third, Global |chapter=8.1.2 Classes of exceptions |publisher=Pearson}}</ref> (Hardware) interrupts are interrupts triggered asynchronously by an I/O device, and allow the program to be restarted with no loss of continuity.<ref name="Intel1">{{cite web |title=Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1: Basic Architecture |url=https://www.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-software-developers-manual-volume-1-basic-architecture.html |access-date=22 December 2021 |pages=6–12 Vol. 1}}</ref> A fault is restartable as well but is tied to the synchronous execution of an instruction - the return address points to the faulting instruction. A trap is similar to a fault except that the return address points to the instruction to be executed after the trapping instruction;<ref name=Intel3/> one prominent use is to implement [[system call]]s.<ref name=Bryant/> An abort is used for severe errors, such as hardware errors and illegal values in system tables, and often{{efn|Some operating systems can recover from severe errors, e.g., paging in a page from a paging file after an uncorrectable ECC error in an unaltered page.}} does not allow a restart of the program.<ref name=Intel3>{{cite web |title=Intel® 64 and IA-32 architectures software developer's manual volume 3A: System programming guide, part 1 |url=https://www.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-sdm-volume-3a-system-programming-guide-part-1.html |access-date=22 December 2021 |page=6-5 Vol. 3A}}</ref> [[ARM architecture family|Arm]] uses the term ''exception'' to refer to all types of interrupts,<ref>{{cite web |title=Exception Handling |url=https://developer.arm.com/documentation/den0013/d/Exception-Handling?lang=en |website=developer.arm.com |publisher=ARM Cortex-A Series Programmer's Guide for ARMv7-A |access-date=21 January 2022}}</ref> and divides exceptions into (hardware) ''interrupts'', ''aborts'', ''reset'', and exception-generating instructions. Aborts correspond to x86 exceptions and may be prefetch aborts (failed instruction fetches) or data aborts (failed data accesses), and may be synchronous or asynchronous. Asynchronous aborts may be precise or imprecise. MMU aborts (page faults) are synchronous.<ref name="ARM">{{cite web |title=Types of exception |url=https://developer.arm.com/documentation/den0013/d/Exception-Handling/Types-of-exception?lang=en |website=developer.arm.com |publisher=ARM Cortex-A Series Programmer's Guide for ARMv7-A |access-date=22 December 2021}}</ref> [[RISC-V]] uses interrupt as the overall term as well as for the external subset; internal interrupts are called exceptions.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)