운영체제

인터럽트와 명령어 사이클

Yeom's 2021. 7. 10. 15:02
728x90
반응형

인터럽트를 이용할 경우, 입출력 연산이 진행되는 동안 처리기는 다른 명령어를 수행시킬 수 있다. 이러한 명령어들이 수행된 후 제어는 사용자 프로그램으로 리턴되고, 외부 장치는 컴퓨터 메모리로 부터 데이터를 받아 인쇄하느라 바빠진다. 

이러한 입출력 작업은 사용자 프로그램 내의 명령어 수행과 동시에 일어난다. 외부 장치가 다시 서비스할 준비가 되면, 즉 처리기로 부터 데이터를 더 받아들일 준비가 되면, 그 외부 장치의 입출력 모듈은 인터럽트 요청(interrupt request) 신호를 처리기로 보낸다. 이에 대한 반응으로, 처리기는 수행중이던 프로그램의 작업을 보류하고, 해당 입출력 장치를서비스 하기 위한 루틴, 즉 인터럽트 처리기라고 불리는 프로그램으로 분기하며, 장치에 대한 서비스 후 보류했던 프로그램의 수행을 재개한다.

 

 

인터럽트 단계에서 처리기는 인터럽트의 발생 여부(인터럽트 신호의 존재 여부)를 검사한다. 만일 처리할 인터럽트가 없으면, 처리기는 반입 단계로 진행하고 현재 프로그램의 다음 명령어를 가져온다. 만일 처리한 인터럽트가 있으면, 처리기는 현재 프로그램의 수행을 중지시키고 인터럽트 처리기 루틴을 수행한다. 인터럽트 처리기 프로그램은 일반적으로 운영체제의 일부로서, 인터럽트의 종류를 결정하고 필요한 처리들은 수행한다. 예를 들어 우리가 사용중인 예제에서, 인터럽트 처리기는 어떤 입출력 모듈이 인터럽트를 발생시켰는지 결정하고, 특정 프로그램으로 분기하여 해당 입출력 모듈을 통해 추가 데이터를 출력할 수도 있다. 인터럽트 처리기 루틴이 완료되면, 처리기는 인터럽트가 발생한 지점에서 사용자 프로그램의 수행을 재개한다.

 

출처 운영체제 내부구조 및 설계원리 - 전광일,김철민,김판구 (프로텍 미디어)

728x90
반응형