본문 바로가기
C++ 200제/코딩 IT 정보

구글 안드로이드 OS 구조란, 안드로이드 리눅스 차이까지

by vicddory 2018. 7. 16.

구글 안드로이드 OS 구조란, 안드로이드 리눅스 차이까지


리눅스와 안드로이드 계층 차이[구글 안드로이드 OS 구조]


국내에서는 아이폰 출시 이후 봇물 터지듯 다양한 스마트폰이 출시되어 시장에서 판매되고 있으며, 전세계적으로나 국내에서도 마찬가지로 구글 안드로이드 기반의 스마트폰은 시장 점유율을 점진적으로 늘려가고 있습니다.


IT 관련 리서치 업체인 가트너는 안드로이드 OS가 2010년 2분기에 전세계 시장 점유율을 17.2%까지 올려 1년 만에 10배 가까운 상승률을 기록했다고 발표하였습니다.


1. 안드로이드 OS는 구글이 2005년 7월에 인수한 안드로이드社가 휴대폰, 넷북과 같은 모바일 기기를 위해서 처음 개발한 플랫폼Platform.


2. 리눅스 커널과 GNU(GNU's Not UNIX) 소프트웨어에 기반을 둠.


3. 응용 소프트웨어를 실행하기 위한 달빅Dalvik이란 이름의 자바 가상 머신(Java Virtual Machine)을 포함.

현재는 모바일 이동 단말 환경에서도 활용되고 있으며, 셋톱박스가 설치된 다양한 정보 가전기기에도 적용할 수 있도록 지원이 되고 있습니다.


그리고 보다 빠른 기술의 발전과 다양한 기기로의 접목을 위해 하드웨어, 소프트웨어, 통신 회사 등이 참여한 개방형 휴대폰 연합(OHA, Open Handset Alliance)이 설립되었습니다.


비독점 개발 표준 플랫폼으로서 소스 코드의 대부분을 아차피 라이선스(Aphache Lience)로 배포하고 있기 때문에, 개발자는 구글 안드로이드 OS API를 통하여 낮은 비용으로 SW를 개발할 수 있고, 사용자들은 저렴한 비용으로 애플리케이션을 사용할 수 있습니다.


구글 안드로이드 OS 개발


기술적으로 미들웨어(Middleware)와 중요 응용 프로그램을 포함하고 있으며, 현재(2010년) 리눅스 커널 2.6의 수정된 버전을 사용합니다.


리눅스 안드로이드 비교, 메모리 사용 방법 차이[구글 안드로이드 OS 구조]


안드로이드는 소프트웨어 스택(Software Stack)으로서 OS(Operating System), 데이터베이스(DB : Data Base), 미들웨어(MiddleWare) 등 소프트웨어 전 제품에 공급할 수 있습니다.


일련의 API 라이브러리를 통해 하드웨어 접근이 가능하고 상호작용도 지원되므로,


1. 개발자는 안드로이드를 이용하여 기기의 접근 위치 정보,

2. 백그라운드 서비스 실행,

3. 재사용이 가능한 컨트롤 형태로 제공되는 구글맵, 권한기반 보안 매커니즘,

4. SMS 프로그램,

5. 달력,

6. 지도,

7. 브라우저 등과 같은 모든 애플리케이션을 자바(Java) 언어로 개발 


할 수 있는 등의 전반적인 주요 특징이 있습니다.


구글 안드로이드 OS는 오픈 소스로서 리눅스 커널을 기반으로 다양한 플랫폼으로의 이식이 가능하면서도, 하드웨어에 독립적이며 재사용이 가능합니다.


그렇기 때문에 오픈소스 운영체제인 리눅스를 지원하는 모든 기기들은 잠재적으로 안드로이드 포팅(Porting)이 가능하며, 기존의 자바 언어를 사용하기에 개발자 입장에선 개발이 용이한 환경이라 할 수 있습니다.

그러나, 계층에 있어선 리눅스와 안드로이드가 완전히 같진 않습니다.


구글 안드로이드와 리눅스 차이


응용 프로그램 작성을 위해 자바 언어를 지원해야해서 Java Core Library와, 제작된 응용 프로그램의 구동을 위한 달빅 가상머신이 안드로이드에 추가되었기 때문에, 안드로이드는 기존의 리눅스 커널에 안드로이드 OS만을 위한 몇 가지 패치가 이루어진 형태라고 할 수 있습니다.


기존 (리눅스)커널에서 확장된 사항으로는,


1. Alarm, 

2. Low Memory killer,

3. Ashmem,

4. Kernel Debugger,

5. Binder,

6. Power Management,

7. Logger입니다.


그 중 Power Management는 배터리 기반의 기기들을 지원하기 위해 추가된 것으로 요즘의 스마트폰이나 스마트패드 등이 이에 해당합니다.


아래 그림은 리눅스와 안드로이드 계층의 차이를 나타냅니다.


구글 안드로이드 OS 리눅스 차이리눅스와 안드로이드 계층 차이



최근 JVM(Java Virtual Machine) 위에서 실행이 되며, 하드웨어 위에서 동작하는 애플리케이션을 개발할 수 있다는 장점을 가진 Middlets이 도입되었습니다.


그러나 기존의 제한된 접근 권한을 갖는다는 단점은 여전히 문제이지만, 안드로이드는 일련의 API 라이브러리를 통해 실제 하드웨어 접근이 가능하고 상호작용까지도 지원되는 애플리케이션 구현이 가능합니다.


이 때문에, 일반적인 리눅스와 구글 안드로이드간의 메모리 사용 시 차이점이 존재합니다.

안드로이드는 모든 애플리케이션이 달빅 가상머신 위에서 동작하기 때문에 소비되는 메모리가 늘어날 수 밖에 없고, 각종 라이브러리를 사용하는 내부 방침과 구동 방법이 리눅스와는 차이를 보이게 됩니다.


그래서 안드로이드에서는 애플리케이션을 효율적으로 구동시키기 위해 Linker가 라이브러리를 로드하고 달빅만의 영역을 별도로 할당하게 됩니다.


아래 그림은 리눅스와 안드로이드 OS의 메모리 사용 방법의 차이를 나타냅니다.


구글 안드로이드 OS란 무엇인가일반적인 리눅스와 안드로이드 - 메모리 사용 방법의 차이


안드로이드 응용프로그램(Application)들은 자바 가상 머신과 유사한 달빅 가상 머신 위에서 동작하기 때문에 다양한 플랫폼으로의 확장이 가능합니다.


반대로 달빅 위에서 동작한다는 점 때문에 한 번 더 컴파일 과정이 필요해서, iOS에 비하여 그 실행 속도가 상대적으로 뒤쳐진다는 문제가 있습니다.


구글 안드로이드는 오픈 소스


그리고 구글은 오픈 소스 정책을 취하고 있기 때문에 라이브러리를 포함한 C언어 기반의 시스템 계층은 사용자 임의로 라이브러리의 추가, 수정, 삭제가 가능해 예를 들면, 공격자는 코드 포인터를 악성 코드로 변조하여 배포하는 것이 가능합니다.

그럼에도 불구하고, 안드로이드의 잠재적 사용 범위나 실제 사용 범위는 광범위하고, 각종 보안 기술도 계속 등장하여 그 실효성을 인증 받고 있기 때문에 위에서 언급한 단점과 언급되지 않은 다른 단점들을 상쇄시킬만한 큰 장점을 보유했다고 판단할 수 있습니다.


안드로이드 SDK(Software Development Kit)는 전문 장비나 안드로이드 OS가 탑재된 스마트폰을 보유하지 않더라도 애플리케이션 개발을 가능하게 도와줍니다.


물론, 카메라, GPS 등과 같은 장착되지 않은 장비에 대한 부분까지 모두 다룰 수 있는 것은 아니지만, 해당 장비를 사용하지 않는 범위에서의 개발은 충분히 가능합니다.


구글 안드로이드 구조[구글 안드로이드 OS 구조]


애플리케이션 개발을 위하여 필요한, SDK의 설치 가능한 OS로는 Windows XP와 Windows 7, Mac OS X 10.5.8, Linux 등이 있고, 개발환경은 Eclipse IDE(Integrated Development Environment) 3.4(Ganymede), 3.5(Galileo) 등이 있습니다.


안드로이드 앱 개발 환경


구글의 안드로이드 개발자 사이트에서 권고하는 이클립스 권장 버전은 아래와 같습니다.


Eclipse IDE for Java EE Developers

Eclipse IDE for Java Developers

Eclipse for RCP/Plug-in Developers

Eclipse Classic


2011년 7월에 출시된 안드로이드 3.1(Honeycomb) 부터는 Eclipse와의 호환성을 조금 보완했으나 아직 완벽한 호환이 이루어진 안전한 버전이라고 평가하기엔 더 많은 테스트 과정이 필요합니다.


그러나, 기본적으로 태블릿용 애플리케이션 제작을 위한 WXGA(Wide XGA) 크기의 AVD(Android Virtual Machine)를 지원하며, 제조사가 각기 다른 안드로이드용 태블릿들을 위해 해상도를 별도로 지원할 수 있는 메뉴 등이 추가되었습니다.


구글 안드로이드 리눅스 차이[구글 안드로이드 OS 구조]


발전해가는 전 세계 하드웨어 시장에 맞춰 AVD에서도 각종 센서들을 시뮬레이션 해 볼 수 있는 새로운 기능과 DDMS(Dalvik Debug Monitor Service) 업데이트로 개발자는 보다 다양하면서 세밀한 기능을 갖는 애플리케이션 제작이 가능해졌습니다.


애플리케이션 개발을 위한 다른 조건인, 하드웨어 요구사항으로는, 안드로이드 OS SDK와 플랫폼 설치를 위한 200MB의 디스크 저장 공간, Add-on, Offline 문서 등과 사용자가 원하는 옵션을 추가로 설치하기 위한 별도의 저장 공간입니다.


안드로이드는 단말기 제조사들이 구글에 라이선스 비용을 지급하지 않고 사용할 수 있습니다.


그 이유는 안드로이드가 GNU 일반 공중 사용 허가서 버전2(GNU General Public License, GNU GPL 또는 GPL로 통칭)를 따르기 때문이며, 개발사나 개발자는 공개와 비공개 파생물의 배포와 이득을 취할 수 있습니다.


구글 안드로이드 OS 구조란, 안드로이드 리눅스 차이까지

댓글