Interrupt
개념
Interrupt
- 프로그램 실행 도중 예기치 못한 상황으로 실행 중인 작업을 중단하고 발생된 상황을 우선 처리할 필요성을 CPU에게 알리는 작업
- 지금 수행 중인 일보다 우선순위가 높은 이벤트가 발생하면 그 작업을 먼저 처리하고 진행하고 있던 작업을 수행
종류
외부 인터럽트
- CPU의 하드웨어 신호에 의해 발생
- CPU 코어의 외부 요인에서 발생하는 인터럽트
- 전원 이상 인터럽트
- 전원 공급이 중단된 경우 작업 중인 프로세스 대피
- I/O 인터럽트
- I/O 장치에게 일을 맡기거나 I/O 장치가 CPU에게 정보를 전달할 때 호출
- 타이머 인터럽트
- 컴퓨터 내부 타이머가 주기적으로 CPU에게 제한 시간이 초과되면 인터럽트 발생
- 하나의 프로세스가 CPU 자원을 오랫동안 점유하지 못하게 하기 위해 사용
내부 인터럽트
- CPU의 하드웨어 신호에 의해 발생
- CPU 코어 내부 요인에서 발생하는 인터럽트
- Exception interrupt 나 trap이라고 부른다.
- 0으로 나누는 것
- 오버플로우/언더플로우
- 프로그램 exception
소프트웨어 인터럽트
- 프로그램 처리 중 명령 요청에 의해 발생
- SVC(SuperVisor Call)
- 일반적인 프로그램은 user mode로 작동하는데 일부 관리자 권한이 필요할 경우 kernel mode로 변경해야 한다.
- SVC call을 통해 관리자 권한을 허락받고 kernel mode로 변환하고 명령을 실행할 수 있다.
인터럽트 처리 과정
진행 과정
- 인터럽트 요청
- 프로그램 실행 중단
- 현재 실행중인 프로그램 상태 저장
- PCB에 프로세스 정보 저장, PC(Program Counter)에 명령 주소 저장
- 인터럽트 요청 판별
- 인터럽트 발생 원인을 파악
- Interrupt vector 테이블에서 호출할 ISR(Interrupt Service Routine)의 주소 값을 가져온다.
- ISR 처리
- 서비스 루틴을 실행하는 작업
- 처리하는 도중 우선순위가 높은 인터럽트가 발생하면 다시 위의 과정 반복
- ISR을 실행하는 도중 인터럽트의 발생을 방지하고 싶다면 인터럽트 플래그를 0으로 설정
- 상태 복구
- 실행 복구 명령이 떨어지면 PC에 저장되어 있는 명령 주소를 가져와 이전 실행 위치로 복귀
- 중단된 프로세스 실행
- PCB에 저장된 프로세스를 다시 가져와 프로그램 재개
우선순위 판별 방법
폴링 방식
- 특정 주기마다 스레드를 돌며 시그널을 확인하는 방식
- 소프트웨어적으로 시그널을 확인
- 특정 주기마다 스레드를 돌며 확인하기 때문에 정확한 타이밍에 시그널 확인 불가
- 구현이 쉽고 우선순위 변경 용이
인터럽트
- 외부 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를 실행 후 원래 코드 복귀
- 하드웨어적으로 시그널 확인
- 시그널이 들어온 정확한 타이밍을 확인할 수 있고 즉각적인 반응
- 인터럽트 발생 시에만 처리하여 자원 소모 절약
- 구현이 복잡하나 반응이 빠르고 자원 소모 절약 가능
Reference
https://justzino.tistory.com/4
https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html
'Operation System' 카테고리의 다른 글
CPU Scheduling (0) | 2023.05.02 |
---|---|
IPC (0) | 2023.04.30 |
PCB (0) | 2023.04.26 |
Process Address Space (0) | 2023.04.25 |
Process (0) | 2023.02.25 |