인터럽트 비활성화

인터럽트 비활성화

인터럽트를 끄면 현재 CPU에서 스케줄러나 인터럽트 핸들러가 중간에 끼어드는 것을 막을 수 있습니다. 그러나 멀티코어의 다른 CPU 실행은 막지 못하고, 오래 끄면 시스템 응답성이 크게 나빠집니다.

01

임계구역 진입 전 차단

현재 CPU에서 interrupt handler나 선점이 들어오지 않게 막아 작은 커널 자료구조를 보호합니다.

disable
02

작업을 매우 짧게 끝낸다

인터럽트가 오래 막히면 타이머, I/O, 스케줄링 응답이 지연됩니다.

latency
03

멀티코어 한계 검토

다른 CPU는 계속 실행되므로 공유 자료구조 보호에는 spinlock 같은 추가 장치가 필요합니다.

SMP
04

복원 순서 보장

중첩 disable이나 오류 경로에서도 이전 interrupt 상태를 정확히 복구해야 합니다.

restore
단일 CPU
단일 CPU 짧은 임계구역 보호 현재 실행 흐름이 interrupt로 끊기지 않는 것이 핵심입니다.
local
멀티코어
다른 코어 접근은 여전히 가능 전역 공유 자료구조는 lock과 memory ordering을 함께 봐야 합니다.
global
응답성
장시간 비활성화는 시스템 전체 지연으로 이어짐 타이머 interrupt가 밀리면 스케줄링도 늦어질 수 있습니다.
latency

범위 · 복구 · 대안 점검

범위 인터럽트를 끈 구간이 정말 몇 명령 수준으로 짧은지 봅니다.
복구 예외나 return 경로에서도 반드시 원래 상태로 되돌리는지 확인합니다.
대안 사용자 공간 동기화나 멀티코어 보호에는 mutex, atomic, spinlock을 검토합니다.