→ 인터럽트 : cpu의 정상적인 작업을 방해하는 신호
- 동기 인터럽트 (Exception) : CPU에 의해 발생하는 인터럽트이다
- 비동기 인터럽트 (하드웨어 인터럽트) : 주로 입출력 장치에 의해 발생한다.
- 효율적인 작업을 위해 입출력 장치가 일을 하는 동안 cpu는 다른 작업을 하고 있고 입출력 장치의 작업이 완료되면 인터럽트를 발생시킨다. 그러면 cpu가 입출력장치의 작업을 확인한다. (cpu의 작업속도 > 입출력장치의 작업속도)
하드웨어 인터럽트 처리순서
- 입출력 장치가 cpu에게 인터럽트 요청 신호를 보낸다.
- cpu는 항상 명령어를 인출하기 전에 인터럽트 여부를 확인한다.
- 요청을 확인하고 인터럽트 플래그(flag register에 있다)를 통해 현재 인터럽트를 받아들일 수 있는지를 확인한다.
- 인터럽트를 받아들일 수 있으면 cpu는 현재까지의 작업을 백업한다.
- 인터럽트 백터를 참조하여 인터럽트 서비스 루틴을 수행한다.
※ 다만 인터럽트 플래그값이 인터럽트를 현재 처리할 수 없는 상태일지라도 하드웨어 인터럽트의 우선순위가 높으면 그 인터럽트를 가장 먼저 수행한다. (이처럼 막을 수 없는 인터럽트를 non maskable interrupt라고 한다.)
※ 인터럽트 백터 : 인터럽트 서스 루틴을 식별하기 위한 정보이다. 메모리 위에 올라가 있는 인터럽트 서비스 루틴의 시작주소를 알 수 있다.
※ 인터럽트 백터 테이블 : 인터럽트 백터들을 테이블형식으로 모아놓은 것이다.
※ 인터럽스 서비스 루틴 (인터럽트 핸들러라고도 부른다) : 인터럽트가 발생했을 경우 인터럽트를 처리하기 위한 프로그램이다. (이 서비스 루틴도 메모리에 올라가 있다.)
인터럽트가 발생 → 인터럽트 요청 신호와 인터럽트 백터를 보냄 → IF전 인터럽트 여부 확인 → 인터럽트 플래그 확인 → 인터럽트를 처리할 수 있으면 현재까지의 작업 백업 → 인터럽트 백터를 참조하여 인터럽트 서비스 루틴 수행 → 백업해 놓은 작업 복구
※
폴트 : 예외를 처리한 직 후 예외가 발생한 코드부터 실행하는 것
트랩 : 예외가 발생한 명령어의 다음 명령어부터 실행하는 것 (디버깅시 사용)
중단 : 프로그램 강제종료 (심각한 오류)
'컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 명령어 파이프라인 (0) | 2023.06.12 |
---|---|
코어와 멀티코어 (0) | 2023.06.02 |
CPU의 구성 (0) | 2023.05.25 |
명령어 (0) | 2023.04.24 |
헷갈리는 데이터 단위 정리 (0) | 2023.04.19 |