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 |