안드로이드폰에서 멀티코어 지원.

greatlee의 이미지

요즘 핸드폰 구경하다보면 멀티코어제품들이 많이 나오는데요..
그때마다 좀 해깔립니다.

안드로이드 플랫폼은 리눅스커널에 자바vm을 올린것으로 알고 있습니다. 그런데 vm이라는물건이 하나의 코어만을 사용할 수 있도록 설계된것이 아닌가요?

하나의 코어가 하나의 프로세스를 사용하는 프로세스모델에 충실하게 구현되어있는걸 이전 프로젝트에서 확인한적도 있었구요.. (자바 1.4때였습니다). 최신 1.7버전의 api문서를 봐도 프로세스나 쓰레드에 코어를 지정할수 있는 메소드들은 안보이네요.

안드로이드에서 사용하는 vm은 이 프로세스 모델을 개선해서 vm이 두개의 코어를 사용할 수 있는것인가요?
아니면 vm을 두개 올려서 서로간에 원격통신을 하듯이 작업하게 되나요?

하여간 자바라는 원죄를 가진 안드로이드플랫폼에서 멀티코어 제품이 나오는걸 보면 희안하기도 하고.. 혼란스럽기도 하네요.
vm개선이 없다면.. 멀티코어 안드로이드는 무용지물이며.. 배터리 소모량만 많은 물건이 되어버리는데.. 정말 그렇다면 소비자로써 화를 내야 하는건지..

도와주세요. 고수님들.... 제가 오해한게 맞기를 바라며..

klara의 이미지

자바는 잘 모르지만, 일반적으로 멀티코어 활용을 할때는 그냥 다중스레드로 돌리면 됩니다.
코어를 일일이 지정하는 일은 하지 않습니다.

greatlee의 이미지

제가 몰랐던것을 깨우쳐주셨네요.
그냥 개념없이 쓰레드 프로그래밍만 했네요.. 기초적인것도 모르고..
저는 여지껏 프로세스 하나당 하나의 코어만 사용할 수 있는것으로 알고 있었슴다 ;;
쓰레드는 당연히 프로세스가 사용하고 있는 코어만 사용하는걸로 이해..

예전 OS책에는 그렇게 나와있었지만.. 지금은 시대가 바뀌었으니..
제가 멀티코어에 대해 오해가 있었던것 같습니다..

그래도 테스트는 해봐야 직성이 풀릴듯 하네요..
데몬 띄우고 자식 쓰레드에 부하를 줘서.. 모든 코어가 일을 나누어서 하는걸 봐야 개운할것 같네요.

거듭 감사합니다.

planetarium의 이미지

일단 안드로이드 구조 자체가 "하나의 앱당 하나의 프로세스" 니까, 여러 앱이 동시에 돌아가는 폰의 특성상 멀티코어를 이미 활용하고 있을것 같네요.
단일 앱이 멀티코어를 잘 지원하는지는 모르겠습니다.

익명 사용자의 이미지

저는 앱이 자바 vm위에서 쓰레드단위로 기동되는것으로 이해하고 있었는데요..

프로세스기반으로 작동한다면 모든걸 다시 원점에서 생각해보아야겠네요.

1. 리눅스 커널을 사용해서 부팅
2. 자바vm을 베이스로 사용하는 UI를 실행
3. 앱은 프로세스 단위로 실행

제가 정리한 위의 3개가 옳게 이해한것인지 확인이 필요합니다.

무식해서 죄송합니다 ㅠㅠ

neocoin의 이미지

물으시는 질문은 메뉴얼 첫번째와 두번째 정도 정독하면 초반에 등장하는 내용들입니다. 메뉴얼을 추천합니다.

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 입니다.

greatlee의 이미지

이제서야 궁금증이 풀리는군요... 사실 공부를 너무안했던게 티가난건가요..
원문이라 바로 읽어내려가기는 쉽지않겠지만 정독해보도록 하겠습니다.
친철한 답변 감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.