>운영 및 유지보수 >리눅스 운영 및 유지 관리 >안드로이드 시스템도 리눅스 기반인가요?

안드로이드 시스템도 리눅스 기반인가요?

藏色散人
藏色散人원래의
2023-04-20 10:25:269406검색

Android 시스템은 Linux 시스템을 기반으로 합니다. Android는 Google이 2007년 11월 5일에 발표한 Linux 플랫폼 기반 오픈 소스 모바일 운영 체제의 이름입니다. 플랫폼은 운영 체제, 미들웨어, 사용자 인터페이스 및 응용 소프트웨어.

안드로이드 시스템도 리눅스 기반인가요?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

안드로이드 시스템도 리눅스 시스템 기반인가요?

안드로이드 운영체제 소개

안드로이드는 구글이 2007년 11월 5일 발표한 리눅스 플랫폼 기반 오픈소스 모바일 운영체제의 이름입니다. 플랫폼은 운영체제, 미들웨어, 사용자 인터페이스, 응용 소프트웨어로 구성된다. 소프트웨어 스택(소프트웨어 스택이라고도 함) 아키텍처를 채택하며 주로 세 부분으로 나뉩니다. 맨 아래 계층은 C 언어로 개발된 Linux 커널을 기반으로 하며 기본 기능만 제공합니다. 중간 계층에는 C++로 개발된 함수 라이브러리 라이브러리와 가상 머신 가상 머신이 포함됩니다. 최상위 계층에는 통화 프로그램, 문자 메시지 프로그램 등을 포함한 다양한 응용 소프트웨어가 있습니다. 응용 소프트웨어는 프로그램의 일부로 Java를 사용하여 각 회사에서 자체 개발합니다.

Android라는 단어의 원래 의미는 "로봇"을 의미합니다. 처음에는 Android가 주로 휴대폰을 지원했지만 이후 개발 및 개선을 거쳐 점차 태블릿 및 기타 분야로 확장되었습니다. 모바일 단말기용.

시스템 아키텍처:

Android의 시스템 아키텍처는 운영 체제와 마찬가지로 계층형 아키텍처를 채택합니다. Android는 높은 수준에서 낮은 수준까지 4개의 계층, 즉 애플리케이션 계층, 애플리케이션 프레임워크 계층, 시스템 런타임 계층 및 Linux 커널 계층으로 나뉩니다.

1. 애플리케이션

Android는 클라이언트, SMS 문자 메시지 프로그램, 캘린더, 지도, 브라우저, 연락처 관리 프로그램 등을 포함하는 일련의 핵심 애플리케이션 패키지와 함께 출시될 예정입니다. 모든 애플리케이션은 JAVA 언어를 사용하여 작성됩니다.

2. 애플리케이션 프레임워크

개발자는 핵심 애플리케이션에서 사용되는 API 프레임워크에 대한 전체 액세스 권한도 갖습니다. 애플리케이션의 아키텍처 설계는 구성 요소 재사용을 단순화합니다. 모든 애플리케이션은 해당 기능 블록을 게시할 수 있고 다른 애플리케이션은 게시된 기능 블록을 사용할 수 있습니다(그러나 프레임워크의 보안을 준수해야 함). 마찬가지로, 애플리케이션 재사용 메커니즘을 통해 사용자는 프로그램 구성 요소를 쉽게 교체할 수도 있습니다.

3. 시스템 런타임 라이브러리

Android에는 Android 시스템의 다양한 구성 요소에서 사용할 수 있는 일부 C/C++ 라이브러리가 포함되어 있습니다. Android 애플리케이션 프레임워크를 통해 개발자에게 서비스를 제공합니다.

4. Linux 커널 계층

Android 커널은 Linux 커널을 기반으로 한 수정된 커널 버전으로 Android 플랫폼을 지원하는 장치 드라이버를 제공합니다.

시스템 구조:

1. 시스템 커널

Android는 Linux 커널에서 실행되지만 GNU/Linux는 아닙니다. Cairo, X11, Alsa, FFmpeg, GTK, Pango 및 Glibc 등을 포함하여 일반 GNU/Linux에서 지원되는 대부분의 기능이 Android에서 지원되지 않기 때문에 제거되었습니다. Android는 Glibc를 Bionic으로, Cairo를 Skia로, FFmpeg를 opencore로 대체했습니다. 안드로이드는 상용화를 위해서는 GNU GPL 라이선스로 제한되는 부분을 제거해야 한다. 예를 들어 안드로이드는 드라이버를 사용자 공간으로 옮겨 리눅스 커널에서 리눅스 드라이버를 완전히 분리한다. Bionic/Libc/Kernel/은 표준 커널 헤더 파일이 아닙니다. Android의 커널 헤더는 도구를 사용하여 Linux 커널 헤더에서 생성됩니다. 이는 상수, 데이터 구조 및 매크로를 보존하기 위해 수행됩니다.

2. 하드웨어 추상화 계층

Android의 HAL(하드웨어 추상화 계층)은 하드웨어 드라이버 모듈을 비공개 소스 형식으로 제공할 수 있습니다. HAL의 목적은 Android가 커널 독립성 개념을 달성하기 위해 Linux 커널에 너무 많이 의존하지 않도록 Android 프레임워크를 Linux 커널에서 분리하는 것입니다. 또한 드라이버 구현을 고려하지 않고 Android 프레임워크를 개발할 수 있습니다.

3. 중개 소프트웨어

운영 체제와 애플리케이션 간의 통신 브리지 애플리케이션은 기능 계층(라이브러리)과 가상 머신(가상 머신)의 두 계층으로 나뉩니다. Bionic은 Android의 libc 개선 버전입니다. Android에는 Webkit도 포함되어 있습니다. 소위 Webkit은 Apple Safari 브라우저의 엔진입니다. Surface Flinger는 2D 또는 3D 콘텐츠를 화면에 표시합니다. Android는 Google 자체 BionicLibc용 도구 체인(Toolchain)을 사용합니다.

Android는 OpenCORE를 기본 멀티미디어 프레임워크로 사용합니다. Open CORE는 PVPlayer, PVAuthor, 코덱, PVMF(PacketVideo Multimedia Framework), OSCL(Operating System Compatibility Library), Common 및 OpenMAX의 7가지 주요 블록으로 나눌 수 있습니다.

Android는 OpenGL/ES와 함께 Skia를 핵심 그래픽 엔진으로 사용합니다. skia와 LinuxCairo의 기능은 동일하지만 Linux Cairo와 비교하면 skia의 기능은 초보적인 수준에 불과합니다. 2005년에 Skia는 Google에 인수되었습니다. 2007년 초 Skia GL 소스 코드가 공개되었습니다. Skia는 Google Chrome의 그래픽 엔진이기도 합니다.

Android의 멀티미디어 데이터베이스는 SQLite 데이터베이스 시스템을 사용합니다. 데이터베이스는 공개 데이터베이스와 개인 데이터베이스로 구분됩니다. 사용자는 ContentResolver 클래스(Column)를 통해 공유 데이터베이스를 얻을 수 있습니다.

Android의 중간 계층은 대부분 Java로 구현되며 특별한 Dalvik Virtual Machine을 사용합니다. Dalvik 가상 머신은 "레지스터 기반" Java 가상 머신입니다. 모든 변수는 임시 레지스터에 저장되며 가상 머신의 명령은 상대적으로 줄어듭니다.

Dalvik 가상 머신은 여러 인스턴스(Instance)를 가질 수 있습니다. 각 Android 애플리케이션은 자체 Dalvik 가상 머신으로 실행되므로 프로그램 실행 시 시스템을 최적화할 수 있습니다. Dalvik 가상 머신은 Java 바이트코드(Bytecode)를 실행하지 않고, .dex 형식이라는 파일을 실행합니다.

4. 보안 권한 메커니즘

Android 자체는 권한이 분리된 운영체제입니다. 이러한 유형의 운영 체제에서 각 응용 프로그램은 고유한 시스템 ID(Linux 사용자 ID 및 그룹 ID)로 실행됩니다. 시스템의 각 부분은 또한 자체적인 독립적인 식별 방법을 사용합니다. 이것이 바로 Linux가 애플리케이션과 애플리케이션을, 시스템에서 애플리케이션을 분리하는 방법입니다.

애플리케이션 구성 요소:

Android 개발의 네 가지 주요 구성 요소는 다음과 같습니다.

1 활동: 기능을 표현하는 데 사용됩니다.

2. 서비스: 백그라운드에서 서비스를 실행하며 인터페이스 프리젠테이션을 제공하지 않습니다.

3. 방송 수신자(BroadcastReceiver): 방송을 수신하는데 사용됩니다.

4. 콘텐츠 제공자: 데이터베이스와 동일하게 여러 애플리케이션에서 데이터 저장 및 읽기를 지원합니다.

관련 추천: "Linux 비디오 튜토리얼"

위 내용은 안드로이드 시스템도 리눅스 기반인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.