-
질문 정리 ( Interrupt / Interrupt vs Polling / Edge Trigger vs Level Trigger )면접 준비/컴퓨터구조 2018. 11. 21. 00:18
1. 인터럽트(Interrupt)란?
인터럽트란 CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능이다.
CPU에 인터럽트가 걸리면 CPU는 현재 수행하던 작업에 대한 정보를 저장한 후 인터럽트 서비스 루틴(ISR)을 수행한다.
인터럽트 처리를 마치면 이전에 수행하던 작업을 진행한다.
인터럽트는 크게 두개로 나뉜다.
1) 외부 인터럽트 : 입출력 장치, 타이밍 장치, 전원 등의 외부적인 요인에 의해서 발생
2) 내부 인터럽트 : 잘못된 명령이나 데이터를 사용할 때 발생하는 인터럽트
2. 인터럽트 우선 순위
동시에 여러 인터럽트가 발생하면 우선 순위를 정해서 하나씩 처리해야한다.
-> 생각하던 것과 마찬가지로 중요한 인터럽트가 우선적으로 처리 되어야한다.
우선 순위를 결정하는 방법은 소프트웨어적인 방법과 하드웨어적인 방법이 있다.
1) 소프트웨어적인 방법 : Polling(폴링)
+ 인터럽트 요청 플래그를 차례로 검사하여 가장 높은 우선순위의 자원부터 서비스 루틴을 수행
+ 반응 시간이 느리다. -> 모든 인터럽트를 조사
+ 회로가 간단 -> 융통성
+ 별도의 하드웨어가 없기 때문에 경제적이다.
2) 하드웨어적인 방법 : Vectored Interrupt(벡터 인터럽트)
+ 인터럽트를 요청할 수 있는 장치에 버스를 직렬 또는 병렬로 연결하여, 인터럽트 요청 장치의 번호를 CPU에게 알리는 방식
- 병렬 연결 방식 : 각 장치를 개별적인 회선으로 연결, Mask Register의 비트 위치에 의해 우선순위 결정
높은 우선순위 서비스시 낮은 우선순위 비활성화 기능
- 직렬 연결 방식(데이지 체인/Daisy Chain) : 모든 장치를 하나의 회선에 직렬 연결, 우선순위가 높은 장치 순으로 선두에 위치시켜 연결
3. Interrupt vs Polling
Interrupt와 Polling 모두 어떤 Event에 대한 프로세스의 반응 방식이다.
Interrupt :
HW 적으로 구성되어 있어서 원하는 값이 들어오면 등록된 함수를 호출하게 된다. -> CPU가 Sleep에 들어가 있을 때만 사용할 수 있다.
CPU가 어떤 다른 연산을 수행하고 있던 중이라도 특정 Event가 발생할 경우 그 즉시 연산을 멈추고 발생한 Event를 처리하기 위한 연산을 수행한다. 그리고나서 Event 수행이 끝나면 다시 이전의 프로세스로 돌아가 연산을 수행한다.
Polling :
SW 적으로 주기적으로 값을 읽어가는 방식이다. -> CPU가 항상 깨어 있을 때만 사용할 수 있다.
CPU가 특정 Event를 처리하기 위해 그 Event가 발생 할 때 까지 모든 연산을 해당 Event가 발생하는지 감시하는데 쓰인다.
4. Edge Trigger vs Level Trigger
특정 타이밍에서 특정한 일을 처리하기 위해 트리거를 활용한다.
트리거는 일반적으로 2개로 나누어 사용할 수 있다.
Edge Trigger :
인터럽트가 발생해서 레벨이 상승(Rising)하거나 하강(Falling)할 때 발생
상승 엣지와 하강 엣지 두 경우가 있다.
즉, 어떤 특정한 일이 발생하는 '순간','찰나'에만 발생한다.
Level Trigger :
인터럽트가 발생해서 그 레벨이 인가될 때 발생
하이 레벨과 로우 레벨 두 경우가 있다.
즉, 어떤 특정한 일이 발생하고 있는 '동안'에 발생한다.
'면접 준비 > 컴퓨터구조' 카테고리의 다른 글
질문 정리 ( 하드웨어 구성 요소 / 중앙처리장치 ) (0) 2018.11.20 질문 정리 ( 프로세스 vs 스레드 / 스택 vs 큐 / 코드영역 ... ) (0) 2018.11.20