명령어 사이클(instruction cycle)
CPU가 일정한 주기를 반복하며 프로그램 속 명령어들을 하나씩 처리하는 정형화된 흐름
하지만 명령어를 CPU로 가져왔다고 하더라도 바로 실행할 수 없는 경우도 있다.
간접주소 지정방식의 경우 유효주소의 주소를 오퍼랜드 필드에 저장하는 방식이므로 메모리에 한번 더 접근하는 과정이 필요하기 때문이다.
인터럽트(interrupt)
cpu의 작업을 방해하는 신호
CPU가 잠시 하던 작업을 중단해야하는 상황이 발생한 것을 말한다.
예상치 못한 상황(프로그래밍상의 오류)이 발생했을 때, CPU에 의해 발생하는 인터럽트로 예외(exception)라고도 부른다.
알림과 같은 기능을 하며 주로 입출력장치에 의해 발생한다. 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 사용한다.
비동기 인터럽트 ex) 프린터출력
▶ 입출력장치는 CPU보다 속도가 느리기때문에 CPU는 작업결과를 바로 받을 수 없다.
▶ CPU는 입출력장치가 작업을 완료할때까지 주기적으로 완료여부를 확인해야 한다.
▶ 이때 인터럽트를 사용하면 프린트 완료 인터럽트를 받을때까지 다른 작업을 처리할 수 있다.
** 인터럽트 요청신호 : 현재 인터럽트가 가능한지 CPU에 확인하는 것.
** 인터럽트 플래그 : 인터럽트를 받아도 될지 무시할지 결정하는 플래그.
인터럽트 요청신호를 받은 CPU는 인터럽트 플래그를 확인하는데 불가능으로 설정된 경우(중요작업처리중) 인터럽트 요청이 오더라도 무시하고, 가능으로 설정된 경우에는 인터럽트 요청을 받아들인다.
하지만 불가능으로 설정된 경우라 하더라도 강제로 인터럽트 요청을 받아야할때가 있는데 정전이나 하드웨어 고장으로 인한 인터럽트같은 경우이다.
** 인터럽트 벡터 : 각각의 인터럽트 서비스 루틴을 구분하기 위한 정보
** 인터럽트 서비스 루틴(=인터럽트 핸들러) : 인터럽트를 처리하기 위한 프로그램. 특정한 인터럽트가 발생했을 때 어떻게 처리해야 할 지 작동방법에 대한 정보가 담긴 프로그램이다.