Android는 Linux 표준 라이브러리와 호환됩니까?

Android는 Linux 표준 라이브러리와 호환됩니까?

스택 오버플로에서 이동하면 소스가 필요하기 때문에 주제에서 벗어났다는 것을 깨달았습니다. 규칙에서는 금지하지만 제가 아는 한 여기서는 그렇지 않습니다.

현재 Android의 커널은 wakelock과 같은 일부 예외를 제외하면 대부분 Linux 커널이라는 것을 알고 있습니다.존 스툴츠에 대한 설명.) 하지만 Linux 표준 라이브러리에 충분히 가깝습니까? (또는 POSIX 및/또는 단일 Unix 사양 측면에서?)

저는 이 질문에 대해 학술 학기 논문에 쓰고 있으므로 답변 자체를 제외하고 상대적으로 신뢰할 수 있는 출처를 인용할 수 있다면 좋을 것입니다. 동료 검토를 거친 기사나 책이 이상적이겠지만, 뭔가 Google 개발자 문서나 평판이 좋은 사람(Torvalds, Andrew Josey 등)이 작업을 수행할 것입니다.

답변1

이것최하위 비트,POSIX,게다가단일 UNIX 사양모두 크게 관련되어 있습니다.사용자 영역. 단순히 하나의 커널("UNIX 계열" 및 "대부분 POSIX 호환" 운영 체제의 기반으로 사용됨)(GNU/Linux)을 사용하는 것만으로는 Android를 그러한 운영 체제로 만드는 데 충분하지 않습니다. 그러나 일부 *nix 스타일 요소가 있습니다.껍데기이는 Korn 셸(4.0 이전에는 실제로 비지박스를 통해 임베디드 GNU/Linux 시스템에서 사용되는 ash 셸일 수 있음) 및 이와 함께 제공되는 다양한 POSIX-y 항목의 "대부분 호환 가능한" 구현입니다. . 그러나 대부분의 사람들은 "UNIX와 같은" 세계의 완전한 세트를 인식하지 못합니다.

Linux 표준 라이브러리에 충분히 가깝습니까?

기본적으로 LSB는 Android가 사용하지 않는 파일 시스템 계층 구조입니다. LSB는 POSIX에 뭔가를 추가하지만 Android는 아직 거기에 도달하지 않았기 때문에 LSB 호환과는 거리가 멀습니다. 이건 아주 분명해아니요저는 이것이 플랫폼의 목표라고 믿습니다. Linux 커널은 POSIX 시스템의 핵심으로 사용될 수 있기 때문이 아니라 원래 두 가지 이유로 GNU에 채택되었습니다.

POSIX, Unix 또는 LSB 확장과 같은 사용자 공간 지향 사양에 대한 이러한 차이점을 명확히 하려면 다음 중 일부를 고려하십시오.POSIX네이티브 C 라이브러리에 대해 이야기해야 합니다. 예를 들어 네트워킹 및 대부분의 시스템 호출과 같은 플랫폼별 항목 이 표준 C가 아니라는 사실 이 여기서 발생합니다 read(). read()역사적으로 그것은 유닉스의 일이었습니다. POSIX는 이를 인터페이스로 정의합니다.하지만 사용자 모드 C 라이브러리에서 구현됩니다., 그러면 다른 모든 것은 이 라이브러리를 기본으로 사용합니다. GNU/Linux의 C 라이브러리는 커널과 완전히 독립적으로 작동하는 GNU C 라이브러리입니다. 이 두 가지가 운영 체제의 핵심으로 함께 작동하지만 여기서 논의된 표준 중 어느 것도 다음을 의미하지 않습니다.아무것이런 일이 어떻게 일어나야 했는지, 그리고 실제로는그들은 커널이 무엇인지, 커널이 무엇을 해야 하는지 말하지 않습니다.. 그들은 C 라이브러리가 무엇이고 무엇을 해야 하는지에 대해 많이 말합니다. 즉, 주어진 커널과 함께 작동하기 위해 C 라이브러리를 작성하는 경우 -모든 커널, 형식이나 특성에 관계없이 - 라이브러리는 POSIX 사양을 충족하는 사용자 인터페이스 API를 제공합니다.POSIX 호환 운영 체제가 있습니다.

/proc나는 LSB가 리눅스가 제공하는 커널 인터페이스 에 대해 할 말이 있다고 생각합니다 . 그러나 이것이 (예를 들어) 커널에 의해 직접 제공된다는 사실이 LSB가 반드시 그래야 한다고 말하는 것을 의미하지는 않습니다. 단지 이것이 사용 가능해야 하거나 사용할 수 있다고 말하는 것뿐입니다. 그렇다면 정보의 성격은 무엇입니까? .

답변2

"Linux"라는 단어에는 두 가지 의미가 있습니다. 지금까지 가장 일반적인 의미는 다음과 같습니다.리눅스 운영체제, 또한 ~으로 알려진GNU/Linux 또는 GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv, 이는 Unix 운영 체제를 모방한 것입니다. "Linux"라는 단어는 다음을 의미할 수도 있습니다.리눅스 커널, 어느 것이핵심리눅스 운영 체제.

Android는 Linux 커널을 사용하는 완전히 다른 운영 체제입니다. 이것리눅스 표준 라이브러리운영체제의 사양입니다. Android가 아닌 Linux 운영 체제에서만 작동합니다. Android는 LSB1과 호환되지 않습니다. LSB는 커널에 적용되지 않습니다. 일반 애플리케이션 코드는 커널과 직접 상호 작용하지 않고 표준 라이브러리 및 디렉터리와 같은 인터페이스를 통해서만 /proc원칙적으로 Linux 이외의 커널도 LSB를 준수할 수 있습니다(실제로는 많은 기능이 있지만). 시뮬레이션이 필요합니다).

Android는 POSIX와 같은 Unix 사양도 준수하지 않습니다.유닉스 계열운영 체제. Linux는 기본적으로 POSIX와 호환됩니다(일부 배포판의 여러 버전은 공식적으로 호환되는 것으로 인증되었습니다).

¹Linux 시스템은 Android와 함께 설치될 수 있으며 동일한 커널에서 실행될 수 있습니다. 하지만 더 이상 "Android"를 실행하지 않고 Android와 Linux를 모두 실행하게 됩니다.

관련 정보