티스토리 뷰

지난 6월 25일은 갤럭시 S3가 발표된 것 말고도 의미깊은 행사가 하나 더 열렸습니다. 바로 삼성 개발자 데이 2012가 처음으로 우리나라에서 열린 것이죠. 그동안 해외에서는 종종 개최된 적이 있지만 대한민국에서는 처음이었습니다.


많은 개발자들이 참여한 가운데 저도 한 자리를 얻어 구경해 볼 수 있었는데요, 오늘은 그 가운데 한 세션인 'ICS 멀티코어 기반 메모리의 이슈 및 개발 팁' 이야기를 해볼까 합니다.


강연을 담당한 임근식님 소개입니다. 코리아 안드로이드 기술 커뮤니티 운영진이시죠. 보시다시피 다양한 활동을 하고 계십니다.


순서는 이렇게 진행됩니다.


안드로이드는 초기 버전은 지금과는 전혀 다른 모습이었습니다만, 2.0/2.1을 거쳐 성능에서 개선되고 메모리 누수를 최소화한 2.2 프로요에 이르러서 어느 정도 수준에 올라섰죠.

2.3 진저브레드 또한 VoIP, NFC 등을 지원하고 UX 사용성 등이 개선되었습니다. 올 상반기에 새로 나온 스마트폰 대부분이 진저브레드를 탑재할 만큼 많이 쓰이고 있는 버전이죠.


태블릿을 위한 3.0 허니컴, 그리고 이들을 통합한 4.0 ICS에 이르렀습니다. ICS에서는 허니컴에 이어 멀티코어 프로세서를 위한 지원하는 부분과 보안 엔진 등이 추가되었습니다.
 

멀티코어 프로세서를 위한 java.util.Concurrent 패키지가 많이 활용되게 되었습니다. 위 그림처럼 다양한 애플리케이션이 이를 기반으로 운용되죠.


ICS에서는 멀티코어를 지원하는 POSIX C Thread의 표준 API를 지원하게 되었다고 합니다.


ICS에서 멀티코어에 대응하는 스케쥴링입니다. CPU Affinity와 Synchronization, Volatie을 잘 활용해야 한다고 합니다.


메모리 관리 부분입니다. 안드로이드는 따로 애플리케이션을 종료하지 않아도 Low Memory Killer가 알아서 사소한 것->중요한 것으로 그 우선순위에 따라 순차적으로 종료시키도록 되어있습니다.


OOM_ADJ 값에 따라 메모리 관리가 진행됩니다. 여기서 OOM은 Out-Of-Memory 입니다.


위 그림에 나와있듯이 남은 메모리가 줄어드는데 더 이상 확보가 안된다면 1->4로 가게 되면 결국 시스템이 리부트하게 되죠.


각각 제원이 다른 안드로이드 단말기에서의 메모리 관리 문제에 대한 이야기입니다.


별도의 메모리 관리자 프로그램으로 너무 자주 메모리 정리를 하는 것이 꼭 좋은 건 아닙니다. 안드로이드는 자주 쓰는 애플리케이션을 메모리에 얹어놓는데, 이들도 지워져서 재실행에 시간이 많이 걸리기 때문이죠.


다양한 디바이스를 지원해야 하는 안드로이드의 호환성 문제에 대한 이야기입니다.


마지막으로 KAndroid 커뮤니티 소개 및 삼성 개발자 사이트에 대한 소개입니다.



저도 지금은 개발자가 아닌지라 많은 내용을 이해하지는 못했지만 전체적인 흐름을 살펴보는데는 좋은 시간이었던 것 같습니다. 다만 멀티코어 이슈보다는 메모리 쪽에 집중된 것이 조금 아쉬웠네요. 위 내용에서 이해가 안 되시는 부분은 강사이신 임근식 님에게 연락해 보시면 좋을 듯합니다.

그럼 다음 세션 소개에서 만나겠습니다.