CS

CPU-인터럽트

rhdaud2 2025. 4. 2. 20:28

CPU의 인터럽트 사이클과 그 종류, 처리 과정에 대해


인터럽트(interrupt) : CPU의 작업 흐름을 방해하는 신호


동기 인터럽트 (synchoronous interrupts)/ 예외(exeption)
- cpu에 의해 발생
(cpu가 프로그래밍 오류 등의 예외 상황을 마주쳤을 때 발생하는 인터럽트)

비동기 인터럽트 (asynchoronous interrupts) / 하드웨어 인터럽트 ***
- 주로 입출력장치에 의해 발생하는 인터럽트
 (ex. 세탁기나 전자레인지의 완료알림 등)
- 키보드, 마우스 등의 장치 : 특정 입력을 받아들였을 때, 이를 처리하기 위해 cpu에 입력 알림(인터럽트) 전송

[일반적으로 비동기 인터럽트 자체를 '인터럽트' 라고 칭하기도 하지만,
용어의 혼동을 방지하기 위해 '하드웨어 인터럽트' 라는 용어를 임의로 사용 ]


(비동기) 인터럽트 처리 과정
요청 (가능 여부 확인) > 확인 (인터럽트 플래그<플래그 레지스터>) > (스택에) 백업 > 서비스 루틴 실행(인터럽트 벡터 참조) > 복구 (백업해둔 작업 재개)

 

인터럽트 요청(비동기 인터럽트)

 


* 인터럽트 서비스 루틴 (ISR, Interrupt Service Routiine)
- cpu : 인터럽트 요청 승인 시 인터럽트 서비스 루틴 실행
- 이는  인터럽트 처리를 위한 프로그램으로, '인터럽트 핸들러' 라고도 함
- cpu가 인터럽트를 처리한다 = 인터럽트 서비스 루틴을 실행하고 본래 수행하던 작업으로 돌아온다

인터럽트 서비스 루틴 저장(메모리)




*인터럽트 벡터 (interrupt vector) : 인터럽트 서비스 루틴을 식별하기 위한 정보
- cpu가 인터럽트를 처리 = 인터럽트 서비스 루신 실행 후 원래 작업으로 return
- 인터럽트 서비스 루틴을 실행하려면 '시작 주소'를 알아야함

인터럽트 벡터(인터럽트 서비스 루틴 식별)

 

 

 

 

인터럽트 사이클까지 추가한 명령어 사이클(메모리에 적재된 명령어 처리 과정)

 



예외의 종류는 폴트와 트랩 등이 있으며, 각각의 처리 방식에 차이가 있다

 

예외(동기 인터럽트) 종류
- 폴트 (예외가 발생한 명령어부터 실행)
- 트랩 (예외가 발생한 명령어의 다음 명령어부터 실행)
    - ex. 디버깅의 브레이크 포인트
- 중단 (강제로 중단할 수밖에 없는 심각한 오류시의 예외, abort)
- 소프트웨어 인터럽트(시스템 콜이 발생했을 때) 등

'CS' 카테고리의 다른 글

메모리  (0) 2025.04.16
CPU - 성능 개선  (0) 2025.04.06
CPU - 레지스터  (0) 2025.03.25
명령어  (0) 2025.03.25
데이터  (0) 2025.03.24