운영체제 | Interrupt

성수당·2025년 9월 12일

운영체제

목록 보기
18/31
post-thumbnail

🥔 인터럽트(Interrupt)란?

운영체제에서 인터럽트는 CPU가 실행 중이던 작업을 일시 중단하고, 더 긴급한 작업(이벤트) 을 처리하기 위해 제어를 넘기는 메커니즘이다. 하드웨어 또는 소프트웨어가 CPU에게 "잠깐 나 좀 봐줘!"라고 외치는 신호라고 생각하면 된다.

🥔 인터럽트의 동작 원리

  1. CPU가 사용자 프로그램을 실행하고 있는 도중,
  2. 장치나 예외 상황으로 인해 인터럽트 발생
  3. 현재 실행 중인 상태(레지스터, PC 등)를 저장
  4. 커널 모드로 진입하여 인터럽트 핸들러(Interrupt Handler) 호출
  5. 처리 완료 후, 저장해둔 상태로 복귀 → 프로그램 재개

🥔 인터럽트의 종류

구분설명예시
하드웨어 인터럽트외부 장치가 CPU에게 요청하는 인터럽트키보드 입력, 디스크 입출력 완료 등
소프트웨어 인터럽트CPU 내부에서 발생하는 인터럽트시스템 콜, 0으로 나누기, 페이지 폴트 등
타이머 인터럽트일정 시간마다 발생 → 운영체제가 CPU 제어권을 주기적으로 회수시분할 스케줄링, 문맥 교환 트리거 등

💡 소프트웨어 인터럽트는 시스템 콜을 포함한다. 사용자 모드에서 커널 모드로 전환하는 핵심 도구다.

🥔 인터럽트 vs 폴링

비교 항목인터럽트폴링(Polling)
처리 방식이벤트 발생 시 CPU에 알려줌 (비동기)CPU가 계속 장치 상태를 확인 (동기)
CPU 사용 효율효율적 (필요할 때만 처리)비효율적 (계속 루프를 돌며 대기)
구현 난이도상대적으로 복잡간단함
사용 예시대부분의 현대 시스템단순한 임베디드 시스템, 실시간 시스템 등

🥔 인터럽트 벡터와 핸들러

  • 인터럽트 벡터 테이블(IVT): 인터럽트 종류별로 대응되는 핸들러 주소를 저장하는 테이블
  • 인터럽트 핸들러: 실제 인터럽트가 발생했을 때 실행되는 루틴

CPU는 인터럽트가 발생하면 IVT를 통해 해당 벡터를 찾고, 핸들러로 점프한다.

🥔 인터럽트와 문맥 교환 (Context Switching)

타이머 인터럽트 또는 I/O 인터럽트가 발생하면 커널은 현재 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스로 전환하는 문맥 교환(context switch) 을 수행한다. 이 덕분에 여러 프로세스가 병렬로 실행되는 것처럼 보이게 된다.

🥔 인터럽트 제어 방법

운영체제는 중요한 임계 구역(critical section) 을 보호하기 위해, 다음과 같은 방법으로 인터럽트를 제어한다:

  • cli: 인터럽트 비활성화 (Clear Interrupt)
  • sti: 인터럽트 활성화 (Set Interrupt)

이때 long time disable 은 피해야 하며, 커널은 최대한 빠르게 인터럽트를 재허용해야 한다.

🥔 인터럽트와 시스템 콜

시스템 콜은 소프트웨어 인터럽트를 통해 커널 모드로 진입한다.

예) x86에서 int 0x80 또는 syscall 명령어를 사용하여 커널에 요청

단계설명
사용자 프로그램read() 같은 시스템 콜 호출
소프트웨어 인터럽트int 0x80 등으로 커널 진입
커널 처리시스템 콜 핸들러가 해당 요청 처리
복귀결과를 반환하고 사용자 프로그램 복귀

🥔 요약 정리

키워드설명
인터럽트CPU에 발생한 비동기적 이벤트를 처리하는 메커니즘
인터럽트 핸들러인터럽트 발생 시 실행되는 함수 루틴
인터럽트 벡터인터럽트 번호에 따라 핸들러 주소를 저장한 테이블
하드웨어 인터럽트외부 장치의 요청 (I/O 등)
소프트웨어 인터럽트시스템 콜, 예외 처리 등
타이머 인터럽트시분할 처리, 스케줄링의 핵심
인터럽트 제어cli, sti 명령어로 설정

🥔 마무리

인터럽트는 현대 운영체제에서 CPU 자원을 효율적으로 사용하고, 입출력 장치와의 연동을 가능하게 하는 핵심 개념이다. 단순히 중단시키는 것이 아니라, 스케줄링, 동기화, 커널 진입 등 다양한 메커니즘의 기반이 된다.

profile
말하는 감자🥔

0개의 댓글