[Android] Android OS에 대해 알아보자

JngHoon_2·2026년 2월 6일

Android

목록 보기
1/4

안녕하세요? 개발자 Tuan입니다.
2010년대에 들어서면서 스마트폰이라는 개념이 탄생하게 됩니다.
현재 우리에게 있어서 꼭 필수적인 물건이 되었지요.

이런 스마트폰의 운영체제는 크게 AndroidiOS로 나뉩니다.
(물론 Tizen OS 등 다양한 운영체제가 있지만 대부분은 Android 또는 iOS입니다.)

우리는 오늘 둘 중 하나인 Android OS에 대해서 알아보겠습니다.


어떻게 개발되었을까?

Android는 구글 주도로 개발된 리눅스 커널 기반의 오픈소스 모바일 운영체제입니다.
전 세계에서 가장 많이 사용되는 모바일 OS로, 스마트폰 뿐만 아니라 태블릿, TV, 자동차(Android Auto), 웨어러블 기기(Wear OS) 등 다양한 분야에 적용되고 있죠.

안드로이드의 첫 시작은 모바일 운영체제가 아니였습니다.
앤디 루빈(Andy Rubin)이 설립한 Android Inc는 원래 디지털 카메라용 OS를 목적으로 개발하려했지만,디지털 카메라 시장의 정체로 인해 노선을 틀게 됩니다. 안드로이드는 구글이 인수하며 모바일 시장에 본격적으로 진출하게 됩니다. 구글을 중심으로 삼성, LG, Intel 등 이 참여하여 OHA(Open Handset Alliance)를 결성하였으며 이를 바탕으로 안드로이드의 소스코드가 세상의 빛을 보게 되었습니다.

덕분에 모바일 개발자라면 한번쯤은 들어봤을 단어인 AOSP(Android Open Source Project)가 탄생하게 되었으며, 오랜 기간동안 사람의 손으로 꾸준하게 관리되고 있는 중입니다.

안드로이드는 삼성전자 본사를 방문해 투자, 인수를 제안했으나, 당시 임원들로부터 회의적인 반응과 함께 거절당했다는 유명한 일화가 있습니다. 만약 삼성이 안드로이드를 투자,인수 했다면 지금의 안드로이드는 어땠을까요?


안드로이드의 특징

그럼 이제 안드로이드의 특징에 대해 알아봅시다.
안드로이드의 특징은 크게 4가지로 볼 수 있을 것 같네요.

오픈소스

안드로이드는 오픈소스입니다. 제조사는 AOSP를 기반으로 자신들만의 UI/UX(One UI, MIUI 등)를 구축할 수 있습니다. 오픈소스 특성상 취약점이 발견되면 전 세계 커뮤니티와 구글이 빠르게 대응하며, 프로젝트 트레블(Projet Treble)을 통해 파편화된 기기들의 OS업데이트 속도를 개선하고 있습니다.

리눅스 커널 기반

안드로이드는 리눅스 커널 위에 HAL을 두어 상위 프레임워크가 하드웨어의 구체적인 구현에 상관없이 동일한 API로 동작하게 합니다. 또한 모바일 환경은 배터리 관리가 중요합니다. 모바일 환경에 촤적화된 저전력 메모리 관리(Low Memory Killer)나 전원 관리(WakeLocks) 기능을 리눅스 커널 수준에서 변형하여 적용했습니다.

유연한 폼팩터

해상도, 화면 비율, 입력 방식이 제각각인 기기를 지원하기 위해 밀도 독집적 단위(dp)를 사용합니다. 또한 스마트폰 뿐만 아닌 다양한 기기까지 동일한 핵심 아키텍처를 공유하여 확장됩니다. 최근에는 동적 모듈화 기술을 통해 기기 사양에 맞는 최적화된 코드와 리소스만 설치되도록하여 저장 공간을 절약합니다.

앱 생태계

구글은 2019년부터 코틀린(Kotlin)을 공식 언어로 선언했습니다. 자바의 고질적인 문제를 해결하고 코드의 생산성을 획기적으로 높였죠. 또한 Jetpack 라이브러리를 통해 개발자가 아키텍처 설계를 쉽게 할 수 있도록 도와 앱의 품질을 표준화 시켰습니다.


아키텍처

자, 지금부터는 안드로이드 플랫폼 아키텍처에 대해 설명드리겠습니다.

앞서 설명드렸다시피, 안드로이드는 다양한 기기와 폼팩터에 사용할 수 있도록 제작된 리눅스 기반의 오픈소스입니다. 동시에 스프트웨어 스택이기도 하죠. 즉, 계층적(Layer System)으로 구성되어 있습니다.

Layer System이란?

하위 계층의 서비스를 상위 계층에게 제공함으로써, 상위 계층이 하위 계층의 서비스를 사용하는 방식으로 시스템을 구축하는 것입니다. 하위 계층의 기능 구현 사항을 상위 계층이 모르게 하며, 상위 계층은 하위 계층이 제공하는 인터페이스를 통해 사용합니다.

위 이미지는 안드로이드 아키텍처를 도식화 해둔 이미지입니다. 공식 문서에서 확인할 수 있고, 안드로이드 개발자라면 반드시 한번은 봤을 이미지이죠. 그럼 이제 계층별로 하나씩 살펴봅시다.

Linux Kernel

커널은 운영체제의 핵심이 되는 프로그램입니다. 시스템을 완전히 통제하죠. 운영체제의 다른 부분 및 응용 프로그램 수행이 필요한 여러 가지 서비스를 제공하며 이를 통해 주요 보안 기능을 활용할 수 있고, 제조사에서 커널용 하드웨어 드라이버를 개발 할 수 있습니다.
즉, 하드웨어와 OS를 연결하는 매개존재로써, OS에 있어 핵심입니다.

Power Management, Hardware Driver, Abstraction, Resource Management, Security 등으로 구성되어 있습니다.

Hardware Abstraction Layer(HAL)

복잡한 하드웨어 내부를 감추고, 일관성 있는 인터페이스를 제공하기 위해 같은 종류의 하드웨어에 대한 공통 명령어 집합으로 묶는 과정을 수행하는 계층입니다.

상위 계층인 Java API Framework 계층에 하드웨어 기능을 제공하는 표준 인터페이스를 제공하며, 하드웨어에 액세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드해주기도 하죠.

또한 하드웨어 공급업체에서 구현해야 하는 표준 인터페이스를 정의하며 안드로이드에서 하위 드라이버 구현을 고려하지 않아도 되게 해주는 시스템입니다.

Android RunTime(ART)

리눅스 커널과 HAL의 상위 계층에 위치하여 운영체제를 활용해 Java 애플리케이션 실행에 중추 역할을 수행하는 VM(Virtual Machine)입니다.

ART의 역할을 이해하기 위해서는 JVM에 대해 이해하고 넘어갈 필요가 있습니다.
ART에 관련된 자세한 내용은 추후 따로 작성해보겠습니다.

Native C/C++ Libraries

기본적으로 운영체제에 내장된 라이브러리들이 존재하는 계층입니다.
모바일 기기는 하드웨어 성능이 PC에 비해 제한적이기에 효율적인 구동을 위해 low-level에 가까운 C/C++로 작성되어 있습니다. 때문에 개발자가 해당 네이티브 라이브러리에 접근할 때는 Android NDK(Native Development Kit)을 사용함.

ART 및 HAL 등의 많은 핵심 Android 시스템 구성 요소 및 서비스가 C/C++ 네이티브 코드로 빌드되어 있으며, Java Framework API를 제공하여 이러한 일부 네이티브 라이브러리의 기능을 앱에 제공합니다.

Java API Framework

Android Framework를 의미하며 안드로이드 전체 기능은 Java로 작성된 API를 통해서 접근이 가능합니다.

개발자는 이를 통해 안드로이드 시스템 애플리케이션이 사용하는 것과 동일한 프레임워크 API에 대한 전체 접근 권한을 가지며 이를 바탕으로 다양한 기능을 개발할 수 있죠.

개발자가 코드를 작성하는 애플리케이션 계층과 하위 계층들과 소통할 수 있도록 하는 브릿지 역할을 하며 액티비티 생명주기 및 언어 설정 등 프레임워크 수준의 기능을 담당하기도 한답니다?

System Application

마지막 최상위 계층입니다.
일반 사용자들이 접하는 계층으로, 안드로이드 기본 제공 앱 및 스토어에서 다운받은 앱들이 해당 계층에 속합니다.


이렇게 안드로이드 OS에 대해 짧게 나마 알아보았습니다.
하지만 안드로이드 개발을 위해서는 더 많은 내용을 알 필요가 있습니다.
오늘 공부한 내용 만으로는 안드로이드를 전부 이해했다고 할 순 없죠.

안드로이드에서 컴파일은 어떤 과정을 거쳐 이루어지는지, 빌드는 어떤 과정을 거치는지 등 앞으로 우리가 안드로이드에 대해 공부할 내용은 많습니다.

천천히 차근차근 꾸준히 관련 글을 작성해보겠습니다.

profile
천천히 차근차근 꾸준히

0개의 댓글