명령어 사이클
프로그램 속 명령어들은 일정한 주기가 반복되며 실행
이 주기를 명령어 사이클이라고 함
인출 사이클 : 가장 먼저 CPU로 갖고 와야 한다
실행 사이클 : 갖고 왔으면 실행해야 한다
일반적으로 CPU는 인출-실행-인출-실행-....... 과정이 반복됨
그런데 CPU로 명령어를 가지고 와도 바로 실행이 불가능한 경우도 있다 (추가적으로 메모리에 접근해야 하는 방식도 있다)
여기서 인터럽트라는 개념이 생김
인터럽트는 정해진 흐름대로 실행되는 것을 끊어버리는 것임 ..
인터럽트(interrupt) : 방해하다, 중단시키다
'CPU가 꼭 주목해야 할 때', 'CPU가 얼른 처리해야 할 다른 작업이 생겼을 때' 발생
동기 인터럽트 (예외) : CPU가 예기치 못한 상황을 접했을 때 발생
- 종류 : 폴트 , 트랩 , 중단 , 소프트웨어 인터럽트
비동기 인터럽트 (하드웨어 인터럽트) : 주로 입출력장치에 의해 발생
- 알림과 같은 역할 (세탁기 완료 알림, 전자렌지 조리 알림)
하드웨어 인터럽트
알림과 같은 인터럽트
입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해 하드웨어 인터럽트 사용
입출령장치는 CPU에 비해 느리다
인터럽트가 없다면 CPU는 프린트 완료 여부를 확인하기 위해 주기적으로 확인해야 한다
입터럽트가 있다면 입출력 작업 동안 CPU는 다른 일을 할 수 있다
하드웨어 인터럽트의 처리 순서
다만 모든 인터럽트를 인터럽트 플래그로 막을 수 있는건 아니다
CPU가 인터럽트를 받아들이기로 했다면 인터럽트 서비스 루틴 실행
인터럽트 서비스 루틴이란,
인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하기 위한 프로그램
인터럽트 서비스 루틴 또한 프로그램이기에 메모리에 저장되어 있음
인터럽트 벡터 : 각각의 인터럽트를 구분하기 위한 정보
(인터럽트 벡터 모아둔게 인터럽트 벡터 테이블)
'CPU가 인터럽트를 처리한다' == '인터럽트 서비스 루틴을 실행하고 원래 수행하던 작업으로 다시 되돌아온다'
( + 그리고 인터럽트의 시작 주소는 인터럽트 벡터를 통해 알 수 있다)
'CS' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어 병렬 처리 기법 (0) | 2023.05.07 |
---|---|
[혼자 공부하는 컴퓨터구조 + 운영체제] - 빠른 CPU를 위한 설계 기법 (0) | 2023.05.07 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - 레지스터 (0) | 2023.04.23 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치 (0) | 2023.04.16 |
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어의 구조 (0) | 2023.04.16 |