>  기사  >  운영 및 유지보수  >  안드로이드와 리눅스 사이에 차이가 있나요?

안드로이드와 리눅스 사이에 차이가 있나요?

青灯夜游
青灯夜游원래의
2021-11-23 10:18:2013525검색

Android와 Linux에는 차이점이 있습니다. 1. Android 애플리케이션은 JAVA를 사용하여 개발되고 JAVA 가상 머신을 통해 Android 시스템에서 실행될 수 있습니다. 반면 Linux 애플리케이션은 "C/C++"를 사용하여 개발되고 Android 시스템에서 실행될 수 있습니다. 커널 시스템의 기계어 코드 형태. 2. 둘 사이의 기본 드라이버 소프트웨어에는 차이가 있습니다.

안드로이드와 리눅스 사이에 차이가 있나요?

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

현재 주류 운영체제인 Android와 Linux는 소비자 제품과 산업 제어 분야 모두에서 널리 사용됩니다. 안드로이드 시스템은 리눅스 시스템에서 탄생했다고 하는데, 안드로이드도 리눅스의 일종이냐? 이제 Android와 Linux 시스템의 유사점과 차이점에 대해 이야기하겠습니다.
안드로이드와 리눅스 사이에 차이가 있나요?

1. 둘의 공통점

Android는 Linux 커널을 기반으로 한 시스템입니다. 보안, 커널 관리, 프로세스 관리, 네트워크 스택, 드라이버 모델 등과 같은 Android 및 Linux 시스템의 핵심 시스템 서비스는 모두 Linux 커널에 의존합니다. Linux 커널은 하드웨어와 소프트웨어 간의 추상화 계층 역할도 하며 특정 하드웨어 세부 정보를 숨기고 상위 계층 애플리케이션 개발을 위한 통합 서비스를 제공합니다

안드로이드와 리눅스 사이에 차이가 있나요?

2. 시스템 프레임워크의 차이점

시스템과 Android 표면적으로는 서로 다른 두 가지 운영 체제이지만 Android는 여전히 본질적으로 Linux 시스템이지만 Google에서 이를 맞춤화하고 사용자 정의했습니다.

또한 Linux 시스템과 비교하여 Android는 Linux 커널에서 Dalvik(버전 4.4 이후 ART로 이름 변경)이라는 JVM(Java Virtual Machine)을 실행합니다. 따라서 JAVA를 사용하여 개발된 Android 애플리케이션은 JAVA를 통해 가상화할 수 있습니다. 이 머신은 Android에서 실행됩니다. 체계. Linux 응용프로그램은 C/C++를 사용하여 개발되며 기계어 코드 형태로 커널 시스템에서 실행될 수 있습니다. 둘 사이의 시스템 프레임워크 차이점은 그림에 나와 있습니다.

안드로이드와 리눅스 사이에 차이가 있나요?

안드로이드와 리눅스 사이에 차이가 있나요?

3. Linux와 Android 기본 드라이버 소프트웨어의 차이점

Linux 커널에서 제공하는 공통 핵심 드라이버 외에도 Android는 그림과 같이 자체 독점 커널 드라이버도 추가합니다. 드라이버, 블루투스 드라이버, 카메라 드라이버, 메모리 카드 드라이버, 바인더 IPC 드라이버 등

또한 하드웨어 제조업체의 지적 재산권을 보호하기 위해 Android 시스템에는 드라이버의 특정 구현 부분을 추출하여 구현을 위해 HAL로 보낼 수 있는 HAL 레이어가 추가되어 오픈 소스의 위험을 피할 수 있습니다. 하드웨어 드라이버이므로 안드로이드 드라이버는 두 부분으로 나뉘는데, 한 부분은 커널에 기록되고 다른 부분은 HAL 계층에 기록됩니다.

기본 드라이버를 개발하는 것 외에도 Android는 애플리케이션(JAVA 프로그램)이 JNI를 통해 커널 드라이버를 호출할 수 있도록 JNI 규칙에 따라 드라이버를 JNI 계층 인터페이스로 캡슐화해야 합니다. 그림과 같이 디스플레이 드라이버 Framebuffer를 예로 들어 보겠습니다.

안드로이드와 리눅스 사이에 차이가 있나요?

Linux 시스템의 디스플레이 드라이버 모델

안드로이드와 리눅스 사이에 차이가 있나요?

Android 시스템의 디스플레이 드라이버 모델

(1) Linux 시스템: 프레임버퍼 드라이버는 Linux 커널로 컴파일하기만 하면 되며 해당 읽기 및 쓰기가 따로 설정되어 있으면 호스트 컴퓨터 응용 프로그램에서 ioctl 및 기타 인터페이스를 호출할 수 있습니다.
(2) Android 시스템: 프레임 버퍼 드라이버는 먼저 간단한 하드웨어 레지스터 읽기 및 쓰기 작업을 위한 드라이버를 커널로 컴파일한 다음 특정 하드웨어 구현을 위한 드라이버를 HAL 계층에 쓰고 이를 JNI 인터페이스로 캡슐화합니다. JNI 사양에 따라 호스트 컴퓨터 응용 프로그램에서 호출할 수 있습니다.

4 Linux와 Android 애플리케이션 계층 소프트웨어의 차이점

그러나 Android 애플리케이션은 Java 언어로 작성되어 C 언어로 구현된 시스템 인터페이스를 직접 호출할 수 없지만 Linux 시스템에서는 C 언어를 사용하여 호출할 수 있습니다. 커널과 통신하기 위한 시스템 인터페이스이므로 안드로이드 시스템에는 JNI라는 개념이 있는데, 이는 Java와 C/C++ 프로그램 간의 정보 상호 작용을 구현하는 데 사용됩니다.

(1) Android 애플리케이션이 Android 커널 드라이버에 액세스하는 방법:

  • APP—>JNI—>Android 커널 드라이버

  • APP—>하드웨어 액세스 서비스—>Android 커널 드라이버

(2) Linux 애플리케이션이 Linux 드라이버에 액세스하는 방법

  • APP—> Linux 커널 드라이버

  • APP—>C 라이브러리—>Linux 커널 드라이버

관련 권장 사항: "Linux 영상 튜토리얼"

위 내용은 안드로이드와 리눅스 사이에 차이가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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