프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를
명령어 사이클
이라고 한다.
인출 사이클(fetch cycle)
: 메모리에 있는 명령어를 CPU로 가지고 오는 단계실행 사이클(execution cycle)
: CPU로 가져온 명령어를 실행하는 단계간접 사이클(indirect cycle)
: 명령어를 실행하기 위해서 한 번더 메모리 접근을 해야할 때 생기는 단계인터럽트 사이클(interrupt cycle)
: 인터럽트가 발생할 경우 생기는 단계
인터럽트(interrupt)
란 CPU의 정상적인 작업을 방해하는 신호이다.
동기 인터럽트(예외)
: CPU에 의해 발생하는 인터럽트 / 예외적인 상황을 마주쳤을 때 발생하는 인터럽트비동기 인터럽트(하드웨어 인터럽트)
: 주로 입출력장치에 의해 발생하는 인터럽트인터럽트 플래그
를 통해 현재 인터럽트를 받아들일 수 있는 지 여부 확인인터럽트 벡터
를 참조하여 인터럽트 서비스 루틴
실행❕ 플래그 : 특정 동작을 수행할지 말지 결정하는 (보통 1비트인) 변수
❕ 인터럽트 플래그 : 플래그 레지스터에 있는 인터럽트를 제어하는 플래그
❕ 인터럽트 서비스 루틴(안터럽트 핸들러) : 인터럽트가 발생했을 때 해당 인터럽트를 처리하는
방법이 나누어저 있는 프로그램
❕ 인터럽트 벡터 : 각각의 인터럽트를 구분하기 위한 정보
초기 컴퓨터 시스템에 적용된 방식으로 CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식을 폴링(polling)
이라고 한다.
인터럽트 방식을 사용하면서 CPU가 아닌 입출력 관리자가 데이터의 입출력을 맡게 되었다.
입출력 관리자는 CPU가 요청한 데이터를 메모리에 가져다놔야하기 때문에 메모리에 접근을 해야하지만 메모리는 CPU만 접근 권한을 가지고 있다.
따라서 입출력 관리자에게 CPU의 허락없이 메모리에 접근할 수 있는 권한이 필요하게 되었고, 이러한 권한을 직접 메모리 접근(DMA : direct memory access)
라고 한다.