안드로이드폰에서 멀티코어 지원.
글쓴이: greatlee / 작성시간: 수, 2011/09/14 - 6:59오후
요즘 핸드폰 구경하다보면 멀티코어제품들이 많이 나오는데요..
그때마다 좀 해깔립니다.
안드로이드 플랫폼은 리눅스커널에 자바vm을 올린것으로 알고 있습니다. 그런데 vm이라는물건이 하나의 코어만을 사용할 수 있도록 설계된것이 아닌가요?
하나의 코어가 하나의 프로세스를 사용하는 프로세스모델에 충실하게 구현되어있는걸 이전 프로젝트에서 확인한적도 있었구요.. (자바 1.4때였습니다). 최신 1.7버전의 api문서를 봐도 프로세스나 쓰레드에 코어를 지정할수 있는 메소드들은 안보이네요.
안드로이드에서 사용하는 vm은 이 프로세스 모델을 개선해서 vm이 두개의 코어를 사용할 수 있는것인가요?
아니면 vm을 두개 올려서 서로간에 원격통신을 하듯이 작업하게 되나요?
하여간 자바라는 원죄를 가진 안드로이드플랫폼에서 멀티코어 제품이 나오는걸 보면 희안하기도 하고.. 혼란스럽기도 하네요.
vm개선이 없다면.. 멀티코어 안드로이드는 무용지물이며.. 배터리 소모량만 많은 물건이 되어버리는데.. 정말 그렇다면 소비자로써 화를 내야 하는건지..
도와주세요. 고수님들.... 제가 오해한게 맞기를 바라며..
Forums:
자바는 잘 모르지만, 일반적으로 멀티코어 활용을
자바는 잘 모르지만, 일반적으로 멀티코어 활용을 할때는 그냥 다중스레드로 돌리면 됩니다.
코어를 일일이 지정하는 일은 하지 않습니다.
감사합니다..
제가 몰랐던것을 깨우쳐주셨네요.
그냥 개념없이 쓰레드 프로그래밍만 했네요.. 기초적인것도 모르고..
저는 여지껏 프로세스 하나당 하나의 코어만 사용할 수 있는것으로 알고 있었슴다 ;;
쓰레드는 당연히 프로세스가 사용하고 있는 코어만 사용하는걸로 이해..
예전 OS책에는 그렇게 나와있었지만.. 지금은 시대가 바뀌었으니..
제가 멀티코어에 대해 오해가 있었던것 같습니다..
그래도 테스트는 해봐야 직성이 풀릴듯 하네요..
데몬 띄우고 자식 쓰레드에 부하를 줘서.. 모든 코어가 일을 나누어서 하는걸 봐야 개운할것 같네요.
거듭 감사합니다.
일단 안드로이드 구조 자체가 "하나의 앱당 하나의
일단 안드로이드 구조 자체가 "하나의 앱당 하나의 프로세스" 니까, 여러 앱이 동시에 돌아가는 폰의 특성상 멀티코어를 이미 활용하고 있을것 같네요.
단일 앱이 멀티코어를 잘 지원하는지는 모르겠습니다.
질문: 앱이 프로세스 단위로 기동되나요?
저는 앱이 자바 vm위에서 쓰레드단위로 기동되는것으로 이해하고 있었는데요..
프로세스기반으로 작동한다면 모든걸 다시 원점에서 생각해보아야겠네요.
1. 리눅스 커널을 사용해서 부팅
2. 자바vm을 베이스로 사용하는 UI를 실행
3. 앱은 프로세스 단위로 실행
제가 정리한 위의 3개가 옳게 이해한것인지 확인이 필요합니다.
무식해서 죄송합니다 ㅠㅠ
1번은
물으시는 질문은 메뉴얼 첫번째와 두번째 정도 정독하면 초반에 등장하는 내용들입니다. 메뉴얼을 추천합니다.
1번은 http://developer.android.com/guide/basics/what-is-android.html 보십시오.
2번은 Java VM 이란건 없습니다. 용어 장난이라고 느끼실수 있지만, Dalvik virtual machine 이라는 Java Language 를 지원하는 안드로이드 플랫폼용 vm 입니다.
3번에 관해서
http://developer.android.com/guide/topics/fundamentals.html
process 만 검색해서 해당 구간만 읽어보세요.
좀더 자세한건 http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html 입니다.
감사합니다.
이제서야 궁금증이 풀리는군요... 사실 공부를 너무안했던게 티가난건가요..
원문이라 바로 읽어내려가기는 쉽지않겠지만 정독해보도록 하겠습니다.
친철한 답변 감사합니다.
댓글 달기