ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터럽트
    시스템/운영체제 2020. 4. 22. 12:44

    인터럽트란? 

    하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내어 인터럽트를 발생시킨다. Interrupt를 직역하면 '방해하다'라는 뜻이다. 즉 CPU가 하는 일을 방해하고 자신의 일을 먼저 해줄 것을 요청하는 것이다. '방해'라는 어감이 부정적이지만, 인터럽트가 부정적인 요청은 아니고 시스템에서 굉장히 중요한 역할을 한다. CPU에서 처리되는 모든 명령어들의 우선순위들이 있는데, 중요하지 않은 일을 먼저 하고 있다해서 나중에 발생한 중요한 일을 처리하지 않으면 컴퓨터를 사용하는 사용자는 미쳐버릴 수 있다.
      키보드에 타자를 쳐서 화면에 출력하는 것도 모두 인터럽트라고 생각하면 된다. CPU가 하는 일이 있으니 키보드의 인터럽트를 받지 않고 화면에 출력하지 못 하면 미치지 않겠는가?

    이제 본젹적으로 인터럽트에 관해서 설명해보겠다.

    인터럽트는 interrupt vector를 통해 인터럽트 서비스 루틴으로 제어를 전달한다. 인터럽트 벡터란 인터럽트 서비스 루틴들에 대한 주소들을 가진 벡터다.

    인터럽트 서비스 루틴은 generic routine과 interrupt handler로 구성되어 있다.

    • genric routine은 인터럽트 정보 정검 등을 위해 먼저 호출된다.
    • 그 이후 각 인터럽트에 따라 그에 맞는 처리를 위한 interrupt-specific handler가 호출된다.

    인터럽트 처리 중에 다른 인터럽트는 disabled되는데, 이는 interrupt lost를 막기 위함이다. 인터럽트가 disabled되는 기준은 다음과 같다. 인터럽트는 우선순위가 높은 것을 먼저 수행하고, 현재 수행하고 있는 인터럽트 중에 다른 인터럽트가 들어모면 disaabled 시키고 현재 수행이 끝나기까지 기다린다.

    추가적으로 트랩(trap)은 에러나 system call에 의해 소프트웨어적으로 발생한 interrupt를 일컫는다. 즉, trap은 소프트웨어적이고 interrupt는 하드웨어적이다.

    CPU가 인터럽트 될 때

    CPU가 인터럽트 될 때

    1. CPU는 하던 일을 멈춘다.

    2. 인터럽트를 받아 멈춘 명령어는 Program counter와 register 값을 저장한다.

    3. 즉시 인터럽트를 위한 서비스 루틴이 위치한 시작 주소로 실행을 옮긴다.

    4. 인터럽트 서비스 루틴을 수행한다.

    5. 인터럽트 서비스 루틴이 끝나면 중단되었던 이전 작업이 재개된다.

     

    '시스템 > 운영체제' 카테고리의 다른 글

    컴퓨터 저장 장치  (0) 2020.04.23
    DMA(Direct Memory Access)  (0) 2020.04.23
    컴퓨터 시스템의 구성  (0) 2020.04.22
    컴퓨터 부팅 과정  (0) 2020.04.21
    운영체제란?  (0) 2020.04.21

    댓글

Designed by Tistory.