理解中断与陷阱
区分硬件中断、软件中断和异常,并理解它们在系统运行中的作用。
理解中断与陷阱 是 CoddyKit 上的免费 Assembly Language & x86 Low-Level Systems Programming 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Assembly Language & x86 Low-Level Systems Programming 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Assembly Language & x86 Low-Level Systems Programming 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
Events That Stop the CPU
What are interrupts and traps? Think of them as urgent signals that tell your computer's CPU to pause what it's doing and pay attention to something more important.
These signals are crucial for how operating systems manage tasks, respond to hardware, and handle errors. Without them, your computer couldn't multitask or even react when you press a key!
CPU's Normal Flow & Interrupts
Normally, the CPU executes instructions one after another in a steady flow. But what if the keyboard is pressed, or an error occurs?
Interrupts and traps are mechanisms that allow the CPU to temporarily halt its current task, handle the urgent event, and then resume its original work.
Hardware Interrupts: External Signals
Hardware interrupts are external signals, generated by hardware devices, that demand the CPU's attention.
- They are asynchronous, meaning they can happen at any time, unrelated to the CPU's current instruction.
- Think of them as a doorbell ringing – the CPU stops what it's doing to answer.
Common Hardware Interrupts
These are everywhere! Here are a few common examples:
- Keyboard Press: When you type, the keyboard controller sends an interrupt.
- Mouse Movement: Moving your mouse triggers interrupts.
- Timer Interrupt: A special chip generates interrupts at regular intervals, allowing the OS to schedule tasks.
- Disk I/O: When data is ready from your hard drive, it signals the CPU.
Software Interrupts: Programmed Calls
Software interrupts are intentionally triggered by a running program using a special instruction (like INT in x86 assembly).
- They are synchronous, happening exactly when the instruction is executed.
- Programs use them to request services from the operating system, like reading a file or printing to the screen.
Triggering a Software Interrupt
In x86 assembly, the INT instruction generates a software interrupt. Here, int 0x80 is used on Linux to call a system service (syscall) to exit the program.
Try running this simple assembly program:
section .data
msg db "Hello from Assembly!", 0xA
len equ $ - msg
section .text
global _start
_start:
; sys_write (syscall 4)
mov eax, 4 ; syscall number for sys_write
mov ebx, 1 ; file descriptor (stdout)
mov ecx, msg ; address of string to write
mov edx, len ; length of string
int 0x80 ; invoke kernel
; sys_exit (syscall 1)
mov eax, 1 ; syscall number for sys_exit
mov ebx, 0 ; exit code 0
int 0x80 ; invoke kernelExceptions: CPU's Internal Alarms
Exceptions are another type of synchronous event, but they are triggered internally by the CPU itself when it detects an error or an unusual condition during instruction execution.
- They indicate that something went wrong with the current instruction or its data.
- Unlike hardware interrupts, they are directly tied to the execution flow.
Faults, Traps, and Aborts
Exceptions are categorized by how they affect program execution:
- Faults: An error that can often be corrected, allowing the program to restart the offending instruction (e.g., a page fault when trying to access memory not currently in RAM).
- Traps: An exception that is reported immediately after the instruction causing it has executed, allowing the program to continue (e.g., a debugger breakpoint).
- Aborts: Severe, unrecoverable errors that usually terminate the program (e.g., a critical hardware failure).
Real-World Exception Triggers
You've probably encountered these, even if you didn't know the name:
- Divide-by-Zero: Trying to divide a number by zero.
- Invalid Opcode: The CPU encounters an instruction it doesn't recognize.
- Page Fault: A program tries to access a memory address that isn't mapped or available.
- General Protection Fault (GPF): A program tries to access memory it doesn't have permission for, or performs a privileged operation incorrectly.
Key Differences Summarized
Let's clarify the main distinctions:
- Source: Hardware interrupts are external, software interrupts are program-initiated, exceptions are CPU-internal.
- Timing: Hardware interrupts are asynchronous; software interrupts and exceptions are synchronous.
- Purpose: Interrupts handle events (I/O, timers, OS calls); exceptions handle errors or special conditions.
- Correctability: Some exceptions (faults) are correctable, others (aborts) are not.
Distinguishing Event Types
Which of the following scenarios describes a hardware interrupt?
Recap: CPU Event Handlers
In this lesson, we explored the critical mechanisms that allow a CPU to react to events and errors:
- Hardware Interrupts: External signals from devices (keyboard, timer).
- Software Interrupts: Program-initiated requests for OS services (e.g.,
INTinstruction). - Exceptions: Internal CPU errors or unusual conditions (e.g., divide-by-zero, page fault).
Understanding these helps you grasp how operating systems manage tasks and maintain stability at a low level.
常见问题解答
「理解中断与陷阱」课时是免费的吗?
是的 — 「理解中断与陷阱」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Assembly Language & x86 Low-Level Systems Programming 课程的其余内容,请升级到 CoddyKit PRO。 Assembly Language & x86 Low-Level Systems Programming 课程共包含 4 节课。
「理解中断与陷阱」这节课中我会学到什么?
区分硬件中断、软件中断和异常,并理解它们在系统运行中的作用。 你通过在浏览器中直接运行的动手代码来练习 Assembly Language & x86 Low-Level Systems Programming,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Assembly Language & x86 Low-Level Systems Programming 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Assembly Language & x86 Low-Level Systems Programming 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「理解中断与陷阱」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Assembly Language & x86 Low-Level Systems Programming 课中编写并运行代码吗?
能。每节 Assembly Language & x86 Low-Level Systems Programming 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。