인터럽트란 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생해서 처리가 필요할 경우에 CPU에 알려서 처리하는 기술입니다.
만약 block state 단계에 들어있는 응용 프로그램은 wait 작업이 끝나면 CPU에 끝났다고 알려줘야 됩니다. 그러한 역할을 하는 것이 인터럽트입니다.
인터럽트 필요 이유
선점형 스케줄러의 경우 프로세스 running 중에 스케줄러가 이를 중단시키고, 다른 프로세스로 교체하기 위해서 현재 프로세스 실행을 중단시킬 때 사용됩니다. 즉, 스케줄러 코드가 실행되서 현 프로세스 실행을 중단시키는 것이 인터럽트입니다.
IO Device에서는 저장매체에서 데이터 처리 완료 시, 프로세스를 block state에서 ready state로 이동됩니다. 이때 인터럽트가 발생하면서 옮길 수 있습니다.
또한 CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생할 경우 CPU가 해당 처리를 할 수 있도록 CPU에 알려줘야 됩니다. 이 경우에도 인터럽트를 사용합니다.
주요 인터럽트
1. 계산하는 코드에서 0으로 나누는 코드 실행 시
#include <stdio.h>
int main()
{
porintf("Hello World\n");
int data;
int divider = 0;
data = 1 / divider; // 인터렙트 발생
return 0;
}
2. 타이머 인터럽트
선점형 스케줄러를 위해 컴퓨터 하드웨어로 부터 일정 시간 마다 타이머 인터럽트를 운영체제에 알려줍니다.
3.입출력 인터럽트
키보드가 눌리면 운영체제에 키보드가 눌렸다는 정보를 전달해줘야되고, 마우스와 프린트와 같은 입력, 출력장치도 마찬가지입니다.
인터럽트 종류
내부 인터럽트
주로 프로그램 내부에서 잘못된 명령 또는 잘못된 데이터 사용시 발생합니다. (ex. 0으로 나눴을 경우 / 사용자 모드에서 허용되지 않은 명령 또는 공간 접근 시 / 계산 결과가 Overflow/Underflow나는 경우)
주로 프로그램 내부에서 발생하기 때문에 소프트웨어 인터럽트라고도 합니다.
외부 인터럽트
주로 하드웨어에서 발생되는 이벤트입니다. (ex. 전원 이상 / 기계 문제 / 키보드 등 IO 관련 이벤트 / Timer 이벤트)
주로 하드웨어에서 발생하기 때문에 하드웨어 인터럽트라고도 합니다.
'운영체제 (OS)' 카테고리의 다른 글
프로세스와 컨텍스트 스위칭 - 프로세스 구조 (0) | 2021.04.18 |
---|---|
프로세스와 스케줄러의 이해 - 인터럽트 내부 동작 (0) | 2021.04.18 |
프로세스와 스케줄러의 이해 (1) - 선점형과 비선점형 스케줄러 (0) | 2021.04.16 |
스케줄링 알고림 (4) - 프로세스 상태와 스케줄링 (0) | 2021.04.16 |
스케줄링 알고리즘 (3) - 프로세스 상태와 스케줄링 (0) | 2021.04.16 |