• 검색 결과가 없습니다.

Dalvik Virtual Machine ⿚㍳

N/A
N/A
Protected

Academic year: 2022

Share "Dalvik Virtual Machine ⿚㍳"

Copied!
2
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

Dalvik Virtual Machine ⿚㍳

㫆㡗䞚, ῢ㣿㧎, 㟧㔏㭖, ⺇㥺䦻

㍲㤎╖䞯ᾦὋὒ╖䞯㩚₆䅊䜾䎆Ὃ䞯⿖

e-mail : ypcho, yikwon, [email protected], [email protected]

Analysis of Dalvik Virtual Machine

Yeongpil Cho, Yongin Kwon, Seungjun Yang, Yunheung Paek Dept. of Electrical Engineering, Seoul National University

殚檃

䡚㨂 㓺Ⱎ䔎䙆㠦㍲ Ṗ㧻 ⍦Ⰲ 㝆㧊⓪ OS ⓪ 㞞✲⪲㧊✲㧊┺. 㞞✲⪲㧊✲⓪ 㡺䝞 ㏢㓺 䝢⨁䙒 㧊₆ ➢ⶎ㠦 㧊⯒ 㑮㩫䞮㡂 ₆㫊 ₆㑶㦚 Ṳ㍶䞮Ệ⋮ ㌞⪲㤊 ₆㑶㦚 Ṳ⹲䞮⩺⓪ 㔲☚Ṗ Ⱔ㧊 㧊⬾㠊 㰖ἶ 㧞┺. 㧊⯒ 㥚䟊 䞚㑮㩗㦒⪲ 㔲䟟䟊㟒 䞶 ộ㧊 Dalvik Virtual Machine 㦚 ⿚㍳䞮⓪ 㧧㠛㧊┺. 㧊 㠦, ⽎ 㡆ῂ⓪ Dalvik Virtual Machine 㦮 㭒㣪 㣪㏢⯒ ⿚㍳䞮㡖┺.

1. 昢嵦

㾲⁒ IT ㌆㠛㦮 ⶊỢ㭧㕂㦖 㓺Ⱎ䔎䙆㠦 ⏩㡂㧞┺.

㌂㔺 ὒỆ㠦☚ 㥞☚㤆 ⳾⹪㧒㧊⋮ 㕂゚㞞㦚 OS 㺚㣿 䞲 㓺Ⱎ䔎䙆㧊 㫊㨂䟞㦒Ⳇ, ⁎ 㧊㩚㠦⓪ 㥞☚㤆 CE

⋮ Ⰲ⑛㓺⯒ ₆⹮㦒⪲ 䞮⓪ PDA (Persnal Digital Assistant)Ṗ 㫊㨂䞮㡖┺. 䞮㰖Ⱒ 㧊✺㦮 㔲㧻 䕢 ⩻ 㦖 䡚㨂㦮 㓺Ⱎ䔎䙆㠦 ゚䞮㰖 ⴑ䟞┺.

2007 ⎚ 㞚㧊䙆㦮 㿲㔲⓪ 㓺Ⱎ䔎䙆 㔲㧻㠦 ㌞⪲㤊 䕾⩂┺㧚㦚 㩲㔲䞮㡖┺. 㼁 ⻞㱎⓪ UX (User Experien- ce)⯒ ⹪䌫㦒⪲ 䞮⓪ ㌂㣿㎇ ṫ䢪㧊Ⳇ, ⚦ ⻞㱎⓪ 㓺 Ⱎ䔎䙆 OS 㢖 㟇㦚 ⹪䌫㦒⪲ 䞮⓪ ECO 㔲㓺䎲㧊┺.

㧊⩂䞲 䕾⩂┺㧚㦖 㔲㧻㠦 ㎇Ὃ㩗㦒⪲ 㩫㹿䞮Ợ ♮㠞 㦒Ⳇ, 㑮 Ⱔ㦖 ₆㠛✺㧊 䕾ῢ㦚 ⏎Ⰲἶ 㔲㧻㠦 㰚㿲 䞮Ợ ♮㠞┺.

⁎Ⱂ1 㓺Ⱎ䔎䙆 OS ⼚ 㔲㧻 㩦㥶㥾[1]

⁎Ⱂ 1 㠦 2010 ⎚ ⿖䎆 2011 ⎚ ₢㰖 㭒㣪 㓺Ⱎ䔎䙆 OS 㦮 㔲㧻㩦㥶㥾㧊 ⋮䌖⋮㧞⓪◆, 㧊⯒ ⽊Ⳋ 㞞✲⪲

㧊✲㦮 㔲㧻 㩦㥶㥾㧊 ∎㭖䧞 ⏨㞚㰖⓪ ộ㦚 䢫㧎䞶 㑮 㧞┺. 㧊⩂䞲 ộ㠦⓪ Ⱔ㦖 㧊㥶Ṗ 㧞Ỷ㰖Ⱒ, Ṗ㧻

䋆 㤦㧎㦒⪲⓪ 㞞✲⪲㧊✲Ṗ 㡺䝞 ㏢㓺 OS ⧒⓪ 㩦㦚

✺ 㑮 㧞┺.

㧊㻮⩒ 㞞✲⪲㧊✲㦮 㔲㧻 㩦㥶㥾㧊 ⏨㞚㰦㠦 ➆⧒

㞞✲⪲㧊✲⯒ ₆⹮㦒⪲ 䞮⓪ 㑮Ⱔ㦖 㦧㣿ὒ ₆⻫㧊 Ṳ⹲♮ἶ 㧞㦒Ⳇ, 㧊⩂䞲 Ṳ⹲㦚 㥚䟊 㞞✲⪲㧊✲㦮

⌊⿖ ῂ㫆, 䔏䧞 Dalvik VM (Virtual Machine) 㦮 ῂ㫆

⯒ 䕢㞛䟊㟒 䞶 䞚㣪㎇㧊 㧞┺. ➆⧒㍲ ⽎ 㡆ῂ⓪ Dalvik VM㦮 ῂ㫆⯒ ṗ 㣪㏢ ⼚⪲ ㌊䘊⽊₆ 㥚䟊, Ⲓ 㩖 2 㧻㠦㍲ Dalvik VM 㧊 ⶊ㠝㧎㰖 ㌊䘊⽊ἶ, 3 㧻㠦

㍲ Dalvik VM 㦮 㭒㣪 㣪㏢⯒ ⿚㍳䞲 ⛺, 4 㧻㠦㍲ Ⱎ ⶊⰂ⯒ 䞶 ộ㧊┺.

2. Dalvik VM

⁎Ⱂ 2 㞞✲⪲㧊✲ 䝚⩞㧚㤢䋂[2]

⁎Ⱂ 2 㠦 ⋮䌖⋮ 㧞⓪ ộ㻮⩒, DVM (Dalvik VM)㦖 㞞✲⪲㧊✲ 䝚⩞㧚㤢䋂㦮 ⩆䌖㧚 䢮ἓ㦚 ╊╏䞮ἶ 㧞

┺. DVM 㦖 JVM (Java Virtual Machine)ὒ 㥶㌂䞮㰖Ⱒ ⳝⳝ 㹾㧊㩦㦚 Ṗ㰖ἶ 㧞┺.

제37회 한국정보처리학회 춘계학술대회 논문집 제19권 1호 (2012. 4)

- 45 -

(2)

DVM JVMs DEX code Java Bytecode Register based Stack Based Concurrent GC Various GCs

䚲2 DVM ὒ JVM ゚ᾦ

3. Dalvik VM 汞 渂殚 殚暒 把昣

(1) Ⲫ⳾Ⰲ 䞶╏

DVM 㦖 Ⲫ⳾Ⰲ ὖⰂ⯒ 㥚䟊 ⌊⿖㩗㦒⪲ mspace ⯒

㌂㣿䞮ἶ 㧞㦒Ⳇ, 㧊✺ mspace 㭧 GC (Garbage Collection)㦮 ╖㌗㧊 ♮⓪ mspace ⯒ GcHeap 㧊⧒⓪ 㧦⬢ῂ㫆⪲ ὖⰂ䞮ἶ 㧞┺. DVM 㠦㍲ GcHeap 㠦 Ⲫ⳾

Ⰲ⯒ 䞶╏䞶 ➢ ㌂㣿䞮⓪ 䞾㑮⓪ dvmMalloc(size, flag) 㧊Ⳇ, 㧊⓪ ṳ㼊⋮ ⺆㡊㦮 䞶╏ ❇㠦 ⍦Ⰲ ㌂㣿♲┺.

Ⲫ⳾ⰂṖ ⿖㫇䞮㡂 䞶╏㠦 㔺䕾䞶 ἓ㤆 dvmMalloc 㦖 㤆㍶㩗㦒⪲ GC ⯒ 䢎㿲䞮㡂 soft/weak/phantom ⩞䗒⩆

㓺⯒ 㩲Ệ䞲┺. ⁎ 䤚㠦☚ 䞶╏㠦 㔺䕾䞶 ἓ㤆 GC ⯒ 䢎㿲䞮㡂 finalizable ⩞䗒⩆㓺⯒ 㩲Ệ䞮Ợ ♮Ⳇ, Ἒ㏣

䟊㍲ 䞶╏㠦 㔺䕾䞶 ἓ㤆 GcHeap 㦚 䢫㧻䞮Ợ ♲┺.

(2) 㓺⩞✲ 䞶╏

㞞✲⪲㧊✲㠦㍲ ㌂㣿♮⓪ ⳾✶ 㓺⩞✲⓪ Ⰲ⑛㓺㠦 㰗㩧 ὖⰂ♮⓪ 㓺⩞✲㧊Ⳇ, 㓺⩞✲⓪ 㟇㠦㍲ Java API

⯒ 䐋䟊 䞶╏䞮⓪ ⹿㔳ὒ DVM ⌊⿖㠦㍲ 䞶╏䞮⓪

⹿㔳㧊 㧞┺. DVM ⌊⿖㠦㍲ 㓺⩞✲⯒ 䞶╏䞶 ἓ㤆㠦

⓪ dvmCreateInternalThread(pthread_t, name, func, func_a- rgs)⯒ 䐋䟊 䞶╏䞮Ợ ♲┺. 䞶╏♲ 㓺⩞✲⓪ DVM ⌊

⿖ 㩚㡃 㧦⬢ῂ㫆㧎 DvmGlobals 㠦㍲ threadList ⼖㑮

⯒ 䐋䟊 ὖⰂ♲┺. 㧊⯒ 䐋䟊 GC ⯒ 㑮䟟䞶 ➢, 䔏㩫 㓺⩞✲⯒ 㩫㰖䞮⓪ ❇㦮 㧧㠛㦚 䞶 㑮 㧞┺.

(3) 䋊⧮㓺, Ⲫ㏢✲ resolve

DVM 㠦㍲ ṳ㼊⯒ ㌳㎇䞮₆ 㥚䟊㍲⓪ 䟊╏ ṳ㼊㦮 䋊⧮㓺Ṗ resolve ♮㠊 㧞㠊㟒 䞲┺. Ⱎ㺂Ṗ㰖⪲, DVM 㠦㍲ 䔏㩫 䋊⧮㓺㦮 Ⲫ㏢✲⯒ 䢎㿲䞮₆ 㥚䟊㍲⓪ 䟊

╏ Ⲫ㏢✲Ṗ resolve ♮㠊 㧞㠊㟒 䞲┺. DVM 㦖 resolve

⯒ 䐋䟊 䟊╏ 䋊⧮㓺 ⹥ Ⲫ㏢✲⯒ Ⲫ⳾Ⰲ㠦 ⪲❿䞮Ợ

♲┺. resolve 㠦 ㌂㣿♮⓪ 䞾㑮⓪ dvmResolveClass(refe- rrer , classIdx, fromUnverifiedConstant) 㢖 dvmResolve- Method(referrer, methodIdx, methodType)㧊 㧞┺. ⚦ 䞾 㑮㠦 Ὃ䐋㩗㦒⪲ ㌂㣿♮⓪ referrer 㦖 䟊╏ 䋊⧮㓺 ⹥ Ⲫ㏢✲⯒ 䢎㿲䞮⓪ 䋊⧮㓺⯒ 㦮⹎䞮Ⳇ, resolve 䞾㑮⓪ referrer ⪲⿖䎆 DEX 䕢㧒㦮 㩫⽊ ⹥ 䋊⧮㓺⪲▪ 㩫⽊

⯒ 䣣✳䞮Ợ ♲┺. ⁎Ⰲἶ classIdx, methodIdx ⓪ DEX 䕢㧒 ⌊, 䟊╏ 䋊⧮㓺 䢏㦖 Ⲫ㏢✲ 㩫⽊Ṗ 㩖㧻♲ 㧎

◇㓺⯒ 㦮⹎䞲┺.

(4) Ⲫ㏢✲ 䢎㿲

Ⲫ㏢✲Ṗ resolve ♮Ⳋ 䢎㿲㦚 䞶 㑮 㧞┺. 㞞✲⪲

㧊✲㠦㍲ Ⲫ㏢✲⯒ 䢎㿲䞮⓪ ⹿⻫㦖 ┺㦢ὒ ṯ㧊 ῂ

⿚䞶 㑮 㧞┺.

(a) 㧎䎆䝚Ⰲ䔎 Ⲫ㏢✲㠦㍲ 㧎䎆䝚Ⰲ䔎 Ⲫ㏢✲ 䢎㿲 (b) 㧎䎆䝚Ⰲ䔎 Ⲫ㏢✲㠦㍲ ⍺㧊䕆ぢ Ⲫ㏢✲ 䢎㿲 (c) ⍺㧊䕆ぢ Ⲫ㏢✲㠦㍲ 㧎䎆䝚Ⰲ䔎 Ⲫ㏢✲ 䢎㿲 㧊㻮⩒ 㹾㧊Ṗ ⹲㌳䞮⓪ 㧊㥶⓪ ṗ Ⲫ㏢✲㦮 㓺䌳 䝚

⩞㧚㧊 㥚䂮䞮⓪ Ὁ㧊 ┺⯊₆ ➢ⶎ㧊┺. 㧎䎆䝚Ⰲ䔎 Ⲫ㏢✲㦮 㓺䌳 䝚⩞㧚㦖 DVM ⌊⿖㦮 Ṗ㌗ 㓺䌳㠦

㌳㎇♮Ⳇ ⍺㧊䕆ぢ Ⲫ㏢✲㦮 㓺䌳 䝚⩞㧚㦖 㧒⹮㩗㧎 㠊㎞な⩂ 䝚⪲㔲㩖㢖 Ⱎ㺂Ṗ㰖⪲ SP (Stack Point)⯒ ⹪ 䌫㦒⪲ ㌳㎇♲┺. 㧊 ➢ⶎ㠦, (a)㦮 ἓ㤆⓪ DVM 㧎䎆 䝚Ⰲ䎆 ⌊⿖㠦 Ṗ㌗ 㓺䌳 㥚㠦 㓺䌳 䝚⩞㧚㦚 㕩⓪ 䆪✲Ṗ 㫊㨂䞲┺. (b)㦮 ἓ㤆㠦⓪ dvmInvokeMethod(obj, method, argList, params, returnType, noAccessCheck)䞾㑮

⯒ ㌂㣿䞲┺. 㧊➢ obj ⓪ Ⲫ㏢✲⯒ 䢎㿲䞮⓪ ṳ㼊⯒

㦮⹎䞮Ⳇ 㩫㩗 Ⲫ㏢✲⯒ 䢎㿲䞶 ἓ㤆㠦 obj ⓪ NULL 㧊 ♲┺. Ⱎ㰖Ⱏ㦒⪲ (c)㦮 ἓ㤆㠦⓪ JNI 㧎䎆䗮㧊㓺

⯒ ㌂㣿䟊 Ⲫ㏢✲⯒ 䢎㿲䞮Ợ ♲┺.

4. 廎怺庲

DVM 㦮 㭒㣪 㣪㏢⯒ Ṛ⨋䧞 ㌊䘊⽊㞮┺. DVM 㦖 㡂⩂ ⿖⿚㠦㍲ JVM ὒ 㥶㌂䞲 㩦㧊 Ⱔ┺. 㧊⓪ DVM 㧊 ASF (Apache Software Foundation)㦮 㡺䝞 㧦⹪ 䝚⪲

㩳䔎㧎 䞮⳾┞[3]⯒ ₆⹮㦒⪲ 䞮㡂 Ṳ⹲♮㠞₆ ➢ⶎ㧊 Ⳇ, 㧊⩂䞲 ₢╃㠦 DVM 㦮 ⳾✶ ㏢㓺䆪✲⓪ 㞚䕢䂮

⧒㧊㍶㓺 ′㩫㦚 ⹪䌫㦒⪲ ὋṲ♮㠊 㧞┺. ⁎⩒㠦☚

⿞ῂ䞮ἶ ⳾⹪㧒 䢮ἓ㧊⧒⓪ 䔏㎇㌗ DVM 㦖 Zygote 㦮 ㌂㣿㧊⋮ DEX 䕢㧒㦮 ㌂㣿 ❇ Ⱔ㦖 ⿖⿚㠦㍲ ☛ 㺓㎇㦚 ⽊㧊ἶ 㧞┺.

Acknowledgement

⽎㡆ῂ⓪ᾦ㥷ὒ䞯₆㑶⿖/䞲ῃὒ䞯㨂┾㤆㑮㡆ῂ㎒䎆 㥷㎇㌂㠛(ὒ㩲⻞䢎 2012-0000470), 2011 ⎚☚㩫⿖(ᾦ㥷 ὒ䞯₆㑶⿖)㦮㨂㤦㦒⪲䞲ῃὒ䞯㨂┾㦮ῃṖ㰖㩫㡆ῂ㔺

㌂㠛(No.2011-0018609)⹥ IDEC 㦮㰖㤦㦚⹱㞚㑮䟟♮㠞 㔋┞┺.

焾処怾竒 [1] Gartner, Inc

[2] http://developer.android.com/guide/basics/what-is- android.html

[3] http://harmony.apache.org/

제37회 한국정보처리학회 춘계학술대회 논문집 제19권 1호 (2012. 4)

- 46 -

참조

관련 문서