0Pricing
Assembly Language & x86 Low-Level Systems Programming · 课时

理解中断与陷阱

区分硬件中断、软件中断和异常,并理解它们在系统运行中的作用。

理解中断与陷阱 是 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 kernel

Exceptions: 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., INT instruction).
  • 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 理解中断与陷阱
  2. 中断描述符表(IDT)
  3. 自定义异常处理程序
  4. 可编程中断控制器(PIC)与 APIC
← 返回 Assembly Language & x86 Low-Level Systems Programming