최근에 올라오는 글을 보면, 자바만 편애(응?)하고 나머지는 찬밥으로 취급한다는 생각이 들지도 모르겠다. 그래서 잠시 분위기 전환을 위해 오늘은 아주 간만에 임베디드 관련(물론 자바가 들어있긴 하다. ㅎㅎㅎ) 책을 하나 소개해드리려 한다. 안드로이드 프로그래밍 관련 서적이 아니라 기반 동작 원리를 코드로 다루는 '안드로이드 하드웨어 서비스'가 오늘의 주인공이다. 이 책은 안드로이드 관련 기술 중에 전화기로서 동작하는 부분을 수직(vertical)으로 파고들고 있기에 일반적인 안드로이드 앱 개발자가 아닌 안드로이드 핵심 서비스를 대상으로 뭔가를 하려는 개발자에게 적합하다. 책을 읽기 위해 선행 지식이 필요한데, 리눅스 기초 지식(부팅 과정, 커널 기초), C/C++, 자바를 알고 있어야 애로사항이 꽃피지 않을 것 같다.
'전화기로서 동작하는'이라는 표현을 썼는데, 이 책 목차를 살펴보면 왜 이런 표현이 나왔는지 이해가 갈 것이다. 2장 RIL(Radio Interface Layer), 3장 텔레포티 프레임워크, 4장 USIM, 5장 안드로이드 파워 매니지먼트, 6장 안드로이드 커널 파워 매니지먼트라는 각 목차 제목만 봐도 이 책의 집필 의도와 목적이 확실하게 드러난다. 그런데, 단순히 이론적인 원론이 아니라, 실제 코드(자바와 C/C++)를 중심으로 각 계층 사이의 상호 연관성, 자료 흐름, 제어 흐름 등을 설명하고 있으므로 관련 코드 분석에 앞서 조감할 목적으로 적합하다는 생각이다. 다이어그램과 흐름도를 사용한 구조 소개에 이어 각 부분별로 계층적인 코드 파고 들기(drill down) 예제를 제시하는 이 책은 큰 그림을 그린 다음 함수나 이벤트 호출에 따라 대응하는 코드를 각개 격파하는 방식으로 설명을 진행하므로 나무를 보느라 숲 속에서 길을 잃어버리지 않게 세심하게 배려하고 있다. Yes24 책 페이지에 가서 상세 이미지를 살펴보면 감이 오겠다(예제 이미지가 코드와 연결된 부분이 아니므로 코드와 연결된 부분이 나왔으면 더 좋을 뻔 했다. 실제 본문을 넘기다보면 프로그래머 관점에서 기술되어 있다는 느낌이 들 것이다). 각 장이 유기적으로 수직 연결되어 있으므로 차근차근 읽는 방식을 권장한다.
개인적으로는 전화기의 기본 기능과 관련된 설명이 무척 흥미로웠고, 특히 기존에 전혀 감을 잡고 있지 못했던 USIM 부분이 많은 도움을 줬다. 이제 어디 가서 USIM 관련 기술 토론이 벌어지더라도 주고받는 용어를 이해할 기본 소양을 갖춘 것 같다. 또한 전화기 특성에 맞춘 전원 관리 기법과 임베디드 관점에서 자바와 C 코드 사이에서 연동을 위한 설계 부분을 좀더 신경써서 살펴볼 수 있었다는 점도 좋았다.
결론: 일반적인 전화 통신 규약에 안드로이드 특성에 변경된 리눅스 특성까지 고려해 전반적인 소프트웨어 아키텍처의 흐름을 짚어주므로 안드로이드로 스마트폰을 개발하는 분들이라면 꼭 한번 읽어보시기 바란다. 추천!
댓글 없음:
댓글 쓰기