컴퓨터 용어 인터럽트, 원인과 종류 총정리

링크가 복사되었습니다
조회 1

컴퓨터 시스템에서 인터럽트는 매우 중요한 개념입니다. 인터럽트는 CPU가 현재 실행 중인 작업을 잠시 멈추고, 외부나 내부에서 발생한 특정 이벤트(요청)를 처리하기 위해 실행 흐름을 전환하는 메커니즘을 말합니다. 마치 우리가 공부를 하다가 갑자기 전화가 오면 하던 공부를 멈추고 전화를 받는 것과 유사합니다. 이러한 인터럽트 덕분에 컴퓨터는 여러 작업을 동시에 효율적으로 처리하고, 외부 장치와의 통신을 원활하게 수행할 수 있습니다. 인터럽트가 없다면 CPU는 모든 작업을 순차적으로 처리해야 하므로 시스템의 응답성이 크게 떨어질 것입니다.

인터럽트의 주요 원인은 크게 하드웨어 인터럽트와 소프트웨어 인터럽트로 나눌 수 있습니다. 하드웨어 인터럽트는 외부 장치(키보드, 마우스, 디스크 드라이브, 네트워크 카드 등)나 내부 타이머 등 하드웨어적인 요인에 의해 발생합니다. 예를 들어, 키보드를 누르면 키보드 컨트롤러가 CPU에 인터럽트 신호를 보내 사용자의 입력을 처리하도록 합니다. 소프트웨어 인터럽트는 프로그램 실행 중에 발생하는 예외 상황이나 특별한 명령어에 의해 발생합니다. 예를 들어, 0으로 나누는 연산을 시도하거나, 허용되지 않는 메모리 영역에 접근하려 할 때 발생하는 예외 상황이 소프트웨어 인터럽트의 한 종류입니다. 또한, 시스템 콜(System Call)과 같이 운영체제 서비스를 요청하는 경우에도 소프트웨어 인터럽트가 발생합니다.

인터럽트의 종류는 발생 시점과 원인에 따라 다양하게 분류될 수 있습니다. 가장 일반적인 분류는 하드웨어 인터럽트와 소프트웨어 인터럽트입니다. 하드웨어 인터럽트에는 타이머 인터럽트(일정 시간 간격마다 발생하여 CPU 스케줄링 등에 사용), 입출력(I/O) 인터럽트(외부 장치로부터의 데이터 준비 완료 또는 오류 발생 시), 전원 인터럽트(비상 전원 차단 시) 등이 있습니다. 소프트웨어 인터럽트에는 프로그램 예외(0으로 나누기, 잘못된 메모리 접근 등)와 시스템 호출(운영체제 기능 호출)이 포함됩니다. 이 외에도 인터럽트의 우선순위에 따라 긴급한 인터럽트와 덜 긴급한 인터럽트를 구분하기도 합니다.

인터럽트 처리 과정은 CPU가 인터럽트 요청을 받았을 때 순차적으로 진행됩니다. 첫째, CPU는 현재 실행 중이던 명령어의 실행을 완료하고 현재 상태(레지스터 값, 프로그램 카운터 값 등)를 저장합니다. 둘째, 인터럽트 서비스 루틴(ISR, Interrupt Service Routine)의 시작 주소를 찾습니다. 이 주소는 인터럽트 벡터 테이블(Interrupt Vector Table)이라는 특별한 메모리 영역에 저장되어 있습니다. 셋째, CPU는 해당 인터럽트 서비스 루틴으로 제어를 넘겨 인터럽트의 원인이 된 작업을 처리합니다. 넷째, 인터럽트 처리가 완료되면, CPU는 저장해 두었던 이전 상태를 복원하고 중단되었던 원래 작업을 이어서 수행합니다. 이 과정을 통해 CPU는 효율적으로 여러 작업을 전환하며 처리할 수 있습니다.

인터럽트와 폴링(Polling)은 컴퓨터가 외부 장치의 상태를 확인하는 두 가지 주요 방식입니다. 폴링은 CPU가 주기적으로 각 장치의 상태를 직접 확인하는 방식입니다. 마치 선생님이 계속해서 학생들에게 '다 했니?'라고 묻는 것과 같습니다. 이 방식은 구현이 간단하지만, CPU가 불필요하게 많은 시간을 상태 확인에 소비하게 되어 비효율적일 수 있습니다. 반면 인터럽트는 장치가 CPU에게 '일이 끝났어요!'라고 능동적으로 알리는 방식입니다. 이는 CPU가 다른 작업을 하는 동안에도 장치의 완료를 기다릴 필요 없이 효율적으로 시간을 활용할 수 있게 해줍니다. 따라서 대부분의 현대 컴퓨터 시스템에서는 인터럽트 방식이 폴링 방식보다 선호됩니다.

이 글이 도움이 되셨나요?← 홈으로