while(1)
{
if(키보드눌리면)
출력;
다른 작업1;
다른 작업2;
다른 작업3;
}
컴퓨터에서 인터럽트란 축구·농구·럭비 등의 경기에서, 상대편의 패스를 중간에서 가로채는 인트셉트와 유사하게 CPU의 정상적인 프로그램 실행을 가로채고 다른 프로세스를 실행한다는 의미이다.
인터럽트를 발생 시키는 요인은 다양하게 있는데 크게 내부와 외부로 구분한다.
예상된 시기에 어떤 기능을 발휘하도록 내부에서 발생하는 인터럽트
1. 프로그램이 커널 함수를 호출하는 경우(system call)
2. 잘못된 명령이나 데이터를 사용하는 경우
예상할 수 없는 시기에 프로세서 외부인 주변 장체에서 처리를 요청하는 인터럽트
인터럽트 벡터는 인터럽트가 발생했을 때, 그 인터럽트를 처리할 수 있는 서비스 루틴들의 주소를 가지고 있는 공간이다.
인터럽트 번호는 운영체제가 결정한다.
리눅스에서 인터럽트 번호
0 ~ 31: 예외상황 인터럽트
32 ~ 47: 하드웨어 인터럽트
128: 시스템콜
인터럽트 서비스 루틴 = 인터럽트 핸들러
인터럽트 접수에 의해 발생되는 인터럽트에 대응하여 특정 기능을 처리하는 기계어 코드 루틴이다.
인터럽트가 발생하면 이전에 하던 작업들을 저장하고 다시 불러오는 과정(Context Switch)이 발생한다.
ISR 수행 과정
Open이라는 시스템 콜 함수를 사용했을때의 인터럽트 수행 과정
시스템 콜은 사용자가 직접 사용하기 불편하기 때문에 시스템 콜 API를 통해 호출한다.
ex)라이브러리 함수( printf = write, malloc = brk 등)
[운영체제] 시스템 콜과 인터럽트
충북대학교 소프트웨어학부 인터럽트서비스루틴
인터럽트 (Interrupt) - 도리의 디지털라이프