-
(4) 인터럽트CS 지식/○ OS(Operating System) 2021. 6. 15. 00:14
1. 인터럽트란?
1-1) 정의
프로그램을 실행하는 도중에 예기치 않은 상황이 발생환 경우
지금 실행중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행중인 작업으로 복귀하여
계속 처리하는 것
1-2) 우선순위로 처리되는 일
1) 입출력
2) 우선순위 연산
등등....
1-3) 인터럽트 종류
외부 인터럽트
[CPU 하드웨어 신호에 의해 발생]
- 전원 이상 인터럽트(Power fail interrupt) : 말그대로 정전, 파워 이상 등
- 기계 착오 인터럽트(Machine check interrupt) : CPU의 기능적인 오류
- 외부 신호 인터럽트(External interrupt)
- 타이머에 의한 인터럽트 : Preemptive개념을 생각하면 된다. 자원이 할당된 시간이 다 끝난 경우
- 키보드로 인터럽트 키를 누른 경우 : 대표적으로 Control + Alt + Delete
- 외부장치로부터 인터럽트 요청이 있는 경우 : I/O 인터럽트 아님!! 다른 개념이다 - 입출력 인터럽트(I/O Interrupt)
- 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우
- 입출력 데이터에 이상이 있는 경우외부/내부 인터럽트
내부 인터럽트
[잘못된 명령이나 잘못된 데이터를 사용할때 발생]
- Trap이라 부름
- 프로그래 검사 인터럽트(Program check interrupt)
- Division by zero
- Overflow/Underflow
- 기타 Exception - 소프트웨어적이 내용이나 분류상 소프트웨어 인터럽트가 아니다!
소프트웨어 인터럽트(SVC : SuperVisor Call)
[프로그램 실행시 발생]
- 사용자가 프로그램을 실행시키거나 감시프로그램(Supervisor)을 호출하는 동작을 수행하는 경우
- 소프트웨어 이용중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 등의 동작이 수행된다.
2. 인터럽트 처리 과정
2-1) 처리 flow
- 주 프로그램 실행되다 인터럽트 발생
- 현재 프로그램 멈추고
- 상태 레지스터 + PC(Program Counter)등을 스택에 잠시 저장
[잠시 저장하여 인터럽트 서비스 루틴 처리 후 돌아오기 위함]
- 인터럽트 서비스 루틴으로 진입 - 인터럽트 처리 완료 후 스택에 저장 데이터 불러온 후 다시 주 프로그램 실행
※ 인터럽트가 없을 시, 컨트롤러는 특정한 작업을 수행할 시기를 알기 위해 지속적으로 체크해야 하고
이를 Polling이라고 칭한다3. 컨트롤러 입력 처리 방법
입력을 받아들이는 방법 / 우선순위 판별 방법
3-1) 폴링 방식
사용자가 명령어를 사용해 입력 핀의 값을 지속적으로 체크하려 변화를 알아내는 방식
인터럽트 요청 플래그를 차례로 비교하여, 우선순위가 높은 자원을 찾고 이 자원의 인터럽트 서비스 루틴 실행
(하드웨어 - 인터럽트 방식에 비해 속도 느림)3-2) 인터럽트 방식
MCU(CPU) 자체가 하드웨어적으로 변화를 체크하여 변화시에만 일정 동작을 하는 방식
> 종류
- Dasiy Chain
- 병렬 우선순위 부여
인터럽트 방식은 하드웨어의 지원을 받는 제약이 있다. (하드웨어가 이를 지원해야 함)
폴링에 비해 신속한 대응 가능
→ 실시간 대응해야할 때는 필수적인 기능
발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방식
참조
https://gyoogle.dev/blog/computer-science/operating-system/Interrupt.html
반응형'CS 지식 > ○ OS(Operating System)' 카테고리의 다른 글
(6) PCB & Context Switching (0) 2021.06.16 (5) System Call (0) 2021.06.15 (3) 프로세스 주소 공간 (0) 2021.06.13 (2) 프로세스 & 스레드 (0) 2021.06.12 (1) 운영체제란? (0) 2021.06.10