다섯 살도 알 수 있게 · 시스템SW
인터럽트 처리 과정이 뭐예요?
인터럽트 처리 과정을, 정비공장에서 급한 벨이 울리면 하던 일을 적어두고 바로 달려가는 이야기로 풀어봤어요.
정비사가 일하는데 갑자기 급한 차가 빵빵 울려요.정비사는 하던 일을 계속할지, 멈추고 봐줄지 정해야 해요.
급한 차가 왔는지 계속 흘깃거리면 정비사의 일손이 낭비돼요.급한 차가 직접 알려주는 방법이 필요해요.
벨이 울리면 하던 일을 적어두고 바로 달려가요.급한 일을 끝내면 적어둔 자리부터 다시 이어서 해요.
① 인터럽트 발생벨이 울려요
② 상태 저장하던 자리를 적어둬요
③ 벡터 확인벨 종류별 담당자를 찾아요
④⑤ 처리 후 복귀적어둔 자리부터 이어가요
인터럽트 처리는 ①~⑤ 다섯 단계예요.같은 종류의 벨은 항상 같은 담당자가 맡아요.
이 페이지는 네트워크 벨만 다룬 이야기와 달리, 모든 벨의 공통 순서를 다뤄요.어느 벨이든 순서는 같아요 — 저장하고, 처리하고, 복귀해요.
한 줄로
인터럽트 처리는 벨(신호)이 울리면 하던 일을 적어두고 담당자에게 달려가 처리한 뒤, 원래 자리부터 다시 이어가는 순서예요.
인터럽트는 CPU가 현재 실행 중인 프로그램을 잠시 멈추고 다른 긴급한 작업을 처리하도록 하는 신호예요. 처리 과정은 ①인터럽트 발생 ②현재 레지스터·프로그램 카운터를 스택에 저장 ③인터럽트 벡터 테이블에서 해당 ISR(인터럽트 서비스 루틴) 주소 확인 ④ISR 실행 ⑤저장해둔 상태를 복원하고 원래 실행 흐름으로 복귀하는 순서로 이뤄져요. 계속 상태를 확인하는 폴링 방식보다 CPU 자원을 아낄 수 있어요.
어른들은 이렇게 불러요
- 인터럽트
Interrupt - 급한 차가 울리는 벨. 하던 일을 잠시 멈추게 하는 신호예요.
- 상태 저장/복원
Save/Restore State - 하던 일을 적어뒀다가 다시 펴보기. 레지스터·프로그램 카운터를 스택에 쌓아요.
- 인터럽트 벡터 테이블
Interrupt Vector Table - 벨 종류별 담당자 이름표. 벨마다 정해진 처리 루틴 주소를 담고 있어요.
- ISR(인터럽트 서비스 루틴)
ISR (Interrupt Service Routine) - 벨에 달려가 실제로 처리하는 사람. 벡터 테이블이 가리키는 처리 코드예요.
- 폴링
Polling - 계속 흘깃흘깃 확인하는 방식. 인터럽트보다 비효율적일 수 있어요.
- 인터럽트 우선순위
Interrupt Priority - 더 급한 벨부터 처리하는 순서. 벨 여러 개가 동시에 울릴 때 쓰여요.
- 소프트웨어 인터럽트
Software Interrupt - 정비사 스스로 벨을 눌러 요청하는 것. 옛 x86 시스템 콜이 이 방식이었고, x86-64는 전용 syscall 명령어를 써요.
- 네트워크 인터럽트
Network Interrupt - 네트워크 카드 벨만 다루는 이야기. 다른 분야(네트워크 분야)에서 자세히 다뤄요. → 소포가 도착했다고 알리는 벨소리
다음 이야기
정비 공정을 처음부터 다시 그리는 일 →