[OS]인터럽트(Interrupt)란?

Legday_Dev·2024년 3월 5일

CS

목록 보기
10/13
post-thumbnail

인터럽트(Interrupt)프로그램이 실행 도중 예기치 않은 상황이 발생하여 실행 중인 작업을 중지하고 CPU 에게 발생된 상황에 대한 우선 처리가 필요함을 알리는 것을 말한다.

인터럽트 종류


인터럽트는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉜다.

외부 인터럽트

  • 말 그대로 외부에서 발생하는 인터럽트이다.
  • 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
  • 타이머 인터럽트 : 타이머가 일정한 시간 간격으로 CPU에게 인터럽트를 요청
  • 입출력 인터럽트 : 속도가 느린 입출력장치가 입출력 준비가 완료되었음을 알리기 위해 인터럽트를 요청

내부 인터럽트

  • Trap 이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
  • 명령어 실행 오류 : 나누기 0을 하는 경우
  • 사용 권한 위배 : 사용자가 OS만 사용할 수 있는 자원에 접근하는 경우

소프트웨어 인터럽트

  • 프로그램 처리 중 명령의 요청에 의해서 발생하는 경우SVC(SuperVisor Call)이 있다.
  • SVC란?
    • 일반적인 응용 프로그램은 User Mode 에서 실행한다. User Mode시스템 자원에 접근하는데 제한이 있다.
    • 중요한 시스템 자원에 접근하는 명령어Supervisor 만 실행 할 수 있고 이 것이 Kernel Mode이다.
    • 즉, 응용프로그램이 중요한 시스템 자원에 접근하기 위해서는 Supervisor Call 을 통해 허락을 받고 Kernel Mode(=Supervisor Mode)로 변경하여 자원에 접근 후 다시 User Mode로 변경하는 과정을 거친다.
    • SVSystem Call을 실행시키기 위한 CPU 명령어다.

인터럽트 발생 처리 과정


  • 위 그림 처럼 명령어 수행 중간에 인터럽트 요청이 들어오면 해당 명령어는 실행하고 난 후에 인터럽트를 처리한다.
  • 즉, CPU 는 반복적으로 인터럽트 요청이 있는지 확인한다.
  • 프로그램 실행 도중 인터럽트 요청(Interrupt Requset) 신호가 오면 프로그램을 중단한다.
  • 프로그램 상태를 스택에 보관한다. 인터럽트 처리 후 다시 복귀하기 위해서다.
    • PC(Program Counter) : 다음번에 실행할 명령어 주소를 저장
    • SR(Status Register) : 인터럽트 서비스 단계에서 SR 값이 바뀌는 경우도 있으므로 저장
  • 인터럽트 수행 전 인터럽트 벡터(Interrupt Vector)를 찾아보면서 인터럽트 루틴을 결정한다.
    • Interrupt Vector : 인터럽트 서비스 루틴에 대한 정보를 모아놓은 영역
    • 인터럽트 서비스 루틴(ISR)이란 특정 소스(source)가 인터럽트 요청을 하면 반복적으로 수행하는 일이 있다는 뜻이다. 다른 말로 인터럽트 핸들러(Interrupt Handler)라 부른다.
  • 인터럽트 루틴이 정해지면 인터럽스 수행 후 이전에 스택에 저장한 프로그램 상태값(PC, SR)이 복구된다.
  • 프로그램을 마저 실행한다.

폴링(Polling)

  • 인터럽트 기능이 없다면 특정한 일을 할 시기를 알기 위해 계속 체크를 해야 한다. 이를 폴링이라고 한다.
  • 폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점</네무>이 있다.

출처 및 참고자료
Tech Interview
[OS기초] 인터럽트 제대로 이해하기
[컴퓨터구조] 인터럽트(Interrupt)란?
3. 인터럽트(Interrupt)

profile
백엔드개발자

0개의 댓글