2019년 4월 26일
인터럽트 (Interrupt)
I. 예외상황 우선처리, 인터럽트
가. 인터럽트 (Interrupt)의 개념
- 예외상황 발생 시 진행중인 작업을 정지시키고 정의된 절차를 수행하기 위한 제어 프로세스
나. 인터럽트의 발생 원인/우선순위
원인 | 우선순위 | 설명 |
---|---|---|
주변장치 인터럽트 | 높음 | – 시스템 오류, 입출력(I/O) 요청 – 전원 이상 등의 인터럽트 |
프로세스 오류 | 중간 | – CPU 연산 시 Page Fault, Device Zero, Overflow 등의 예외 발생 |
프로그램 요청 | 낮음 | – 프로그램의 시스템 콜(System Call)을 이용한 인터럽트 요청 |
- 우선순위를 정의한 인터럽트 벡터 정보를 IDT(Interrupt Descriptor Table) 저장, 해당 인터럽트 처리 루틴(ISR)으로 분기
II. 운영체제(OS)의 인터럽트 구성 요소 및 동작 절차
가. 인터럽트의 동작 절차
- 인터럽트 발생 시 인터럽트 벡터 테이블 조회/분기, 처리루틴 수행, 복귀 3단계 절차로 동작
나. 운영체제(OS)의 인터럽트 구성 요소
구성 요소 | 동작 절차 | 설명 |
---|---|---|
인터럽트 벡터 테이블 (IVT) | 인터럽트 발생 | – 요청 신호 모니터링 및 검출 |
인터럽트 벡터 조회 | – IVT에 인터럽트ID 조회 – 인터럽트ID에 대응하는 인터럽트 서비스 루틴으로 분기 | |
인터럽트 서비스 루틴 (ISR) | 인터럽트 금지 | – 인터럽트 처리 루틴 진입 후 상호 배제(Lock) |
프로세스 상태저장 | – 이전 프로세스 정보 저장(Context Switching) | |
인터럽트 처리 | – 인터럽트 요청 작업수행 | |
프로세스 상태복구 | – 이전 프로세스 정보 복구(Context Switching) | |
인터럽트 허용 | – 상호배제 자원 반납 (Unlock), 인터럽트 루틴 종료 |
- 인터럽트 종류에 따라 우선순위 부여, 처리 순서 결정 위해 우선순위 처리 방법 필요
III. 인터럽트의 마이크로 연산
가. 인터럽트의 마이크로 코드 및 버스 통신
마이크로 코드 | 버스 통신 구성도 |
---|---|
t0: MBR ← PC t1: MAR ← SP, PC←ISR시작주소 t2: M[MAR] ← MBR |
나. ISR 수행까지 과정
구분 | ISR 수행 전 | ISR 수행 시 |
---|---|---|
구 성 도 | ||
절 차 | ① 100번지의 LOAD 명령어가 인출/실행 ② 250번지 0004가 AC 저장 ③ PC 다음주소 0101 저장 | ④ ISR 마이크로 코드 수행 – PC에 ISR 시작주소(0650) – SP(0999)에 0101 저장 – SP: 다음주소(0998) 가리킴 |
다. ISR 수행이 끝난 후 태스크 실행 과정
구분 | ISR 수행 종료 | 태스크 재개 |
---|---|---|
구 성 도 | ||
절 차 | ① ISR 마이크로 코드 종료 – PC에 ISR 코드주소(0660) – SP(0999)에 0101 존재 – SP: 다음주소(0998) 가리킴 | ② 태스크 재개 – PC에 SP(0999) 0101저장 – SP: 이전주소(0999) 가리킴 ③ 101번지의 명령어 수행 |
IV. 인터럽트(Interrupt)의 종류 및 우선순위 체계
가. 인터럽트의 종류
구분 | 종류 | 설명 |
---|---|---|
H/W 인터럽트 | 외부 인터럽트 | – 주변장치(N/W, I/O, 전원) 의해 발생 – 전원이상, 데이터 처리, Wakeup 등 |
내부 인터럽트 | – 프로세서(CPU)의 연산 처리 중 발생 – Cache miss, Zero Divide, Overflow 등 | |
S/W 인터럽트 | SVC 인터럽트 | – 프로그램의 시스템 콜 요청 시 발생 – 메모리 할당/해제, 자원 요청/반납 등 |
- 외부 > 내부 > SVC 인터럽트 순으로 높은 우선순위를 부여하고 인터럽트 모드 레벨 관리
나. 인터럽트 우선순위 체계
구분 | 종류 | 설명 |
---|---|---|
H/W 처리방식 | 직렬방식 (Daisy-Chain) | – 모든 장치를 단일 회선하여 연결 – 우선순위 높은 장치 첫 번째로 위치 |
병렬방식 (Parallel) | – 모든 장치 개별 인터럽트 요청 회선 – 마스크 레지스터 비트 가중치 부여 | |
S/W 처리방식 | 폴링방식 (Polling) | – 우선순위 높은장치 선택, 요청 확인 – 우선순위 S/W 변경가능, H/W 간단 |
- 인터럽트 우선순위 체계는 복수 개의 인터럽트가 발생하면 우선 처리 작업 결정, 순서 제어 방법
V. 인터럽트 우선순위 체계 비교
구분 | H/W 처리 방식 | S/W 처리 방식 |
---|---|---|
회로 설계 | – 장치 수에 따라 설계 복잡도 증가 | – 간단한 구조로 설계 가능 |
구성 비용 | – 연결 장치에 따라 비용 증가 | – 상대적인 구성 비용이 저렴 |
반응 속도 | – 고속 처리 가능 | – 반응시간 느림 |
유연성 | – 물리적 연결에 따른 수정이 어려움 | – S/W 변경으로 우선순위 수정 가능 |
- 시스템 설계 시 변경 가능성이 적은 인터럽트는 H/W 방식으로 구성하고 동작 환경에 따라 우선순위를 동적으로 관리가 필요한 경우 S/W 방식을 고려하여 설계
VI. 우선순위와 순차처리에 따른 인터럽트 처리
가. 우선순위에 따른 인터럽트 처리
개념도 | 설명 |
---|---|
– 인터럽트의 우선순위를 정하고, 우선순위가 낮은 인터럽트 처리 중 높은 인터럽트가 들어오면 현재 인터럽트 서비스 루틴을 중단하고 새로운 인터럽트 처리 수행 |
나. 순차처리에 따른 인터럽트 처리
개념도 | 설명 |
---|---|
– CPU가 인터럽트 서비스 루틴을 처리하고 있는 도중에 새로운 인터럽트 요구가 들어오더라도 CPU가 인터럽트 사이클을 수행하지 않도록 방지 |
3 Comments
정리가 잘 되어 있어서 많은 도움이 되고 있습니다~~
인터럽트에도 종류가있군요. 몰랐네요.