您的位置:首页 > 运维架构 > Linux

Understanding the linux kernel-ch4-Interrupts and Exceptions

2008-07-01 21:19 579 查看
An interrupt is usually defined as an event that alters the sequence of instructions executed by a processor
are often divided into synchronous and asynchronous interrupts :
· Synchronous interrupts are produced by the CPU control unit
while executing instructions and are called synchronous
because the control unit issues them only after terminating the execution of an instruction
· Asynchronous interrupts are generated by other hardware devices
at arbitrary times with respect to the CPU clock signals
Exceptions, on the other hand, are caused either by programming errors or
by anomalous conditions that must be handled by the kernel
Interrupt handling is one of the most sensitive tasks performed by the kernel,
because it must satisfy the following constraints:
1,The activities that the kernel needs to perform in response to an interrupt
are thus divided into a critical urgent part that the kernel executes right away and a deferrable part that is left for later
2,Because interrupts can come anytime,
the kernel might be handling one of them while another one (of a different type) occurs
the interrupt handlers must be coded so that the corresponding kernel control paths can be executed in a nested manner
3,Although the kernel may accept a new interrupt signal while handling a previous one,
some critical regions exist inside the kernel code where interrupts must be disabled
The Intel documentation classifies interrupts and exceptions as follows:
· Interrupts:
Maskable interrupts
Nonmaskable interrupts
A maskable interrupt can be in two states: masked or unmasked;
a masked interrupt is ignored by the control unit as long as it remains masked
Only a few critical events (such as hardware failures) give rise to nonmaskable interrupts .
Nonmaskable interrupts are always recognized by the CPU
· · Exceptions:
These are further divided into three groups,
depending on the value of the eip register
that is saved on the Kernel Mode stack when the CPU control unit raises the exception
Faults
Can generally be corrected
The saved value of eip is the address of the instruction that caused the fault
Traps
The saved value of eip is the address of the instruction that should be executed after the one that caused the trap
A trap is triggered only when there is no need to reexecute the instruction that terminated
Aborts
A serious error occurred; the control unit is in trouble,
and it may be unable to store in the eip register the precise location of the instruction causing the exception
Aborts are used to report severe errors, such as hardware failures and invalid or inconsistent values in system tables
Programmed exceptions
Occur at the request of the programmer. They are triggered by int or int3 instructions
Each interrupt or exception is identified by a number ranging from 0 to 255;
Intel calls this 8-bit unsigned number a vector. The vectors of nonmaskable interrupts and exceptions are fixed,
while those of maskable interrupts can be altered by programming the Interrupt Controller
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: