개인공부/컴퓨터 구조와 운영체제
[컴퓨터 구조와 운영체제] 명령어 사이클과 인터럽트
개바리여리
2025. 1. 1. 20:23
CPU가 메모리의 데이터를 받아들이고 처리하는 것에는 일정한 주기가 있다.
이러한 주기를 명령어 사이클이라고 한다.
하지만 간혹 이런 정해진 주기를 끊는 신호가 있는데 이것을 인터럽트라고 한다.
명령어 사이클
- 인출 사이클: 먼저 CPU로 메모리로부터 데이터를 가져온다.
- 실행 사이클: 가지고 온 데이터를 바탕으로 실행을 한다.
- 간접 사이클 : 혹여나 메모리 접근이 더 필요한 경우 실행된다.
이러한 인출과 실행이 반복되어서 명령어 사이클을 구성한다.
인터럽트
정해진 흐름에 맞춘 명령어 사이클을 방해하는 신호
CPU가 우선처리해야할 사항이 생겼을때 or CPU가 갑작스럽게 처리하지 못하는 상황이 발생할때

- 동기 인터럽트 : CPU가 예상치 못한 상황을 만났을때 메모리 주소에 해당 데이터가 없을때 혹은 실행할수 없는 명령어가 발생했을때
- 비동기 인터럽트 : 주로 입출력 장치에 의해 발생하는 신호와 같은 역할을 할때
비동기 인터럽트의 처리 순서
➀ 입출력장치는 CPU에 인터럽트 신호를 보낸다.
➁ CPU는 실행 사이클이 끝나고 명령어를 인출하기 전 인터럽트 여부를 확인.
➂ CPU는 인터럽트 요청을 확인하고 인터럽트 플래그를 통해 받아들일 수 있는지 확인
➃ 인터럽트를 받을 수 있다면 인터럽트 서비스 루틴 실행
➄ 인터럽트 서비스 루틴 실행이 끝난다면 백업해 둔 작업을 복구하여 실행 재개
인터럽트 서비스 루틴 : 인터럽트 발생시 어떻게 처리해야 하는지를 위한 프로그램 (메모리에 저장된다.)
인터럽트 벡터 : 각각의 인터럽트를 구분하기 위한 식별 정보 (키보드인지 프린터인지)
* 인터럽트 실행 전 기존 작업물들은 스택 영역에 백업된다.