CS/Operating System

[Operating System] Interrupt(인터럽트)

hanseongbugi 2024. 4. 4. 17:20

Interrupt(인터럽트)?

  • 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것
  • 지금 수행 중인 일보다 더 중요한 일(입출력, 우선 순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야한다.
  • 외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생
  • 소프트웨어 인터럽트는 명령어의 수행에 의해 발생
  • 외부 인터럽트
    • 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
    • 예) 전기신호, 기계 착오, 외부 신호, 입출력
  • 내부 인터럽트
    • Trap으로 부르며, 잘못된 명령이나 데이터를 사용할 때 발생
    • 예) 0으로 나누기가 발생, 오버플로우, 명령어를 잘못 사용한 경우(Exception)
  • 소프트웨어 인터럽트
    • 프로그램 처리 중 명령의 요청에 의해 발생한 것 (SVC 인터럽트)
    • 사용자가 프로그램을 실행시킬 때 발생
    • 소프트웨어 이용 중 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작이 실행된다.

인터럽트 처리 과정

  • 프로그램이 실행되다 인터럽트가 발생한 경우 
    • 현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC등을 스택에 잠시 저장한 후 인터럽트 서비스 루틴으로 간다.
    • 잠시 저장하는 이유는 인터럽트 서비스 루틴이 끝난 후 다시 원래 작업으로 복귀해야 하기 때문
  • 만약 인터럽트 기능이 없다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야한다.
    • 이를 폴링(Polling)이라고 한다.
  • 폴링을 하는 시간에는 원래 하던일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못한다는 단점이 있었다.
  • 컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 두가지가 있다.
  • 폴링 방식
    • 사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
    • 인터럽트 요청 플래그를 차례로 비교하여 우선순위가 가장 높은 인터럽트 자원을 찾아 이에 맞는 인터럽트 서비스 루틴을 수행한다. (하드웨어에 비해 속도 느림)
  • 인터럽트 방식
    • MCU 자체가 하드웨어적으로 변화를 체크하여 변화 시에만 일정한 동작을 하는 방식
    • Daisy Chain
    • 병렬 우선순위 부여
  • 인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다.
    • 따라서 실시간 대응이 필요할 때는 필수적인 기능이다.
  • 즉, 인터럽트는 발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법이다.

인터럽트 서비스 루틴(ISR : Interrupt Service Routine)

  • 인터럽트가 발생하면 처리하기 위한 루틴인 ISR이 실행된다.

  1. 주 프로그램 작업 수행 중 인터럽트 발생
  2. 주 프로그램 상태 레지스터와 PC 등을 스택에 잠시 저장
  3. 인터럽트 서비스 루틴으로 점프, 처리
  4. 다시 주 프로그램 작업 복귀

이중 동작 모드

  • 사용자와 OS는 시스템 자원을 공유하기 때문에 사용자에 제한을 두지 않으면 사용자가 메모리 내 주요 자원을 망가뜨릴 위험이 있다.
    • 따라서 사용자의 시스템 자원을 막는 보호 장치가 필요하고, 이 것이 이중 동작 모드이다.
  • 이중 동작 모드는 사용자가 접근할 수 없는 커널 모드, 접근할 수 있는 사용자 모드로 나뉜다.

  • 커널 모드는 supervisor mode, system mode, privileged mode로 불린다.
  • 프로세스는 사용자 모드에서 실행되다가 OS에게 시스템 사용을 요청하면 커널 모드로 전환되어 요청된 시스템을 실행한 후 다시 사용자 모드로 전환한다. (시스템 콜)
    • 시스템 콜은 하나의 인터럽트로 취급된다.
  • 커널 모드와 사용자 모드를 구분하기 위해서는 mode bit가 사용되며 0이 커널 모드, 1이 사용자 모드이다.
  • OS는 일부 명령들을 특권 명령으로 지정하고 커널 모드에서만 실행되게 하며 사용자 모드에서 실행하려고 하면 trap을 건다.

 

 

 

출처

https://github.com/gyoogle/tech-interview-for-developer

 

GitHub - gyoogle/tech-interview-for-developer: 👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

https://velog.io/@pppp0722/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8Interrupt%EB%9E%80

 

인터럽트(Interrupt)란?

인터럽트 인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다. 주로 입출력 장치의 signal, data가 발생할 때까지 원

velog.io