Interrupt
+ 인터럽트란?
컴퓨터가 작업을 수행하던 도중 예기치 못한 특수한 상황이 발생하여 작업을 중단하고, 그 특수한 상황을 먼저 처리한 후, 원래의 작업으로 되돌아가 나머지 작업을 계속 수행하게 되는 일련의 과정.
+ 인터럽트의 취급 절차
프로그램 실행 - (인터럽트 요청신호 발생) > 프로그램 중단 - (프로그램 상태 보관) > 인터럽트 처리 - (프로그램 상태 복구) > 프로그램 계속 수행
+ 인터럽트의 종류
1. 발생원인에 의한 분류
가. 하드웨어 인터럽트(Hardware Interrupt)
1) 정전·전원이상 인터럽트 : 정전이나 전원공급의 이상으로 인한 인터럽트
2) 기계고장 인터럽트 : CPU 및 기타 하드웨어 장치의 오류로 인한 인터럽트
3) 외부(External) 인터럽트 : Timer나 조작원(Operator)의 조작으로 인한 인터럽트
4) 입출력(I/O) 인터럽트 : 입출력 작업의 종료 및 입출력 상의 오류로 인한 인터럽트
나. 소프트웨어 인터럽트(Software Interrupt)
1) 프로그램 인터럽트 : 프로그램 실행 중 프로그램상의 오류나 예외 상태의 발생으로 인한 인터럽트
2) SVC(Supervisor Call : 감시프로그램 호출) 인터럽트 :
가) 프로그램 내에서 특별한 서비스를 요구하는 경우 발생,
나) 운영체제의 감시(Supervisor) 프로그램이 의도적으로 발생.
2. 처리방식에 의한 분류
가. 차단 가능 인터럽트(/INT) : 프로그램에 의해 요청을 받아들이지 않고 무시할 수 있는 구조의 인터럽트로 인터럽트 마스크 레지스터나 인터럽트 허용 레지스터로 개별적 허용, 전체적 허용 처리
나. 차단 불가능 인터럽트(/NMI) : 어떤 방법으로도 요청이 차단될 수 없는 인터럽트로 전원이상이나 치명적인 오류를 대비하기 위하여 사용
3. 주변장치 확인 방법에 따른 분류
가. 벡터형 인터럽트 : 인터럽트가 발생한 장치가 인터럽트 서비스 루틴의 시작번지를 CPU에게 전송하거나 또는 CPU가 각 인터럽트의 종류에 따라 미리 지정된 메모리 번지에서 인터럽트 벡터를 읽어서 이를 인터럽트 서비스 루틴의 시작번지로 사용하는 방식
나. 조사형 인터럽트 : 인터럽트 발생 시, 인터럽트를 요청한 장치를 찾기 위해 CPU가 주변장치들을 소프트웨어 적으로 차례로 조사하는 방식
+ 인터럽트 취급 절차에 따른 흐름
1) 프로그램 실행
2) 현재 실행중인 마이크로 명령을 처리한 후 인터럽트 발생여부 확인
3) 인터럽트 발생 시, 인터럽트 마이크로 연산 실행
4) 프로그램 카운터(PC)에 저장된 다음에 실행될 명령이 메모리 버퍼 레지스터(MBR)에 저장
5) 스택의 최상단 주소(SP의 값)가 메모리 주소 레지스터에 저장, 인터럽트 서비스 루틴(ISR)의 시작주소가 프로그램 카운터(PC)에 저장
6) 메모리 버퍼 레지스터(MBR)에 저장된 실행 중이던 프로그램의 다음 명령어 주소를 스택에 저장
7) 프로그램 카운터(PC)에 저장된 인터럽트 루틴(ISR) 실행
8) 인터럽트 루틴(ISR) 실행 완료 후 스택에 저장된 기존에 실행 중이던 프로그램의 다음 명령어 주소를 불러와 프로그램을 이어서 실행
+ 다중 인터럽트
인터럽트 서비스 루틴 실행 중 또 다른 인터럽트가 발생하는 것
1) 인터럽트 불가능 : 운영상 중요하거나 도중에 중단할 수 없는 인터럽트의 실행 중 인터럽트 플래그(IF)가 세트되는데 이때 발생하는 인터럽트는 바로 수행되지 않고 잠시 대기하고 이전에 수행되던 인터럽트가 종료되면 수행된다.
2) 우선순위 인터럽트 : 인터럽트 서비스 루틴의 수행 중 더 높은 우선순위의 인터럽트 발생 시, 실행 중인 프로그램을 정지는 것처럼 인터럽트 서비스 루틴을 멈추고 우선순위가 높은 인터럽트를 먼저 처리한다.
* 인터럽트 우선순위
인터럽트 동시 발생 시, 처리의 우선순위
1) 하드웨어 인터럽트 > 소프트웨어 인터럽트
2) 정전·전원이상 인터럽트 > 기계고장 인터럽트 > 외부 인터럽트 > 입출력 인터럽트
> 프로그램 인터럽트 > SVC인터럽트
참고자료
-http://sensibilityit.tistory.com/103
-http://www.linuxlab.co.kr/docs/4-8.htm
-http://robot.kut.ac.kr/download/mp/chapter_4_interrupt.pdf
'KNOWLEDGE BASE' 카테고리의 다른 글
Notepad++(노트패드) 한글깨짐 현상 (한글 -> ㅁㅁ) (0) | 2015.06.29 |
---|---|
직접 메모리 접근 (Direct Memory Access, DMA) (0) | 2015.06.25 |
JSON(JavaScript Object Notation) / Parser (0) | 2015.06.25 |
POC / Pilot / BMT (0) | 2015.06.25 |
Queue (큐) (0) | 2015.06.22 |