Compreendendo Interrupções e Armadilhas
Diferencie interrupções de hardware, interrupções de software e exceções, e compreenda seu papel no funcionamento do sistema.
Compreendendo Interrupções e Armadilhas é uma aula grátis de Assembly Language & x86 Low-Level Systems Programming no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Assembly Language & x86 Low-Level Systems Programming, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Assembly Language & x86 Low-Level Systems Programming inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
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.
Perguntas Frequentes
A aula “Compreendendo Interrupções e Armadilhas” é grátis?
Sim — o texto completo de “Compreendendo Interrupções e Armadilhas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Assembly Language & x86 Low-Level Systems Programming, atualize para CoddyKit PRO. O curso de Assembly Language & x86 Low-Level Systems Programming inclui 4 aulas no total.
O que vou aprender em “Compreendendo Interrupções e Armadilhas”?
Diferencie interrupções de hardware, interrupções de software e exceções, e compreenda seu papel no funcionamento do sistema. Você pratica Assembly Language & x86 Low-Level Systems Programming com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Assembly Language & x86 Low-Level Systems Programming?
Nenhuma experiência prévia é necessária. Assembly Language & x86 Low-Level Systems Programming no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Compreendendo Interrupções e Armadilhas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Assembly Language & x86 Low-Level Systems Programming?
Sim. Cada aula de Assembly Language & x86 Low-Level Systems Programming inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Compreendendo Interrupções e Armadilhas
- Tabela de Descritores de Interrupção (IDT)
- Manipuladores de Exceção Personalizados
- O controlador programável de interrupções (PIC) e o APIC