DevGang
[CA-17] 인터럽트 본문
1. 인터럽트(interrupt)의 정의
- 인터럽트는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단하고 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리하는 것을 말함
- Computer system에 예기치 않은 일이 발생했을 때 제어 프로그램에게 알려주는 것
- 인터럽트는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류하는데, 외부나 내부 인터럽트는 CPU의 하드웨어에서의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생함
- 인터럽트 체제의 기본 요소
- 인터럽트 처리 기능
- 인터럽트 요청 신호
- 인터럽트 취급 루틴
2. 인터럽트의 종류 및 발생원인
- 외부 인터럽트
- 외부 인터럽트는 입/출력 장치, 타이밍 장치, 전원 등 외부적인 요인에 의해 발생함
- 전원 이상 인터럽트 (Power Fail Interrupt) - 정전이 되거나 전원 이상이 있는 경우
- 기계 착오 인터럽트 (Machine Check Interrupt) - CPU의 기능적인 오류 동작이 발생한 경우
- 외부 신호 인터럽트 (External Interrupt)
- 타이머에 의해 규정된 시간(Time Slice)을 알리는 경우
- 키보드로 인터럽트 키를 누를 경우
- 외부 장치로부터 인터럽트 요청이 있는 경우
- 입/출력 인터럽트 (Input-Output Interrupt)
- 입/출력 Data의 오류나 이상 현상이 발생한 경우
- 입/출력 장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우
- 입/출력 장치 동작에 CPU의 기능이 요청될 때
- 내부 인터럽트
- 트랩이라고도 함
- 프로그램 검사 인터럽트
- 프로그램 실행 중에 트랩이 발생하는 조건
- overflow 또는 underflow 시
- 0에 의한 나눗셈
- 불법적인 명령
- 보호 영역 내의 메모리 어드레스를 Access 하는 경우
* 불법 명령어 사용 인터럽트 (Use Bad Command Interrupt)
- 정의되지 않은 명령이나 불법적인 명령을 사용했을 경우 혹은 보호되어 있는 기억공간에 접근하는 경우 발생하는 인터럽트
- 소프트웨어 인터럽트
- 프로그램 처리 중 명령의 요청에 의해 발생
- SVC 인터럽트(Supervisor Call Interrupt) 입출력 수행, 기억장치 할당 및 오퍼레이터와 대화 등을 하기 위해 발생하는 인터럽트
- S/W 문제로 프로그램에 오류가 없는데도 인터럽트가 발생하는 경우
- 페이지 폴트의 오류
3. 인터럽트 수행 순서
- 인터럽트 요청 신호 발생 (CPU에게 인터럽트 요청)
- 현재 수행 중인 명령을 완료하고, 상태를 기억시킴 (현재 작업 중인 주소를 메모리에 저장)
- 어느 장치가 인터럽트를 요청했는지 찾음 (인터럽트 인지 신호 발생)
- 인터럽트 취급 루틴을 수행 (벡터 인터럽트 처리)
- 보존한 프로그램 상태를 복귀 (리턴에 의한 복귀)
5. 인터럽트 발생 시 CPU가 확인할 사항
- 프로그램 카운터 내용
- 상태 조건 내용 (PSW)
- 사용한 모든 레지스터 내용
6. 인터럽트 발생 시 이행해야 할 사항
- CPU의 처리 register와 상태를 기억시키고 나중에 복귀시킴
- interrupt service routine의 시작 address를 발생시킴
- interrupt service routine이 완료된 후 CPU를 원상 복귀시킴
7. 인터럽트 요청 신호 회선 체제
- 단일 인터럽트 요청 신호 회선 체제는 인터럽트 요청이 단일 회선을 이용하기 때문에 인터럽트를 요청한 장치 판별 과정이 필요함
- 고유 인터럽트 요청 신호 회선 체제는 벡터 인터럽트(Vector Interrupt) 방식이라고도 하며 인터럽트 서비스 루틴으로 분기하는 명령들로 구성된 인터럽트 벡터를 이용함
- 고유 인터럽트 요청 신호 회선 체제는 장치마다 고유한 인터럽트 요청 신호 회선을 가지므로 인터럽트를 요청한 장치 판별 과정이 필요 없음
8. 인터럽트 발생 시 처리할 사항
- return address의 기억
- CPU 내의 레지스터 내용 기억
- 인터럽트 마스크 상태 제어
9. 기타 인터럽트 작동과 관련 용어
- 요청한 인터럽트를 처리하기 위해서 이전 프로그램의 상태 보존이 필요한 경우
- Cache memory에서 캐시 miss나 가상 메모리 시스템에서 page fault가 발생한 경우
- 인터럽트 반응 시간 (interrupt response time)
- 인터럽트 요청 신호를 발생한 후부터 인터럽트 취급 루틴의 수행이 시작될 때까지의 시간
- 인터럽트 발생 시 운영체제가 가장 먼저 하는 일
- 현재까지의 모든 프로그램 상태를 저장
- 벡터 인터럽트 (Vectored Interrupt)
- 인터럽트 발생 시 프로세서의 인터럽트 서비스가 특정 장소로 점프(분기)하여 서비스할 수 있게 함
- 인터럽트를 발생한 장치가 프로세서에게 분기할 곳의 정보를 제공해 주는 것
- 인터럽트 벡터에 필수적인 것 : 분기 번지
- 하드웨어 신호에 의하여 특정 번지의 서브루틴을 수행하는 것
- 인터럽트 수행 후에 처리되는 것
- 인터럽트 처리 시 보존시켰던 PC 및 제어 상태 데이터를 PC와 제어상태 레지스터에 복구
- Stack
- Interrupt 발생 시 복귀 주소를 기억시키는 데 사용됨
- 인터럽트가 받아들여졌을 때 스택 메모리를 사용함
- Program Counter
- 인터럽트 처리 루틴에서 반드시 사용되는 레지스터
- 인터럽트 발생 시에 반드시 보존되어야 하는 레지스터
- 인터럽트 서비스 루틴의 기능
- 처리기 레지스터의 상태 보존
- 인터럽트 원인 결정
- 처리기 상태 복구
10. 인터럽트 우선순위
- 전원 이상 > 기계 이상 > 외부 신호 > 입/출력 > 명령어 잘못 > 프로그램 검사 > SVC
11. 인터럽트 회선에 대하여 우선순위를 배정하는 일차적 목적
- 인터럽트가 하나 이상 발생할 때 어느 것이 선택되어야 하는가를 지적
- 인터럽트 우선순위를 판별하는 방법은 소프트웨어적인 방법과 하드웨어적인 방법이 있음
12. 인터럽트 우선순위 판별 방법
- 소프트웨어적인 방법 : Polling 방법
- 인터럽트 우선순위 가운데 소프트웨어적 처리기법
- 인터럽트 요청 신호 플래그를 차례로 검사하여 인터럽트의 원인을 판별하는 방식
- 반응속도가 느리다는 단점이 있음
- 회로가 간단하고 융통성이 있으며, 별도의 하드웨어가 필요 없으므로 경제적임
- 하드웨어적인 방법(응답속도 빠름)
- 직렬 우선순위 부여 방식(Daisy-Chain)
- 병렬 우선순위 부여 방식
* 데이지 체인 (Daisy-Chain)
- 직렬 우선순위 부여 방식
- 인터럽트를 발생하는 모드 장치들을 직렬로 연결
- 인터럽트 처리 과정 중 하드웨어를 이용하여 우선순위를 결정하는 장치
- 벡터에 의한 인터럽트 처리 방법
- 인터럽트 된 모든 장치들은 벡터를 동시에 보낼 수 있음
- 인터럽트 신호 선을 공유하면서 연결 순서에 따라 우선순위가 결정되는 것
- 인터럽트 요청 체인(Interrupt Request Chain) 방식
- 인터럽트 우선순위 체인(Interrupt Priority Chain) 방식
* 병렬 우선순위 부여 방식
- 인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결
- 마스크 레지스터를 갖고 있음
- 마스크 레지스터는 우선순위가 높은 것이 서비스받고 있을 때 우선순위가 낮은 것을 비활성화시킬 수 있음
- 우선순위는 레지스터의 Bit의 위치에 따라 결정될 수 있음
'정보처리 > CA' 카테고리의 다른 글
[CA-18] 병렬 컴퓨터 (0) | 2021.02.06 |
---|---|
[CA-16] 입/출력 장치 (0) | 2021.02.06 |
[CA-15] 특수 기억장치 (0) | 2021.02.06 |
[CA-14] 기억장치 (0) | 2021.02.06 |
[CA-13] 명령 실행과 제어 (0) | 2021.02.06 |
Comments