일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 혼공SQL
- 자바
- 이펙티브자바
- aop
- 자바스터디
- 알고리즘분석
- SQL쿡북
- 스프링부트와AWS로혼자구현하는웹서비스
- react
- java
- CleanCode
- 이펙티브 자바
- 도메인 주도 개발 시작하기
- 인덱스
- 인프런김영한
- 자료구조
- 기술면접
- AWS
- 알고리즘
- 이팩티브 자바
- jpa
- 네트워크
- 인프런백기선
- mysql
- AWS RDS
- MariaDB
- DDD
- 클린코드
- vue.js
- 자바예외
- Today
- Total
기록이 힘이다.
폴링과 인터럽트 본문
1. 폴링(Polling)
-정해진 시간 또는 순번에 상태 변화가 있는지를 Check
-프로그램 소스에 상태 체크를 위한 로직을 반복적으로 추가
-상태 변화가 있을 때 정해진 순서대로 처리: 타이밍을 놓치는 경우 발생
-비상사태(전원 차잔) 또는 급하게 처리해야 할 일에 대한 신속한 대응이 어려움
단점
폴링은 정해진 이벤트의 발생 여부를 계속 감시
감시 중 다른 일을 수행하지 못하므로 비효율적
Polling의 결과로 일을 수행할 때 또 다른 이벤트가 발생하면 처리가 어려움
2. 인터럽트(Interrupt)
-수행 도중 외부에서 정해져 있는 인터럽트 핀에 신호가 들어옴 ->MCU는 동작을 멈추고 해당 인터럽트 서비스 루틴을 실행
-사건이 발생할 때만 기능을 수행 -> 매우 효율적으로 비정규적인 이벤트에 대응할 수 있음
>> 인터럽트 처리 절차
1. 현재 실행 중인 명령어 실행 중지
2. 다음 실행 명령 주소를 Stack에 저장
3. 현재 레지스터 등의 상태 저장
4. 다른 인터럽트를 블럭시킴
5. ISR(Interrupt Service Routine)의 벡터 주소 적재
6. ISR 수행
7. 인터럽트로부터 프로그램 루틴으로 복귀 및 레지스터 복구
8. 명령 수행
>>인터럽트의 종류
하드웨어 인터럽트
내부 인터럽트
-MCU에 정의되지 않는 명령 실행
-Zero divide, access protected memory area: Atmega 128과 2560에는 없음(pin change interrupt는 2560에만 있음)
외부 인터럽트
-타이머의 지정 시간 경과, 입력 장치 서비스 요구, 출력장치 작업 종료, ADC 변환의 완료, DMA동작 종료 시 멀티프로세서 간의 통신 요구 등 마이크로프로세서와 독립되어 있는 외부 장치에 의해 발생되는 순수한 의미의 인터럽트
소프트웨어 인터럽트: 소프트웨어적으로 발생시키는 인터럽트