인터럽트란 ?
CPU가 특정한 이벤트에 대응하기 위해 발생하는 신호이다.
인터럽트는 CPU가 효율적으로 일을 하기위해 발생한다. 특정 프로세서가 "내 영역에서 해야할 일은 끝났어, 이제 CPU의 도움이 필요해!"하며 CPU에게 작업을 처리해달라고 인터럽트 신호를 보내면 CPU가 하던 일을 잠시 멈추고 요청받은 인터럽트를 처리하게 된다.
인터럽트의 종류
인터럽트의 종류는 크게 2가지로 분류된다.
- 하드웨어 생성 인터럽트: 입출력 완료와 같이 하드웨어 장치가 CPU에게 작업처리를 요청하는 인터럽트이다.
- 소프트웨어 생성 인터럽트: 0으로 나누기 또는 유효하지 않은 메모리 접근와 같은 예외(exception)나 트랩(trap) 혹은 시스템 콜이 있다.
인터럽트 구동방식
일반적으로, 각 장치 컨트롤러에는 장치드라이버가 있다. 장치 컨트롤러는 장치드라이버한테 작업의 상태를 알려주는데(작업 중, 작업완료) 장치 컨트롤러가 작업을 완료했다는 사실을 인터럽트를 통해서 장치 드라이버에게 알린다. 장치 드라이버는 이러한 인터럽트 요청을 받고, CPU가 해당 인터럽트를 처리할 수 있도록 돕는다.
간단히 설명하면, 장치 컨트롤러가 인터럽트 요청 라인(IRQ)에 신호를 선언하여 인터럽트를 발생시킨다. CPU는 인터럽트를 감지하여 해당 인터럽트 핸들러 주소로 이동하고 인터럽트 핸들러는 인터럽트를 처리한다.
좀 더 자세한 과정은 아래와 같다.

- 장치 인터럽트 발생
: 데이터 전송이 완료되거나 에러가 발생하는 상황에서 장치가 인터럽트를 발생시킨다. - 인터럽트 요청(IRQ) 발생
: 장치 컨트롤러는 해당 인터럽트에 대한 신호를 CPU의 인터럽트 요청 라인에 보내고 CPU는 이것을 감지한다. - 인터럽트 벡터 테이블 참조
: CPU는 요청받은 인터럽트에 맞는 인터럽트 벡터 테이블을 참조한다. 이 테이블은 각 인터럽트 유형에 대해 관련된 인터럽트 핸들러 루틴의 주소를 저장하고 있다.
- 포인터 반환
: 장치 드라이버가 CPU에게 해당 인터럽트를 처리하는 데 필요한 핸들러 함수의 주소를 반환한다. - 인터럽트 벡터의 사용
: CPU는 장치 드라이버가 반환한 포인터(인터럽트 핸들러 함수의 주소)를 받는다. 이 포인터는 인터럽트 벡터의 인덱스로 사용되고 CPU는 이 인덱스를 사용하여 해당 인터럽트 핸들러 루틴(IHR)의 주소를 찾는다. - 인터럽트 핸들러 호출
: CPU는 해당 인터럽트 핸들러 루틴(IHR)의 주소로 이동하여 실행을 시작한다. 이 핸들러는 작업 중에 변경될 상태를 저장하고 필요한 인터럽트 처리를 수행한 후, CPU를 인터럽트 전 실행 상태로 복귀시킨다.
인터럽트가 처리되고 있는 동안에는 인터럽트의 유실을 방지하기 위해 다른 인터럽트는 억제된다.
여기서 인터럽트가 처리되고 이전 상태로 어떻게 복귀하는지 궁금할 수 있다.
운영체제는 인터럽트가 발생하면 현재의 레지스터와 프로그램 카운터(PC)등을 비롯한 CPU의 상태를 PCB(Process Control Block)에 저장한다. PC는 프로세스가 다음에 실행할 명령어의 주소를 가리키는 레지스터로 인터럽트가 발생하기 전, 실행할 다음 명령어를 저장하고 있다. 인터럽트 핸들러는 이를 참고해 CPU를 인터럽트 전 실행 상태로 되돌리는 것이다.
참고
PCB(process control block)
: 각 프로세스마다 하나의 PCB가 존재한다. PCB는 프로세스를 시작시키거나 중지, 복구하는 데 필요한 모든 데이터의 저장소 역할을 한다. 아래의 사진과 같이 프로세스의 상태, CPU 레지스터들, CPU 스케줄링 정보, 자원 할당 정보 및 관련된 메타데이터를 저장한다.

본 글은 "운영체제(제 10판)"를 참고하여 작성하였다.
https://www.yes24.com/Product/Goods/89496122
'CS' 카테고리의 다른 글
[컴퓨터네트워크] TCP/UDP를 알아보자 (2) | 2023.11.26 |
---|---|
[컴퓨터 구조] 폰 노이만 구조 (0) | 2023.09.16 |
인터럽트란 ?
CPU가 특정한 이벤트에 대응하기 위해 발생하는 신호이다.
인터럽트는 CPU가 효율적으로 일을 하기위해 발생한다. 특정 프로세서가 "내 영역에서 해야할 일은 끝났어, 이제 CPU의 도움이 필요해!"하며 CPU에게 작업을 처리해달라고 인터럽트 신호를 보내면 CPU가 하던 일을 잠시 멈추고 요청받은 인터럽트를 처리하게 된다.
인터럽트의 종류
인터럽트의 종류는 크게 2가지로 분류된다.
- 하드웨어 생성 인터럽트: 입출력 완료와 같이 하드웨어 장치가 CPU에게 작업처리를 요청하는 인터럽트이다.
- 소프트웨어 생성 인터럽트: 0으로 나누기 또는 유효하지 않은 메모리 접근와 같은 예외(exception)나 트랩(trap) 혹은 시스템 콜이 있다.
인터럽트 구동방식
일반적으로, 각 장치 컨트롤러에는 장치드라이버가 있다. 장치 컨트롤러는 장치드라이버한테 작업의 상태를 알려주는데(작업 중, 작업완료) 장치 컨트롤러가 작업을 완료했다는 사실을 인터럽트를 통해서 장치 드라이버에게 알린다. 장치 드라이버는 이러한 인터럽트 요청을 받고, CPU가 해당 인터럽트를 처리할 수 있도록 돕는다.
간단히 설명하면, 장치 컨트롤러가 인터럽트 요청 라인(IRQ)에 신호를 선언하여 인터럽트를 발생시킨다. CPU는 인터럽트를 감지하여 해당 인터럽트 핸들러 주소로 이동하고 인터럽트 핸들러는 인터럽트를 처리한다.
좀 더 자세한 과정은 아래와 같다.

- 장치 인터럽트 발생
: 데이터 전송이 완료되거나 에러가 발생하는 상황에서 장치가 인터럽트를 발생시킨다. - 인터럽트 요청(IRQ) 발생
: 장치 컨트롤러는 해당 인터럽트에 대한 신호를 CPU의 인터럽트 요청 라인에 보내고 CPU는 이것을 감지한다. - 인터럽트 벡터 테이블 참조
: CPU는 요청받은 인터럽트에 맞는 인터럽트 벡터 테이블을 참조한다. 이 테이블은 각 인터럽트 유형에 대해 관련된 인터럽트 핸들러 루틴의 주소를 저장하고 있다.
- 포인터 반환
: 장치 드라이버가 CPU에게 해당 인터럽트를 처리하는 데 필요한 핸들러 함수의 주소를 반환한다. - 인터럽트 벡터의 사용
: CPU는 장치 드라이버가 반환한 포인터(인터럽트 핸들러 함수의 주소)를 받는다. 이 포인터는 인터럽트 벡터의 인덱스로 사용되고 CPU는 이 인덱스를 사용하여 해당 인터럽트 핸들러 루틴(IHR)의 주소를 찾는다. - 인터럽트 핸들러 호출
: CPU는 해당 인터럽트 핸들러 루틴(IHR)의 주소로 이동하여 실행을 시작한다. 이 핸들러는 작업 중에 변경될 상태를 저장하고 필요한 인터럽트 처리를 수행한 후, CPU를 인터럽트 전 실행 상태로 복귀시킨다.
인터럽트가 처리되고 있는 동안에는 인터럽트의 유실을 방지하기 위해 다른 인터럽트는 억제된다.
여기서 인터럽트가 처리되고 이전 상태로 어떻게 복귀하는지 궁금할 수 있다.
운영체제는 인터럽트가 발생하면 현재의 레지스터와 프로그램 카운터(PC)등을 비롯한 CPU의 상태를 PCB(Process Control Block)에 저장한다. PC는 프로세스가 다음에 실행할 명령어의 주소를 가리키는 레지스터로 인터럽트가 발생하기 전, 실행할 다음 명령어를 저장하고 있다. 인터럽트 핸들러는 이를 참고해 CPU를 인터럽트 전 실행 상태로 되돌리는 것이다.
참고
PCB(process control block)
: 각 프로세스마다 하나의 PCB가 존재한다. PCB는 프로세스를 시작시키거나 중지, 복구하는 데 필요한 모든 데이터의 저장소 역할을 한다. 아래의 사진과 같이 프로세스의 상태, CPU 레지스터들, CPU 스케줄링 정보, 자원 할당 정보 및 관련된 메타데이터를 저장한다.

본 글은 "운영체제(제 10판)"를 참고하여 작성하였다.
https://www.yes24.com/Product/Goods/89496122
'CS' 카테고리의 다른 글
[컴퓨터네트워크] TCP/UDP를 알아보자 (2) | 2023.11.26 |
---|---|
[컴퓨터 구조] 폰 노이만 구조 (0) | 2023.09.16 |