๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ComputerScience ๐Ÿ“š/์šด์˜์ฒด์ œ

[OS] macOS, iOS ์™€ Android ์šด์˜์ฒด์ œ

by dkswnkk 2022. 2. 6.

ํ•™์Šตํ•  ๊ต์žฌ

 

macOS์™€ iOS

Apple์˜ macOS์šด์˜์ฒด์ œ๋Š” ์ฃผ๋กœ ๋ฐ์Šคํฌํ†ฑ ๋ฐ ๋žฉํ†ฑ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ iOS๋Š” iPhone ์Šค๋งˆํŠธํฐ ๋ฐ iPad ํƒœ๋ธ”๋ฆฟ ์ปดํ“จํ„ฐ์šฉ์œผ๋กœ ์„ค๊ณ„๋œ ๋ชจ๋ฐ”์ผ ์šด์˜์ฒด์ œ์ž…๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ ์œผ๋กœ macOS์™€ iOS๋Š” ๊ณตํ†ต์ ์ด ๋งŽ์œผ๋ฏ€๋กœ ๊ณต์œ ํ•˜๋Š” ๋‚ด์šฉ๊ณผ ์„œ๋กœ ๋‹ค๋ฅธ ์ ์„ ๊ฐ•์กฐํ•˜์—ฌ ํ•จ๊ป˜ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ์‹œ์Šคํ…œ์˜ ์ผ๋ฐ˜์ ์ธ ์•„ํ‚คํ…์ฒ˜๋Š” ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Apple์˜ macOS์™€ iOS์šด์˜์ฒด์ œ์˜ ๊ตฌ์กฐ

๋‹ค์–‘ํ•œ ์ธต์˜ ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ธต: ์ด ์ธต์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํŒ… ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. macOS๋Š” ๋งˆ์šฐ์Šค ๋˜๋Š” ํŠธ๋ž™ํŒจ๋“œ ์šฉ์œผ๋กœ ์„ค๊ณ„๋œ Aqua ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, iOS๋Š” ํ„ฐ์น˜ ์žฅ์น˜์šฉ์œผ๋กœ ์„ค๊ณ„๋œ Springboard ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋ ˆ์ž„์›Œํฌ ์ธต: ์ด ์ธต์—๋Š” Cocoa ๋ฐ Cocoa Touch ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋˜๋ฉฐ Objective-C ๋ฐ Swift ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Cocoa์™€ Cocoa Touch์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ „์ž๋Š” macOS ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๊ณ  ํ›„์ž๋Š” iOS๊ฐ€ ํ„ฐ์น˜์Šคํฌ๋ฆฐ๊ณผ ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์— ๊ณ ์œ ํ•œ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ: ์ด ์ธต์€ Quicktime ๋ฐ OpenGL์„ ํฌํ•จํ•œ ๊ทธ๋ž˜ํ”ฝ ๋ฐ ๋ฏธ๋””์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋„ ํ™˜๊ฒฝ: Darwin์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ด ํ™˜๊ฒฝ์—๋Š” Mach ๋งˆ์ดํฌ๋กœ์ปค๋„๊ณผ BSD UNIX ์ปค๋„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์œ„ ์ด๋ฏธ์ง€์— ๋„์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ด ๊ธฐ๋Šฅ์„ ์šฐํšŒํ•˜์—ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ง์ ‘ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋„๋ก ์„ค๊ณ„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์™„์ „ํžˆ ๋ฒ„๋ฆฌ๊ณ  ์ปค๋„ ํ™˜๊ฒฝ๊ณผ ์ง์ ‘ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(์ด ํ›„์ž์˜ ๊ฒฝ์šฐ์˜ ์˜ˆ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์—†์ด POSIX ์‹œ์Šคํ…œ ์ฝœ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ž‘์„ฑ๋œ C ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.)

macOS์™€ iOS์˜ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • macOS๋Š” ๋ฐ์Šคํฌํ†ฑ ๋ฐ ๋žฉํ†ฑ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์šฉ์ด๋ฏ€๋กœ Intel ์•„ํ‚คํ…์ฒ˜์—์„œ ์‹คํ–‰๋˜๋„๋ก ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. iOS๋Š” ๋ชจ๋ฐ”์ผ ์žฅ์น˜์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฏ€๋กœ ARM ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์šฉ์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. (์ด์ œ m1 ์•„ํ‚คํ…์ฒ˜๋„ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋‹ˆ ๋ฐ”๋€Œ์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ iOS ์ปค๋„์€ ์ „์› ๊ด€๋ฆฌ ๋ฐ ๊ณต๊ฒฉ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๊ธฐ๋Šฅ๊ณผ ์š”๊ตฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ iOS์—๋Š” macOS๋ณด๋‹ค ๋” ์—„๊ฒฉํ•œ ๋ณด์•ˆ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • iOS ์šด์˜์ฒด์ œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ macOS๋ณด๋‹ค ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ›จ์”ฌ ๋” ์ œํ•œ์ ์ด๋ฉฐ ๋” ํ์‡„์ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, iOS๋Š” iOS์—์„œ POSIX ๋ฐ BSD API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐ˜๋ฉด macOS์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Darwin์— ์ดˆ์ ์„ ๋งž์ถฐ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Darwin์€ ์ฃผ๋กœ Mach ๋งˆ์ดํฌ๋กœ์ปค๋„๊ณผ BSD UNIX ์ปค๋„๋กœ ๊ตฌ์„ฑ๋œ ๊ณ„์ธตํ™”๋œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Darwin์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์— ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Darwin์˜ ๊ตฌ์กฐ

  ์šด์˜์ฒด์ œ ๋Œ€๋ถ€๋ถ„์€ UNIX ๋ฐ Linux ์‹œ์Šคํ…œ์—์„œ ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ปค๋„์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ˜๋ฉด Darwin์€ Mach ์‹œ์Šคํ…œ ์ฝœ(ํŠธ๋žฉ์ด๋ผ๊ณ  ํ•จ)๊ณผ BSD ์‹œ์Šคํ…œ ์ฝœ(POSIX ๊ธฐ๋Šฅ ์ œ๊ณต) ๋‘ ๊ฐœ์˜ ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ ์ฝœ์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋Š” ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

 ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค ์•„๋ž˜์—์„œ Mach๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, CPU ์Šค์ผ€์ค„๋ง ๋ฐ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐ ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(remote procedure call, RPC)๊ณผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (Inter Process Communication, IPC) ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ๊ธฐ๋ณธ ์šด์˜์ฒด์ œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Mach์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์€ ์ปค๋„ ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ถ”์ƒํ™”์—๋Š” ํƒœ์Šคํฌ(Mach ํ”„๋กœ์„ธ์Šค), ์Šค๋ ˆ๋“œ, ๋ฉ”๋ชจ๋ฆฌ ๊ฐ์ฒด ๋ฐ ํฌํŠธ(IPC์— ์‚ฌ์šฉ)๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ BSD POSIX fork() ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Mach๋Š” ์ปค๋„ ๋‚ด์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•˜์—ฌ ํƒœ์Šคํฌ ์ปค๋„ ์ถ”์ƒํ™”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

 Mach ๋ฐ BSD ์™ธ์—๋„ ์ปค๋„ ํ™˜๊ฒฝ์€ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ๋™์  ์ ์žฌ ๊ฐ€๋Šฅ ๋ชจ๋“ˆ(macOS๋Š” ์ปค๋„ ํ™•์žฅ ๋˜๋Š” kext๋ผ๊ณ  ํ•จ) ๊ฐœ๋ฐœ์„ ์œ„ํ•œ I/Oํ‚คํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 Apple Darwin ์šด์˜์ฒด์ œ๋Š” ๊ณต๊ฐœ ์†Œ์Šค๋กœ ๋ฐฐํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ X-11 ์œˆ๋„ ์‹œ์Šคํ…œ ๋ฐ ์ถ”๊ฐ€ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ง€์›๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ Darwin์— ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Darwin๊ณผ ๋‹ฌ๋ฆฌ Cocoa ์ธํ„ฐํŽ˜์ด์Šค์™€ macOS ์‘์šฉํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋…์ ์  Apple ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋น„๊ณต๊ฐœ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

Android

Android ์šด์˜์ฒด์ œ๋Š” Open Handset Alliance (Google์ด ์ฃผ๋„)๊ฐ€ ์„ค๊ณ„ํ•˜์˜€์œผ๋ฉฐ Android ์Šค๋งˆํŠธํฐ๊ณผ ํƒœ๋ธ”๋ฆฟ์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. iOS๊ฐ€ Apple์˜ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๊ณ  ์†Œ์Šค๊ฐ€ ๊ณต๊ฐœ๋˜์ง€ ์•Š์€ ๋ฐ ๋ฐ˜ํ•ด, Android๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ๊ณต๊ฐœ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์†Œ์Šค๋ผ๋Š” ์ด์œ ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์กŒ๋˜ ์ด์œ  ์ค‘ ์ผ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. Android์˜ ๊ตฌ์กฐ๋Š” ์•„๋ž˜์˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Google Android์˜ ๊ตฌ์กฐ

 Android๋Š” ๊ทธ๋ž˜ํ”ฝ, ์˜ค๋””์˜ค ๋ฐ ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ณ„์ธตํ™”๋œ ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์ด๋ผ๋Š” ์ ์—์„œ iOS์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์–‘ํ•œ Android ์ง€์› ์žฅ์น˜์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋ฐ”์ผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 Android ์žฅ์น˜์˜  ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์ž๋Š” Java ์–ธ์–ด๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œ์ค€ Java API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Google์€ Java ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋ณ„๋„์˜ Android API๋ฅผ ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ Android RunTime(ART)์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ART๋Š” Android์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์ฒ˜๋ฆฌ๋Šฅ๋ ฅ์ด ์ œํ•œ์ ์ธ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์— ์ตœ์ ํ™”๋œ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋žจ์€ ์šฐ์„  Java ๋ฐ”์ดํŠธ์ฝ”๋“œ .class ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋œ ํ›„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ .dex ํŒŒ์ผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ Java ๊ฐ€์ƒ ๋จธ์‹ ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒํ•˜๊ธฐ ์œ„ํ•ด JIT(just-in-time) ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ˜๋ฉด, ART๋Š” AOT(ahead-of-time) ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ .dex ํŒŒ์ผ์€ ์žฅ์น˜์— ์„ค์น˜๋  ๋•Œ ํ•ด๋‹น ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ART์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. AOT ์ปดํŒŒ์ผ์€ ๋ชจ๋ฐ”์ผ ์‹œ์Šคํ…œ์— ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ธ ์ „๋ ฅ ์†Œ๋น„๋ฅผ ์ค„์ด๋ฉด์„œ ๋” ํšจ์œจ์ ์ธ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 Android ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” Java ๋„ค์ดํ‹ฐ๋ธŒ ์ธํ„ฐํŽ˜์ด์Šค(๋˜๋Š” JNI)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ ํŠน์ • ํ•˜๋“œ์›จ์–ด ๊ธฐ๋Šฅ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JNI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์—์„œ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜๋กœ ์ด์‹ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 Android ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง‘ํ•ฉ์—๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €(webkit), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์›(SQLite) ๋ฐ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“(์˜ˆ: SSL)์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

 Android๋Š” ๊ฑฐ์˜ ๋ฌด์ œํ•œ์˜ ํ•˜๋“œ์›จ์–ด ์žฅ์น˜์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Google์€ ํ•˜๋“œ์›จ์–ด ์ถ”์ƒํ™” ๊ณ„์ธต ๋˜๋Š” HAL์„ ํ†ตํ•ด ๋ฌผ๋ฆฌ์  ํ•˜๋“œ์›จ์–ด๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. HAL์€ ์นด๋ฉ”๋ผ, GPS ์นฉ ๋ฐ ๊ธฐํƒ€ ์„ผ์„œ์™€ ๊ฐ™์€ ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด๋ฅผ ์ถ”์ƒํ™”ํ•˜์—ฌ ํŠน์ • ํ•˜๋“œ์›จ์–ด์™€ ์ƒ๊ด€์—†์ด ์ผ๊ด€๋œ ๋ทฐ๋ฅผ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์—์„œ ์ด์‹ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 Linux ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(glibc)์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  Google์€ Android๋ฅผ ์œ„ํ•œ Bionic ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. Bionic์€ glibc๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋ฐ”์ผ ์žฅ์น˜๋ฅผ ํŠน์ง•์ง“๋Š” ๋А๋ฆฐ CPU๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.(๋˜ํ•œ Bionic์€ Google์ด glibc์˜ GPL ๋ผ์ด์„ ์Šค๋ฅผ ์šฐํšŒํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.)

 Android ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ์˜ ๋งจ ์•„๋ž˜์—๋Š” Linux ์ปค๋„์ด ์žˆ์Šต๋‹ˆ๋‹ค. Google์€ ์ „์› ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ์‹œ์Šคํ…œ์˜ ํŠน์ˆ˜ํ•œ ์š”๊ตฌ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์˜์—ญ์—์„œ Android์—์„œ ์‚ฌ์šฉ๋˜๋Š” Linux ์ปค๋„์„ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ํ• ๋‹น์„ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ Binder๋กœ ์•Œ๋ ค์ง„ ์ƒˆ๋กœ์šด ํ˜•ํƒœ์˜ IPC๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.


GitHub

LinkedIn

GitHub

LinkedIn