ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터럽트(Interrupt)와 폴링(Polling)
    Computer Science/운영체제 2021. 2. 18. 15:40

     

     

     

     

     

     

    인터럽트(Interrupt)

    하드웨어나 소프트웨어는 CPU에 인터럽트를 발생시킬 수 있다. 인터럽트란, CPU에게 작업 요청을 보내는 것이다. CPU가 현재 하고 있던 작업에 대한 방해라는 느낌. 대표적으로 입출력 연산이 종료되었을 때, 예외가 발생했을 때, 운영 체제의 다양한 서비스를 요구할 때 등등. 인터럽트가 발생하면 하던 일을 중단하고 인터럽트에 대한 처리, 서비스 루틴을 먼저 실행한다. 서비스 루틴이 종료되면 하던 작업을 재개한다.

     

    인터럽트 처리 방법 2가지

    1. os가 인터럽트의 종류를 확인하고 인터럽트 핸들러를 호출해서 처리한다.
    2. 인터럽트가 요청되면, 인터럽트 벡터로 제어를 옮겨, 인터럽트 서비스 루틴의 주소를 가리키는 포인터들로 구성된 인터럽트 벡터 테이블을 참조한다. 참조된 포인터가 가리키는 서비스 루틴을 호출하여 처리한다. (서비스 루틴을 os가 가지고 있는 것이 아니라 보조기억장치에 저장해두는 것이다.)

    서비스 루틴 실행 도중 다른 인터럽트가 발생하면 대기시킨다. 우선 순위에 따라 처리 순서를 조정한다.

    하드웨어가 인터럽트를 발생시킬 경우, 시스템 버스를 통해 전달한다. 소프트웨어가 일으킨 인터럽트는 트랩이라고 하며(error, excepton 등), system call을 통해 전달한다.

     

     

     

    폴링(Polling)

    CPU가 일정한 시간 간격을 두고 각 자원들의 상태를 주기적으로 확인하는 방식 자원들은 폴링 신호를 받은 후 자신의 상태를 CPU에게 알려 주게 될 텐데, 이 때 폴링의 간격을 적절히 정해야 한다. 동시에 각 자원들은 직전 폴링 이후 변화된 자신의 상태를 다음번 폴링 때까지는 알릴 수 없다는 점이 문제다. 아무 일이 없었는데도 CPU는 폴링에 일정량의 시간을 들여야 하는 부담도 발생한다.

     

     

     

    현대 운영체제들은 대부분 인터럽트 주도적(Interrupt driven)이다. 인터럽트가 발생하기 전까지 CPU는 대기상태에 머문다. 반면 폴링(Polling)의 경우 주기적으로 이벤트를 감시해 처리 루틴을 실행한다. 이렇게 하면 컴퓨팅 자원을 낭비하게 되기 때문에 인터럽트 주도적으로 설계하는 것이다.

    인터럽트가 없다면 시스템은 조용히 인터럽트를 기다린다. 만약 사용자의 프로그램이 멋대로 하드웨어에 접근해 인터럽트를 보낸다면 큰 문제가 생기길 것이다. 운영체제와 사용자는 컴퓨터의 하드웨어, 소프트웨어 자원을 공유하기 때문에 사용자 프로그램이 오류를 일으키지 않도록 방지해야 한다.

    'Computer Science > 운영체제' 카테고리의 다른 글

    운영체제(Operating System)의 정의  (0) 2021.02.17
Designed by Tistory.