Choi의 고유결계

안드로이드 런타임이란? 본문

android

안드로이드 런타임이란?

믿을수없는맛 2018. 5. 15. 22:24
반응형

런타임이란 무엇인가?

저는 런타임이란 단어를 처음 프로그래밍 공부로 c를 했을때 런타임이라는 단어를 많이 봐왔습니다.

 정확히 말하면 런타임애러를 코딩하면서 많이 보게 되었습니다


바로 아래 사진처럼 말이죠

이런 프로그래밍 이나 전고을 하시지 않은분들도 많이 들어봤을것 같은데요!

특히 안드로이드 기기를 루팅해보시고 sda, 구레포, 디벨로이드 같은 카페에서 활동을 해보신 분이라면 많이 들어보셨을 거에요

???: "안드로이드 5.0부터는 Art모드를 쓴다는데??" 라든가

달빅(Dalvik) 이라던가 말이죠

저도 처음에는 이렇게 런타임 이라는 단어를 처음으로 듣게되었죠

하여튼 잡담은 접고 본론으로

.

.

.

.

.

.

.

.

.

.

.

.

런타임이란?

런타임(영어runtime→실행시간)은 컴퓨터 과학에서 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말한다(위키백과)

라고 정의 되어있습니다.





안드로이드_구조


위에 사진이 바로 안드로이드의 구조 인데요

노란색 칸에 안드로이드 런타임이라고 적혀있는데요

그안에 달빅 가상머신이라고 적혀있습니다.

가상머신? 그거 자바를 배우면서 들은건데??

맞습니다 안드로이드도 자바를 사용하기 때문에 자바가 돌아갈 가상머신이라는것이 필요하게 됩니다.

하지만 JVM을 그대로 쓰기에는 라이센스 문제 때문에 그대로 사용할수 없었다고 합니다.

그런 구글에서는 달빅(Dalvik)가상머신을 만들어 안드로이드에 넣어 되었죠.


초기 달빅은 JIT 방식을 추가하지 않았지만 

2.2 프로요 이후로는JIT(Just-In-Time) 방식의 컴파일러를 추가하게 되면서

자바 소스코드의 일부분들이 한꺼번에 변환하여 램에 올라가게 되어버리는것이죠

이 덕분에성능은 향상되었지만 빠른 배터리소모와 램의 사용량이 커지면서 하드웨어적 부담이 커졌습니다.

이러한 문제들을 해결하기 위해서 구글은 AOT 컴파일러 기반의 ART를 제작하게 되었

안드로이드 5.0 (LOLIPOP)부터는 달빅VM을 완전히 폐지하고 ART로 완전히 대체 하게 되었습니다.

AOT 방식은 전체 변환을 하고 저장한뒤 프로그램 실행시마다 변환된 코드를 읽어와 실행하게 됩니다.

하지만 코드를 미리 변환 저장하여 사용하기 때문에 설치시간이 길어지고

코드들을 저장하기 때문에 요구하는 저장공간의 크기가 커지게 됩니다.

.

.

.

.

.

.

킷켓(4.4)에서 ART 모드로 변환하게될시

OAT file(변환된 코드들을  OAT 라는 파일에 저장한다.)

생성되지 않은 경우 파일들을 생성하는데 오랜 시간을 기다려야 합니다.

여러분이 핸드폰 업데이트하면 초기 부팅에 변환중이라는? 문구가 나오면서 말이죠.

반응형
Comments