인터럽트(Interrupt)

Lys·2023년 10월 27일
0

운영체제

목록 보기
8/23

인터럽트란?

프로그램을 실행하는 도중에 예상하지 못한 상황이(cpu 점유를 빼앗기는 경우) 발생할 경우 작업을 즉시 중단한 후 발생 된 상황을 우선 처리하고 실행중이던 작업으로 복귀하여 처리하는 것을 말한다.
Interrupt는 예외 상황에 따라 크게 외부Interrupt, 내부Interrupt 로 나눌 수 있다.

외부 Interrupt(하드웨어)

일반적인 컴퓨터의 하드웨어에서 발생하는 것으로, 컴퓨터 주변장치 및 cpu 외부의 디스크 컨트롤러 등으로부터 요구되는 신호이며 시스템 버스를 통해 전달합니다.

  • 시스템 버스란?
    CPU와 기타 장치 사이에서 데이터를 전달하는 통로

외부 Interrupt 종류

  • 전원이상 Interrupt
    • 전원 공급의 이상이 생겼을 때 cpu에 Interrupt를 걸어 작업 중이던 프로세스 대피시킬 수 있도록 한다.
  • I/O Interrupt
    • 입출력 작업의 종료나 입출력 오류에 의해 cpu의 기능이 요청된다.
  • 기계 착오 Interrupt
    • cpu 기능적인 오류
  • 외부 신호 Interrupt
    • I/O 장치 아닌 타이머에 의해 의도적으로 프로그램이 중단 된 경우

내부 Interrupt(소프트웨어)

프로그램의 오류에 의해 생기는 Interrupt를 말하며 트랩(Trap)이라고도 한다.
CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된 모듈이 변화하는 경우 발생한다.

  • 트랩(Trap)이란?
    • 어떤 프로세스가 특정 시스템 기능을 사용하려고 할 때 그 기능을 운영 체제에 요청하는 것을 말한다.

내부 Interrupt 종류

  • Exception(예외)
  • 프로그램이 허용되지 않은 연산을 수행하려고 할 때 자동적으로 발생한다.
    • 0으로 나누는 경우
    • OverFlow/UnderFlow 등
      (자신의 메모리 영역 바깥에 접근하려는 시도 등 권한이 없는 작업을 시도할 때 처 리하는 것)
  • System call
    • 사용자 모드에 있는 응용 프로그램이 커널에 접근하여 그 안의 기능을 사용할 수 있도록 한다.(운영체제 서비스에 접근할 수 있도록 한다.)
    • 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다.
    • 커널에서 시스템 호출의 작업이 끝나면 사용자 모드로 돌아간다.

    • 사용자 모드 : 사용자, 프로그램이 접근할 수 있는 범위를 두고 범위 내에서 동작한다.
    • 커널 모드 : 컴퓨터 자원들이 운영체제의 제어 하에 동작하여 모든 종류의 명령을 사용할 수 있게 된다.

Interrupt 동작 순서

  • Interrupt 요청
  • 프로그램 실행 중단
    • 현재 실행 중이던 Micro operation 까지 수행한다.
  • 현재 프로그램 상태 보관
  • Interrupt 원인 판별
    • 인터럽트를 요청한 장치를 식별한다. -> Interrupt의 원인을 파악한다.
  • Interrupt 서비스 루틴 처리
    • 실질적인 인터럽트 처리 작업을 한다.
    • 서비스 루틴 수행 중 우선 순위가 더 높은 Interrupt가 발생하면 재귀적로 앞과 정을 수행한다.
  • 상태복구
    • Interrupt 발생 시 저장해둔 Pc를 다시 복구한다.
  • 중단된 프로그램 실행 재개
    • pc 값을 이용하여 이전에 수행중이던 프로그램을 재개한다.

Interrupt 우선 순위


여러 장치에서 Interrupt가 동시에 발생하거니, Interrupt 서비스 루틴 수행 중 Interrupt가 발생했을 경우 우선 순위를 따져서 처리한다.
일반적으로 내부 Interrupt 보다 외부 Interrupt가 우선 순위가 높다

  • 전원이상
  • 기계착오
  • 외부 신호
  • 입출력(I/O)
  • 프로그램 인터럽트
  • System call(SuperVisor Call)

우선순위 판별 방법

  • 하드웨어적인 방법(Vectored Interrupt)
    • CPU와 인터럽트를 요청할 수 있는 장치 사이에 장치번호에 해당하는 버스를 연결하여 번호를 CPU에게 알리는 방식
    • 장치 판별을 위한 별도의 프로그램 루틴이 없어 응답 속도가 빠르다.
    • 회로가 복잡하다.
    • 추가적인 하드웨어가 필요하므로 비경제적이다.

  • 소프트웨어적인 방법(Polling)
    • 인터럽트 발생 시 높은 우선순위의 인터럽트 자원부터 인터럽트 요청 플래그를 검사하여, 우선순위가 가장 높은 인터럽트 자원을 찾아내 루틴을 수행한다.
    • 많은 인터럽트가 있을 경우, 모두 조사하는 데에 시간이 걸려 처리 속도가 느리다.
    • 회로가 간단하다.
    • 별도의 하드웨어가 필요없어 경제적으로 좋다.

🙇‍ 참고 사이트 🙇‍

https://velog.io/@nnnyeong/OS-%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8-Interrupt
https://m.blog.naver.com/syunjae21/222065512231
https://ddungkill.tistory.com/85

0개의 댓글

관련 채용 정보