*해당 글은 '혼자 공부하는 컴퓨터구조 + 운영체제(강민철 지음)'을 참고하여 작성되었습니다.
*구체적인 예시와 함께 더 자세히 공부하고 싶으신 분들은 해당 책을 읽어보시기를 추천드립니다.
지난 시간에 명령어 사이클을 배웠습니다.
하나의 명령어를 실행하는 과정에 대해서 배웠죠?
이번 시간에는 인터럽트에 대해서 알아보겠습니다.
인터럽트(Interrupt)는 '방해하다', '중단시키다' 등의 의미를 가지고 있습니다.
명령어 사이클에 따라 프로그램들이 실행되는데, 중간에 잠시 중단될 때가 있습니다.
이처럼 예기치 못한 상황에 의해 CPU의 작업을 중단되는 상황 또는 중단시키는 신호를 인터럽트(Interrupt)라고 합니다.
어떤 특별한 상황이 발생했으니, 잠시 하던 것을 멈추고 이것부터 처리해달라고 요청하는 거죠.
인터럽트는 다양한 상황에서 발생하고, 그에 따라 종류도 여러 개로 나뉩니다.
지금부터 한번 알아보겠습니다.
먼저, 인터럽트는 동기 인터럽트와 비동기 인터럽트로 나뉩니다.
1. 동기 인터럽트 (Synchronous Interrupts)
동기 인터럽트(Synchronous Interrupts)란, CPU에 의해 발생하는 인터럽트를 말합니다.
예를 들어, CPU가 명령어들을 실행하다가 예기치 못한 상황(오류 등)들을 마주했을 때 발생합니다.
그래서 동기 인터럽트를 예외(Exception)이라고 부르기도 합니다.
2. 비동기 인터럽트 (Asynchronous Interrupts)
비동기 인터럽트(Asynchronous Interrupts)란, 주로 입출력장치에 의해 발생하는 인터럽트입니다.
CPU가 프린터 같은 입출력 장치에 특정 작업을 부탁하면, 입출력장치는 작업을 끝낸 뒤에 CPU에게 인터럽트를 보냅니다.
또한, 키보드나 마우스 같은 입출력장치가 어떤 정보를 입력받았을 때, 이를 처리하기 위해 CPU에게 인터럽트를 보냅니다.
CPU 외부 하드웨어 장치에 의해 발생하는 인터럽트이기 때문에 하드웨어 인터럽트라고 부르기도 합니다.
하드웨어 인터럽트
하드웨어 인터럽트(비동기 인터럽트)는 왜 필요할까요?
그것은 CPU와 입출력장치의 속도 차이 때문입니다.
CPU는 매우 빠르게 명령어를 처리하지만, 정보를 입력하거나 출력하는 데에는 꽤 많은 시간이 걸립니다.
만약 CPU가 입출력장치를 기다려주면 어떻게 될까요?
정보가 입력 혹은 출력되는 동안, 컴퓨터는 아무것도 못하게 될 것입니다.
그러니까 입출력장치가 실행되는 동안, CPU는 다른 일을 할 수 있어야겠죠?
CPU가 주기적으로 입출력장치의 상황을 확인하는 것 또한 낭비이기 때문에,
CPU가 입출력장치의 상황을 확인하는 대신, 입출력장치가 자신의 작업이 끝나면 CPU에게 알림을 보내는 방식으로 작동합니다.
이때 입출력장치가 CPU에게 보내는 신호가 바로 하드웨어 인터럽트인 것이죠!
그러면 CPU는 입출력장치로부터 알림(인터럽트)을 받을 때까지 다른 일들을 할 수 있습니다!
이렇게 인터럽트에 대해 간단히 알아보았습니다.
그중에서 하드웨어 인터럽트에 대해서 더 공부할 필요가 있습니다.
다음 시간에는 하드웨어 인터럽트에 대해서 더 자세히 알아보겠습니다!
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조][기초] 하드웨어 인터럽트 (1) | 2025.03.27 |
---|---|
[컴퓨터구조][기초] 명령어 사이클 (3) | 2025.03.25 |
[컴퓨터구조][기초] CPU - 레지스터 (주소 지정 방식) (1) | 2025.03.18 |
[컴퓨터구조][기초] CPU - 레지스터 (0) | 2025.03.17 |
[컴퓨터구조][기초] CPU - 제어장치 (2) | 2025.03.14 |