[OS] 인터럽트(Interrupt)

Jeyeon Kim·2023년 10월 18일
0

운영체제

목록 보기
3/12

명령어 수행 과정

기본적으로 프로세서가 명령어를 수행하는 과정은 아래와 같다.

  • 주 기억 장치에서 명령어를 인출하여 프로세서로 가져온다.
  • 단, 메모리 접근이 추가적으로 필요한 경우 N번 더 메모리에 접근하여 인출한다.
  • 프로세서에서 명령어를 실행한다.

    이렇게 메모리에 있는 명령어를 순서대로 인출하여 실행하게 되는데 만약 하드웨어나 소프트웨어적으로 예상치 못한 상황이 발생하여 처리가 필요할 수 있다.
    이러한 상황을 인터럽트(Interrupt)라고 하며 인터럽트가 발생하면 프로세스는 이를 상황에 따라 수용하고 처리한다.

인터럽트(Interrupt)

인터럽트는 하드웨어나 소프트웨어적으로 예상치 못한 상황이 발생함을 뜻한다. 인터럽트는 아래와 같이 두 가지로 나눌 수 있다.

  • 동기 인터럽트(소프트웨어 예외)
    동기 인터럽트는 인터럽트를 처리하기 위해 프로세스가 중단되어야하는 인터럽트를 말한다. 소프트웨어 예외가 이에 속하는데 프로세스를 중에 에러가 발생한 경우 해당 프로세스를 더 이상 진행할 수 없기에 프로세스를 중단하고 처리 후 다시 순서에 맞추어 복구해야한다.

  • 비동기 인터럽트(하드웨어 인터럽트)
    비동기 인터럽트는 인터럽트를 처리하기 위해 프로세스를 중단하지 않고 처리하는 인터럽트를 말한다. 하드웨어 인터럽트란, 키보드 입력, 마우스 클릭과 같은 상황이므로 프로세스를 중단하지 않고 처리할 수 있다.

인터럽트를 처리하는 과정은 아래와 같다.

  • 인터럽트 요청 신호 발생
  • CPU는 실행 사이클이 완료되고 인터럽트 요청 신호 확인
  • 인터럽트 플래그를 통해 인터럽트 수용 여부 확인
  • 인터럽트 수용 가능 시, 프로세스 작업 백업
  • CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행
  • 인터럽스 서비스 루틴 수행 후 백업된 프로세스 작업 복구

프로세스는 다음 명령어를 인출할 메모리 주소를 PC(Program Counter) 레지스터에 보관하고 있는데 인터럽트 발생 시, 인터럽트 서비스 루틴이 있는 주소를 PC 레지스터에 저장하여 CPU가 인터럽트 서비스 루틴을 실행하도록 한다.

profile
Computer software engineering

0개의 댓글