dongdorodongdong
Interrupt (인터럽트) 본문
Interrupt
- 정의
- 컴퓨터 프로그램을 실행하는 중에 예기치 못한 상황이 발생할 경우 진행중인 작업을 중단하고, 발생된 긴급 상황을 우선 처리한 후 원래 실행하던 작업으로 복귀하여 계속해서 진행 - 특징
- 인터럽트 서비스 루틴을 실행할 때, 인터럽트 Flag를 0으로 하면 인터럽트 발생을 방지
- 인터럽트 발생 시 CPU는 다음 사항을 확인
> PC의 내용
> 사용한 모든 레지스터의 내용
> 상태 조건의 내용(PSW) - 종류
- 외부 인터럽트 (CPU의 H/W 신호에 의해 발생
> 전원 이상 인터럽트
"정전, 전원 이상"
> 기계 착오 인터럽트
"CPU의 기능적인 오류가 발생"
> 외부 신호 인터럽트
"외부 장치로부터 인터럽트 요청"
"키보드로 인터럽트 키를 누른 경우"
"타이머에 의해 규정된 시간을 알리는 경우"
> I/O 인터럽트
"I/O 데이터의 오류나 이상 현상이 발생한 경우"
"I/O 장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우"
- 내부 인터럽트 (CPU의 H/W 신호에 의해 발생)
> 잘못된 명령이나 데이터를 사용할 때 발생, Trap 이라고도 불림
> 프로그램 검사 인터럽트
"0으로 나누기가 발생"
"Overflow, Underflow가 발생"
"프로그램에서 명령어를 잘못 사용"
"부당한 기억장소의 참조와 같은 오류"
- S/W 인터럽트 (명령어의 수행에 의해 발생)
> SVC 인터럽트
"사용자가 직접 SVC 명령을 사용해 의도적으로 불러오는 인터럽트"
"복잡한 I/O 처리를 해야 하는 경우" - 순서
1. 인터럽트 요청
- 인터럽트 발생 장치로부터 인터럽트 기능을 요청
2. 프로그램 실행 중단
- 현재 실행중이던 명령어(Micro Instruction)는 끝까지 실행
3. 현 상태 보존
- 실행 중이던 프로그램의 상태를 다음에 실행할 명령의 번지로서 PC에 저장
4. 인터럽트 처리 루틴 실행
- 인터럽트를 요청한 장치를 식별
5. 인터럽트 서비스 루틴 실행
- 처리기 상태 복구
- 인터럽트 원인 결정
- 처리기 레지스터의 상태 보존
- 상대적으로 낮은 레벨의 마스크 레지스터 클리어
6. 원 상태로 복귀
- 인터럽트 요청 시 보관되었던 상태를 이용하여 원래 프로그램이 계속 되도록 함
- 보관한 PC의 값을 다시 PC에 저장
7. 중단된 프로그램 실행 재개
- PC의 값을 이용하여 인터럽트 발생 이전에 수행중이던 프로그램을 계속 실행 - 우선순위
1. 전원 이상
2. 기계 착오
3. 외부신호
4. I/O
5. 명령어 잘못
6. 프로그램 검사
7. SVC - 우선순위 판별 방법
- Polling (S/W적 방식)
> 가장 높은 우선순위의 인터럽트 자원 ~ 인터럽트 요청 플래그 까지 차례로 검사
> 우선순위가 가장 높은 인터럽트 자원을 찾아내 해당되는 인터럽트 서비스 루틴을 수행하는 방식
> 우선순위 변경이 쉬움
> 자기디스크와 같이 속도가 빠른 장치에 높은 등급을 부여
> 많은 인터럽트가 있을 경우 모두 조사하는 데 많은 시간이 걸려 느림
> 별도의 H/W가 필요없고 회로가 간단하여 경제적
- Vectored Interrupt (H/W적 방식)
> CPU와 인터럽트를 요청할 수 있는 장치 사이에 장치번호에 해당하는 버스를 병렬, 직렬로 연결하여 요청 장치 번호를 CPU에 알리는 방식
> 인터럽트를 발생한 장치가 CPU에게 분기할 곳에 대한 정보를 제공하는데 이를 Interrupt Vector라고 함
> 장치 판별을 위한 별도의 프로그램 루틴이 없어 빠름
> 복잡하고 추가적인 H/W 가 필요하기 때문에 비경제적
> 직렬 우선순위 부여 방식 / 데이지 체인 (Daisy-Chain) 방식
"인터럽트가 발생하는 모든 장치를 한 개의 회선에 직렬로 연결"
"우선순위가 높은 장치를 선두에 위치시키고 나머지를 우선순위에 따라 차례로 연결"
> 병렬 우선순위 부여 방식
"인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결"
"각 장치의 인터럽트 요청을 제어하기 위해 각 비트를 개별적으로 Set 할 수 있는 Mask Register를 사용"
"Mask Register의 비트 위치에 의해 우선순위 결정"