ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS지식 8일차
    CS지식 2025. 9. 3. 17:28

    명령어 사이클 + 인터럽트 

    프로그램 속 명령어는 일정한 주기가 반복되며 실행
    이 주기를 명령어 사이클 이라고 함

     

    메모리에 저장된 값을 실행하기 위해서는 인출 이라는 작업이 필요하다. 

    인출하는 주기를 인출 사이클 이라고 한다.

    실행하는 주기를 실행 사이클 이라고 한다

    - 인출하고 실행하는 이 사이클이 명령 사이클의 일부로 볼 수 있다. 

    ⚠️ 간혹 인출 사이클을 해도 추가로 메모리에 접근이 필요한 경우도 있다. 
    위와 같은 경우를 위해 중간에 간접 사이클이 추가될 수 있다. 

    인터럽트?

    - 인터럽트는 명령어 사이클로 실행되던 흐름을 끊어버리는 것이다. 

    - 인터럽트는 동기 인터럽트 + 비동기 인터럽트가 있다

     

    동기 인터럽트?

    - CPU가 예기치 못한 상황을 마주할 때 동기 인터럽트가 발생한다.  

     

    비동기 인터럽트?(하드웨어 인터럽트)

    - 주로 입출력장치에 의해서 발생한다. 

    - 알림 같은 역할 

    - 입출력 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트 사용

    - 입출력 장치는 CPU에 비해 느리다!!

    - 인터럽트가 없다면 CPU는 프린트 완료여부를 계속 찾아봐야 한다. 

     

    비동기 인터럽트?(하드웨어 인터럽트) 처리 순서 

    - 입출력장치는 CPU에 의해 인터럽트 요청 신호를 보냄

    - CPU는 실행사이클이 끝나고 명령어를 인출하기 전에 항상 인터럽트 여부를 확인

    - CPU는 인터럽트 요청을 확인후 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 여부를 확인

    - 인터럽트를 받아들일수 있다면 CPU는 지금까지의 작업을 백업한다

    - CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴을 실행

    - 인터럽트 서비스 끝나면 백업해둔 작업을 다시 실행

     

    - 인터럽트 요청신호는 입출력 장치가 CPU한테 보내는 요청신호를 말한다. 

    - 인터럽트 요청 신호를 받아들이면, 실행 사이클이 끝나고 인터럽트 플래그를 확인한다, 

    - 인터럽트 플래그로 모든 인터럽트를 제어 할 수 없다.. 정전이나 하드웨어 고장 등 긴급한 인터럽트의 경우는 인터럽트 플래그로 막을수 없다!! => None Maskable interrupt라고 한다. 

     

    - 인터럽트 서비스 루틴 : 인터럽트가 발생했을 때, 해당 인터럽트를 처리하기 위한 프로그램

    - 인터럽트 서비스 루틴도 프로그램이기 때문에 일반적으로 메모리에 저장되어 있음

     

    - 인터럽트 벡터 : 각각 인터럽트를 구분하기 위한 정보

    CPU가 인터럽트를 처리한다는 말은
    인터럽트 서비스 루틴을 수행하고, 본래 수행하던 작업으로 돌아온다고 할 수 있다
    + 인터럽트 시작주소는 인터럽트 벡터로 알 수 있다 

     

    - 근데 궁금한점은 CPU가 메모리에 있는 프로그램을 수행중인데 인터럽트를 받아들이면 레지스텅 있는 값들은 어떻게 백업을 시키는 걸까?? 🤔

    - 정답은 메모리에 스택 영역에 수행중이던 프로그램을 백업시킨다고 한다. 

    'CS지식' 카테고리의 다른 글

    CS지식 (명령어 병렬처리 기법)  (0) 2025.09.03
    CS 지식  (0) 2025.09.03
    CS지식 7일차  (0) 2025.09.02
    자료구조 - (Linked List)  (1) 2025.08.31
    CS 지식 6일차  (4) 2025.08.10
Designed by Tistory.