ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터 시스템의 개요 - 인터럽트
    운영체제 Operating System/운영체제 내부구조 및 설계원리 제8판 2020. 3. 28. 11:15

    1.4 인터럽트

     

    인터럽트는 기본적으로 CPU의 처리율을 향상하기 위해 제공된다.

    ex. 대부분의 입출력 장치들은 처리기에 비해 훨씬 느리다. 그래서 매번 입출력 장치 연산 동안, CPU는 수행을 일시 중지한다. 이 상태를 유휴상태(idle)이라고 한다. 이런 유휴시간이 많아질수록 CPU가 매우 큰 낭비이다.

     

    인터럽트를 이용할 경우, 입출력 연산이 진행되는 동안 처리기는 다른 명령어를 수행시킬 수 있다.

    즉, 입출력 작업은 사용자 프로그램 내의 명령어 수행(연산)과 동시에 일어난다.

    인터럽트 제어 전달

    사용자 프로그램에서 보면, 인터럽트는 정상적인 프로그램의 수행을 중지시키는 것이며, 인터럽트 처리가 완료되면 원래 프로그램의 수행이 재개된다. 사용자 프로그램은 인터럽트 처리를 위한 어떠한 코드도 포함할 필요가 없다. 사용자 프로그램의 수행을 중지시키고, 나중에 같은 지점에서 그것을 재개하는 것은 CPU와 운영체제의 책임이다. 

     

    인터럽트 명령어 사이클

     

    인터럽트와 명령어 사이클

     

    처리할 인터럽트가 있으면, CPU는 현재 프로그램의 수행을 중지시키고 인터럽트 처리기 루틴(Interrupt Service Routine, ISR) 을 수행한다. 인터럽트 처리기 프로그램은 일반적으로 운영체제의 일부로서, 인터럽트의 종류를 결정하고 필요한 처리들을 수행한다.

     

    인터럽트 처리

     

    인터럽트 발생으로 인해 처리기 하드웨어와 소프트웨어에서 많은 이벤트가 발생하게 된다.

    1. 장치가 인터럽트 시그널을 처리기로 보낸다. 

    2. CPU가 인터럽트에 응답하기 전에 현재 수행 중인 명령어를 완료한다.

    3. CPU는 대기 중인 인터럽트 요청이 있었는지 검사하여 알게 되고, 인터럽트를 발생시킨 장치에게 수신 확인 신호를 보낸다.

    4. CPU가 제어를 인터럽트 루틴으로 넘기기 위한 준비가 필요하다. 인터럽트가 발생한 지점에서 현재 진행 중인 프로그램을 재개하는데 필요한 정보를 저장한다. 최소한의 정보인 프로그램 상태 워드(PSW), 수행시킬 다음 명령어의 위치(PC) 등을 시스템 제어 스택에 저장한다.

    5. CPU는 발생한 인터럽트에 응답할 인터럽트 처리 루틴의 진입 위치를 프로그램 카운터에 적재한다. 

       결과적으로, 제어가 인터럽트 처리기 프로그램으로 넘겨진다.

    6. 인터럽트 당한 프로그램과 관련 있는 프로그램 카운터와 PSW는 이미 제어 스택에 보관되어 있다. 그러나 수행 중인 프로그램 상태의 일부로서 고려되어야 할 다른 정보, 처리기 레지스터 내용 등 나머지 상태 정보가 저장될 필요가 있다.

    7. 인터럽트 처리기는 이제 인터럽트를 처리하게 된다. 

    8. 인터럽트 처리가 완료되면, 저장된 레지스터 값을 검색하여 레지스터에 다시 저장한다.

    9. 제어 스택에 저장했던 PSW와 PC값을 가져와 복원하는 것이다.

     

    (A)위치 N의 명령어 실행 후 인터럽트 발생                                               (B) 인터럽트로부터 복귀

    댓글

Designed by Tistory.