DevGang

[CA-17] 인터럽트 본문

정보처리/CA

[CA-17] 인터럽트

별천랑 2021. 2. 6. 17:12

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