개인공부/컴퓨터 구조와 운영체제

[컴퓨터 구조와 운영체제] 명령어 사이클과 인터럽트

개바리여리 2025. 1. 1. 20:23

 

CPU가 메모리의 데이터를 받아들이고 처리하는 것에는 일정한 주기가 있다.

이러한 주기를 명령어 사이클이라고 한다.

하지만 간혹 이런 정해진 주기를 끊는 신호가 있는데 이것을 인터럽트라고 한다.

 

 

명령어 사이클

  • 인출 사이클: 먼저 CPU로 메모리로부터 데이터를 가져온다.
  • 실행 사이클: 가지고 온 데이터를 바탕으로 실행을 한다.
  • 간접 사이클 : 혹여나 메모리 접근이 더 필요한 경우 실행된다.

이러한 인출과 실행이 반복되어서 명령어 사이클을 구성한다.

 

 

인터럽트

정해진 흐름에 맞춘 명령어 사이클을 방해하는 신호

CPU가 우선처리해야할 사항이 생겼을때 or CPU가 갑작스럽게 처리하지 못하는 상황이 발생할때

 

 

 

  • 동기 인터럽트 : CPU가 예상치 못한 상황을 만났을때   메모리 주소에 해당 데이터가 없을때 혹은 실행할수 없는 명령어가 발생했을때
  • 비동기 인터럽트 : 주로 입출력 장치에 의해 발생하는 신호와 같은 역할을 할때

 

비동기 인터럽트의 처리 순서

➀ 입출력장치는 CPU에 인터럽트 신호를 보낸다.

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

➂  CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 받아들일 수 있는지 확인

➃  인터럽트를 받을 수 있다면 인터럽트 서비스 루틴 실행

➄  인터럽트 서비스 루틴 실행이 끝난다면 백업해 둔 작업을 복구하여 실행 재개

 

인터럽트 서비스 루틴 : 인터럽트 발생시 어떻게 처리해야 하는지를 위한 프로그램 (메모리에 저장된다.)

인터럽트 벡터 : 각각의 인터럽트를 구분하기 위한 식별 정보 (키보드인지 프린터인지)

 

* 인터럽트 실행 전 기존 작업물들은 스택 영역에 백업된다.