반응형

1. 인터럽트(Interrupt) 란?


CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외 상황이 발생하여 처리가 필요한 경우 CPU에게 알려 처리할 수 있도록 하는 것.


CPU의 모든 상태는 PSW에서 유지되는데 인터럽트를 알리는 5bit가 있고, 5가지 인터럽트 서비스 루틴(ISP)가 운영체제 일부에 존재한다. 인터럽트 처리 중 다른 인터럽트 발생 시, 우선순위에 의해 인터럽트 처리한다.


2. 인터럽트(Interrupt) 처리 순서


  1. 현재 진행 중인 기계어 코드를 완료한다.
  2. CPU의 특수 레지스터 중 하이로 인터럽트 마스크 비트를 보고 마스크되면 인터럽트를 무시한다.
  3. 인터럽트 벡터를 읽는다.
  4. ISR 주소 값을 얻는다.
  5. ISR로 점프한다. 이 때, PC(Program Counter)값을 자동 저장된다.
  6. 현재 진행중인 프로그램의 레지스터를 저장한다.
  7. 해당 코드를 실행한다.
  8. 해당 코드를 다 처리하면, 저장한 레지스터를 복원한다.
  9. ISR 끝에 IRET 명령어에 의해 인터럽트가 해제된다.
  10. IRET 명령어가 실행되면, 저장한 PC 값을 복원하여 이전 실행 위치로 이동한다


3. 인터럽트(Interrupt) 종류


1. 하드웨어 인터럽트(Hardware Interrupt)

  • 기계검사 인터럽트 : 프로그램을 실행하는 도중 갑작스런 정전이나 컴퓨터 자체 내에서 기계적 문제가 발생한 경우
  • 외부 인터럽트 : 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
  • 입출력 인터럽트 : 입출력의 종료나 입출력의 오류에 의해 CPU의 기능이 요청되는 경우
  • 프로그램 검사 인터럽트 : 프로그램 실행 중 보호된 기억공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램 문제가 발생한 경우

2. 소프트웨어 인터럽트(Software Interrupt)
  • 존재하지 않는 메모리 주소에 접근하는 경우
  • 나눗셈 연산의 경우 0으로 나누는 등의 논리적 오류가 발생하는 경우

4. 인터럽트(Interrupt) 우선 순위

전원 공급 이상 → CPU의 기계적 오류 → 외부 신호에 의한 인터럽트 → 입출력 전송 요청 및 전송 완료/전송 오류 → 프로그램 검사 인터럽트 → 슈퍼바이저 호출(SVC 인터럽트)

5. 참조 문서



반응형

+ Recent posts