[OS] 인터럽트
▶ 인터럽트란?
- H/W 또는 S/W에서 어떤 사건이 발생할 때 CPU에게 알려 사건을 처리하는 매커니즘을 말한다.
- OS는 인터럽트 기반으로 동작한다.
- CPU가 인터럽트되면, CPU는 하던 일을 멈추고 즉시 고정된 위치로 실행을 옮겨 인터럽트를 처리한다.⭐
▷ 인터럽트의 종류
H/W 인터럽트
-
하드웨어가 발생시키는 인터럽트로, CPU가 아닌 다른 하드웨어 장치가 cpu에 어떤 사실을 알려주거나 cpu 서비스를 요청해야 할 경우 발생한다.
-
ex) I/O 작업이 완료됐을 때, 오퍼레이터나 타이머에 의해 프로그램이 종료됐을 때, 정전, 하드웨어 고장
S/W 인터럽트
-
예외 or 트랩에 의해 발생하는 인터럽트
-
ex) 0으로 나눴을 때, 유효하지 않은 메모리 접근, 시스템 콜
▶ 인터럽트 처리
① 입출력 장치는 데이터 버스를 통해 CPU에게 인터럽트 요청 신호를 보낸다. (이때, 인터럽트 벡터도 같이 보내짐)
② CPU는 인터럽트 플래그를 통해 현재 인터럽트를 받아드릴 수 있는지 확인한다.
③ OS가 인터럽트를 받아드릴 수 있다면 CPU는 처리중이었던 프로세스를 중단하고 현재 CPU 상태를 PCB에 저장한다.
④ 그 후, 인터럽트 컨트롤러가 실행된다.
** Context: CPU 상태를 의미한다.
** Context Switching: Context 저장 후, 인터럽트 서비스를 수행하는 것을 의미한다.
▷ 인터럽트 컨트롤러
① 중요한 인터럽트부터 처리되도록 순서를 결정한다.
② 인터럽트 벡터는 각각의 인터럽트를 구분하기 위한 정보로 모든 ISR의 시작 주소를 갖고 있다.
③ 인터럽트는 인터럽트 벡터를 참조하여 ISR로 제어를 넘기고 ISR은 미리 정의된 함수를 실행하여 인터럽트를 처리한다.
④ ISR 실행이 끝나면 원래 수행하던 프로그램으로 Return하여 실행을 재개한다.
** ISR(Interrupts Service Rountine): 인터럽트 처리를 위해 미리 처리된 함수를 말한다.
❓인터럽트 서비스 루틴(ISR)과 인터럽트 핸들러의 차이점?
- GPT에 따르면 ISR은 주로 하드웨어 레벨에서 발생하는 인터럽트 이벤트를 처리하기 위한 코드를 지칭하며, 인터럽트 핸들러는 인터럽트와 관련된 다양한 작업 및 루틴을 포함하는 더 일반적인 용어라고 한다.
- 하지만, 구글링을 해보니 주로 혼용해서 사용하는 것 같다.
▶ 인터럽트 원리
- 인터럽트 구조에서 ‘인터럽트 당한 명령의 주소’는 저장되어야 한다.
- 인터럽트 처리가 끝나면 ‘인터럽트 당한 명령어’로 실행이 다시 옮겨갈 수 있다.
① 인터럽트 발생 ② 해당 주소 명령 저장 (save pc = 5) ③ 인터럽트 처리 위해 PC=ISR 넣음 ④ 인터럽트 처리가 끝난 후 저장한 위치로 되돌아감
▷ 인터럽트 상세 원리
인터럽트가 처리되고 있는 동안에는 인터럽트의 유실을 방지하기 위해 다른 인터럽트는 억제된다.
▶ 인터럽트 TimeLine
📎참조
- 성결대학교 강영명 교수님 운영체제 (2023)
- 쉽게 배우는 운영체제 - 한빛 아카데미
댓글남기기