개발/CS

[컴퓨터개론] - 명령어 사이클과 인터럽트(??:제발끼어들게해주세요)

수인분당선 2024. 4. 26. 14:42
반응형

인터럽트

오늘은 명령어 사이클과 인터럽트에 관해 알아보도록 하겠습니다.

이 두가지 개념을 알기 위해서 가장 먼저 명령어 사이클을 알아봅시다.

명령어 사이클 : 하나의 명령어를 처리하는 흐름을 일컷는 말.

이렇게 하나의 명령어를 처리하기 위한 사이클 속에는 두가지 절차를 거칩니다.

  1. 인출 사이클: 명령어를 가져오는 과정
  2. 실행 사이클: 명령어를 실행하는 과정
    이 두가지 사이클이 실행되는 과정에서 만약 인출한 명령어가 간접주소지정방식을 참조하고 있는 등의 경우에는 바로 실행사이클에 명령어를 돌입시킬 수 없습니다. 따라서 추가적으로 간접 사이클을 통해 메모리에 한 번 더 접근한 후, 실행사이클이 진행됩니다.
    그리고 이렇게 두개에서 세개 사이의 사이클이 실행되는 사이, 실행 사이클에서는 인터럽트가 발생할 수 있습니다.

인터럽트 : 정해진 흐름에 따라 명령어를 처리하는 과정에서 간혹 현재 작업이 중단되는 상황을 일컷는 말.

  • 동기 인터럽트(예외): CPU에 의해 발생하는 인터럽트. CPU가 프로그래밍상의 오류와 같은 예외에 마주쳤을 때 발생.
  • 비동기 인터럽트(인터럽트 또는 하드웨어 인터럽트): 주로 입출력장치에 의해 발생. 입출력장치의 입력을 받아들이면 이를 처리하기 위해 CPU에 인터럽트를 발생시킴.

다시 말해, 예외의 경우는 CPU에서 발생하는 문제를 해결하기 위해 발생하고, 인터럽트의 경우에는 CPU의 작업속도와 입출력장치의 작업처리속도의 차이로인해 입출력장치의 작업처리완료 알림을 만들어 입출력장치의 작업처리기간을 기다리지 않고 다른 작업을 시행하다가도 인터럽트의 알림을 통해 작업이 입출력 장치가 완료되는 순간 빠르게 작업을 받아 처리할 수 있도록 합니다.
개념으로 본다면 어려울 수 있지만, 그냥 빨래를 돌려놓고 기다렸다가 노래가 들리면 달려가는 우리의 모습정도로 이해를 하면 좋습니다.

여기서 우리가 유의해서 봐야할 개념은 인터럽트. 즉 비동기 인터럽트로 인터럽트의 처리순서에 대해서 더 자세하게 알아보도록 하겠습니다.

인터럽트 처리 순서

인터럽트의 순서는 크게 다음과 같습니다.

  1. 입출력 장치가 CPU에 인터럽트 요청 신호를 보냄(??: 아 끼어들게 해주세요 제발~)
  2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전에 항상 인터럽트 여부를 확인함.(인터럽트씨 요청확인)
  3. CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지에 대한 여부를 확인(아 싫은데..지금 되나?)
  4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업( 되네 ㄱㄷㄱㄷ 저장좀하고)
  5. CPU는 인터럽트 벡터를 참조하여 인터럽스 서비스 루틴 실행(ㅇㅋ 이제 하자)
  6. 인터럽트 서비스 루틴 실행(줄여서 ISR) 이 끝나면 (4)에서 백업해 둔 작업을 복구하여 실행을 재개함.(다했으니까 나가 나 하던거 해야됨)

추가설명

    • 3번에서 인터럽트 플래그라는 값의 활성화 여부를 통해 인터럽트를 받아들일 수 있는지를 확인합니다. 여기서 예외사항으로 인터럽트 플래그를 불가능으로 설정하여 인터럽트 요청을 막을 수 있기는 하지만 무시할 수 없는 하드웨어인터럽트 요청도 있습니다.(EX: 정전이나 하드웨어 고장으로 인한 인터럽트 등)
    • 이러한 인터럽트 서비스 루틴은 CPU나 하드웨어 간의 상호작용을 관리하는 중요한 역할을 담당하고 있습니다

인터럽트(비동기인터럽트)는 세부적으로 막을 수 있는 인터럽트와 막을 수 없는 인터럽트로 나눌 수 있다!

  • 5번의 인터럽트 서비스 루틴은 인터럽트를 처리하기 위한 프로그램입니다. 마우스가 어떤 인터럽트 요청을 보냈을 때는 어떻게 처리하는지, 프로그램에 문제가 생겼을 때에는 어떻게 처리하는 지 등 각각 인터럽트에 따른 작동 정보로 이루어져 있습니다.
  • 5번의 인터럽트 벡터는 인터럽트 서비스 루틴을 식별하기 위한 정보입니다. 위에서의 정보를 찾기 위한 검색어정도로 생각해두면 좋습니다.
  • 4번의 작업 백업 과정에서는 pc(프로그램카운터)값 등 현재 프로그램을 재개하기 위해 필요한 모든 내용을 스택에 백업합니다.
반응형

 

반응형