[운영체제] 인터럽트

강민승·2023년 7월 23일
0

운영체제

목록 보기
4/18
post-thumbnail

출처

📌 인터럽트(Interrupt)

정의

프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것

지금 수행 중인 일보다 더 중요한 일(ex. 입출력, 우선 순위 연산 등)이 발생하면 그 일을 먼저 처리하고 나서 하던 일을 계속해야한다.


외부/내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생

소프트웨어 인터럽트는 명령어의 수행에 의해 발생

  • 외부 인터럽트

    입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생

    전원 이상, 기계 착오, 외부 신호, 입출력


  • 내부 인터럽트

    Trap이라고 부르며, 잘못된 명령이나 데이터를 사용할 때 발생

    0으로 나누기가 발생, 오버플로우, 명령어를 잘못 사용한 경우 (Exception)

  • 소프트웨어 인터럽트

    프로그램 처리 중 명령의 요청에 의해 발생한 것 (SVC 인터럽트)

    사용자가 프로그램을 실행시킬 때 발생

    소프트웨어 이용 중에 다른 프로세스를 실행시키면 시분할 처리를 위해 자원 할당 동작이 수행된다.


📍 인터럽트 발생 처리 과정

주 프로그램이 실행되다가 인터럽트가 발생했다.

현재 수행 중인 프로그램을 멈추고, 상태 레지스터와 PC 등을 스택에 잠시 저장한 뒤에 인터럽트 서비스 루틴으로 간다. (잠시 저장하는 이유는, 인터럽트 서비스 루틴이 끝난 뒤 다시 원래 작업으로 돌아와야 하기 때문)

만약 인터럽트 기능이 없었다면, 컨트롤러는 특정한 어떤 일을 할 시기를 알기 위해 계속 체크를 해야 한다. (이를 폴링(Polling)이라고 한다)

폴링을 하는 시간에는 원래 하던 일에 집중할 수가 없게 되어 많은 기능을 제대로 수행하지 못하는 단점이 있었다.

, 컨트롤러가 입력을 받아들이는 방법(우선순위 판별방법)에는 두가지가 있다.

📍 폴링 (Polling)

폴링은 일종의 루프를 실행하여 특정 조건을 주기적으로 체크하거나 확인하는 방식입니다. 예를 들어, CPU가 입출력 장치의 상태를 지속적으로 체크하여 해당 장치가 데이터를 받을 준비가 되었는지 아닌지를 확인하는 과정을 말합니다. 이 방식은 구현이 비교적 간단하다는 장점이 있지만, 장치가 준비되지 않은 상태일 때도 계속 상태를 체크하기 때문에 CPU의 시간을 많이 소모할 수 있습니다.

📍 인터럽트 (Interrupt)

인터럽트는 입출력 장치나 다른 하드웨어가 CPU에게 특정 이벤트가 발생했음을 알리는 방식입니다. 이 방식을 사용하면, CPU는 일반적인 작업을 수행하다가 인터럽트 신호를 받으면 현재 작업을 중단하고 인터럽트를 처리한 후에 다시 원래 작업으로 돌아갑니다. 이 방식은 폴링에 비해 CPU의 시간을 훨씬 효율적으로 활용할 수 있다는 장점이 있습니다.

,폴링은 단순하고 이해하기 쉽지만, 자원을 비효율적으로 사용할 수 있습니다. 반면 인터럽트는 효율적이지만 처리 과정이 복잡하며, 인터럽트를 너무 자주 받게 되면 시스템이 과부하 상태에 빠질 수 있다.


인터럽트 방식은 하드웨어로 지원을 받아야 하는 제약이 있지만, 폴링에 비해 신속하게 대응하는 것이 가능하다. 따라서 실시간 대응✨ 이 필요할 때는 필수적인 기능이다.


즉, 인터럽트는 **발생시기를 예측하기 힘든 경우에 컨트롤러가 가장 빠르게 대응할 수 있는 방법**이다.
profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글