1. 1
2016 Final-term Examination (100)
Architecting Smart Devices
Date: 2016-12-13
1. Smart Device에 실시간으로 들어오는 Sensor 정보를 획득하기 위해서는
EventListener, BroadcastReceiver 중 어떤 것을 써야 하는가? 답을 선택한
이유를 EventListener 혹은 BroadcastReceiver 특성 관점에서 비교하면서 설
명하라. (20)
- Sensor 정보 수신용으로 EventListener가 적당하며, Android에서 Sensor 정
보 획득을 위해서 SensorEventListener를 사용한다.
- Sensor 정보는 특정한 App만 필요로 하는 특별한 Message이며 거의 연속
적으로 정보가 생산되므로 EventListener가 적합하다. 즉, EventListener는 특
별한 Message를 처리하고 빈번한 정보 수신을 특징으로 하기 때문에
Sensor 정보 수신에 적합하다.
2. RTOS에 대해 설명하라. (30)
1) RTOS가 무엇이며 어디에 사용되는지 예를 들어 설명하라. (10)
- RTOS는 실시간 운영 체제(Real-Time Operating System)의 약자로써, 지연
없이 Computer 연산을 즉각 실행(실제로는 연산 실행 시간이 규정됨)할 수
있는 운영 체제를 의미한다.
- 연산 수행의 시간적 신뢰성이 중요한 응용에 사용된다. 예를 들면 시간의
선후 관계가 매우 중요한 원자력 발전소의 제어 System, 의료 장비의 구동
System 등에 사용된다.
2) Hard, Soft RTOS의 차이점을 실시간 처리 성공 여부, Error 발생시 대처 관
점에서 설명하라. (20)
- Hard RTOS: 연산 실행 시간이 기준을 넘어가면 즉각적으로 실패(Error)로
2. 2
간주함, Error가 발생한 이후의 결과는 모두 무시함
- Soft RTOS: 연산 실행 시간을 지켜야 하지만 기준을 넘었다고 완전한 실패
로 규정하지 않음, Error가 발생한 이후의 결과들도 버리지 않고 필요한 경우
사용함
3. 사물인터넷(IoT: Internet of Things)에서 Cloud Computing과 Big Data가 필
요한 이유를 논리적으로 설명하시오. (10)
- IoT 장치는 일반적으로 CPU 성능이 낮기 때문에 복잡한 연산 능력을 가지
기 어려워 복잡한 계산은 고성능 Server에 접속하여 수행해야 함; 이러한 특
징으로 인해 Cloud Computing(Local Device에서 연산을 직접 실행하지 않고
Internet 기반으로 원격에서 연산하는 방식)이 IoT 장치에는 필수적으로 사용
되어야 함
- 또한 IoT 장치는 Sensor가 장착되었기 때문에 막대한 양의 Data가 실시간
으로 발생하므로, 이를 처리하려면 Big Data(기존의 Data 처리 방식이 적절
하지 않는 대량의 Data 처리 기술) 기술이 필수적으로 사용되어야 의미 있는
결과를 도출할 수 있음
4. Bluetooth에 대해 답하시오. (20)
1) 옆의 Piconet에서 Node와 Active Member가 각각
몇 개인지 쓰고 설명하라. (10)
- Node수 = 7개: SB를 제외해야 함
- Active Member수 = 3개: SB, P를 제외해야 함
2) Active Member와 Parked Member 차이는 무엇인
가? (10)
- Active Member는 필요한 경우 즉각적으로 통신할 수 있는 Member
- Parked Member는 Sleep Mode에 들어갔기 때문에 바로 통신할 수 없고 주
3. 3
기적으로 깨어 Master Node가 보내는 Beacon 신호에 자기 주소가 있을 때
만 통신할 수 있음
5. 수신 통화 상태를 확인하기 위한 Android Code를 제시하라. Override
Function을 제시할 필요 없이 아래 기능을 수행하는 Code만 작성하면 된다.
여기서 Context Instance는 cxService, 수신 통화용 EventListener Class는
PhoneRxLx라고 가정하라. (20)
1) OS로부터 Telephony Manager 획득
2) PhoneRxLx의 Instance를 선언
3) 2)에서 만든 EventListener의 Instance를 Telephony Manager에 등록
TelephonyManager teleMx = (TelephonyManager)
cxService.getSystemService(Context.TELEPHONY_SERVICE);
PhoneRxLx phoneRxLx;
teleMx.listen(phoneRxLx, PhoneStateListener.LISTEN_CALL_STATE);