라즈베리파이반

라즈베리파이 등 컴퓨터계열 게시판입니다.

제목컴퓨터의 구조: 인터럽트2023-05-31 20:21
작성자user icon Level 4

88x31.png


1. 인터럽트(Interrupt) 


인터럽트(Interrupt)는 컴퓨터 내부나 외부에서 발생하는 갑작스러운 사건에 대응하는 기능입니다. 인터럽트 요청이 발생하면 CPU는 현재 처리 순서를 중단하고 요구된 인터럽트 서비스 프로그램을 먼저 수행하게 됩니다. 


 


위에 그림처럼 명령어 사이클은 인출(fetch)실행(execution) 사이클이 반복되는데, 실행 사이클이 끝날때마다 CPU는 반복적으로 인터럽트 요청이 발생했는지 확인합니다.


 


인터럽트 요청이 발생했다면 프로그램 실행을 중단하고 인터럽트 처리를 합니다. 인터럽트 요청을 처리한 이후에는 다시 프로그램을 재실행합니다.



2. 인터럽트 종류


인터럽트는 크게 내부 인터럽트외부 인터럽트로 나눌 수 있습니다.



 

내부 인터럽트는 다음과 같은 상황에서 발생합니다.


1) 하드웨어 고장 : 정전, 패리티 비터 오류 등

2) 실행할 수 없는 명령어 : 정의되지 않은 명령어

3) 명령어 실행 오류 : 0으로 나눈 경우

4) 사용 권한 위배


주로 긴급한 상황에 발생하기 때문에 상태 레지스터의 인터럽트 플래그를 통한 제어가 불가능합니다.



 

외부 인터럽트는 주로 입출력 장치에 의해 발생하며, 여기에는 타이머 인터럽트와 입출력 인터럽트가 있습니다.


1) 타이머 인터럽트 : 일정한 시간 간격으로 CPU에게 인터럽트를 요청합니다.

2) 입출력 인터럽트 : 속도가 비교적 느린 입출력장치의 사용 준비가 완료되었음을 알리기 위해 인터럽트를 요청합니다.


외부 인터럽트는 인터럽트 플래그를 통해 제어할 수 있습니다.



3. 인터럽트 처리 순서


 


1) 입출력장치에서 CPU에 인터럽트 요청 신호(Interrupt Request, INTR)를 보냅니다.


 


2) CPU는 실행 사이클을 끝내고 인터럽트 요청신호를 확인합니다. 인터럽트 요청을 확인 후 인터럽트 가능 플래그(Interrupt Enable Flag, IE)를 통해 현재 인터럽트를 받아들일 수 있는지 확인합니다.


 


3) 인터럽트를 받아들일 수 있다면 현재 실행하던 프로그램을 중단하고, PC(Program Counter)SR(Status Register)를 스택에 저장합니다.


4) CPU는 인터럽트 벡터(Interrupt Vector)를 참조하여 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)을 실행합니다. ISR는 인터럽트가 발생한 경우 인터럽트를 처리하기 위한 프로그램으로, 일반적으로 메모리에 저장되어 있습니다.


5) ISR 실행이 끝나면 스택에 저장한 PC와 SR값을 복구하여 프래그램 실행을 재개합니다.

#인터럽트
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)